Chapter 23
Nitro Caff Node Requirements

Component Nitro caffeinated node
Stakeholders Sneh Koul, Ellie Davidson


# Block Production: The node constructs a block for a given namespace within 5 seconds of the message being confirmed on Espresso. Assumption: Espresso is fully functional or degraded, meaning it remains fully functional except for periods lasting no more than 24 hours. We also assume everything sent to espresso will be finalized and that espresso will not fork or reorg. Acceptance: Run the Caff node and send transactions to Espresso for the given namespace using the Espresso Nitro batcher. Then, use the Caff node’s RPC client to confirm that the block is produced within 5 seconds of the message being confirmed on Espresso.

# Geth RPC Methods: Downstream clients read blocks produced by the node using Geth RPC methods. Assumption: Espresso is fully functional or degraded, meaning it remains fully functional except for periods lasting no more than 24 hours. We also assume everything sent to espresso will be finalized and that espresso will not fork or reorg. Acceptance: Run the Caff node and send transactions to Espresso for the given namespace using the Espresso Nitro batcher. The Caff node makes the blocks available using its RPC client within 6 seconds of them being published on Espresso. Also test that a user can send a transaction through the RPC client and that the transaction gets included in the mempool.

# State Transition Function: The Caff node outputs the same state for each block that is eventually finalized after the challenge period. Assumption: Espresso is fully functional or degraded, meaning it remains fully functional except for periods lasting no more than 24 hours. We also assume everything sent to espresso will be finalized and that espresso will not fork or reorg. Acceptance: Run the Caff node for several challenge periods under realistic load conditions, and verify that it always outputs states matching the corresponding states later finalized on the rollup contract. Write a test in which L1 reorgs, verify that the finalized state of caff node is not affected by it.