Skip to content

The data flow of inputs and outputs on the cartesi stack

Marcelo Politzer Couto edited this page Jul 8, 2025 · 1 revision

The TL;DR is:

  • The user gathers data to be used as input to the verifiable computation.
  • A call is made to the Ethereum method addInput of the InputBox contract. This data is stored on chain.
  • The rollups-node retrieves the input in the evmreader module.
  • The rollups-node advancer processes the inputs by loading them into the cartesi-machine, running it, and gathering the outputs.
    • The input is loaded into the Cartesi Machine IO receive memory range one at a time.
    • On the inside, the Linux kernel exposes the input data to the application via a memory map. This is abstracted by the libcmt.
    • The application processes the contents however it sees fit, generating vouchers, notices and reports as outputs along the way. They are gathered by the advancer "on the outside".
    • The application yields control back to the advancer by either accepting or rejecting the input.
  • With the control back on the rollups-node side, the outputs will be used to compute a claim, a proof that the machine generated those outputs to be published in an authoritative manner or disputable by a quorum of nodes.
  • After a period of time, this input and its related outputs are settled and not subject to change anymore.
  • At this moment the notices are available for reading and the vouchers for execution.

Clone this wiki locally