UTxO- vs account-based smart contract blockchain programming paradigms
We implement two versions of a simple but paradigmatic smart contract: one in Solidity on the Ethereum blockchain platform, and one in Plutus on the Cardano platform, giving annotated code excerpts, with full source code also attached. We get a clearer view of the Cardano programming model in particular by introducing a simple but novel mathematical abstraction which we call idealised Cardano. 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 the Cardano platform, 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.
READ FULL TEXT