UTxO- vs account-based smart contract blockchain programming paradigms
This work addresses the problem of understanding and comparing smart contract programming models for blockchain developers and researchers, though it is incremental in nature.
The paper compares UTxO and account-based smart contract programming paradigms by implementing a contract in Solidity on Ethereum and Plutus on Cardano, introducing a novel mathematical abstraction called Idealised EUTxO to clarify Cardano's model, and proving simple results about alpha-conversion and observational equivalence for Cardano.
We implement two versions of a simple but illustrative smart contract: one in Solidity on the Ethereum blockchain platform, and one in Plutus on the Cardano platform, with annotated code excerpts and with source code attached. We get a clearer view of the Cardano programming model in particular by introducing a novel mathematical abstraction which we call Idealised EUTxO. For each version of the contract, we trace how the architectures of the underlying platforms and their mathematics affects the natural programming styles and natural classes of errors. We prove some simple but novel results about alpha-conversion and observational equivalence for Cardano, and explain why Ethereum does not have them. We conclude with a wide-ranging and detailed discussion in the light of the examples, mathematical model, and mathematical results so far.