Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Update a frombox

See Fromboxes for why postage pricing matters. This page covers the sithbit frombox update command.

sithbit frombox update <from> [required_postage] \
  [--keypair <keypair>] \
  [--skip-preflight]

Updating a frombox sets its per-stamp price — the required_postage, in lamports, that one email from <from> to you costs. Since every send burns exactly one stamp, this single number is the price of a message from that sender.

Unlike buying stamps, which anyone may run, only the recipient can update the price. The command signs with the recipient (“to”) keypair, and the program checks that signer against the mailbox owner. That same signer requirement is what lets you price a sender before their frombox even exists — see Setting a price before the frombox exists.

Arguments and flags

  • <from> — the sender’s “from” address (alias, wallet address, or keypair path). Hashed client-side; only the hash reaches the chain.
  • [required_postage] — the new per-stamp price in lamports. Optional; defaults to 1 SOL (1000000000 lamports) when omitted.
  • --keypair <keypair> (short -k) — the recipient’s keypair; defaults to the CLI’s configured key. This key must be the mailbox owner.
  • --skip-preflight (short -s) — skip the RPC pre-flight simulation.

There is no --stamps flag here — updating only changes the price, never the stamp balance. Prices are per-stamp and take effect on the next stamp purchase; stamps already bought keep the value they were funded at.

Examples

Lower a trusted sender’s price to 0.1 SOL (100000000 lamports):

sithbit frombox update [email protected] 100000000
Update frombox address 7XkQ…Qp9 for <From:[email protected] To:9aBc…prj> ...
Required postage set to 100000000 lamports
see https://explorer.solana.com/tx/…?cluster=devnet

Reset a sender back to the 1 SOL default by omitting the amount:

sithbit frombox update [email protected]

You can also raise the price above the mailbox’s own default — there is no CLI-side maximum.

Setting a price before the frombox exists

You do not have to wait for a frombox to exist before pricing it. When you run frombox update against a (sender, you) pair that has no frombox yet, the CLI opens one in the same transaction: it checks the chain for the frombox PDA and, finding it absent, submits [CreateFrombox { stamps: 0 }, UpdateFrombox { … }] — a genuine two-instruction transaction that creates the empty frombox and then writes your price onto it. When the frombox already exists it behaves as before: a lone UpdateFrombox.

The frombox starts at your price with zero stamps, so the sender still can’t reach you until it holds at least one, funded by either side via Add stamps. See the anti-spam lever for why this stampless create is allowed only for the recipient.

On-chain effect

The UpdateFrombox instruction re-derives the frombox PDA from the recipient address and the from-hash, verifies the frombox and the recipient’s mailbox both exist and are program-owned, requires the recipient to sign, and overwrites the frombox’s required_postage field. No lamports move — this is purely a price change; funding the frombox is Add stamps’ job.

When the frombox does not exist yet, the CLI prepends a CreateFrombox { stamps: 0 } (the owner exception above), so the same transaction allocates the account and funds only its rent-exemption reserve — no postage, since it carries zero stamps — before the UpdateFrombox sets the price.