Problem
When a client has an intersection (a known block point: slot + hash), there is no way to fetch the block body for that specific block via the Node-to-Client (N2C) protocol. The same operation is possible via Node-to-Node (N2N).
The chain-sync mini protocol only allows advancing forward from an intersection — it gives you the next block after the intersection, not the block at the intersection. This creates a dead end:
- If the next block doesn't exist yet (i.e. the intersection is the chain tip), there is nothing to fetch.
- To fetch the block at the intersection, you'd need to roll back to its predecessor and request the next block — but the predecessor point is not always known to the client.
Workaround (client-side)
Store the previous block's slot and hash alongside each indexed block. To fetch a block by point:
- Find the stored predecessor point.
- Call
FindIntersect on the predecessor.
- Call
RequestNext to receive the target block.
- Verify the returned block matches the expected slot and hash.
This is fragile and requires extra index storage purely to compensate for a protocol limitation.
Proposed Solution
Expose a block-fetch-by-point capability as a mini protocol on N2C (analogous to how N2N allows fetching block ranges). A corresponding cardano-cli command would let users query a block by its point without needing to run a full chain-sync session.
Problem
When a client has an intersection (a known block point: slot + hash), there is no way to fetch the block body for that specific block via the Node-to-Client (N2C) protocol. The same operation is possible via Node-to-Node (N2N).
The chain-sync mini protocol only allows advancing forward from an intersection — it gives you the next block after the intersection, not the block at the intersection. This creates a dead end:
Workaround (client-side)
Store the previous block's slot and hash alongside each indexed block. To fetch a block by point:
FindIntersecton the predecessor.RequestNextto receive the target block.This is fragile and requires extra index storage purely to compensate for a protocol limitation.
Proposed Solution
Expose a block-fetch-by-point capability as a mini protocol on N2C (analogous to how N2N allows fetching block ranges). A corresponding
cardano-clicommand would let users query a block by its point without needing to run a full chain-sync session.