Monad mainnet · 143


One passkey, one encryption address.

Your device turns your passkey into an encryption key and posts only its public half to a register on Monad. Anyone can look up your address and seal a note to it. Only your passkey opens it, on any device the passkey syncs to.

Your encryption address

Example

address 0x4ccacf6625c9290a533d71998a33b24cfe85fa30

Key
6b52 86d1 ad27 08a1
Epoch
1
Address
0x4ccacf6625c9290a533d71998a33b24cfe85fa30
Posted
Not posted: example card

ExampleWhat your card will show once your key is posted. This one is an example made by the SDK from a labelled string: not yours, and not on chain.

What happens when you press it

  1. Derive

    Your passkey’s PRF output becomes an X25519 key on this device. The secret half is never stored and never leaves it.

    createEncryptionAddress()
  2. Post

    The same passkey derives an account, and the account posts the public half to the register on Monad as epoch 1. A new account holds no MON, so the Letterlock gas drip pays for this first post.

    publish(pk, epoch)
  3. Receive

    Any app or agent looks you up and seals to that key without asking you. Opening it takes your passkey.

    keyOf(address) then seal()
Letterlock: a passkey becomes an encryption address