欢迎访问一起赢论文辅导网
本站动态
联系我们
 
 
 
 
 
 
 
 
 
 
 
QQ:3949358033

工作时间:9:00-24:00
SCI期刊论文
当前位置:首页 > SCI期刊论文
一种高级智能合约转化方法及竞买合约设计与实现
来源:一起赢论文网     日期:2021-12-19     浏览数:903     【 字体:

 第44 第3 2021 年3 月计 算机 学 报CHINESEJOURNALOFCOMPUTERSVol .44No. 3Mar. 2021一种高级智能合约转化方法及竞买合约设计与实现朱 岩 秦博涵u陈 娥H刘国伟1 :)(北京科技大学计算机与通信工程学院 北京100 083)2 )(北京市经济和信息化局 北京 100744)摘 要 智能合约是运行在区块链上的数字协议, 智能合约的开发涉及计算机、 金融、 法律等多个领域, 近年来高级智能合约语言已被提出用于解决不同领域人员阅读、 交流与协同开发难的问题, 然而上述语言与可执行智能合约语言之间仍缺少有效的转化方法. 针对这一问题, 本文设计了一种SPESC到目标程序语言(Solidity) 的转化规贝II , 并提出了一种包括高级智能合约层、智能合约层和机器代码执行层的三层智能合约系统框架. 首先, 转化规则给出了根据SPESC合约当事人定义生成目标语言当事人子合约、 以及SPESC其余部分生成目标语言主体子合约之间的对应关系; 其次, 除程序框架与存储结构外, 目标语言程序还包含当事人人员管理、程序时序控制、异常检测等机制, 这些机制能辅助编程人员半自动化地编写智能合约程序; 进而, 通过两个实验验证了上述高级智能合约框架的易读性以及转换的正确性, 第一个实验邀请了计算机与非计算机人员分组阅读Solidi ty 和SPESC的智能合约并回答问卷, 结果表明阅读SPESC的速度约为阅读Solidity 两倍, 准确率也更高. 然后以竞买合约为实例, 给出了根据上述转化规则从SPESC合约转化到可执行Solidity 合约语言程序, 并通过以太坊私链部署运行来验证转化过程的正确性.实例表明上述转化规则和系统框架可简化智能合约的编写、规范智能合约的程序结构、辅助编程人员验证代码的正确性.关键词 智能合约; 面向领域语言; 代码生成; SPESC中图法分类号TP3 19DOI号1 0. 1 189 7/SP.J. 101 6. 2021 . 006 52AnAdvancedSmartContractConversionandItsDesignandImplementationforAuctionContractZHUYan1 )QINBo Han1)CHENE1 )LIUGu〇 Wei2 )1 :) { DeparLmenLofComput erandCommuni cat ionEngineering?UniversityofScienceandTechnologyBeijing? Beiji ng100083)2)( Beiji ngMunicipalBureauofEconomyandInformat ionTechnology?Beijing100744)AbstractAssecondgenerati onbl ockchai ntechnol ogy,smartcontractshavegreatl yenrichedthefuncti onalexpressi onofbl ockchai ntomakeappl i cati ondevel opmentmoreconveni ent. Smartcontractsareasetofdigital l yexecutabl eprotocol swhi chconcernbusi ness,fi nance,contractl aw,andi nformati ontechnology.Inrecentyears, advancedsmartcontractl anguages( ASCLs)havebeenproposedtosol vetheprobl emofdiffi cul treadi ng,comprehensi on,andcol l aborati onwhenwriti ngasmartcontractamongpeopl ei ndi fferentfiel ds.However, thiski ndofl anguagesarestil l hardtoputi ntopracticeduetothel ackofaneffecti veconversi onmethodfromtheASCLstoexecutablesmartcontractprograms. Ai mi ngatthisproblem,weproposeathreelayersmartcontractframework,i ncl udi ngadvancedsmart contractl ayer, basicsmart contractl ayer,andexecutabl emachi ne codel ayer. Aftercompari ngandanal yzi ngtheprosandconsofseveralASCLs,wetakeSPESCasanexampletoexpl orehowtodesignconversi onrulesfromi tscontract收稿日期:2020 04 20; 在线发布日期:2020 09 22. 本课题得到国家科技部重点研发计划( 2018YFB1402702)、 国家自然科学基金( 61972032)资助. 朱 岩, 博士, 教授, 主要研究领域为信息安全与密码学、 安全计算、 区块链、 移动云计算. Email: Zhuyan@uSt b.edu.cn. 秦博涵,硕士研究生, 主要研究方向为区块链、 智能合约. 陈 娥, 博士研究生, 主要研究方向为密码学和网络安全. 刘国伟, 硕士, 髙级工程师, 主要研究方向为大数据、 安全系统、 安全管理和标准.3 期朱 岩等:一种高级智能合约转化方法及竞买合约设计与实现65 3totargetl anguagecontracti nSoli dity.Wespeci fytheconversionrul esfromtwoaspects. Oneisprogramarchi tect ureofthetargetl anguage,whi chconsi stsofmai ncontractandpartycontracts.Thecorrespondi ngrul esprovi deanapproachtoconvertthedefiniti onofSPESCbasedcontracti ngparti esintopartysub contractsontargetl anguage,aswel lastoproducetherestofSPESCcontracti ntomainsub contractontargetl anguage. Theotheri stheapproachtospeci fynotonl yprogramarchitectureandstoragestructureonbasicsmart contractl ayer,butal soi mportantmechanisms,i ncl udi ngpersonnel management ,ti mi ngcontrol ,anomal ydetecti on,etc. Thesemechanismscanassistprogrammerstosemiautomatical lywri tesmartcontractprograms.Moreover,byi ntroducingthenotationofgroup,theSPESCbasedsmartcontractcansupporttheoperati onofdynamical l yaddi ngparticipantsi ntothecontract.Weal soveri fythel egi bilityofSPESCandthecorrectnessoftheconversionprocessesthroughtwocasestudi es.Fi rst,weinvitesomestudentsfromdepartmentofcomputerscienceanddepartmentofl aw.They,di vi dedintofourgroups,areaskedtoreadvoti ngandaucti oncontractsinSPESCandSoli dity,andanswerquesti onsdesignedforthecontracts.Theresul tshowsthatthespeedofreadingSPESCi sabouttwi ceasfastasthatofreadi ngSoli dity,andtheaccuracyofreadi ngSPESCishigher. Then,takingtheaucti oncontractasani nstance,weanal yzetheprocessofbi ddi ngcontractsandcompi l ethemi ntocontractsi nSPESC,andthenprovi dethewholeprocessofconverti ngfromaSPESC basedcontracttoanexecutabl econtractprogrami nSoli dityaccordi ngtotheaboveconversi onrul es,andveri fythecorrectnessoftheconversi onprocess,i ncl udi ngcodi ng,depl oyi ng,runni ng,andtesti ng,throughEthereumpri vatechai n.Thei nstanceresul tsshowthattheconversi onrul esandthethree layerframeworkcansi mplifythewritingofsmartcontracts,standardi zetheprogramstructure,andhelpprogrammerstoveri fythecorrectnessofthecontractprogram. Inourfuturework,aformalrepresentati onshal lbeestabl ishedontheexisti ngSPESClanguagemodel .Throughformalmethods,wecanfurtherprovi deformalanal ysistool stoveri fypre andpostconditi onsofcontractterms,aswel lasti mesequencebetweenterms.Secondl y,i nvi ewofthecorrectnessofthegeneratedSol i di tytargetcode,wecanconti nuetoi mprovethegeneratedtargetcodebasedonexisti ngresearchesonanal ysisordetecti onvul nerabili ties,opti mi zetheprogramstructureandspeci ficati ons,andenhancethesecurityofthecontract.Keywordssmartcontract;domai nspeci ficlanguage;codegenerati on;SPESCi 引 言智能合约[ 1]作为第二代区块链的技术核心, 它是区块链从虚拟货币、 金融交易到通用平台发展的必然结果. 广义上讲, 智能合约就是一套数字形式的可自动执行的计算机协议[2]. 由于它极大地丰富了区块链的功能表达, 使得应用开发更加便利, 因此近年来它已引起学术界与工业界的广泛关注.狭义上讲, 智能合约就是部署并运行在区块链上的计算机程序. 智能合约的代码、 执行的中间状态、 及执行结果都会存储在区块链中, 区块链除了保证这些数据不被篡改外, 还会通过每个节点以相同的输人执行智能合约来验证运行结果正确性. 区块链的这种共识验证机制, 保证了智能合约的不可篡改性和可追溯等特性, 从而使得它具备了被法律认可的可能.智能合约相较于比特币的脚本指令系统, 可以处理更加复杂的业务逻辑, 并可以更加灵活地在区块链中存储包括合约状态在内的各种数据.目前各大区块链平台和厂商都添加了智能合约模块, 较为流行的智能合约平台包括以太坊( Ethereum) 、 超级账本( Hyperl edgerFabric) 等.在智能合约语言方面, 以太坊的智能合约目前支持Serpent 和Soli dity两种编程语言, Serpent 类似于Python语言, 而Sol i dity类似于JavaScript 语言; 超级账本支持如G〇、Java 等传统编程语言进行编写; 此外, 其它平台也都在已有编程语言( 如C、6 54 计 算机 学 报 2021年C++Java) 基础上给出了智能合约开发工具. 总之, 从语言形式和运行环境上讲, 目前的智能合约可以分为以下三种:(1) 脚本型智能合约. 通过区块链中定义好的脚本指令和堆栈式类Forth语言完成基本的计算与条件控制, 如比特币脚本系统.(2) 传统编程语言智能合约. 其语言直接采用传统程序语言, 部署在虚拟机( VM) 或容器( Docker)里, 通过规定好的接口与区块链进行交互. 如超级账本平台中的链码采用Java、Go等语言, Neo 平台支持将C#Java和Python等多种语言编译为NeoVM支持的指令集.(3) 专用智能合约语言. 模仿传统程序语言并添加了与区块链交互的特殊元素, 如以太坊的Sol i dity语言, 同时该语言含有gas计费等特殊功能.研究动机. 通过上述分类可知, 智能合约平台和语言已日益成熟且功能趋于完善. 然而, 由于智能合约通常涉及到计算机、 法律、 金融等多领域的协作, 而目前的智能合约编程语言存在对于非计算机领域人员不够友好, 对没学习过编程的人员来说难以理解等问题. 具体而言, 目前的智能合约语言存在以下几个缺点:(1) 程序语言与法律合约形式相去甚远.(2) 智能合约程序专业性强, 用户和法律人员难以理解.(3) 从法律合约到可执行智能合约代码生成没有建立直接联系.这些缺点导致合约的编写非常困难, 不同领域人员之间交流存在障碍, 大大制约了智能合约的开发效率和公众的认可程度.近年来高级智能合约语言(ASCL) 已被一些学者提出来解决上述问题. 这种语言是介于现实合同与智能合约之间的一种语言, 通过易读且规范化的语法, 帮助不同领域人员进行沟通, 并可(半) 自动化地实现向平台智能合约语言的转化, 辅助编程人员进行编写.相关工作. 基于区块链的智能合约概念被提出以来, 不少学者在程序设计与平台构造等方面都做了大量研究工作. 这些工作中的多数研究是通过形式化语言验证合约的正确性, 如文献[3 7]等; 也有不少研究是从法律角度讨论智能合约, 如文献[8 11]等. 但以易于读写的语法建立高级智能合约语言模型, 并实现向可执行智能合约语言转化的工作比较少. 下面将介绍与ASCL相关的几种研究:文献[12]提出了一种被称为Si mplicity 的功能性语言, 该语言通过对抽象机器上操作语义的评估,计算空间和时间资源消耗的上限, 在执行之前计算出比特币脚本和以太坊虚拟机中的资源消耗费用,有利于解决智能合约的预付费问题.文献[13]提出了一种类自然智能合约语言( SmaCoNat) , 以可读性与安全性为目标, 通过限制用户定义变量名、 限制嵌套的使用、 代码分节、 拓展基础类型、 自然语法、统一身份表示的几种措施增强合约的可读性与安全性.文献[14]提供了一个新的自动生成智能合约的框架, 其框架利用语义规则对特定领域的知识进行编码, 然后利用抽象语法树的结构来合并所需的约束, 最终可以通过经过约束的语法编码为区块链的智能合约.文献[15]提出了一种新智能合约语言(Fmdel ) ,着重从金融的角度描述了合约的资金转移动作及乘法、逻辑、 时序表达式. 但Fi ndel只包含两种基本动作:Zero与One; 两种乘法运算:Scal e 与Scal eObs;Gi ve 变更执行方; 三种逻辑表达式:and、 or 和if; 以及Timebound 时间表达式. 因此, 该语言功能较单一.文献[16]提出了一种类自然语言智能合约语言( SPESC) , 它是一种以解决智能合约语言对于非计算机人员难以理解的问题为目标提出的高级智能合约语言. SPESC合同结构包括合约名称、 合约当事人、合约条款和附加属性四部分, 前三者分别与现实合同中的合同名称、 合同主体和合同主要内容对应,合约属性则是为了利用区块链不可篡改性记录合约中的重要信息及变更过程.与其它智能合约语言相比较( 见第2 节) , SPESC的语法易读、 结构清晰, 且包含完整的语言模型定义, 是智能合约未来的发展趋势之一, 更接近本文对高级智能合约语言的要求, 但目前SPESC还没有转化为可执行智能合约语言的生成器, 因此, 本文将继续针对这一问题进行研究.本文主要工作. 本文针对高级智能合约语言与可执行智能合约语言之间缺少转化方法的问题, 通过常用合约的实例化研究, 设计一种针对SPESC语言的可执行代码生成器, 给出了SPESC与目标程序语言( 以Sol i di ty 为例) 之间的转化关系, 可简化智能合约的编写、 规范智能合约的程序结构、辅助编程人员验证代码的正确性. 具体工作如下:( 1) 提出一种包括高级智能合约层、 智能合约层和机器代码执行层的三层智能合约系统框架, 该舉 着等:一种胃攀赞飯合錢翁化#., s竞买t纣駕计与黧现 65 5 3 期据幾長處編#了已有撺SiimCeNat 、 SWRL、 Findd、SPESC等高级智能合.约谱言特点基础上而提出的,弁給出了离级智能合约语貪编写智能合约的箱本雛獲》德给出了一种SPESC到1标輕春语言(Solidi tyi的转化规则. 首先, 给.出了根据SPESC合约当事人定义生成目标语言当事人乎合约、以及SPESC其余部分生成_标语言主体子合约的对歲关系I 其次,除程序框架与存储结构外, 目标语言程序还包含当事人人炅贊理、程序时序控制、 异常检测等机制, 这些机制能辅助编程人貝半自动化地编写智能合约程序,本文以竞实合约为桌例* 给出了根据上述转化规则从SPESC合约转化到可执行Sol i dity合约语貧程序、以及该程序的部箸、运行、测试的全过裎.首先, 通过引人当事人群体, 实现了支持当事人动态加人的SPESC竞:买智能費约; 然后V在 成可执行Solidity竞买合约谣言碁惠_, 通过以太坊私链部蓍并运行测试, 验怔了转化过程的正确性,组织结构? 本文粲2节将SPESC考几种相关工作对比分析; 第3节介绍包含高缀智能|钧语If的智能食约系统框樂第4 节介绍SPESC 的语法*第5节分析竞实的流程?第6 节.展示如何通过SPESC编写竞买合约; 第7 节说明以Soli dity 为目标语言的SPESC.编译规则满g节将计算机与-法律學生分组阅读SPESC与Sol i di ty编写的合約,, 完成问答验证易用性, 并将生成的Sol idky智能含约部箸并测试;最后迸行总结: 与眞望?2 相关工作T商我们对本文相关的几个工作1&1 5]进行梳理, 并将它们与SPESC[ 1 6 ]相比较>从而介绍SPESG的机制与优势.(;□gmaGoNat[ 1 3 ]与SPES0_?被择.出 两: 奢结抅栢似. 姻图1 所:示, SmsGsNat 合: 约?含合頻'头(Headi ng) 、 账户(AcwuntSeptioo.)、 资产'{Asset' -SectiQ.n)、 协议(AgreemeajSMrti on)、?件{Event-S<^t1〇n.) , 其中, 合约头、 账户、 事件分辄类似于SPESC.中的合约名称 事人、条款,而资产辱协议分别用来声明合约中渉及的资产以及对资产初始化. 诙含釣中展示TS_JGE>Nrt: 语言编写的出督停车蔡来控制停车场的合约.1ContractinSmaCoNatversi on0.1.23§InvolvedAccounts:4Account'Barrierin'by'AComp'byGenesi sali as'Barri erin'.sAccount'BarrierOut'by'AComp'byGenesisalias'BarrierOut*.67§InvolvedAssets:?AssetTheCoi n'byGenesi salias'TheCoi n'.9AssetParkTicket*bySelfalias'Ticket'.i 〇Asset’OpenBarri er'bySelfalias’Open’,ui2 §Agreement:i sSelfissues'Ti cket'withvalue42.uSelfissues'Open*withvalue1 .151 6§InputEvent:? 7 ifI nputisequalto'TheCoin'fromAnyoneisandifvalueofI nputisequalto0.3i 9then2〇Selftransfers'Ti cket'wi thvalue1toownerofInput.21 Selftransfers'Open'withvalue1to'Barri eri n'.22Selfissues'Open'withvalue1. 23endif2425 ifI nputisequalto'Ti cket'fromAnyonethen26Selftransfers'Open'withvalue1to'BarrierOut'.27Selfi ssues'Open'withvalue1.28endif图1SmaCoNat 合约翁于欒产做: 出: T: 更加具体的描述考限定,, 但暴Si取CeMst与乘文中对ASC.L■'要:拿相比害_一些差系: ①SmaCoNat 中株有_: 达如钶隹合约中存储_息, P、支持对于资产转移的描述<因此应用范爾较小; ?SmaCbNat 中没有对于时序的控制, 每个InputEvent 之间相互独立, 仅通过资产进行联系, 条款之间的关系更难梳理:与理懈,(2)文献[1C釆用改进后的网络本体輋賃COWL)—语义网规则语貪<SWRL)描述智能合约. 如_2 所示, 子图(a)是通过SWRL表示的智能合钓, 子图(b)是曲SWRL, 转化的JS0N格式键值对, 子图Cc) 是:最终生成的Go语言智能合钓. fi2展示了对病人信息进行校II的食约, 该合鈞要求疴人性别为女'性5 年爾大于&參尽管该文献提供了从SWRL自动转化为智能合约的生成器, 但是该锫言( 如廚2Ctf) 所示)采用本(a)SWRL智能合约(b)JSON格式键值对(c)Go培言智能合约图2蓮斌语XR痛典1 ( 满&0’生威會詩6 56 计導机攀报: _1苹体论语言的语怯. 表示,不易读写, 且主要虚用于对数据的限制考检验, 缺芝对于数据、 合约状态变化以及金_方面韵描述.(3} Fi mkl[1 53是一种声明式面向金融的智能合约语f, 通过两种资金转移动作与乘法、逻辑、 时序三类表达式的组合编写合约. 其合鈞最終体现为一个表迖式. 如下所示:£zcb  ̄! And(GixiMScolei1, 0.( fm-i1:SI>>>i,Af(?pw+1vears.Bwuleil1? (JncilSl'ii) )}.读翁达式翁示vH|攒人向倩掌人: 償礬10 USD,一_后借款人还款llUS'D. 由此可见, Findel 可以表示具有时序苯系的筒单金融合约*但无珐3^持变量的定义, 且一个合约只能渉及两个当事人, 与高级智能含约语1TASCL要求不符>(45SPESC[1 6]语言类似擎自, 然靜肓, 通过采用瑪实世界合屛中的语法元素,构建了SPESC谙法模型, 支持含缚当霧人权利 与义务(shal l )、 以及資产转移规则的定义?例如, SPESC描述的买卖合数如圈5所示.contractSimplePurchase2{partySeller{post〇collect〇}partyBuyer{一}info: ProductInfotermnol: Buyercanpaytermno2: Sellershallpostwhenwithin5dayafterBuyerdidpay.termno3:BuyercanconfirmReceive一"termno4: Sellercancollect一"typeProductInfo{price: Moneymodel: String图3SPES) C、合:餘示例该合约展示了销售者和购买: 者之间商品买卖的基本流程, 包含四条条款: 购粟者可以付款—荽者付款后. 销售者戀在5天内发货? 购实者W确认收货; 错售者有权收取货款.SPESC兼腻了现:实合约与现有智'能合约的诗点: 通过条款方式明确了合约当事人的权利与义务、同时面向甫法与金融领域定义了灣事人行为、 资产转移拇作、 履行期限以及变量化的合约信息.因此,SPESC支持编写买卖、竞买借贷.金融娄合鈞, ,, 同时也可寒现投裏s存怔等司法类合约. 与其它方案相比, SPESC更接近于ASCL要求.3 系统框架3. 1 系统目标禱于区块链的智能合约系统通常是指支捧可自动执行的含约代码生成并运行的软件系统. 现有的智能合约系统可分为两层: 智能合跨层与机器代码执行层? 为了增强合约的规范性和易读性, 本文的智能合约系统在这两层结构之上添加一层高级智能合约层, 高级智能合约语言在智能含鈎语言之上提供了更优化的封裝, 形成了类似于高敏程序M#与低级程序 言之间的美系, 如C++谙言与汇编语言.对本文的智能合约系统提出以下'棄求:(1) 高级智能合约谱言更便于阅读与理解*( 2)规范化智能合约的编写.C3:) 能支持高效的智能合约生成.⑷生成更系统的目标语言智能合约程序框架?3. 2 智能合约编写框架基于本文所提出的三层智能合约系统, 合釣当事人通过高级智能合约语言编写智能合釣的流程及框架如菌4 趼示? 在此框架中, 嘗先, 用户可以根据现实合同或真:实?樹进行高级智能合约语言的编辱5 然后, 通过高级智能合约语言的编译器, 将合约转化为传统程序语言编写的智能合约; 最后^生成机器代码并将其部署运行祖区块链中?现实合同 髙级智能合约语言 智能合约语言? 法律效力 转%?结构规范 ?图灵完备?自無语言?时序逻辑 ?事件触发?人工裁决?类自然语言?链上交互^JL虚拟机执行1鑪1 内存,数据, 机器11机器结果1数据 代码 11代码>成发布执行结果r 读取数据区雌下载代码V部署区块N-1区块N J区块 * NH1>慮4 智能鲁韵 架( 1) 现实合词在符合法律故精浞下签订成立后就具有法律效力. 规实合词的书写与?式相对自坩,没有严格规. 定的格式, 郎使合同中脊存歧义或缺曹, 也可以由司法机构根据法律与合约当#人的真实意图进行栽决. 它与目前的智能合约相比, 具有以下特朱 岩等:一种高级智能合约转化方法及竞买合约设计与实现 65 73 期①具有法律效力;②采用自然语言, 书写自由;③一旦出现争议可由人工裁决.(2) 高级智能合约语言将计算机程序、 法律、金融等多个方面的特点融合在一起, 以一种既比程序语言更容易被理解、 又比自然语言更规范的方式表达合约内容. 本文所采用的SPESC具有以下特点:①参考现实合同的结构;②通过时序逻辑表达时序关系;③采用类自然语言的语法.(3) 现有智能合约语言与传统的程序语言类似, 并在此基础上设计或预定义了区块链相关特殊元素或操作. 由于智能合约主要涉及多个用户之间的交互, 因此多采用事件触发的方式, 由用户调用并触发智能合约运行. 目前主流的智能合约语言如Sol i di ty、Java、GO等具有以下特点:①语言是图灵完备的, 表达能力强;②事件触发的方式执行;③预定义了与区块链交互的操作.(4) 智能合约通过编译生成机器代码后, 可在虚拟机或容器中运行, 它的部署执行步骤主要分下面三步:①部署智能合约. 将机器代码发布到区块链中, 使得其它参与共识的节点可以获取智能合约以便验证;②执行智能合约. 在执行或验证智能合约前,将智能合约代码下载到本地, 同时将存储在区块链中的合约状态恢复到内存中, 并在本地虚拟机中运行;③发布执行结果. 根据输人参数运行智能合约后, 将执行结果与其它参与验证节点共识, 记录到区块链中.4SPESC介绍下面介绍本文采用的高级智能合约语言SPESC的基础, SPESC智能合约由四部分组成: 合约名称、合约当事人描述、 合约条款、 附加信息.定义1. 合约. SPESC合约具体定义如下:Contract::=Titl e{Parties+Terms+ Additi onal +}.合约的当事人可能是个人、组织或是群体, 合约中应记录其关键属性和行为.定义2.当事人. 合约当事人具体定义如下:Parties::=partygroup?PartyName{Fiel d+Action+}.在上述定义中,group关键词表示合约的当事人是群体, Rei d表示当事人在合约中的需要记录的关键属性, Acti on声明了当事人在合约中的权利与义务.个体当事人是指合约中拥有一定权利或义务的个体, 如买家、卖家等. 群体当事人是指在合约中拥有相同权利与义务的多个个体, 如投票人、 竞拍人等, 群体当事人既可以在合约执行前事先指定, 也可以在合约运行中动态加人或退出.当事人定义是为了便于处理与记录当事人的信息. 每个个体在区块链中都有对应的账户地址, 因此,当事人属性中默认包含地址属性, 用户可以通过设定具体地址来规定当事人的具体身份, 也可以不在编写SPESC时规定, 而在智能合约运行时根据条款与执行情况进行变更.合约中的条款分为权利条款和义务条款两种,权利表示在一定条件下可以执行的动作, 义务表示在一定条件下必须完成的动作, 而未满足条件的动作或未被写人合约的动作表示禁止执行的动作.定义3. 条款. 合约条款具体定义如下:Terms:termtname:PName(shal l| can)AName(whenPreconditi on) ?(whileTransferOperati on+) ?(wherePostConditi on) ?.在上述定义中, PName 表示当事人, AName 表示执行的动作, Preconditi on表示可执行该条款的前置条件, TransferOperati on表示执行该条款的过程中伴随的资产转移, PostCondi ti on表示该条款执行结束后该满足的后置条件. 前置与后置条件区分的依据是: 合约的业务逻辑可通过前置条件与时间表达式予以表达, 对于程序预期外的情况, 可通过后置条件予以限制.资产转移的操作被分为存人、 取出、 转移三种.定义4. 资产转移. 资产转移操作定义如下:TransferOperati on: ;={ Deposi t}deposit(val ueROP)?AssetExp| { Wi thdraw}withdrawAssetExp| { Transfer}transferAssetExptoTarget在上述定义中, ROP表示关系操作, 包含>、<、=、>=和<=, AssetExp 表亦资产表达式, 用于描述转移的资产, Target 表示资产转移的目标账户.为了保证智能合约检查与记录的功能, 所有资产转移需通过合约账户实现. 如A向B转账的操作, 需先由A向合约账户转账, 再由合约账户向B6 58 计導机攀报: _1苹转账f通过上述方法S 合约便于根据条款对转账条件与金额检查, 同时在食约中记录转账信息, 因此,合约中渉及的资产转移本质应分为W种,即账户向合约转移和含约_向账户转移, 如图3(a)所示.图5 黉产__德#由于从用户账户向合约转移资产的操作只能由该用户自a主动执行, 而不能强制执行,因此为了区分执行者考其它账户 资产转移操作分为三种, 如图5( W所示s(1) 存人(d印oMt)? 用户由域将憲: 产存人合约.( 2) 取出( withdraw) . 根据合约条款从合约取出资产‘C泊转移(transfer)? 根据合约条款从合约向其它账户转移资产.在三种资产转移操作中, 存人操怍与后两种操作不同, 在后两#中, 操作的资产都是事隹在合约条款中约定, 由常量填是魔鴦可以准确描述的. 而在存人操作中, 由于蕞由用户主动执行;》荐人资产不一定由合约直接规定含约A能对资产进行限定, 如在第!5 节描述的合约中, 合對无法直接规定竞实人在竞拍时的出价、而可以P良制为出价一定要大于当前_高价■此外? 资产转移操作述. 与墨体的智能含约乎台及语言有关? 例如. 在以太坊平含中, 账户既可以基合约账户也可以是用户账户?由于Solidity 编写的合钓中可以定义布收到以太币时自动执行的接收方法, 向未知用户转移资. 产可能存在安全风险. M此,在以以太坊作为智能合萄平台时, 虛尽量通过用户主动取款的方式代眷转账方式.程. 竞买(Auction) 是专门从事?拍卖:亚务的机构■接受货主的委托, 在规. 定的时间与场所, 按照一定的章鐘和规则, 将要抬卖的货物向买主展示, 公开叫价竞购, 巔后由拍卖人把货物卖给符合规则的买主的一种现货交易方式. 本文主褰讨论以最高价成交的竞买合约.意买合_约渉及两个当事人:( 1.) 捎卖人. 即从事拍卖括动的企业法人.( 2) 彘买人.即参加竞购拍卖标的的公民、法人或其它组织,最高价竞买流程如图8 所示; 其流程如下:(1) 首先, 由拍卖人或主持人开始竞拍, 并设置竞拍底价和竞栢结束时间.( 2)竞拍斯间竞.买人fi时可以进行出价* 筒时Jb交狎金t: 如果出价大于目前爾裔价,lil讀为新'嫿高价, 押金放人资金池, 并将之前儀湾齿价着所变押金退回y否则, 出价不大 目前讀高价, 出价失败, 道国押金^( 3> 在竞拍时间结東后, 拍卖人可以收取合釣中掌高通价齒押禽-嫌6 费福程5 竞买合约6SPESC编写竞买合约本文將通过基SPESC的拍論会錄实钶?珙B4義上:迷的濂程中?用SPESC编写合约(见附件A)SPESG生成器, 并验证生成合釣的正确性以及三&分为三个部分:合约框架的可用'性i举节将介绍竟买脅约规卿及流(1) 食约当事人? 如前所述, 竞买合釣包含竞买朱 岩等:一种高级智能合约转化方法及竞买合约设计与实现 65 9 3 期人与拍卖人两方. 首先, 竞买人的定义如下:partygroupbidders{amount:MoneyBidOWithdrawBid( ) 還M人属于群体当事人, 是.超户在执行^竞拍操作Bui 时表明参与竞、 买弁注册成为竞买人. 竞买人包含货币裘型的属性amount, 甩擎fe录竞买人的押金池, 用 轉牧无敏的进价? 同时WlthdrawBi d 声明了竞买人可以回收查价失败所交的押金.其次, 拍卖人的定义如下:partyauctioneer{StartBidding(reservePrice:Money,auctionDuration:Date)Coll ectPayment( )J拍卖人即拍品所有者属于个体当事人, 声明了拍卖人可以执行的两个动作: 开始竞拍StartBidding 和结束竞拍Col lectPayment. 在执行开始竞拍时, 需要输入两个参数: 底价reservePrice 和竞拍时间auctionDuration.( 2)合釣中记录的附加信息. 本含约中主寒舊粟记_三个变量:highestPrice:MoneyhighestBidder:biddersBi ddingStopTime:Date第一个变量为货币鸯遵, 记緣了当前最高价, 第二个变量为竞买人类翌, 记焉了当前最高出价者第三个变量为曰期类型. 记歲了竞拍结束时间_在此处定义的債滇会被记. 豪到区块链中> 从而保证K块链不仅记录了信息当前的状态, 还会is录含约执行过p中每一步执行后的历史状态?由于&块链数据具有不可篡政性和时序性, 保证了智能合约状态的不可篡改性和可追溯性, 智能合釣与K块链绪合簡一方蔺优势就体瑰在途M?p: ) 条繫, 本会钧中;gs在載: 条条在第3 节的竞买合约分析中可以着也, 有三个_裏当事人主动触发的过程* 分别是: ①开始食拍、②钽价竞拍和③:收取货款, 其佘流程可由程序自动完處,由于任何账户可以柱册为竞买人, 且本■ 文中以Soli dity为目标语 如第4节所述, 如果直接向拍卖人发H资金:是有安耷风险的, 让拍卖人自己取钱会更加安全. 因此, 在爾写含约时添加收回狎金条款,如: 圈7 所亦,通过Petrt网表應了拍蠢: 过黯的状态_移:圈雜中, 合约分为四种状态: 和五种动作. 状态包括生效、 竞拍中、 竞拍结束、合约终止j 动作: 包猜开始食拍、出价竞拍、 收回押金、时间结東、收取货款?在五种动作中, 时间结隶是斑甘箕机自动触发* 其佘四种为用户触发;? 根据四种动作, 编写如下条款.-条款1. 发起竞拍条款寒义如下:termnol:auctioneercanStartBidding,wherehighestPrice=reservePriceandBiddingStopTi me=auctionDuration+now.拍卖人( auctioneer) 有权触发动作发起竞拍(StartBiddi ng), 在动作执行后, 当前最高价(highest-Price) 应为拍卖人输入的底价( reservePrice), 结束时间(Biddi ngStopTi me) 应为当前时间( now) 加上输入的竞拍持续时间( auctionDuration) .条款2.出价竞拍条款定义如下:termno2:bidderscanBid,whenafterauctioneerdidStartBiddingandbeforeBiddingStopTi mewhil edeposit¥value>highestPri cewherehighestPrice=valueandhighestBidder= thisbidderandthisbidder: :amount=thisbidder I !Origi namount+value.竞买人(bi dders} 可以在拍卖人发起竞拍g*且在竞拍结東前, 向合鈞转账(deposit) 进行出价(Bi d)?其:中 抬盡人发起竟撤0由 ?arti 0_5rdidStartBiddi ng_孝, 在囊拍结乘翁由befomBidding-蠢示, 如果出价<¥*1 咖5大于巨前聲畜价(liighestPri—J出价成功|: 如栗离价小于讓警f最畜价, 则出价失败.动作执行成功后, 巖芮出价人的属性( thisbi dder: :amount) 中愈泪職了幾败的街价总额s 其中为方便表达, Origi n关键词表示动作执行前的值,660 计 算机 学 报 2021年合约当前最高价( highestPrice) 与最高价出价人(highestBidder) 应为本次出价( val ue) 与出价人(thisbidder) .条款3. 回收押金分为两条子条款定义如下:termno3_l:bi dderscanWithdrawBid,whenthisbidderisn^thighestBidderandthisbidder: :amount>0whi lewithdraw¥thisbidder I;amountwherethisbidder I !amount=0.如果竞买人a!dders〗 不是最高出价者, 且当前合约中存有押金(thisbidder: :amount >0), 可以取回无效的竞价( WithdrawrBid) . 条款执行成功后,该竞买人押金记录( thisbidder:: amount) 应为0.termno3_2:bidderscanWithdrawBid,whenthisbi dderishighestBidderandthisbi dder: :amount〉highestPri cewhi lewithdraw¥thisbidder I :amount-highestPri cewherethi sbidder I !amount=highestPrice.如果竟:实人是最髙出价者* 且当前合约中存有震靈襲人竞价失败的狎金'《thisbMsigr ;::high成Price), 可以取回无敎的耷价-条款执行成功后, 该.龛駕.人押金记录应为最高价.条款4. 结束竞拍条款定义如下ttermno4:auctioneercanCol l ectPayment,whenafterBiddingStopTimeandbeforeauctioneerdidColl ectPaymentwhi lewithdrawShighestPrice.拍卖人(aucti'mieet) 在竞拍时间謂東后* 且没有收取过货擊U可以收取、货款(Coll ectPayment) 并将趣商价货象敗出C withdraw).7 目标代码生成本节通过竞买合约的例子.. 讲述SPESC的目标代码生成方抜, 从而斑编写好的SPESC合约自动生成¥ol i di ty代猶7.1 目标语言合约框架生成的Sol idi ty 合约分为两部分:(1) 当事人合约 当事人,定义生成的合约. 芏要负賣3事人人员的管理、关键事件的记录与统计和记录飾查询功能.( 2) 主合约. 由其它部分生成的合约, 主要包括变量的定义、修饰器(Modifer).以及条款生成的方法.下面分别对这两个方_的生成过程进行阐述.如圈8所 蘭中麋p了由SPESC自动生成的Soli dity潘言竞赛合约类图, 并通过带颜色的线标明TSPESC元素与其对应关系, Soli dity语官竞繁合约盎分为三个部分, 拍卖人倉约、竞实人含约与舞买由体合约?拍卖人合约中包含相卖人的地址、 人员的注册与查坷方法以及对其所属的两个条款StartBidding与Gol l ectPayment的记录?竞买人合约包含由地址和SPESC中定义的变儳amoat姐戒的結构体>结构体数鳥、 映射遠:、人虽_加与查询 法以及ammnt 的貴_与乘取方法.龛买主体合约中包含当拳入的定义、SPESC中二条附加慑&私ig:he: MPriC0、 higfi械Bidder、Biddhr§-&吵77騰的定义以及拫据五条条款生成的四个方法和商个修饰簾C:o nl yb iddacs、邱1 ysuetimiee; r )., 其中,图asfEse,_成合ii■图讀:處養#舉 着等:一种胃攀赞飯合錢翁化#., s竞买t纣駕计与黧现 661 3 期龜歡3.1 聲S.2 声明猶悬興一个动作"Withdra衩Bi d,因Jfe只生成一个方法》此外, 对于当事人的管理, 除了基本的操作外, 未被使用的管理操作会以注释时方式提供, 如象取当事人群体列表、 删除个体等, 如皋用户在方法的实现中需要使用y可以解除注释使用. 而对于不参与时序控制前条款:, 如竞憂合约中的出价竞拍(fid)和取屈押金( Withdrswmd), 不.#令约中生成记暴执行情况的属性与方法, 实际执行積况仍可以在区块镶中浪溯^恒不在合约中另行记录与处理.7. 2 当事人合约的生成每个当事人都会对应生成一个当事人含约*_于_事人可分为个体a#人■群体当事,人两类(见第. 4节),因此, 灣事人合约可分为个体当事人合.约(Indi vidualPartyGcntracstJ或群体当拿人合翁(GroupPartf-C〇ft: tract个体当事人#约被用来规范一定权利或义务行为猶个体, 如实家、■ 卖家对遺的食约, #体挡事A#约则用来规定拥有相同权利与义务'行为的多个个体, 如投擊人、竞拍人对应的合约. 群体当事人合约与: 个体当參人_区; 拿于: 群体当事人合绮顏食数:组及映射络构体及増删操作>使得群体当事人可以在: 合约运行中动态加入或退出.两乘当*人合约结构如图9'所示?闺I 当_, 人合維_#情况1?当#入个体生威的Sol idity合约肉容按类別分为三个部分.⑴当事人属性, 当事人个体露要记遽的内容包括账户地址、成员嵐?性、条款执行记睪, 账户地址作为账户的唯一身份标识, 对:应账户#区: 块键中的地址(11. 成员属性是在SPESC中由用户使定的_: 要记录的属性, 并会在屢性操作中生成对应的设定与获取方法*秦款执行记議Ree?jri: 裂成规厕如下: 对_该当事人限定的条款集合中中的每个条款“ReeoitdI\^'-li_is-^M^I3dne*;V??;? £r#} ■其中, 《?_: 着取条歉z 的动作名4变量各以下划线起始是为了与用户定义变量K分. 例如, 对于条款1对应的动作StartBiddi ng, 按上述规则将生戚两个变量: _isSrdWlWiife發 记录条款Z 暴费執行完威与-SfiarrSMr ii吨 记暴条款? 执行时间,如图10 所示,竞实例-中拍蠢人未在/SPESC中隹义薦性U低#酉个衡屬華軟StartBiddi ng 利Gol l ectBayment, 每个条拿隹翁前述猶两个屬性,例Wl:_isSMnBiddin:gDoae, ffl _St£i rtBidditigTime.此外?: 瘦讀— 欢Aiirf-?%**麗于记奪抬素人地址.I//attributesofactionStartB iddingbool_isStartBiddingDone;uint_Sta rtBiddingTime;//attributesofactionCollectPaymentbool_isCollectPaymentDone;uint_CollectPayme ntTime;address_auctionee rAddress;图圾 拍翁A合蠢变暴⑵人员管理. 根据当事人是群体还蠢个fr,生成对应管理方法. 个体管理较齿简单, 包括注册、注销与查询三种方法在竞实例子中抢卖人只渉及注^册*%查询拍禽人地址两种方法, 如图11 所示.functionregist(address)public{_auctioneerAdd ness=a;}functiongetAddress( )publicviewreturns(address) {return_auctioneerAddress;Hu 拍肩A的人黄管載(泊条款执行管理? 对于当事人的每条条款, 生成条款执行记_方法, 在条款执行完毕后记录完成时间; 生成査询方法, 返回条款完成时间. 拍卖人的开始竞拍条款生成方祛如图12 所示.I functionStartBiddingDone( )public{_StartBiddingTime=now;_isStartBiddingDone=true;}—functionStartBiddingTime( )publicviewreturns(uint") {if(_isStartBiddingDone){return_StartBiddingTime;>—returnmax:l>'图12 拍卖人条款执行管理方法① 账户在区块链中的地址通常是账户公钥的哈希.参与方个体个体变量地址成员属性条款执行记录方法人员管理注册注销查询属性操作获取设定条款执行管理记录函数查询函数参与方群体个体变量地址成员属性条款执行记录群体变量数组〈 结构体〉映射〈 地址, 数组坐标〉方法人员管理增加删除查询属性操作获取设定条款执行管理记录函数6 62 计導机攀报: _1苹情况2. 当豪人:群体除当事人个体的内容外,还包含更丰霄的_人管理方法, 以及多种记录的查_方式?具律生成规则如下:(1) 当事人属往? 对于当拿人群体, 为了使当事人可以遍历, 采用结构体数II记录个体内容*同时为了方便用户逋过地址查询用户个体僮息, 添加账户地址到幾載坐:__映||_CM:appiiigtable}, 如图lf所示. 其中数组中记录的用户个体变屬与当事人个体的崔舊鮮同.MappingTableArray嫌13 貪參A#体人綦誉is( 2) 人员管理? 当事人群体人员:管理包括添加、删除1査询.添加操作如图13 虚: 线中A.11与A.2) 所示, 例如, 为了添加新的当事人个体 A. 1) 首先将个体燈息插人数组最后一位; A.2) 然: 后在映射表中记录辑个体地址Addrea> sB对应雜数逾坐标JV_删除操作如图13 虛线中B. 1) 到B. 幻所示, 例如, 为了删除个体 根据地址AdctessA从映射中查询到其在数组的'坐标K后< ^. 1)将数组最后一象JV的个体Pg替换掉 位的信息, 并将第IV位输空; B. 2)将映射中记录的 坐标替换为新坐标K;BJ) 将匕的坐标:替换为初: 始像0. 如果删除的个体是黎龜中畢后一隹,则直接將数组和映射表对应位置資置J? 空即可?在竞裏合约中, 竞买人渉及添加与查询操作, 如薦14JF示.functionadd(addressa) public{_biddersEntity.push(bidderstype( {_biddersaddress: a,amount:0}) ) ;_userlist[a]=一sum;_sum++j}functioncontains(addressi)publicviewreturns(bool){return_userlist[a] !=0j>I图1 4 營买人: 的人员;會理方窗GT) 条款执行管理. 当事人群体生成的合约中>除3事人个体包含的记录方法外, 在#约中记款第一个人与最后一个人的完戚条款的时间4是供以下”兰种查询方式i①A1 丨 查询. 最后一个个体完成时间;②First查询. 第一个个体完戚时间;③This 查询■ 这个当拳人个体完成时间,如在,投票合约中, 主持人在所有人都投票H后才能统计, 思SPESC表示如termnol:chairmancancount,whenafteral lvotersdidvote.则通过_一种方式:盡: 衡时间_7.3 主体合约生成生成的主体合约主要分商部分.第一部分是合约属性和当事人的定义与初始化. 合约的属性就是甩户在SPESC中定义的合约信息, 当事人通过上一?节定义的当事人含鐘囊: S义. 其中, 生成的变量默认访问权限为公开、(publ ic》类ifsSoli dity中念开权琅变量可以通过合约直接访问,从而象取合约状暮例如, 竞.实者可以查询合约中/j%/j 德 廉知_貪出价人地址,而_: 定自 3是否中标.第j部分是条款的处理*SPESC合约中的每个条款包含一个动作s 在Solidity中对应生成一个方法?#费中包貪执行条件裣测、方法主体翁执行_,擧橇测三个部分* 如果条件检测失败, 程序会抛出异常弁傲栢应处理.義Solidity中抛出: 暴常'分为tequir#、.a銘妓t:和revert: 三种? 其中, TecjuireJI■傭爾趙"宁检测执行条件, 如方法的输人或合约的状态等, 如果检测不'通过, 以禽纺平舍奢返述痛卞的:負趙 I 而assert关键词用于检测鞋#的?外情况, 在正确运行的程序中aggert 检测永远不会失败,一旦检测失败, 意味着程序中存在错谋,应该修改代码s 而rewrt 关键词与require 类似, 但可以通过与其它语旬错含表达更眞_的情祝?条款的执行条件有三种限制:( 1) 当事人限制. 条款规定有哪些当事人可以执行-( 2) 条件限制>SPESC条款市的前置条件,( 3> 金额限制? 交易操作中的deposit]吾句, 调用该方法青粟向合约存入的金额限制.执行条件检测失败属于程序正常状态, 应返还用户剩余费甩* 并M滚状态?因此, 使用关镩爾reigui rerevert.在条款所生成的方法最后会根据S置条件生成舉 着等:一种胃攀赞飯合錢翁化#., s竞买t纣駕计与黧现 663:3 期相应的执行结果检测, 辅助用户编写方法主体逻辑*检验程序中的错误、一旦?置条件裣测失畋, 袁. 味着程序中参在错误3因此, 使用 关键饲进行检测.SPESC编译规则将依据条款的后蹙条件_测生成方法所包含的主体内容, 翁内容作为编程人员的参考. 词时>编程人员也需依照业务逻辑及其它细节曾查、 补充完成主体逻辑的设计. 在这个过程中,已知方法输人和结果>用户只需麥关;注单个方法的实现,通过后蠻条件验证执行正确性即可.在本例子尊中, 巷序逻辑相对比较筒单.因此,在自动生. 成后t只需添加竞实人注册代码后> 检查代码逻辑没有'问窥, 就可以直接运行.如面1S 所示^SPESC语言代码记齿A, 所生成的Sol idi ty代码记: 为B,when^?fterauctioneerdidStartBiddingI beforeBiddingstopTime(whil6)depos i t¥value>highestPricefwh erehighes tPrice=valuean dI highes tBidder=thi sbidderand| thisbidder: : amount=thisbidder: c^) ri^amount+value.\(a)lf un cti onBid( )publi cfp ayabl &) {! if(I  b idd er s . c ontai n s(msg. sender))i b idder s . a dd(m5g. s ender) ; // REQUIR Erequi re(no w■au cti on eer . Star tBi d di ngTime ()&&require(msg. v alu e>h igh estPr ice) ;this b id der tB i dd ingStopTime) ;bi d der s.getamount(msg.sen der )j// USE RCODEHE REhighe stP ric e=msg. va l ue;highe stB idder =msg.s enderjbi d de rs . set amoun t(msg. se n der,b id d er s .geta mou nt(msg. s en d er)-+msg. val ue// CHE CKIas sert(high estPr ice=msg.va lue&&highe stB idd er =msg.sen der &&b id d er s .get a mou nt(msg. s en d er)=th is_b i dd er_Ori_a mou nt+msg. va l ue) ;(b)图15蠢嶽2 对应儀系(1:) 根据A 續1 行中:动作1名BM:曼處柑词方法名(B乎福第1 行记为B1) . 如果检测到A中含有资产转移语旬*如第4行的whi l e关键词, 则.为方法添加科yabk关键词,表明方法可以接收或发送以太币:(21根藤A第1行6f5Bidders的银定生成当事人检测. 然而在本例中拫据費约实际意?,出价的人即为食实人,因此, 需果春动去掉当事人限制并添加当事人注册代码(B2?3) : 如果出价者不是竞餐人则注册成为竞买人;(J0根据SPESC中在拍卖人开始鸾实后竞裘时间结東前的前置条件(A2?3)与出价大于最高价的棄求(A4) 生成了两条执行赛求( B4?3根据SPESC中的后置条件(AS-?7), 自动生成了三条执行代码B7?9〉 :记录了最高价, 最高出价人和焉高出价人的资?金池, 供编程人a参考;(5.) 根据后量条件( A5?生成了断言(B10?11) 用于结果检测,其中A第T行中使用了Ori关键词表示诶变議泰方法执行前的值, 因此在方法主体前记录该变量CB6),以便于在检测时使用.上述例子中,所生成的执行代码术縛要修改, 就可以茈确运行,但如果将第二条条款的后置条件:膂换为如下语句:wherethisbidder !;amount=thisbidder :: Oriamount+highestPriceandhighestPrice= valueandhighestBidder= thisbidder.条款表达意思相周, 但生成的方法主体会. 错吳地将i一个最慕价加人本饮出价者前資:金池!ff’C断言可"以成功检测出错误h需要手动调整程序ff生成的语句顺取7. 4 表达式实现SPESC. 辨共含有S録达式: 逡辑、关系、运算、常量和时间表达式. 在SPESC谱賃的转化模型中, 所有表达式都继敢Express 抽象类, 增强了互操作性?如表1 所示L中薦示了SPESC?达式对应的编程镇言运箕符, 以德生成后的优先锲.表ISPPSC表达式对应运算符及优先级优先级 生成运算符 SPESC表达式ActionEnforcedTimeQueryThisExpression2I NotExpression3 MultiplicativeExpressionAdditiveExpressionTimeLineRelati onalExpressionTimePredi cate6==、 !=Relati onalExpression7AndExpressionTimePredi cate8| | OrExpressionConditional Expression?.ImplyExpressionSPESC中的时间表达式类型分为时间点与时间段, 其中类型为日期(Da?)的當量与变養#动作完成时间表:: 达式(AGt;ionEnfot&WTTi nieQuety)v金遍'6 64 计 算机 学 报 2021年时间表达式( Gl obal Ti meQuery) 属于时间段; 而类型为时间(Tmie) 的常量与变量属于时间点.时间线表达式( Tmi eLme) 中, 时间点与时间点不能进行加减运算, 时间点与时间段运算结果为时间点, 时间段与时间段运算结果为时间段. 而时间谓词表达式(TimePredicate) 的返回结果为布尔值, 其生成规则如下:afteranow^>aaafterb=〉>a〉>bcafterb=〉>now〉>c+bwithincafterb=>(now>b) &&(now〈b+c)其中, a 与b属于时间点, c 属于时间段, now为当前时间.8 实验及结果针对SPESC语言及其转化规则, 本节将通过两个实验分别测试SPESC语言所生成合约的易用性和SPESC合约转化可执行合约的有效性.8. 1SPESC语言易用性实验针对SPESC语言的特性, 我们设计了一个问卷式对照实验, 从阅读时间与准确性两方面评估SPESC合约是否比现有的智能合约更易于理解.(1) 参加者. 本次实验邀请了15 名参与者, 包括9 名计算机科学系( CS) 学生以及6 名法学系(L)学生. 15 名参与者被随机分为两组( 即GA和GB).GA由四名CS 学生( 即GACS) 和三名法律学生( 即GAL) 组成. GB由5 名CS学生( 即GBCS) 和3 名法律学生( 即GBL) 组成.(2) 智能合约. 本次实验所用智能合约包含“借贷合约”与“竞买合约”两种, 其中, 借贷合约( LendmgSO) 改编自Github 上的开源Soli dity 程序?. 竞买合约( Aucti onSO) 改编自Sol i di ty 文档中描述的官方示例?. 作为对照, 将上述两种SoHdity 合约编写为SPESC合约形式, 被称为Lendi ngSP 和Aucti onSP.(3) 问卷与数据收集. 实验采用针对不同合约的问卷回答形式, 每个人得到2 份问卷, 分别是借贷问卷、竞买问卷. 试卷包括1〇 个问题, 采用标识a.,表示问卷:r 中第_y 个问题, 具体问题如下:Qi . i 谁能执行confirm函数? ( SS)Qu借款的条件是什么?( SS)Ql . 3 借款会造成什么影响? ( SS)Qu还款会造成什么影响? ( SS)Qu借贷者的义务有哪些? (MS)Qu什么条件下可以参与竞拍?( SS)Q2 . 2 如何取回自己失败的竞价?( SS)Q2 . 3 目前最高出价者可取回之前失败竞价吗? (SS)Qu结束竞买会造成什么影响?( MS)Q2 . 5 竞买者有哪些权利? (MS)其中SS、MS分别表示单选和多选.( 4) 实验过程. 首先, 我们对所有参与者在前一个小时讲解了SPESC和Soli dity 的基本语法和语义; 其次, 通过购买合约的两种语言示例回答参与者的问题; 然后, 要求GA和GB分别阅读Lendi ngSP和LendmgSO, 并填写相关借贷合约的问卷, 我们对每个参与者答题时间进行记录; 最后, 要求GA和GB分别阅读Aucti on SO和Aucti onSP, 并填写有关竞买合约的问卷并记录时间.(5) 实验结果. 在上述实验过程中, 我们从回答过程与回答结果中统计了作答平均时长 与平均准确率 , 其中, G表示组别, Q表示问题. 实验结果如表2 和表3 所亦.表2 问卷1统计(借贷合约)哼. /% PV% pC^y% ̄P%J%GACS7 62. 8 100. 0 100. 0 75. 0 75. 0 83. 5 83. 9GAL 722. 3 100. 0 100. 0 100. 0 100. 0 89. 0 88. 7GA 745. 4 100. 0 100. 0 85. 7 85. 7 85. 9 86. 0GBCS 1551. 2 20. 0 80. 0 60. 0 0 63. 4 39. 6GBL 1193. 7 66. 7 0 66. 7 0 66. 7 39. 2GB 1439.637.5 50. 062.5064.639.4表3 问卷2 统计(竞买合约)丁Gq2 巧,,Fg/% y2.2Pgq/% ^2. 3 吃. 4/%GACS 1264. 0 50. 0 50. 0 25. 0 75. 0 95. 0 64. 5GAL 1437. 3 33. 3 33. 3 66. 7 55. 6 58. 3 43. 0GA 1338. 3 42. 9 42. 9 42. 9 66. 7 79. 3 55. 3GBCS664. 2 60. 0 100. 0 100. 0 100. 0 100. 0 91. 7GBL 756. 0 0 33. 3 66. 7 100. 0 100. 0 50. 0GB 698. 6 37. 5 75. 0 87. 5 100. 0 100. 0 76. 0从表2 和表3 结果可知: 对于借贷合约, 阅读SPESC合约的GA完成速度比Soli dity 的GB 快( 前者用时是后者〇.52 倍) , 答题准确率更高( 提高1 倍多 对于竞买合约, 阅读SPESC合约的GB完成速度同样比Sol kHty 的GA快( 前者用时是后者〇.52 倍) , 且答题准确率更高(提高约0.4 倍).8. 2SPESC语言转化实验针对SPESC合约转化有效性, 我们将通过实验①https : //gi thub. com/t erzim/dappbin②https : // solidity, readthedocs. io/en/develop/ soliditybyexample. ht ml ^simpleopen auct ion朱 岩等:一种高级智能合约转化方法及竞买合约设计与实现 66 53 期的方式验证第7 节方法生成的Sol idity智能合约.下面介绍从编写SPESC到执行完成流程中的实验环境、 实验步骤及预测结果以及实验结果与分析.(1)SPESC语言模型与生成器SPESC包含70 条语言模型与64 条语法规则,以及一千多行的生成器代码, 最终形成一个Ecl ipse插件, 通过插件编写SPESC代码并生成目标代码.SPESC的语法和生成器通过EMF与Xtext 实现,其中, EMF是一个建模框架和代码生成工具, Xtext是一个开发程序语言和特定领域语言的框架.(2) 区块链测试平台实验系统运行在三个Wi nd〇ws7系统的虚拟机下, 区块链采用以太坊平台, 以太坊Geth 客户端版本为1.7.0 stabl e. 创世区块的参数如图16 所示.’ ’homes二eadBlock”: 0,"eipl55Elock”::,’ ’coinbase_ ■: " OxOOOj j DuO OOOjj DuOODOjj D D OOOOOj D D 000 00 OD D 0' *,' 'diffic-LLlty": r? 'mixhash": " Dx C 0 0 C1 C 0  0u C 0 0 C1 C 0 0 0 C 0 0 C1 j 0 0 0 C 0 C> C1 j 0  0 0 C 0 0  C1 j 0  0 0 C' 0 0图16 创世块参数实验中三个虚拟机共部署3 个节点, 分别是一个拍卖人节点A和两个竞买人节点B1 与B2. 每个节点的主要账户初始状态如表4 所示.表4 账户状态账户 A B1 B2地址0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c0xl4723A09ACff 6D2A60DcdF7aA4AFf308FDDC160C0x4B0897b0513f dC7C541B6d9D7E929C4e5364D2dB余额100ethlOOethlOOeth(3) 编译环境Sol i di ty合约需要编译为机器代码才能在以太坊虚拟机中运行, 本文使用以太坊的Remi x编译器, Rennx是一个开源工具, 包含编写合约、测试、调试和部署的功能. Remi x用JavaScript 编写, 支持在浏览器和本地使用.(4) 合约测试合约的测试流程如下, 其中查询步骤由于不影响合约状态、 不造成任何开销且随时可以执行而被省略:步骤1. 由A部署合约, 此时合约中拍卖人由A注册, 只有A可以执行方法StartBiddi ng, A无法执行其它方法, 其它账户也无法执行任何方法.步骤2.A执行StartBi ddi ng方法开始竞拍, 并设置底价为2eth, 设置结束时间为执行后5 mm( 以太坊中的时间每生成一个区块更新一次, 执行时间为当次区块时间, 以太坊平均15s 生成一个区块,因此可能存在少量误差). 此时, StartBi ddi ng、Wi thdrawBi d、 Col l ectPayment方法不能被执行. 任何账户可以执行Bi d方法进行出价, 但出价若少于或等于2eth, 执行失败.步骤3.B1 执行Bi d方法出价参与竞拍, 出价3eth. 此时, 最高出价者为B1, 最高价为3eth, Bl 的资金池里有3eth, 方法可执行情况与步骤2 相同.步骤4.B2 执行Bid方法出价竞拍, 出价4eth.此时, 最高出价者为B2 , 最高价为4eth, B2 的资金池里有4eth. 所有账户可以执行Bi d方法, B1 可以执行WithdrawBi d.步骤5.B1 执行WithdrawBi d收回押金, 然后再次执行Bi d出价竞拍, 出价5eth. 此时, 最高出价者为B1, 最高价为5eth, Bl 的资金池有5eth, B2 资金池有4eth.步骤6. 等到竞拍时间结束. 此时, 只有A可以执行Col l ectPayment , B2可以执行WithdrawBid.步骤7.A执行Coll ectPayment 收取货款, B2执行Wi thdrawBi d收回押金( 不分先后顺序). 合约结束, 合约中没有资金, 没有方法可以执行.( 5) 实验结果与分析经过实际运行测试, 测试结果与上述流程中预测的方法可执行情况、合约状态相符. 账户余额与执行消耗gas 情况如表5 所示, 其中执行消耗gas 指的是智能合约程序在以太坊虚拟机中执行所需消耗的gas, 即程序实际执行的步骤. 存储消耗gas 指的是更改区块链中数据所需消耗的gas, 即将上传到区块链的变量的更改. Gas 所消耗的以太币为coM=Xgasp*rice, 其中gasPrice为gas单价, 由合约用户在执行合约时设置, 单价的高低影响矿工处理的优先级.6 66 计 算 机 学 报 2021年表5 运行情况当事人 操作 参数 账户余额/eth 总消耗gas 执行消耗gas 存储消耗gas拍卖人A 部署(初始化) A99. 9; Bl:100. 0?B2:100:0 2124 04 0 1577 980 546 060拍卖人A StartBiddi ng 底价:2eth; 时间:300s A99. 9; Bl:100. 0?B2:100:0 110 73 7 8 9017 21 720竞买人B1 Bid 存人:3et h A99. 9; Bl:96. 9;B2:100:0 15655 2 135280 21 272竞买人B2 Bid 存人:4et h A99. 9; Bl: 96. 9;B2:95. 9 14155 2 120 280 21 272竞买人B1 Wi thdrawBid A99. 9; Bl:99. 9;B2: 95. 9 44361 38 08 9 6272竞买人B1 Bid 存人:5et h A99. 9; Bl:94. 9;B2:95:9 84 48 0 63 208 21 272拍卖人A CollectPayment A104. 9; Bl:94. 9;B2:95:9 81861 60 58 9 21 272竞买人B2 Wi thdrawBid A104. 9; Bl:94. 9;B2:99:9 44 361 38 08 9 6272自动生成的Sol i di ty 智能合约中, 程序员仅对方法内的代码检查与修改, 而合约的接口、 变量、 修饰器、合约间的关系等程序结构由生成器自动生成.因此, SPESC规范化了Soli dity合约的结构.上述实验以竞买合约为例展示了通过SPESC编写、生成、运行的完整流程. 上述实例表明, 合约既可以通过时序逻辑表示描述执行流程, 也可以通过变量记录的合约状态描述, 因此, 该流程对于其它合约同样适用, 如买卖、竞买、借贷、 投票等.但对于合约中出现的除以太币外其它资产, 如自定义代币、买卖的货物等, 只能通过变量记录, 未来可以增加对资产的定义及操作.9 总结与展望本文提出了SPESC的生成规则, 通过SPESC编写智能合约, 可以自动生成人员管理, 提供便捷的操作与查询接口, 用户不需要考虑当事人存储结构, 但增加了适用性的同时也会稍微增加运算开销; 可以根据条件生成时序控制, 记录条款执行情况;SPESC无法保证生成正确的函数体, 但可以根据后置条件生成方法结果检测, 辅助编写与检测程序.为了进一步改善SPESC语言, 后续工作将包括以下方面: 首先, 为验证SPESC编写合约的正确性,目前已有很多通过形式化验证合约正确性的研究, 如前文提到的文献[3 7]等, 未来可以在已有的SPESC语言模型基础上, 建立形式化表示, 通过形式化的方法, 验证合约条款的前置、 后置条件, 以及条款间时序的正确性, 为用户提供形式化分析工具. 其次, 对于生成的Sol kHty 目标代码正确性, 目前已有一些分析或检测漏洞的研究, 如文献[17 20]等, 未来研究可以根据这些研究继续改进生成的目标代码, 优化程序结构和规范, 增强合约安全性和正确性.致 谢 感请何啸老师在可读性实验中提供的帮助, 感请实验室所有同学的帮助!参 考 文 献[1]Li nnhof fPopi enC, SchneiderR,ZaddachM. Digi t alMarketplacesUnleashed. Berl in,Germany:Springer,2018[2]SzaboN. Smart contracts : Buildingbl ocksfordigi t almarkets. TheJournalofTranshumanistThought ? 199 6,(16) ; 18 20[3]SchransF?EisenbachS?DrossopoulouS. Writingsafesmartcont ractsinf lint//Proceedingsof theConferenceCompanionof t he2ndInternationalConferenceonArt , Science? andEngineeringofProgramming. NewYork, USA, 2018:218 219[4]CoblenzM. Obsidian: Asaferblockchainprogramminglanguage//Proceedingsof 20 17IEEE/ACM39t hInt ernat ionalConferenceonSoft wareEngineeringCompanion( ICSEC) .BuenosAires, Argent ina ,2017: 97 99[5]IdelbergerF?GovernatoriG? RiveretR? etal . Evaluationoflogicbasedsmart cont ractsfor bl ockchainsyst ems//Proceedingsof the20 16RuleML10thInternationalSymposium. StonyBrook,USA,201 6: 167 183[6]SergeyI , KumarA,I loborA. Scilla: Asmart cont ractintermediatelevellanguage. ArXivpreprint arXiv: 180 1.00 687 ,2018[7]Frant zCK,NowostawskiM. Frominstit ut ionstocode:Towardsautomat edgenerationof smartcont racts//Proceedingsof 2016IEEE1stInt ernat ionalWorkshopsonFoundat ionsandApplicat ionsofSelfxSystems(FASxW). Tucson, USA,20 16: 210 2 15[8]KasprzykK. Theconcept of smart contractsfromthelegalperspective. ReviewofComparat iveLaw,2018 , 34 ( 3): 21 30[9]GoldenfeinJ?Leit erA. Legalengineeri ngontheblockchain:4Smartcont racts^aslegalconduct. LawandCritique,2018,29(2) : 141 14 9[10] GomesSS. Smartcont racts: Legalfrontiersandinsertionintothecreativeeconomy. BrazilianJournalof Operations&-Product ionManagement ,20 18, 15( 3): 376 385朱 岩等:一种高级智能合约转化方法及竞买合约设计与实现 66 7 3 期[11]AllenJG.Wrappedandstacked: 4Smartcontracts?andtheinteractionofnaturalandformallanguage. EuropeanReviewofContractLaw?2018,14(4):307-343[12]O’ConnorR.Simplicity:Anewlanguageforblockchains//Proceedingsofthe2017WorkshoponProgrammingLanguagesandAnalysisforSecurity(PLAS?17). NewYork,USA,2017 :107-120[13]RegnathE,SteinhorstS. SmaCoNat:Smartcontractsinnaturallanguage//Proceedingsofthe2018ForumonSpecifi?cation&-DesignLanguages(FDL). Garching,Germany,2018 :5-16[14]ChoudhuryO,RudolphN,Syll aI,etal. Auto-generationofsmartcontractsfromdomain-specificontologiesandsemanticrules//Proceedingsofthe2018IEEEInternationalConferenceonInternetofThi ngs(iThings)andIEEEGreenComputingandCommunications(GreenCom)andIEEECyber,PhysicalandSocialComputing(CPSCom)andIEEESmartData(SmartData).NovaScotia ,Canada2018:963-970[15]Bi ryukovA,KhovratoyichD,Tikhomi rovS.Findel: SecureDerivativeContractsforEthereum//Proceedi ngsoftheInternationalConferenceonFinancialCryptographyandDataSecurity(FC2017).Sliema,Malta,2017 :453-467[16]HeXiao,QinBohan,ZhuYan,etal. SPESC: Aspecificationlanguageforsmartcontracts//Proceedingsofthe2018IEEE42nd AnnualComputerSoftware and ApplicationsConference(COMPSAG). Tokyo,Japan,20 18 : 132-137[17]LuuL,ChuDI I,OlickelI I, etal. Makingsmartcontractssmarter//Proceedingsofthe2016ACMSIGSACConferenceonComputerandCommunicationsSecurity. Vienna, Austria,2016 : 254-2 69[18]AtzeiN?BartolettiCimoliT. AsurveyofattacksonEthereumSmartContracts(SoK)f/ProceedingsoftheInternationalConference onPrinciplesofSecurityandTrust.Berlin, Germany:Springer,2017 , 10204:164-186[19]BhargavanK,SwamyN,SantiagoZanella-Beguelin,etal.Formalverifi cationofsmartcontracts : Shortpaper//Proceedingsofthe2016ACMWorkshoponProgrammingLanguagesandAnalysisforSecurity. 2016:9 1-96[20]PariziRM,DehghantanhaA. Smartcontractprogramminglanguageson blockchains: Anempiricalevaluationofusabilityandsecurity//Proceedings ofthe2018InternationalConferenceonBlockchain(ICBC2018),Cham:Springer,2018 : 45 3-467附录A.SPESC编写的竞买合约完整实例.1contractSimpleAuction{2partygroupbidders{4amount: Money5Bid( )6WithdrawOverbidMoney( )7}89 partyauctioneer^StartBidding(reservePrice: Money,biddingTime: Date)11StopBidding( )12}1314highestPrice:Money15highestBidder: bidders16BiddingStopTime: Date1718-termnol: auctioneercanStartBidding,19whenbeforeauctioneerdidStartBiddingwherehighestPrice=reservePriceandBiddingStopTime=biddingTime+now.2122-termno2:bidderscanBid,whenafterauctioneerdidStartBiddingandbeforeBidd ingStopTime24whiledeposit¥value>highestPricewherehighestPrice=valueandhighestBidder=thisbidderand26thisbidder : : amount=thisbidder : : Oriamount+value.2728-termno3_l: bidderscanWithdrawOverbidMoney,whenthisbidderisn'thighestBidderandthisbidder : : amount> 030whilewithdraw¥thisbidder: : amount31wherethisbidder: : amount=0.32termno3_2: bidderscanWithdrawOverbidMoney,whenthisbidderishighestBidderandthisbidder: : amount>highestPricewhilewithdraw¥thisbidder: : amount-highestPrice36wherethisbidder: : amount=highestPrice .3738-termno4: auctioneercanStopBidding,whenafterBiddingStopTimeandbeforeauctioneerdidStopBidding40whilewithdraw¥highestPrice.41}66 8 计 算机 学 报 2021年tZHUYan,Ph.D.,professor.Hi sresearchinterestsi ncl udeinformationsecurityandcryptography,securecomputing,blockchain, mobilecloudcomputing.BackgroundBlockchainisahottopicinrecentyears,andsmartcontracts , asthecoreofthesecond-generationblockchain,arewidelydeployedindecentral izedappl ication,andareconnectedtothefieldsofcomputer,finance,l awandsoon.Atpresent,therearesomeresearchesonhowsmartcontractsareexpressedfromanaturallanguage-l ikeperspective,someresearchesprovidesanewframeworkofautomaticgenerating,andsomeresearchesprovideformalmethodstoverifythecorrectnessofsmartcontracts, butthereisnocompletesolutionfromsyntaxrepresentation,codegenerationtoexecution.Thispaperfocusesonthelackofconversionmethodsbetweenadvancedsmartcontractlanguagesandexecutablesmartcontractl anguages.Bas edonthepreviousSPESCresearch,thispaperdesignsathree-layerstructureoftheQINBo-Han,M.S.candi date.Hisresearchinterestsi ncl udeblockchai n,smartcontract.CHENE, Ph.D.candidate.Herresearchinterestsincludecryptographyandnetworksecurity.LIUGuo-Wei,seniorengineer.Hisresearchinterestsi ncl udebigdata,securitysystem,securi tymanagementandstandard.smartcontractsystem,includingadvancedsmart-contractlayer, basicsmart-contractlayer, andexecutabl emachine-codelayer.Thenweprovidetheconversionrul esoftheadvancedsmartcontractl anguagetothesmartcontractlanguage,anddemonstratesitthroughexamples.FinallyweverifythelegibilityofSPESCandthecorrectnessoftheconversionprocessesthroughtwocasestudi es.ThisworkwassupportedbytheNationalKeyTechnologiesR&DProgramsofChina(2018YFB1402702)>theaimofwhi chistodesignanddevelopsmartcontractservi cebasedonblockchainforresearchingontheoryandtechnologyofmodernservicetrusttransaction.ThisworkwasalsopartlysupportedbytheNationalNaturalScienceFoundationofChina(61 972032) .

[返回]
上一篇:基于双通道R-FCN的图像篡改检测模型
下一篇:图像信息对句子语义理解与表示的有效性验证与分析