Skip to main content
In Solana Squid SDK, the data is processed by repeatedly calling the user-defined batch handler function on batches of on-chain data. The sole argument of the batch handler is its context ctx with the structure {store, blocks, isHead}; ctx.blocks is an array of Block objects containing the data to be processed, aligned at the block level. Portal-native handlers do not receive ctx.log — create a logger explicitly if the handler needs one. The Block interface is defined as follows:
F here is the type of the argument of the setFields() method of DataSourceBuilder. Block.header contains the block header data. Note that block.header.number is the Solana slot number — there is no separate slot field. The rest of the fields are iterables containing the six kinds of blockchain data. Canonical ordering within each iterable depends on the data kind:
  • transactions are ordered in the same way as they are within blocks;
  • instructions follow the order of transactions that gave rise to them;
  • tokenBalances are ordered in a deterministic but otherwise unspecified way.
The exact fields available in each data item type are inferred from the setFields() call argument. They are documented on the field selection page: