solidity 合约权限授权_[论文阅读笔记]区块链中的智能合约

区块链中的智能合约
马春光 安婧 毕伟 袁琪
《信息网络安全》2018年11月
10页,58个参考文献

框架

  • 0 引言
  • 1 区块链概述
  • 2 智能合约概述
    • 2.1 智能合约的定义和性质
    • 2.2 智能合约的应用
  • 3 典型区块链平台中的智能合约
    • 3.1 比特币中的智能合约
    • 3.2 以太坊中的智能合约
    • 3.3 超级账本中的智能合约
  • 4 智能合约存在的问题
    • 编码问题
    • 安全问题
    • 隐私问题
    • 性能问题
  • 5 结束语

笔记

摘要:智能合约是部署在区块链上的可执行代码,可不依赖中心机构自动化地代表各签署方执行合约。因其具有强制执行性、防篡改性和可验证性等特点,可以应用到很多场景中。过去几年中,已经出现很多可以部署智能合约的区块链平台,其中一些已经在实际中实施和使用。文章首先对智能合约的定义和性质进行描述;然后分析各个区块链平台中的智能合约,并对应用最广泛的比特币、以太坊和超级账本等区块链系统中的智能合约进行重点阐述;最后指出智能合约存在的问题和解决方法。

关键字:区块链;智能合约;比特币;以太坊;超级账本

狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成一种链式数据结构,并以密码学方式保证不可篡改和不可伪造的分布式账本。广义来讲,区块链是利用块链式数据结构来验证与存储数据,利用分布式节点共识算法来生成和更新数据,利用密码学方式保证数据传输和访问的安全,利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式,具有去中心化、时序数据、集体维护、准匿名性、安全可信、可编程性等特点。

区块链根据应用场景和设计体系不同分为公有链、联盟链和私有链。

  • 公有链的各个节点可以自由加入和退出网络,并参加链上数据的读写,运行时以扁平的拓扑结构互联互通,网络中不存在任何中心化的服务端节点。
  • 联盟链的各个节点通常有与之对应的实体机构组织,通过授权后才能加入与退出网络。各机构组织组成利益相关的联盟,共同维护区块链的健康运转。
  • 私有链各个节点的写入权限收归内部控制,而读取权限可视需求选择性地对外开放。私有链仍然具备区块链多节点运行的通用结构,适用于特定机构的内部数据管理与审计。

智能合约是部署在区块链上的可执行代码,可不依赖中心机构自动化地代表各签署方执行合约。

SZABO给出了智能合约应具有的性质:可见性、强制执行性、可验证性、隐私性。

智能合约是区块链的核心构成要素,是由事件驱动的、具有状态的、运行在可复制的共享区块链数据账本上的计算机程序,能够实现主动或被动的数据处理功能,具有接受、存储和发送价值,以及控制和管理各类链上智能资产等功能。

将智能合约分为两类:智能合约代码、智能法律代码

编码问题

  • Frantz等人提出了一种建模方法,支持半自动化智能合约的创建,以便将人类可读的合约转换为智能合约规则
  • Bhargavan等人利用形式化方法分析和验证以太坊智能合约的正确性
  • Bigi等人将形式化方法与博弈论技术相结合来验证智能合约
  • Delmolino等人发布了教程,记录了编写智能合约时几类典型错误并给出指导方案,以帮助开发人员编写正确的智能合约
  • Chen等人在智能合约中确定了7 种导致额外成本(如循环中不必要且昂贵的操作)的编程模式,并开发了一种名为 GASPER 的工具来检测受这些模式影响的智能合约,以避免用户额外的开销
  • 在程序语言中,代码是作为一系列步骤执行的,程序员必须指定应该做什么以及如何去做。这使得使用这些语言编写智能合约的任务繁琐且容易出错。为了解决这个问题,IDELBERGER 等人提议使用基于逻辑的语言而不是程序语言。

安全问题

  • NATOLI等人建议使用以太坊自带的函数(如SendIfReceived)来强制执行事务顺序。
  • LUU等人构建了一个名为 OYENTE 的工具,可以检测以太坊智能合约是否存在被攻击的风险。
  • ZHANG等人提出了一个 Town Crier(TC)解决方案,充当外部资源和智能合约之间的可信第三方,为智能合约提供经过验证的数据馈送。

隐私问题

  • KOSBA等人构建了一个名为 Hawk 的工具,允许开发人员编写隐私保护智能合约,无需实施任何加密技术。
  • WATANABE等人建议在将智能合约部署到区块链之前加密智能合约,只有合约的参与者才能使用解密密钥访问智能合约的内容。
  • ZHANG等人扩展了TC工具来支持私人请求。在发送请求之前,智能合约可以使用TC的公钥对请求进行加密,收到加密请求后,TC可以使用其私钥对其解密,可以证请求的内容对区块链中的其他用户或者智能合约保密。

性能问题

  • VUKOLIĆ建议只要智能合约是独立的(如不更新相同变量)就可以并行执行智能合约。

你可能感兴趣的:(solidity,合约权限授权)