Pioneer Node
The Pioneer Node client, similar to Geth, processes each transaction in a sequential manner. Let's assume there are $t$ transactions in a block, denoted as ${tx_1, tx_2, ..., tx_t}$. We use $mpt_i$ to represent the changes in the world state Merkle Patricia Tree (MPT), and $r_i$ represents its root.
We can record the process of Pioneer Node handling transactions as follows:
This means that the world state $mpt_{i-1}$, after processing transaction $tx_i$, becomes $mpt_i$. Correspondingly, we know that $r_0$ is the state root included in the previous block header, and $r_t$ will be the state root included in the current block header.
As for the input and output of each transaction, they consist of address information and the corresponding key-value information associated with the address. We denote the accounts and key-value information involved in transaction $tx_i$ before and after processing as $al\text{-}in_i$ and $al\text{-}out_i$, respectively. In reality, $al\text{-}in_i$ and $al\text{-}out_i$ have the same node positions in the MPT, but with different values. Therefore, they can share the same Merkle proof $mf_i$.
Thus, we can record the Pioneer Node's processing steps using the following information:
Simplified notation:
If we transmit this data as additional information to the Guard Node, the Guard Node will be able to perform parallel processing and verification of the transactions.
In particular, $tx_t$ represents the coinbase transaction, which also handles the gas used earlier and is mainly used to reward the block producer.
Last updated