阅读《基于区块链的智能合约技术与应用综述 》总结
摘要
随着以比特币为代表的区块链技术的蓬勃发展,区块链技术已经开始逐步超越可编程货币时代而进入智能合约时代.智能合约(smart contract)是一种由事件驱动的、具有状态的代码合约和算法合同,随着区块链技术的深入发展而受到广泛关注和研究.智能合约利用协议和用户接口完成合约过程的所有步骤,允许用户在区块链上实现个性化的代码逻辑.基于区块链的智能合约技术具有去中心化、自治化、可观察、可验证、可信息共享等特点,可以有效构建可编程金融和可编程社会,广泛应用于数字支付、金融资产处置、多重签名合约、云计算、物联网、共享经济等多个领域.首先阐述了智能合约技术的基本概念、全生命周期、基本分类、基本架构、关键技术、发展现状以及智能合约的主要技术平台;然后探讨了智能合约技术的应用场景以及发展中所存在的问题;最后,基于智能合约的理论知识,搭建了以太坊实验环境并开发了一个众筹智能合约系统,旨在为基于区块链的智能合约技术的研究与发展提供参考与借鉴.
1 智能合约背景知识
1.1 区块链知识简介
- 区块链技术的出现为解决双花问题和拜占庭问题提供了有效途径。
- 双花问题:同一笔钱在两次或多次交易中使用。
- 拜占庭问题:在缺少可信任中心节点的情况下,分布式系统如何达成共识和建立互信。
- 区块链的共识算法的理论基础是拜占庭容错。
- 共识算法
- PoW 工作量证明
- PoS 权益证明
- DPoS 授权权益证明
- PBFT 实用拜占庭容错【一文读懂实用拜占庭容错(PBFT)算法】
- 区块结构
- 默克尔树(Merkle tree,MT)是一种哈希二叉树。与标准二叉树一样,由一组叶节点,一组中间节点和一个根节点构成。叶节点包含存储数据或其哈希值,中间节点是其两个子节点内容的哈希值,最上层的根节点同样也是由它的两个子节点内容的哈希值组成。
1.2 智能合约概述
- 智能合约是一种计算机协议,一旦部署就能实现自我执行和自我验证。
- 智能合约区块链示意图
- 智能合约的实现,本质上是通过赋予对象数字特性,即将对象程序化并部署在区块链上,成为全网共享的资源,再通过外部事件触发合约的自动生成与执行,进而改变区块链网络中数字对象的状态和数值。
- 优点:确定性、一致性、可终止性、可观察性和可验证性、去中心化、高效率性和实时性、低成本。
- 分类:链上代码、智能法律合约、智能应用合约。
2 智能合约的基本架构
- 数据加载方式
- 链上方式:代码和应用发布到链上,从链上加载执行,不利于更新维护。
- 链下方式:将散列值存储在链上。
- 虚拟机和容器的作用都是在一个沙箱中执行合约代码,并对合约所使用的资源进行隔离和限制。智能合约的每次调用,都要在新的虚拟机或容器中进行,运行环境启动时间对整个智能合约系统影响较大。
- 验证方法:形式化验证是智能合约领域的主流验证方式。
- 形式化验证方法有两种:演绎验证和模型检测。
- 形式化验证4部分:代码生成、形式化描述、形式化验证、一致性测试。
- 可扩展性
- 水平扩展【理解水平扩展和垂直扩展 】
- 垂直扩展
3 智能合约主流平台
3.1 以太坊
- 以太坊虚拟机(EVM)是在以太坊智能合约及其应用的运行环境
- 以太坊智能合约的核心要素
3.2 Hyperledger Fabric 超级账本
- 设计原则:用例驱动
- 5种用例:数字支付、金融资产管存、供应链、主数据管理、共享经济。
- Fabric智能合约实质上是在验证节点上运行的分布式交易程序,用以自动执行特定的业务规则,最终更新账本状态。
- 三种类型:公开、保密和访问控制,由拥有不同权限的成员发起。
- 执行过程
4 智能合约研究现状与应用场景
应用场景
- 数字身份
- 数字记录
- 证券
- 金融贸易
- 物联网
- 供应链
- 保险
- 分布式计算
5 现存问题
- 效率问题
- 数据存储量庞大。轻量化意味着牺牲可靠性和安全性
- 状态确认是存在双重确认和闭锁确认问题。
- 隐私问题
- 智能合约用户的匿名性难以保证
- 数据公开,地址之间相互联系,一旦泄露所有信息都将被公开。区块链的隐私保护机制可分为3 类:网络层、交易层和应用层的隐私保护。
- 安全问题
- 合约代码(和合约文本)的不确定性和不一致性会导致存在漏洞
- 标准不统一问题