TOR

🔐 OIP v0.9 Cryptographic Debugger

Step through the complete signing workflow for publishing POST records

1
Input
2
OIP Format
3
Digest
4
Sign
5
Verify
6
Publish

1 Create POST Record

🔑 Creator Identity

⚠️ For testing only. Never share your real mnemonic!

2 OIP v0.9 Format Translation

Field names are replaced with their index values from the POST template. This compresses the record for efficient blockchain storage.

Field Mapping

Human Field Index Value

Comparison

📝 Human-Readable Input

📦 OIP v0.9 Compressed Format

3 Payload Digest Computation

The payload is serialized using Canonical JSON (sorted keys, no whitespace), then SHA-256 hashed. This digest is used for both key derivation and signing.

Canonical JSON (Pre-Signature)

Keys sorted alphabetically, no signature tags included yet

Payload Digest

SHA-256 Hash (Base64URL encoded)
-

Key Derivation Index

Algorithm: uint31(SHA256("oip:" + payloadDigest))

Derived Index (for key derivation path)
-

Full Derivation Path

-

4 Signature Generation

A child key is derived from the signing xpub at the computed index, then used to sign the payload hash using secp256k1 ECDSA.

Derived Signing Key

Public Key (compressed, hex)
-

Message Hash

SHA-256 of the canonical JSON payload

-

ECDSA Signature

Compact signature (Base64URL encoded) 64 bytes raw
-

5 Signature Verification

Verification confirms the signature is valid. Any verifier can derive the same public key from the xpub using the payload digest, then verify the signature.

Verifying...

Computing verification

Verification Steps

  1. Extract PayloadDigest from tags → pending
  2. Recompute digest from unsigned payload → pending
  3. Compare digests (must match) → pending
  4. Derive key index from digest → pending
  5. Derive verification key from xpub → pending
  6. Verify ECDSA signature → pending

Verification Summary

Payload Digest (from tag) -
Payload Digest (recomputed) -
Key Index (from tag) -
Key Index (derived) -
Signature Valid -

6 Final Arweave Transaction

✅ Record is signed and ready to publish to the blockchain!

Transaction Tags

These tags are stored on the Arweave transaction for indexing

Transaction Data

This JSON is stored as the transaction's data payload

Publishing Destinations