What exact value did the selected node quorum sign for this data source?There is no separate feed-creation transaction. Feed identity is deterministic, and the Solana
Feed account is created lazily the first time a signed update is written with submit_data_update. Gateway settlement writes payment receipts only — it does not create or update the Feed.
Feed lifecycle
Two consumption modes
Feed identity
Feed identity is derived from the request authority, API config hash, and quorum:owneris the subscription consumer authority for subscription-backed rounds.owneris the payer/authority for x402 agent rounds.apiConfigHashiskeccak256(JSON.stringify(canonicalizeAPIConfig(apiConfig))).signaturesRequiredis a single byte.
JOB for compatibility with the deployed program, but the public concept and SDK field are feedId.
Public data, private config
Only theapiConfigHash is stored on-chain. The full API config can remain off-chain, and private API secrets can be encrypted for selected nodes through the gateway.
Solana Feed account
The Solana account is keyed by:
Payloads up to 32 bytes are stored as-is. Payloads up to 256 bytes are hashed with keccak256 and stored as
FeedValueKind::Hash.
Values and decoding
The signedvalue is interpreted by the application that owns the feed schema.
- Values up to 32 bytes are stored directly.
- Longer values up to 256 bytes are stored as a keccak hash.
- Numeric feeds should document scale explicitly, for example
value / 10 ** 6. - Consumers should decode bytes only after verifying the payload or validating the Solana
FeedPDA.
API design checklist
Independent nodes must converge on a byte-identical value to co-sign it:- Prefer settled, finalized data over live-drifting values.
- Avoid per-request timestamps, request IDs, and unstable ordering.
- Pin
responseParserto the exact field you need. - Include
valueTransformin the config before derivingfeedId. - Reuse the exact same canonical config when requesting signed data.
Related pages
Payload schema
The portable artifact produced by each round.
SDK reference
Derivation helpers and
DataUpdateResult fields.