正在加载图片...
·1370 工程科学学报,第41卷,第11期 Hyperledge Fabric智能合约的结构分为以下四 竞标者提前将最高价转入合约,但这种方式显然 部分:main、init、query和invoke函数 有不合理之处 (1)main函数:作为程序的入口; Kosba等2提出一种可以自动生成加密协议 (2)init函数:在智能合约首次被部署时调用, 的工具Hawk,通过在区块链上存储金融交易的特 负责所有初始化工作: 殊加密形式,从而保证链上数据只有拥有者可见, (3)query函数:负责所有的查询: 但其分布式沙箱的构造仍是一个未解决的问题. (4)invoke函数:负责执行函数的调用 还有一些人通过零知识证明的方法扩展交易 以太坊支持多种智能合约语言,以太坊智能 协议4),构建货币体系,以此来加强匿名性,从 合约语言是图灵完备的,使得开发者能够创建任 而保证交易的隐私性,但结构针对性较强,缺乏普 意的基于共识、可扩展、标准化、特性完备、易于 适性 开发和协同的应用,Solidity语言与传统面向对象 在文献[45]和[46,多方安全计算被应用到了 语言类似,其结构大致如下: 比特币脚本中,保证交易的忠实性和隐私性,文 (1)变量定义:合约中的全局变量是存储在区 献[4刀中多方安全计算则被推广到了一般的智能 块链中的,这里定义了合约的属性以及需要记录 合约中,封装了多方安全计算的计算过程与网络 的信息; 通信,上层智能合约编程人员只需将计算符号替 (2)事件定义:定义需要记录的事件及参数; 换为安全计算符号而无需考虑实现问题 (3)修饰器定义:修饰器用来修饰函数,判断函 6.6智能合约存在的问题 数执行条件; 智能合约在以以太坊为代表的区块链推动 (4)函数定义:具体函数实现 下,有了很大的发展,技术日益成熟,但是发展过 合同语言写法自由,且依赖于常识与法律,很 程中依旧存在一些问题4 难直接向智能合约编程语言转化.SPESCI40I是一 (1)安全问题:2016年5月,以太坊最大众筹项 种类自然语言的智能合约规约语言,试图通过类 目The DAO被攻击者利用程序中的递归调用漏洞 自然语言、规范化书写化的结构与书写、半自动 获取了大量以太币,这个问题引发了大众对于智 化向Solidity转换的方式解决不同领域专家沟通、 能合约安全性和法律问题的思考.Luu等9提出 法律效力以及部分逻辑安全问题.SPESC结构 了检查智能合约漏洞的工具Oyente,文中利用工 如下: 具检查了以太坊中包含3068654以太币、价值三 (I)角色定义:定义参与方的角色,同时定义角 千万美金的19366个合约,其中有8833个合约至 色属性与可执行动作: 少包含一种安全漏洞. (2)变量定义:定义合约中需要记录的信息; (2)法律问题:The DAO事件对法律也提出了 (3)条款定义:定义角色对应的权利或义务,包 巨大挑战.首先,界定“漏洞”困难,智能合约与实 含角色、动作、执行条件、资金转移、后置条件等 际合约无法显示转换;其次是由于区块链不可更 信息 改,智能合约难以撤销.目前也有一些对于智能合 SPESC条款的表示类似于自然语言,如: 约从法律的角度上讨论模板与标准化格式,讨论 term no2 Seller can abort 了法律与参数、代码联系以及数据标准与合约特 when before buyer did pay 点的层面 表示卖家可以在买家付款前终止合约, (3)效率问题:区块链系统本身存在的吞吐量 6.5面向隐私的智能合约框架 低、交易延迟、能耗过高、容量和带宽限制等性能 区块链中的所有交易、合约和用户余额都可 问题极大限制了智能合约的执行效率,且由于智 被链上的用户公开查看.比如在竞标合约当中,竞 能合约顺序执行,当交易增多以后,将导致交易确 标参与方不想让其他人知道自己的出价,Solidity 认很慢,且交易费会变高 的技术文档)提出参与方可以在智能合约中通过 7挑战与机遇 加密手段出价,最后竞标结束再公布价格.但是, 如果要保证竞标者不违约,需要竞标者在投标时 尽管目前区块链技术日益成熟,但是仍然存 向合约转入资金,然而资金的转移也是公开的,于 在一些问题.比如:资源浪费问题,BitCoin中的挖 是只能设置一个最高价或是设置一些虚假出价, 矿步骤需要计算机系统进行大量的计算,造成时Hyperledge Fabric 智能合约的结构分为以下四 部分:main、init、query 和 invoke 函数. (1) main 函数:作为程序的入口; (2) init 函数:在智能合约首次被部署时调用, 负责所有初始化工作; (3) query 函数:负责所有的查询; (4) invoke 函数:负责执行函数的调用. 以太坊支持多种智能合约语言,以太坊智能 合约语言是图灵完备的,使得开发者能够创建任 意的基于共识、可扩展、标准化、特性完备、易于 开发和协同的应用,Solidity 语言与传统面向对象 语言类似,其结构大致如下: (1) 变量定义:合约中的全局变量是存储在区 块链中的,这里定义了合约的属性以及需要记录 的信息; (2) 事件定义:定义需要记录的事件及参数; (3) 修饰器定义:修饰器用来修饰函数,判断函 数执行条件; (4) 函数定义:具体函数实现. 合同语言写法自由,且依赖于常识与法律,很 难直接向智能合约编程语言转化. SPESC[40] 是一 种类自然语言的智能合约规约语言,试图通过类 自然语言、规范化书写化的结构与书写、半自动 化向 Solidity 转换的方式解决不同领域专家沟通、 法律效力以及部分逻辑安全问题. SPESC 结构 如下: (1) 角色定义:定义参与方的角色,同时定义角 色属性与可执行动作; (2) 变量定义:定义合约中需要记录的信息; (3) 条款定义:定义角色对应的权利或义务,包 含角色、动作、执行条件、资金转移、后置条件等 信息. SPESC 条款的表示类似于自然语言,如: term no2 Seller can abort when before buyer did pay 表示卖家可以在买家付款前终止合约. 6.5    面向隐私的智能合约框架 区块链中的所有交易、合约和用户余额都可 被链上的用户公开查看. 比如在竞标合约当中,竞 标参与方不想让其他人知道自己的出价,Solidity 的技术文档[41] 提出参与方可以在智能合约中通过 加密手段出价,最后竞标结束再公布价格. 但是, 如果要保证竞标者不违约,需要竞标者在投标时 向合约转入资金,然而资金的转移也是公开的,于 是只能设置一个最高价或是设置一些虚假出价, 竞标者提前将最高价转入合约,但这种方式显然 有不合理之处. Kosba 等[42] 提出一种可以自动生成加密协议 的工具 Hawk,通过在区块链上存储金融交易的特 殊加密形式,从而保证链上数据只有拥有者可见, 但其分布式沙箱的构造仍是一个未解决的问题. 还有一些人通过零知识证明的方法扩展交易 协议[43] ,构建货币体系[44] ,以此来加强匿名性,从 而保证交易的隐私性,但结构针对性较强,缺乏普 适性. 在文献 [45] 和 [46],多方安全计算被应用到了 比特币脚本中,保证交易的忠实性和隐私性,文 献 [47] 中多方安全计算则被推广到了一般的智能 合约中,封装了多方安全计算的计算过程与网络 通信,上层智能合约编程人员只需将计算符号替 换为安全计算符号而无需考虑实现问题. 6.6    智能合约存在的问题 智能合约在以以太坊为代表的区块链推动 下,有了很大的发展,技术日益成熟,但是发展过 程中依旧存在一些问题[48] . (1) 安全问题:2016 年 5 月,以太坊最大众筹项 目 The DAO 被攻击者利用程序中的递归调用漏洞 获取了大量以太币,这个问题引发了大众对于智 能合约安全性和法律问题的思考. Luu 等[49] 提出 了检查智能合约漏洞的工具 Oyente,文中利用工 具检查了以太坊中包含 3068654 以太币、价值三 千万美金的 19366 个合约,其中有 8833 个合约至 少包含一种安全漏洞. (2) 法律问题:The DAO 事件对法律也提出了 巨大挑战. 首先,界定“漏洞”困难,智能合约与实 际合约无法显示转换;其次是由于区块链不可更 改,智能合约难以撤销. 目前也有一些对于智能合 约从法律的角度上讨论模板与标准化格式,讨论 了法律与参数、代码联系以及数据标准与合约特 点的层面. (3) 效率问题:区块链系统本身存在的吞吐量 低、交易延迟、能耗过高、容量和带宽限制等性能 问题极大限制了智能合约的执行效率,且由于智 能合约顺序执行,当交易增多以后,将导致交易确 认很慢,且交易费会变高. 7    挑战与机遇 尽管目前区块链技术日益成熟,但是仍然存 在一些问题. 比如:资源浪费问题,BitCoin 中的挖 矿步骤需要计算机系统进行大量的计算,造成时 · 1370 · 工程科学学报,第 41 卷,第 11 期
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有