Mill, or mill.hoon
, is the execution engine for Uqbar. At a high level, it takes the current state of a town
(a "shard" of our rollup) along with a set of transactions (referred to in code as eggs
) and creates a state transition which can be applied to that town
. Here, I will document the specifics of this process and explore implementation choices available to us.
It's important to note that our current implementation of the execution engine can be modified in some ways by Sequencers. The result of an individual transaction must be ZK-verified, that is, the sequencer must generate hints to prove the computation was performed correctly, but the overall state transition can be composed of these results in many ways. A Sequencer therefore has the ability to exclude or order transactions in ways they see fit (with the potential, here, for MEV extraction). The implementation choices made outside of the "must-prove" portion of mill.hoon
are made for performance, not validity, and can