Smart contract platforms based on the UTXO model face an efficiency bottleneck, in that any transaction sent to a contract must specify the entire updated contract state. This requirement becomes particularly burdensome when the contract state contains dynamic data structures, as needed in many use cases to track interactions between users and the contract. The problem is twofold: on the one hand, a large state in transactions implies a large transaction fee; on the other hand, a large centralized state is detrimental to the parallelization of transactions -- a feature that is often cited as a key advantage of UTXO-based blockchains over account-based ones. We propose a technique to efficiently execute smart contracts on an extended UTXO blockchain, which allows the contract state to be distributed across multiple UTXOs. In this way, transactions only need to specify the part of the state they need to access, reducing their size (and fees). We show how to exploit our model to parallelize the validation of transactions on multi-core CPUs. We implement our technique and provide an empirical validation of its effectiveness.
翻译:基于UTXO模型的智能合约平台面临一个效率瓶颈:任何发送至合约的交易都必须指定完整的更新后合约状态。当合约状态包含动态数据结构时(这在许多需要追踪用户与合约交互的用例中是必需的),这一要求变得尤为繁重。该问题具有双重性:一方面,交易中的大状态意味着高昂的交易费用;另一方面,集中式的大状态不利于交易的并行化——而这常被视为基于UTXO的区块链相较于基于账户的区块链的关键优势。我们提出一种在扩展UTXO区块链上高效执行智能合约的技术,该技术允许合约状态分布在多个UTXO中。通过这种方式,交易仅需指定其需要访问的部分状态,从而减小交易规模(并降低费用)。我们展示了如何利用该模型在多核CPU上实现交易验证的并行化。我们实现了该技术,并对其有效性进行了实证验证。