Verify this publication
Everything needed to verify the signature offline. Pipe the challenge text into any ed25519 verifier with the pubkey and signature.
Solana wallet (signer)
3QriEu48CzQa1foQBiPzUjN9BGjRBqMC1t2FNrMRM6wM
Tor v3 .onion (same key, different encoding)
epj7bxwojbidx7cdzkwxvhid4bwomhtr5e4blqj55b7nmavjwxsd4zqd.onion
Content SHA-256
ba0e17cb2790fffd5c3b274c56504a7cccc4ade47b81760b6499059c6caf9830
Published at
2026-05-23T14:06:41.860Z
Server received at
2026-05-23T14:06:42.211Z
Challenge bytes the wallet signed
ouija-publish v1 onion: epj7bxwojbidx7cdzkwxvhid4bwomhtr5e4blqj55b7nmavjwxsd4zqd.onion sha256(content): ba0e17cb2790fffd5c3b274c56504a7cccc4ade47b81760b6499059c6caf9830 published_at: 2026-05-23T14:06:41.860Z bytes: 453
Signature (base64, 64 bytes)
Hvxu8fMmvbG8XEZQ3xolfRDlhPXozo5Cggi0Q6bZ7UGE4H0UNtqxz5ierZIwu4R2ttm75oNF2O+4YCKn7nMeBA==
Verify it yourself
# JavaScript (browser or Node)
import { ed25519 } from "@noble/curves/ed25519";
import bs58 from "bs58";
const pubkey = bs58.decode("3QriEu48CzQa1foQBiPzUjN9BGjRBqMC1t2FNrMRM6wM");
const sig = Uint8Array.from(Buffer.from("Hvxu8fMmvbG8XEZQ3xolfRDlhPXozo5Cggi0Q6bZ7UGE4H0UNtqxz5ierZIwu4R2ttm75oNF2O+4YCKn7nMeBA==", "base64"));
const msg = new TextEncoder().encode(`ouija-publish v1
onion: epj7bxwojbidx7cdzkwxvhid4bwomhtr5e4blqj55b7nmavjwxsd4zqd.onion
sha256(content): ba0e17cb2790fffd5c3b274c56504a7cccc4ade47b81760b6499059c6caf9830
published_at: 2026-05-23T14:06:41.860Z
bytes: 453
`);
console.log(ed25519.verify(sig, msg, pubkey)); // → true