信息技术 区块链和分布式记账技术 智能合_第1页
信息技术 区块链和分布式记账技术 智能合_第2页
信息技术 区块链和分布式记账技术 智能合_第3页
信息技术 区块链和分布式记账技术 智能合_第4页
信息技术 区块链和分布式记账技术 智能合_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1信息技术区块链和分布式记账技术智能合约实施规范本文件给出了区块链智能合约的实施规范,规定了智能合约的实施框架、实施本文件适用于为区块链各参与方在智能合约设计、开发、部署、使用和运维过程中提供实施参考,下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修GB/T18391.1-2002信息技术数据元的规范与标准化第1部分:数据元的规范与标准化框架GB/T5271.17-2010信息技术词汇第17部分GB/TXXXX-XXXX信息技术区块链和分布式记账技术术语使用密码技术链接将共识确认过的区块按顺序追加形成的分2使用分布式记账技术系统外部数据更新分布式账本在可计算性理论里,一系列操作数据的规则(如指令集、编程语言、细胞自动机)按照一定的顺a)智能合约的设计开发是指从业务需求出发完成智能合约的功能和安全等设计,b)智能合约的编译部署是将智能合约代码转换成运行环境可执行的格式,然后部署到区块链节c)智能合约的触发执行是将满足条件的事件推送到待验证的队列中,区块链上的验证节点对事5智能合约的实施过程要求5.1智能合约的设计开发5.1.1合约的设计配权限,对时序逻辑要严格验证,避免时序逻辑导致的安全性问题,如条件竞争等;d)宜进行类图、用例图、时序图、数据流图、流程图、架构图、部署图等设计,并且保留相应3e)应设计安全威胁模型,制定智能合约f)应需要设计合约的处理或缓解错误的能力,包括且不限于提前终止或线上更新能力。5.1.2合约的编码规范a)应使用已经广泛应用的合约语言,如Soliditf)应避免逻辑漏洞和逻辑错误,如转账前余额未校验,未检查返回值的调用,整数溢出等;h)智能合约中宜采用条件保护语句,如require,如条件不满足,则触发保护机制,断言防护b)合约支持的数据类型应包含string(字符串)、int(整型)、boof)合约支持的控制结构应包含顺序结构、分支g)合约支持的控制结构宜包含异常结构处h)应支持区块数据,当前状态数据以及历史状态数据的访问能力,宜支持统一的数据访问模型;5.1.4合约的测试b)应对智能合约的业务逻辑、业务流程,以及代码是否符合业务需c)应支持对智能合约进行静态安全扫描、动态安全扫描和形式化验证;d)应保证合约的运行结果和安全性符合预期。5.2智能合约的编译部署5.2.1合约编译4b)应支持智能合约在区块链平台上编译检测,保证在编译c)应明确合约编译工具名称及版本信息,编译工具依赖环境信息;d)编程语言的编译器应确保一致性,智能合约源码在编译成字节码后前后逻辑应一致;e)编译完成后,应明确合约接口描述文件和编译结果文件后缀。5.2.2合约部署e)合约部署完后应确定其唯一标识,如地址、合约名等。5.3智能合约的触发执行5.3.1合约的调用5.3.1.1概述合约调用是触发智能合约业务的执行,包含触发方式支持接口直接调用、合约间调用和预言机调直接调用是通过区块链接口,从外部直接触发调用,满足如a)应支持合约的部署、状态查询和接口调用;b)宜支持合约的升级、冻结、解冻、废止、事件查询、运行环境变量查询;c)接口名称应明确接口功能,具有标识性,在直接调用接口的时候应能够执行规定的合约调用d)直接调用的接口名称不存在时,应有明确的默认结构被调用,或者提供明确的错误信息供调e)直接调用的接口参数错误时(参数类型错误等应有明确的错误参数转合约间调用是指合约之间进行链上调用的过程,满足如c)应对合约接口的最小暴露性原则,合约权限原则等进行严格的测试与检查。智能合约通过调用预言机相关接口触发预言机a)接口名称、输入参数、返回数据应符合API接口规范;b)接口描述文件应采用预言机提供的结构化描述语言;5e)数据由指定的数据源产生时,应能够提供数据源的有效证明;f)宜采用分布式预言机的方式提高服务可用性和安全性,不同的预言机节点应具备唯一的身份g)预言机提供的外部数据源的影响范围应仅限于智能合约范围内,不应影响系统的整体运行。5.3.2合约的执行合约的执行是运行智能合约代码完成预定功能,满足如a)应满足可执行终止性原理,确定性执行结果原理;b)当前合约执行结果具备事务一致性,若调用失败,支持回滚到执行交易之前的状态或者有明c)应支持智能合约状态保存在区块链网络上,如作为合约账户的属性;d)在执行之前,应检查该智能合约和链上智能合约的哈希值的一致性;g)应具备正确处理异常的能力,支持实时监测和状态回滚。5.3.3合约运行时的外部交互a)外部用户或应用与合约的交互应支持部署、查询、调用等;c)合约应对外提供准确的接口描述,同时对外部的输入做严格检查;d)智能合约与外部数据交互时,外部数据应只影响本合约的状态。5.3.4合约的执行环境a)应保证智能合约运行环境与外部隔离,调用智能合约不会导致区块链系统失败;c)应保证在相同的输入和相同的历史状态下,不同的节点执d)宜支持可信执行环境,提供隐私保护的技术环境;合约事件指由外部账号调用合约过程中产生的,被打包到当前区块中可被永久访问的事件,满足a)合约事件应支持被监听,业务方通过监听事件可得到事件名称、事件参数、区块高度等详细b)合约事件类型应包含异常业务事件、正常业务事件;6d)事件名称应是合约内事件的唯一标识,并体现事件的业务类型。正常业务事件指在调用合约执行完正常业务流程,触发一个事件,记录业务完成正常流转,满足b)事件名称宜使用能代表业务的名字,如Transfer;异常业务事件是指在调用合约接口执行过程中,进入了业务异常处理的判断逻辑,抛出一个异常b)应记录引起异常业务事件的合约接口及传参内容;d)事件参数应包含错误异常类型和错误者异常的原因。事件接口结构为调用方提供接口的规范化说明,事件接口5.4智能合约的维护治理c)部署或升级中的定义:在部署或升级操作时定义版本号。智能合约的升级操作由客户端发起、以接口调用的方式在区块链中提交,达成共识后生效,满足b)应支持区块链平台升级后,智能合约仍能稳定运行;c)升级操作宜记录在区块中,符合区块链e)智能合约升级失败时,应能回滚到原来的智能合约;5.4.3合约冻结和解冻合约冻结和解冻是对智能合约调用功能进行停止和重新开放的过程,满足如下要7a)应支持冻结功能,当发现智能合约存在漏洞时可停止使用;b)应支持解冻功能,当智能合约中的漏洞修复后可恢复使用;c)调用智能合约冻结和解冻功能时,应进行权限访问控制。5.4.4合约废止合约废止是废止已部署的智能合约的过程,且不可逆,满足a)应支持通过交易的方式实现智能合约的废止功能,且合约废止后数据仍然存在,保存被终止2)需求文档中智能合约交互接口应最小化暴露、交互流程应3)需求文档中智能合约使用权限应实现细粒度控制并按照最小粒度分配,智能合约时序逻4)需求文档中的设计图宜清晰完整,与描述内容存在对应6)需求文档中应描述包括但不限于提前终止合约或线上更新合约的功能,复现结果与文档84)核查智能合约所有公共成员变量与函数的引用对象是否有对外暴露的7)核查智能合约和函数的编写风格,是否采用过8)核查智能合约在条件不满足时是否具有条件保护功能,在断言失败时是否具有断言防护4)智能合约编码应避免所有公共成员变量与函数的引用对象对外暴7)智能合约和函数宜模块化,逻辑简洁清晰,应不使用过8)智能合约宜采用条件保护语句在条件不满足时出发保护机制,宜采用断言防护语句在断9)核查智能合约的数据读写、遍历以及1)设计文档描述智能合约支持的语言应包括图灵完备语言和非图灵完备语言,智能合约代(字符型)、boolean(布尔型)以及基本类型的数组类型,智能合约代码实际编写与上4)设计文档描述智能合约支持的计算类型应包含算术运算、关系运算、逻辑运算、条件运95)设计文档描述智能合约支持的计算类型宜包含位运算、数据类型转换、哈希运算,智能6)设计文档描述智能合约支持的控制结构应包含顺序结构、分支结构、循环结构,宜包含7)设计文档描述智能合约支持的控制结构宜包含异常结构处理、递归结构处理,智能合约8)设计文档描述智能合约应支持对区块数据、当前与历史状态数据的访问,且访问模型宜9)设计文档描述智能合约应支持数据读写能力和遍历能力,宜支持查询能力,智能合约代10)设计文档描述智能合约宜支持生成带有业务属性的简单支付验证,智能合约代码实际编2)测试方案内容应包含对智能合约的业务逻辑、业务流程、合约代码是否符合业务需求的3)测试内容应包含静态安全扫描、动态安全扫4)测试结果显示合约的运行结果和安全性应符合4)核查编程语言的编译器一致性,在智能合约源码编译成字节码后,核查字节码与源码逻5)编译完成后,核查合约接口描述文件和编译3)应有清晰的工具名称及版本信息和编译工具4)编程语言的编译器应确保一致性,编译后的字节码运行逻辑应与源码逻辑保持一致;3)分别使用有部署权限和无部署权限的两组用3)有部署权限的用户部署成功,无部署权限的1)核查合约触发方式,应支持接口直接调用、合2)核查合约调用的原理,要满足事务一致性的原理,可执行终止性原理,确定性执行结果1)核查直接调用的功能,支持合约的部署、升级、冻结、解冻、废止、状态查询、事件查2)核查接口名称的标识性,能够直接明确接口功能,检查在直接调用接口时,能够执行规3)核查当接口名称不存在时,应有明确的默认结构被调用,或者提供明确的错误信息供调5)核查直接调用接口执行出现错误时,有明确的错误参数转换规则,或者明确错误信息供1)直接调用的功能,应支持合约的部署,合约的2)接口名称具有标识性,宜能够直接明确接口功能,并在直接调用接口的时候能够执行规3)接口名称不存在时,应有明确的默认结构被调用,提供明确的错误信息供调用者修改错4)直接调用的接口参数错误时(参数类型错误等),应有明确的错误参数转换规则,明确5)直接调用的接口执行出现错误时,应有明确的错误参数转换规则,或者明确错误信息供1)核查合约间调用的安全性规则,合约间调用应符合安全性规则,明确调用上下文是本合2)核查合约间的调用参数校验,避免调用的实际接口与预期1)合约间调用的安全性规则,合约间调用应符合安全性规则(防重),3)合约接口应满足最小暴露性原则、2)接口描述文件应采用预言机提供的结构7)预言机提供的外部数据源的影响范围仅限于智能合约范围内,不应影响系统的整体运行。2)当前合约执行结果具备事务一致性,若调用失败,支持回滚到执行交易之前的状态或者6)核查执行过程的可终止性,支持智能合约执行过程2)当前合约执行结果具备事务一致性,若调用失败,支持回滚到执行交易之前的状态或者3)应支持智能合约状态作为合约账户的属性保存在4)在执行之前,该智能合约和链上智能合约的哈希值应保持一5)在智能合约执行的过程中,支持将事件推送给已1)核查智能合约运行环境与外部的隔离,确保调2)核查运行环境,运行环境应具备执行无二义性,能处理异常事件,当发生异常时,能够3)核查合约执行结果,保证在相同的输入和相同的历史状态下,不同的节点执行相同的交1)核查合约事件的监听,业务方通过监听应可得到事件名称、事件参数、区块高度等详细2)核查合约事件类型,包含异常业务事件、正常业务事件,且异常业务事件、正常业务事1)合约事件应可以被监听,业务方通过监听能得到事件名称、事件参数、区块高度等详细2)合约事件类型应包含异常业务事件、正常业务事件,且异常业务事件、正3)事件参数应为记录的业务数据,标2)核查异常业务事件记录引起异常业务事件的合约接3)核查事件名称,使用能代表业务异常的类型3)事件名称宜使用能代表业务异常的类型3)核查事件接口包含应将合约执行过程中的事件上链,打包进当前区块,并回调3)事件接口包含将能将合约执行过程中的事件上链,打包进当前区块,并回调给1)核查智能合约发生修改之后的版本,是否能够在源代码中通过区块链平台指定方式定义2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论