Skip to main content
QUICK REVIEW

[论文解读] A Concurrent Perspective on Smart Contracts

Ilya Sergey, Aquinas Hobor|arXiv (Cornell University)|Feb 17, 2017
Distributed systems and fault tolerance参考文献 17被引用 8
一句话总结

本文提出了一种并发对象类比,将智能合约建模为由多个区块链交易访问的共享可变状态实体,揭示了重入漏洞和交易顺序依赖性等安全问题与经典并发编程中的错误具有相似性。通过将合约交互映射为对共享对象的线程交互,该方法可复用成熟的正式验证技术,并强调了在智能合约设计中引入同步原语和不变式推理的必要性。

ABSTRACT

In this paper, we explore remarkable similarities between multi-transactional behaviors of smart contracts in cryptocurrencies such as Ethereum and classical problems of shared-memory concurrency. We examine two real-world examples from the Ethereum blockchain and analyzing how they are vulnerable to bugs that are closely reminiscent to those that often occur in traditional concurrent programs. We then elaborate on the relation between observable contract behaviors and well-studied concurrency topics, such as atomicity, interference, synchronization, and resource ownership. The described contracts-as-concurrent-objects analogy provides deeper understanding of potential threats for smart contracts, indicate better engineering practices, and enable applications of existing state-of-the-art formal verification techniques.

研究动机与目标

  • 通过与共享内存并发编程中的经典问题类比,识别并分析智能合约中类似并发的漏洞,例如重入和交易顺序依赖性。
  • 提出一种概念模型,将智能合约视为由多个交易访问的并发对象,类似于线程访问共享内存。
  • 证明现有的并发程序形式化验证技术可被适配,用于推理复杂多交易合约的行为。
  • 通过揭示干扰和原子性问题,倡导在智能合约设计中采用更好的工程实践和同步机制。
  • 探索使用通信状态转移系统(STS)和 TLA+ 等工具进行高层级推理,以分析合约行为和通信模式的潜力。

提出的方法

  • 将智能合约建模为驻留在共享区块链状态中的并发对象,类比于并发线程访问的共享内存中的对象。
  • 利用线程干扰、竞争条件和同步的类比,解释交易顺序和重入如何在以太坊合约中引发错误。
  • 分析真实以太坊合约(如 The DAO 和 BlockKing)以说明尽管具有交易级原子性,并发问题仍会显现。
  • 建议使用 TLA+ 和 STS 等形式化方法对合约行为进行高层建模,以支持轨迹和活锁性质的验证。
  • 提出在高层 STS 模型与低层合约代码(如 Why3 或 F* 中的代码)之间进行细化证明,可确保并发执行下的正确性。
  • 引入基于合约的同步原语(如锁代理合约)以防止干扰,类比于并发编程中的互斥锁。

实验结果

研究问题

  • RQ1智能合约中的多交易行为在多大程度上类似于共享内存并发中的经典问题?
  • RQ2以太坊合约中的交易顺序依赖性和重入在哪些方面类似于并发程序中的竞争条件和干扰?
  • RQ3能否将并发编程中已建立的形式化验证技术适配,用于推理跨多个交易的智能合约行为?
  • RQ4何种高层形式化语言能够有效建模复合智能合约在并发访问下的通信与状态转移行为?
  • RQ5并发对象类比对设计更安全、更可预测的智能合约具有何种启示?

主要发现

  • 本文表明,The DAO 中的重入漏洞是并发环境中类似线程干扰的表现,即合约状态在调用期间被意外修改。
  • 以太坊中的交易顺序依赖性(TOD)被证明等价于并发编程中的无控制干扰,其中执行顺序影响正确性。
  • 尽管具有事务原子性,跨多个区块或事务的并发执行仍可能因可观测的干扰而违反安全属性,这挑战了顺序推理的假设。
  • 该类比使得 TLA+ 和通信状态转移系统(STS)等正式验证技术能够被应用于建模和验证复杂合约行为。
  • 作者认为,可通过原子寄存器或锁代理合约等同步机制防止干扰,类比于并发编程中的互斥锁。
  • 本文建议未来的合约设计应预见到干扰,并使用形式化不变式或细化证明来确保在并发访问下的正确性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。