At this point, an overview has been given of what constitutes a Cartesi computation, who are the parties involved, and what the software components of Descartes are. It is important to understand better what events happen during the execution of a Cartesi Machine.
The event that marks the beginning of a Cartesi computation is an on-chain request by the DApp Smart Contract to Descartes.
This is done through a call to the
instantiate function of the Descartes’ smart contract.
Although the exact API definition of this call will be detailed later, it is relevant to have a general understanding of the purpose of this call at this point.
instantiate call requests the Descartes infrastructure to perform an off-chain computation.
This function call includes all the necessary data to specify the computation, as well as the interested parties.
The details of the
instantiate parameters and usage are specified in the Instantiate section.
For now, it is sufficient to understand in broad terms the parameters specified in the
As explained in detail in the Provider section, some machines will require one or more users to fill in the contents of the input drives. If this is the case, there will be a time interval between the instantiation of a Cartesi Machine and its execution. This time is given exactly for the involved parties to submit such required data. The Provider section also explains how (and in which format) such data is sent by the users to their Descartes Nodes for further processing.
If a machine does not require Provided drives, or after all of them are properly received, the computation can start.
This is done automatically by the Descartes Node running on behalf of the users. After the execution, the node representing the claimer will submit the result of the computation to the blockchain and the challenger will verify the claim for correctness.
After the verification, the challenger nodes will automatically accept the result of the computation (notifying the DApp of the final result), or raise a dispute, which is briefly described in the next subsection.
In the rare case that a dispute arises concerning the result of a Cartesi computation, an interactive resolution system is launched for settlement.
All these steps are done automatically by the Descartes Nodes so that they can reach a final result in a timely manner.
The end of such disputes is notified to the DApp developer to enforce appropriate penalties to misbehaving parties.
API / interface Cartesi node diagram High-level sequence diagram explaining the interaction between the client, the SC, and Descartes.