Boundary definitions
Sender to Node
The sender sends only:- Sender-signed authorization envelope.
- Funding signature.
- Public routing coordinates (recipient route commitment and route version).
Receiver to Cranker
The Receiver sends only:- Opaque intent work (redacted).
- Lease data.
- Public coordination fields (work ID, state, expiry).
- Recipient TIN.
- Sender authorization message or signature.
- Serialized funding transaction.
- Encrypted binding material.
Node/Mother to Cranker
Node/Mother sends only:- Opaque slot and commitment digest.
- Nullifier.
- Public payout coordinates.
- Short-lived signed permit.
- Payment identifier.
- Encrypted record or plaintext binding.
- Refund secret.
- Payment-specific account.
Cranker to TSN program
The Cranker sends only:- Node-signed permit.
- Public accounts required by the bound instruction.
- Caller-selected source.
- Payment record or alternate vault.
- Alternate amount or recipient.
Worked example: compromised Cranker redirects a payment
Suppose an attacker compromises a Cranker and tries to redirect a settlement to their own wallet. The attacker can submit a transaction, but they must supply the exact Node-signed permit bound to the original recipient, amount, mint, commitments, sequence, policy, nullifier, and expiry. The Solana program re-checks every bound field:- Verifies the Node permit signature.
- Derives the
EpochClaimSlotfrom the epoch treasury and opaque slot. - Checks that the slot is not already consumed.
- Checks that the lease is still valid.
- Checks that the route commitment matches the authorized recipient.
- Checks that the amount and mint match the bound values.
- Checks that the nullifier is unused.
Summary table
Related topics
- Node, Receiver, and Cranker explains the roles and lifecycle.
- Threat model maps adversary capabilities.
- Security invariants lists the rules enforced at each boundary.