Skip to main content
Solana is Molpha’s canonical settlement chain. It stores the node registry, plans, subscriptions, delegates, gateways, settlement records, agent escrows, and maintained Feed accounts.

Network details

Account model

Feed ID

For subscription rounds, owner is the consumer authority. For agent rounds, owner is the agent payer/authority.

Feed account

value stores the raw payload when it is 32 bytes or smaller. Longer payloads up to 256 bytes are stored as a keccak hash and marked with FeedValueKind::Hash.

Main instructions

Only submit_data_update creates or updates the Feed account (init_if_needed). Settlement instructions write RoundReceiptRecord accounts for payment and dispute accounting; they do not write the feed value.

Submit payload

Checks:
  • Full Schnorr verification through molpha_verifier.
  • Signer bitmap is resolved against the requested registry version.
  • New feed values must have a strictly newer canonical_timestamp.
  • Value is encoded according to Feed::encode_stored_value.

Direct verification with molpha-verifier

Use the Rust crate when you want to verify a signed payload without writing through submit_data_update.
High-level APIs: For Solana-program integrations, the caller must owner-check and deserialize registry/node accounts, copy them into plain RegistryView / NodeEntry values, then pass them to verify_data_update_resolved.
The crate is pure verification logic. It does not perform account I/O, owner checks, or Anchor/Pinocchio account validation.

PDA derivation reference

Consumer responsibilities

  • Validate the Feed PDA from ["molpha_feed", feed_id].
  • Enforce freshness with canonical_timestamp.
  • Decode value according to the feed schema.
  • Use submit_data_update before reading, or verify supplied payloads directly with molpha-verifier.
  • Treat gateway and escrow status reads as advisory until settlement finalizes.

Consumer-relevant errors