区块链和分布式记账技术 智能合约生命周期管理技术规范_第1页
区块链和分布式记账技术 智能合约生命周期管理技术规范_第2页
区块链和分布式记账技术 智能合约生命周期管理技术规范_第3页
区块链和分布式记账技术 智能合约生命周期管理技术规范_第4页
区块链和分布式记账技术 智能合约生命周期管理技术规范_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

GB/TXXXXX—XXXX

目次

前言.................................................................................II

引言................................................................................III

1范围................................................................................1

2规范性引用文件......................................................................1

3术语和定义..........................................................................1

4概述................................................................................2

5通用技术要求........................................................................2

5.1设计开发.........................................................................2

5.2编译部署........................................................................3

5.3触发执行........................................................................4

5.4维护管理........................................................................6

6通用评估方法........................................................................7

6.1设计开发........................................................................7

6.2编译部署........................................................................9

6.3触发执行.......................................................................10

6.4维护管理.......................................................................16

附录A.............................................................................19

参考文献.............................................................................22

I

GB/TXXXXX—XXXX

前言

本文件按照GB/T1.1—2020《标准化工作导则第1部分:标准化文件的结构和起草规则》的规定

起草。

请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。

本文件由全国区块链和分布式记账技术标准化技术委员会(SAC/TC590)提出并归口。

本文件起草单位:蚂蚁区块链科技(上海)有限公司、中国电子技术标准化研究院、众安信息技术服

务有限公司、深圳市前海智慧版权创新发展研究院、上海万向区块链股份公司、四川长虹电器股份有

限公司、南京鑫智链科技信息有限公司、湖南天河国云科技有限公司、西南林业大学、蚂蚁科技集团

股份有限公司、杭州趣链科技有限公司、深圳市腾讯计算机系统有限公司、复旦大学、工银科技有限

公司、西安交通大学、南方电网大数据服务有限公司、国家应用软件产品质量检验检测中心、上海分

布信息科技有限公司、达闼机器人股份有限公司、腾讯云计算(北京)有限责任公司、北京大数据先

进技术研究院、上海阵方科技有限公司、浙商银行股份有限公司、上海零数众合信息科技有限公司、

广东电网有限责任公司广州供电局、研祥智能科技股份有限公司、京东科技信息技术有限公司、中移

动信息技术有限公司、北京泰尔英福科技有限公司、工业和信息化部电子第五研究所、联通数字科技

有限公司、国家工业信息安全发展研究中心、华为云计算技术有限公司、华为技术有限公司、北京大

学计算与数字经济研究院、神州数码信息服务股份有限公司、国网区块链科技(北京)有限公司、上

海奥若拉信息科技集团有限公司、北京微芯区块链与边缘计算研究院、中国民航信息网络股份有限公

司、浙江大学、广州赛西标准检测研究院有限公司、敏于行(北京)科技有限公司、恒宝股份有限公

司、北京合思信息技术有限公司、深圳江行联加智能科技有限公司、北京国金汇德工程管理有限公司、

浙江出彩智能科技有限公司、江西开创数码科技有限公司、中国信息通信研究院。

本文件主要起草人:李鸣、闫莺、彭晋、昌文婷、周平、邱英英、杜宇、郝汉、李克鹏、欧昀、

王栋、于秀明、李努锲、杨征、梁志宏、王海军、张雁、张晓蒙、蔡亮、陶立春、王绍刚、王晨辉、

王威、谢辉、刘亭杉、劳卫伦、刘天成、阚海斌、笪鸿飞、龚自洪、杨国正、兰春嘉、王义、艾崧溥、

相里朋、王文呈、潘妍、张子怡、张亮亮、任凤丽、杨文锋、武杨、任常锐、孙林、陈晓丰、郝玉琨、

康信伟、石娜、郁岩生、谭林、黄宇翔、范铭、邬萌、邱炜伟、刘冕宸、金晓娜、梁军、钟礼斌、宋

文鹏、杨珍、王鑫、王海龙、田森、包小敏、彭涛、孙琳、种法辉、张小军、曲强、李达、晏海水、

杨荣霞、苏庆慧、杜娟、贾祥娟、周钢、张栋、庞伟伟、颜爱军、钱京、樊小毅、陈冬、周子茗、张

金伟、马春荃、华崇鑫、魏凯、张奕卉、石竹玉、黄德俊、秦日臻、谢云龙、郭东升、季静婷、陈志

列、庞观士。

II

GB/TXXXXX—XXXX

引言

近年来,在产业政策、法律法规、技术进步、市场发展等多方推动下,区块链技术正加速脱虚向

实,助力实体经济高速发展。智能合约是存储在分布式记账技术系统中的计算机程序,该程序的任何

执行结果都记录在分布式账本上。智能合约将区块链带入了可编程,智能化时代。然而,随着智能合

约日益广泛地应用,不规范的设计,开发,测试,维护带来了许多风险问题,导致了很严重的损失。

为了给应用区块链链接的各行业、各企业和相关组织,企业及其他组织提供可实施的标准,本文

件对区块链智能合约的生命周期进行了深入的分析,梳理了智能合约生命周期各阶段,包括设计开发,

编译部署,触发执行,和维护管理。在生命周期的各个阶段,提炼需要遵循的相关要求,从而构建出

一套可实施的,能够避免智能合约可能出现风险的执行流程。为区块链链接的各个行业提供可操作,

具有指导意义的智能合约实施规范。

区块链和分布式记账技术智能合约生命周

期管理技术规范

Blockchainanddistributedledgertechnology-Technicalspecificationofsmart

contractlifecyclemanagement

III

GB/TXXXXX—XXXX

区块链和分布式记账技术智能合约生命周期管理技术规范

1范围

本文件规定了智能合约生命周期中设计开发、编译部署、触发执行、维护管理等环节的技术要求,

以及各环节的评估方法。

本文件适用于区块链相关方开展智能合约的建设、应用和审计。

2规范性引用文件

下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文

件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适

用于本文件。

GB/T5271.17-2010信息技术词汇第17部分:数据库

ISO22739:2020Blockchainanddistributedledgertechnologies-Vocabulary

3术语和定义

下列术语和定义适用于本文件。

3.1

区块链blockchain

使用密码技术链接将共识确认过的区块按顺序追加形成的分布式账本。

注:区块链被设计用来抵抗篡改,并创建最终的、确定的、不可变(3.40)的账本记录(3.44)。

[来源:ISO22739:2020,3.6]

3.2

智能合约smartcontract

存储在分布式记账技术系统中的计算机程序,该程序的任何执行结果都记录在分布式账本上。

注1:智能合约可以在法律上代表合同条款,并在适用司法管辖区的法律下产生可强制执行的义务。

[来源:ISO22739:2020,3.72]

3.3

数据类型datatype

规定数据结构的数据对象的经定义的集合和一组许可的运算,在这些运算中任何一个执行时,其

中数据对象都当作运算数。

[来源:GB/T5271.17-2010,17.05.08]

3.5

形式化验证formalverification

1

GB/TXXXXX—XXXX

通过对算法逻辑的数学形式化表达,验证智能合约程序确定性和完备性的方法。

3.6

预言机oraclemachine

使用分布式记账技术系统外部数据更新分布式账本的服务。

[来源:ISO22739:2020,3.28]

3.7

图灵完备turingcomplete

在可计算性理论里,一系列操作数据的规则(如指令集、编程语言、细胞自动机)按照一定的顺

序计算并解决所有可计算的问题。

3.8

智能合约生命周期smartcontractlifecycle

当智能合约从构思开始至不再可用结束的时间周期。

4概述

智能合约的全生命周期包含设计开发、编译部署、触发执行和维护管理,如图1所示。

设计开发编译部署触发执行维护管理

图1智能合约生命周期管理示意图

a)智能合约的设计开发是指从业务需求出发完成智能合约的功能和安全等设计,然后通过智能

合约编程语言构造出智能合约。

b)智能合约的编译部署是将智能合约代码转换成可执行的格式,然后部署到区块链节点的智能

合约运行时环境中。

c)智能合约的触发执行是将符合条件的事件推送到待验证的队列中,区块链上的验证节点对交

易进行全面认证并达成共识。区块链执行该交易,并将交易和执行结果记入区块链中。

d)智能合约的维护管理是指智能合约部署上线后,因需要修正错误,提升性能,或其他问题而

导致的智能合约升级、冻结、废止等操作。

5通用技术要求

5.1设计开发

5.1.1智能合约设计

在编写智能合约之前,需设计智能合约的结构功能,规避对外的交互和安全风险,符合如下要求:

a)应收集、分析、细化并核实智能合约的功能需求,编写智能合约需求文档;

b)应设计智能合约对外交互的接口和流程,最小化地暴露交互接口;

c)应对智能合约的使用权限、时序逻辑进行合理设计,权限粒度要做到尽量小,按最低要求分

配权限,对时序逻辑要严格验证,避免时序逻辑导致的安全性问题,如条件竞争等;

d)宜进行类图、用例图、时序图、数据流图、流程图、架构图、部署图等设计,并且保留相应

2

GB/TXXXXX—XXXX

的设计图;

e)应设计安全威胁模型,制定智能合约安全风险分析与风险管理规划,制定相应的应对措施;

f)应具备设计智能合约的处理或缓解错误的能力,包括且不限于提前终止或线上更新能力。

5.1.2智能合约编程

在编写智能合约代码时,符合如下要求:

a)宜使用主流智能合约语言,如Solidity、C++、Java、Go等;

b)对所有公共成员变量与函数的引用对象,应进行对外暴露的风险分析;

c)对所有条件选择语句和交易步骤进行完备性检查,应符合条件动作描述的完备要求;

d)应避免逻辑漏洞和逻辑错误,如转账前余额未校验,未检查返回值的调用,整数溢出等;

e)智能合约和函数应模块化,逻辑简洁,应避免使用过时的语法或用法,如分母为零,数组越界

访问等;

f)智能合约中宜采用条件保护语句。如Solidity语言中require(condition,message)条件

语句,当condition不符合时,交易会回滚。

5.1.3智能合约语言

智能合约语言符合如下要求:

a)支持的数据类型应包含string(字符串)、int(整型)、boolean(布尔型)以及基本类型的数

组类型;

b)支持的数据类型宜包含byte(字节型)、char(字符型)、short(短整型)、long(长整型)、

float(单精度浮点型)、double(双精度浮点型)、map(映射)、vector(向量)自定义类型

等;

c)支持的计算类型应包含算术运算、关系运算、逻辑运算、条件运算、赋值运算等;

d)支持的计算类型宜包含位运算、数据类型转换、哈希运算等;

e)对于支持图灵完备的语言,控制结构应包含顺序结构、分支结构和循环结构等;

f)对于支持图灵完备的语言,控制结构宜包含异常结构处理、递归结构处理;

g)应支持区块数据和当前状态数据的访问能力;

h)宜支持历史状态数据的访问能力和统一的数据访问模型;

i)应支持数据的读写能力和遍历能力,宜支持数据的查询能力,如条件查询、范围查询、线索

查询等;

j)宜支持带有业务属性的简单支付验证的生成。

5.1.4智能合约调试

智能合约需要进行必要的调试时,符合如下要求:

a)应提供智能合约调试流程和方案;

b)应提供智能合约的单步调试能力,包括断点设置,stepinto(单步跳入),stepout(单步跳

出),stepover(单步跳过)及callstack(调用栈)查询,断点处变量查询等能力;

c)应对智能合约的业务逻辑、业务流程,以及代码是否符合业务需求进行测试;

d)应支持对智能合约进行静态安全扫描、动态安全扫描,避免如附录A所示的漏洞;

e)宜支持对智能合约进行形式化验证;

f)应保证智能合约的运行结果和安全性符合预期。

5.2编译部署

3

GB/TXXXXX—XXXX

5.2.1智能合约编译

智能合约编译是将智能合约代码转换成运行环境可执行的格式的过程,此过程应符合如下要求:

a)选择主流的安全编译工具;

b)支持智能合约在区块链平台上编译检测,保证在编译之后字节码的安全性;

c)明确智能合约编译工具名称及版本信息,编译工具依赖环境信息;

d)编程语言的编译器应确保一致性,智能合约源码在编译成字节码后前后逻辑一致;

e)编译完成后,明确智能合约接口描述文件和编译结果文件后缀。

5.2.2智能合约部署

智能合约部署是将智能合约代码部署到区块链节点的智能合约运行时环境中的过程,此过程符合

如下要求:

a)智能合约部署应需要链上节点达成共识;

b)宜校验智能合约部署的完整性;

c)应校验智能合约的部署权限;

d)部署完应返回智能合约的部署状态;

e)智能合约部署完后应确定其唯一标识,如地址、智能合约名等。

5.3触发执行

5.3.1智能合约调用

5.3.1.1概述

智能合约调用是触发智能合约业务的执行,包含触发方式支持接口直接调用、智能合约间调用和

预言机调用三种触发方式。

5.3.1.2直接调用

直接调用是通过区块链接口,从外部直接触发调用,符合如下要求:

a)应支持智能合约的部署、状态查询和接口调用;

b)宜支持智能合约的升级、冻结、解冻、废止、事件查询、运行环境变量查询;

c)接口名称应明确接口功能,具有标识性,在直接调用接口的时候应能够执行规定的智能合约

调用流程;

d)直接调用的接口名称不存在时,应有明确的默认结构被调用,或者提供明确的错误信息供调

用者修改错误;

e)直接调用的接口参数错误时(参数类型错误等),应有明确的错误参数转换规则,或者明确错

误信息供调用者修改错误。

5.3.1.3智能合约间调用

智能合约间调用是指智能合约之间进行链上调用的过程,符合如下要求:

a)应符合安全性规则(如防重入),明确调用上下文是本智能合约还是代理智能合约;

b)智能合约间的调用参数应具有参数校验,避免调用的实际接口与预期不相符合;

c)应对智能合约接口的最小暴露性原则,智能合约权限原则等进行严格的测试与检查。

5.3.1.4预言机调用

4

GB/TXXXXX—XXXX

智能合约通过调用预言机相关接口触发预言机,符合如下要求:

a)接口名称、输入参数、返回数据应符合API接口规范;

b)接口描述文件应采用预言机提供的结构化描述语言;

c)接口协议应包含安全传输协议;

d)预言机应保证源数据完整未被篡改;

e)数据由指定的数据源产生时,应能够提供数据源的有效证明;

f)宜采用分布式预言机的方式提高服务可用性和安全性,不同的预言机节点应具备唯一的身份

标识;

g)预言机提供的外部数据源的影响范围应仅限于智能合约范围内,不应影响系统的整体运行。

5.3.1.5链上随机数调用

智能合约通过调用链上随机数相关接口触发随机数,符合如下要求:

a)随机数在不同的节点获取要保证确定性执行语义。

b)不同区块及相同区块中的不同交易,获取到的随机数需要保证随机性。

c)随机数需要保证不可预测性,随机数算法需要有密码学证明。

5.3.2智能合约执行

智能合约的执行是运行智能合约代码完成预定功能,符合如下要求:

a)应符合可执行终止性原理,确定性执行结果原理,一般可采用解释执行或JIT编译到机器指

令执行两种方式;

b)智能合约执行结果应具备事务一致性,若调用失败,支持回滚到执行交易之前的状态或者有

明确的错误返回值;

c)应支持智能合约状态保存在区块链网络上,如作为智能合约账户的属性;

d)在执行之前,应检查该智能合约和链上智能合约的哈希值的一致性;

e)支持在智能合约执行的过程中,将事件推送给已订阅的客户端;

f)应具备正确处理异常的能力,支持实时监测和状态回滚。

5.3.3智能合约运行时外部交互

智能合约在执行过程中会与外部进行交互,符合如下要求:

a)外部用户或应用与智能合约的交互应支持部署、查询、调用等;

b)应支持通过智能合约获取外部数据,如预言机;

c)智能合约应对外提供准确的接口描述,同时对外部的输入做严格检查;

d)智能合约与外部数据交互时,外部数据应只影响本智能合约的状态。

5.3.4智能合约执行环境

智能合约的执行环境符合如下要求:

a)应保证智能合约运行环境与外部隔离,调用智能合约不会对区块链状态外的外部环境造成影

响,也不会导致区块链系统失败;

b)运行环境应具备执行无二义性,能处理异常事件,当发生异常时,能够对事件进行回滚;

c)应保证在相同的输入和相同的历史状态下,不同的节点执行相同的交易可获得一致的结果;

d)宜支持可信执行环境,提供隐私保护的技术环境;

e)应具备可信性,不应泄漏信息,具有可信追溯的特性;

5

GB/TXXXXX—XXXX

f)当智能合约调用出现错误时,应提供智能合约回退功能,恢复该次调用对区块链状态造成的

影响。

5.3.5智能合约事件

5.3.5.1事件约束

智能合约事件指由外部账号调用智能合约过程中产生的,被打包到当前区块中可被永久访问的事

件,符合如下要求:

a)智能合约事件应支持被监听,业务方通过监听事件可得到事件名称、事件参数、区块高度等

详细信息;

b)智能合约事件类型应包含异常业务事件、正常业务事件;

c)智能合约事件应包含事件名称和事件参数;

d)事件名称应是智能合约内事件的唯一标识,并体现事件的业务类型。

5.3.5.2正常业务事件

正常业务事件指在调用智能合约执行完正常业务流程,触发一个事件,记录业务完成正常流转,

符合如下要求:

a)应记录引起业务状态变更的相关方,业务的类型、内容等;

b)事件名称宜使用能代表业务的名字,如Transfer;

c)事件参数应为记录的业务数据。

5.3.5.3异常业务事件

异常业务事件是指在调用智能合约接口执行过程中,进入了业务异常处理的判断逻辑,抛出一个

异常事件,以便业务端知道出错原因,符合如下要求:

a)应记录引起异常业务事件的发起方,异常的原因;

b)应记录引起异常业务事件的智能合约接口及传参内容;

c)事件名称宜使用能代表业务异常的类型;

d)事件参数应包含错误异常类型和错误者异常的原因。

5.3.5.4事件接口结构

事件接口结构为调用方提供接口的规范化说明,事件接口包含:

a)唯一的声明事件接口,如关键字;

b)唯一的调用事件接口,如关键字;

c)将智能合约传进来的数据上链,打包进当前区块,并回调给业务调用方。

5.4维护管理

5.4.1智能合约版本维护

智能合约的每次修改即为独立版本,版本的维护方式分为:

a)在源代码中定义版本号;

b)在配置文件中定义版本号,该配置文件应与智能合约代码一同部署;

c)在部署或升级操作时定义版本号。

5.4.2智能合约升级约束

6

GB/TXXXXX—XXXX

智能合约的升级操作由客户端发起、以接口调用的方式在区块链中提交,达成共识后生效,符合

如下要求:

a)应支持智能合约的在线升级;

b)应支持区块链平台升级后,智能合约仍能稳定运行;

c)升级操作宜记录在区块中,符合区块链中交易要求、遵从交易执行的流程;

d)智能合约升级后,应保留历史版本;

e)智能合约升级失败时,应能回滚到原来的智能合约;

f)智能合约应具备版本控制功能,在智能合约升级到新版本后,宜向前兼容旧版本智能合约。

5.4.3智能合约冻结和解冻

智能合约冻结和解冻是对智能合约调用功能进行停止和重新开放的过程,符合如下要求:

a)应支持冻结功能,当发现智能合约存在漏洞时可停止使用;

b)应支持解冻功能,当智能合约中的漏洞修复后可恢复使用;

c)调用智能合约冻结和解冻功能时,应进行权限访问控制。

5.4.4智能合约废止

智能合约废止是废止已部署的智能合约的过程,且不可逆,符合如下要求:

a)应支持通过交易的方式实现智能合约的废止功能,且智能合约废止后数据仍然存在,保存被

终止版本的智能合约代码,并且不能再次被启动执行;

b)调用智能合约废止程序时,应有权限访问控制,只有管理员或者相应权限用户才有权利废止

智能合约;

c)可被废止的智能合约在部署时宜设置显式声明;

d)智能合约废止时,应有相应的处置措施,保障智能合约参与用户的权利与资产安全。

6通用评估方法

6.1设计开发

6.1.1智能合约设计

6.1.1.1智能合约设计评估方法如下:

a)核查智能合约需求文档中需求和功能的说明;

b)核查智能合约需求文档中接口交互和流程的说明;

c)核查智能合约需求文档中使用权限,时序逻辑的说明,并调用智能合约复现;

d)核查智能合约需求文档中的设计图;

e)核查智能合约需求文档中的安全风险分析和应急措施;

f)核查智能合约需求文档中的处理或缓解错误能力,并调用智能合约复现。

6.1.1.2智能合约设计评估预期结果如下:

a)应存在智能合约需求文档,且其中功能需求描述明确、完整;

b)需求文档中智能合约交互接口应最小化暴露、交互流程应清晰完备;

c)需求文档中智能合约使用权限应实现细粒度控制并按照最小粒度分配,智能合约时序逻辑应

合理清晰,复现结果与文档描述应一致;

7

GB/TXXXXX—XXXX

d)需求文档中的设计图宜清晰完整,与描述内容存在对应关系;

e)需求文档中的安全风险分析模型应设计合理,应急措施及时有效;

f)需求文档中应描述包括但不限于提前终止智能合约或线上更新智能合约的功能,复现结果与

文档描述应一致。

6.1.1.3智能合约设计评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.1.2智能合约编程

6.1.2.1智能合约编程评估方法如下:

a)核查智能合约语言的类型、版本信息;

b)核查智能合约所有公共成员变量与函数的引用对象是否有对外暴露的风险;

c)核查智能合约所有条件动作和交易步骤的完备性;

d)核查智能合约是否存在逻辑漏洞或逻辑错误;

e)核查智能合约和函数的编写风格,是否采用过时的语法或用法;

f)核查智能合约在条件不符合时是否具有条件保护功能。

6.1.2.2智能合约编码规范评估预期结果如下:

a)智能合约宜使用主流的智能合约语言,如solidity、C++、Java、Go等;

b)智能合约编码应避免所有公共成员变量与函数的引用对象对外暴露;

c)智能合约编码所有条件选择语句和交易步骤应符合条件动作描述完备性要求;

d)智能合约编码应不存在逻辑漏洞和逻辑错误;

e)智能合约和函数应模块化,逻辑简洁清晰,应不使用过时的语法或用法;

f)智能合约宜具备条件保护语句,即在条件不符合时出发保护机制。

6.1.2.3智能合约编码规范评估结果判定:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.1.3智能合约语言

6.1.3.1智能合约语言评估方法如下:

a)核查智能合约语言支持的数据类型;

b)核查智能合约语言支持的计算类型;

c)对于支持图灵完备的语言,核查智能合约语言支持的控制结构;

d)核查智能合约支持的数据访问模型;

e)核查智能合约的数据读写、遍历以及查询能力;

f)核查智能合约的带有业务属性的简单支付验证的生成。

6.1.3.2智能合约语言约束评估预期结果如下:

a)设计文档描述智能合约应支持的数据类型包含string(字符串)、int(整型)、char(字

符型)、boolean(布尔型)以及基本类型的数组类型;宜支持的数据类型宜包含byte(字

节型)、short(短整型)、long(长整型)、float(单精度浮点型)、double(双精度浮

点型)、map(映射)、vector(向量)自定义类型。智能合约代码实际编写与上述描述一致;

8

GB/TXXXXX—XXXX

b)设计文档描述智能合约支持的计算类型应包含算术运算、关系运算、逻辑运算、条件运算、

赋值运算;宜包含位运算、数据类型转换、哈希运算。智能合约代码实际编写与上述描述一

致;

c)设计文档描述智能合约支持的控制结构应包含顺序结构、分支结构、循环结构,宜包含异常

结构处理、递归结构处理;宜包含异常结构处理、递归结构处理。智能合约代码实际编写与

上述描述一致;

d)设计文档描述智能合约应支持对区块数据、当前与历史状态数据的访问,且访问模型宜统一,

智能合约代码实际编写与上述描述一致;

e)设计文档描述智能合约应支持数据读写能力和遍历能力,宜支持查询能力,智能合约代码实

际编写与上述描述一致;

f)设计文档描述智能合约宜支持生成带有业务属性的简单支付验证,智能合约代码实际编写与

上述描述一致。

6.1.3.3智能合约语言约束评估结果判定:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.1.4智能合约调试

6.1.4.1智能合约调试的评估方法如下:

a)核查智能合约的调试流程和调试方案;

b)核查是否支持智能合约的单步调试能力,包括断点设置,stepinto(单步跳入),stepout(单

步跳出),stepover(单步跳过)及callstack(调用栈)查询,断点处变量查询等能力;

c)核查是否对有文档、工具等,对智能合约的业务逻辑、业务流程,以及代码是否符合业务需

求进行测试和评估;

d)核查是否有文档描述、代码、工具等对智能合约进行静态安全扫描、动态安全扫描;

e)核查是否有文档描述、代码、工具等对智能合约进行形式化验证;

f)核查智能合约的运行结果和安全性。

6.1.4.2智能合约调式的评估预期结果如下:

a)应提供完整的调试流程和合理的调试方案;

b)应支持单步调试能力,包括断点设置,stepinto(单步跳入),stepout(单步跳出),step

over(单步跳过)及callstack(调用栈)查询,断点处变量查询等能力;

c)应对智能合约的业务逻辑、业务流程、以及代码是否符合业务需求的测试和评估;

d)应支持对智能合约进行静态安全扫描、动态安全扫描;

e)宜支持对智能合约进行形式化验证;

f)智能合约的运行结果和安全性应符合预期。

6.1.4.3智能合约调试的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.2编译部署

6.2.1智能合约编译

6.2.1.1智能合约编译的评估方法如下:

9

GB/TXXXXX—XXXX

a)核查系统使用的智能合约的编译工具;

b)核查智能合约在区块链平台上的编译检测;

c)核查智能合约编译工具名称及版本信息,编译工具依赖环境信息;

d)核查编程语言的编译器一致性,在智能合约源码编译成字节码后,核查字节码与源码逻辑一

致性;

e)编译完成后,核查智能合约接口描述文件和编译结果文件后缀。

6.2.1.2智能合约编译的评估预期结果如下:

a)应使用主流的安全编译工具;

b)应支持智能合约在区块链平台上的编译检测;

c)应有清晰的工具名称及版本信息和编译工具依赖环境信息;

d)编程语言的编译器应确保一致性,编译后的字节码运行逻辑应与源码逻辑保持一致;

e)编译后的接口描述文件和编译结果文件后缀应与编译结果说明文档中描述一致。

6.2.1.3智能合约编译评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.2.2智能合约部署

6.2.2.1智能合约部署的评估方法如下:

a)智能合约部署后,分别在随机的不同节点上查找部署的智能合约实例;

b)比较部署前编译的字节码和部署后的字节码;

c)分别使用有部署权限和无部署权限的两组用户进行智能合约部署;

d)智能合约部署完后,检查部署操作的返回值;

e)智能合约部署完后,检查部署操作的返回值。

6.2.2.2智能合约部署的评估预期结果如下:

a)在所有节点上,都能找到部署后的智能合约实例;

b)部署前后的字节码应相同;

c)有部署权限的用户部署成功,无部署权限的用户部署失败;

d)返回值中应包含智能合约的部署状态;

e)返回值中应包含智能合约的唯一标识,如地址、智能合约名等。

6.2.2.3智能合约部署的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3触发执行

6.3.1智能合约调用

6.3.1.1基本要求

6.3.1.1.1智能合约调用基本要求的评估方法如下:

a)核查智能合约触发方式,应支持接口直接调用、智能合约间调用和预言机调用三种触发方式。

10

GB/TXXXXX—XXXX

6.3.1.1.2智能合约调用基本要求的预期结果如下:

a)智能合约触发方式支持接口直接调用、智能合约间调用和预言机调用三种触发方式。

6.3.1.1.3智能合约调用基本要求的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3.1.2直接调用

6.3.1.2.1直接调用的评估方法如下:

a)核查直接调用的功能,支持智能合约的部署、升级、冻结、解冻、废止、状态查询、事件查

询、运行环境变量查询等;

b)核查接口名称的标识性,能够直接明确接口功能,检查在直接调用接口时,能够执行规定的

智能合约调用流程;

c)核查当接口名称不存在时,应有明确的默认结构被调用,或者提供明确的错误信息供调用者

修改错误;

d)核查直接调用的接口参数错误(参数类型错误等),应有明确的错误参数转换规则,或者明

确错误信息供调用者修改错误;

e)核查直接调用接口执行出现错误时,有明确的错误参数转换规则,或者明确错误信息供调用

者修改错误。

6.3.1.2.2直接调用的评估预期结果如下:

a)直接调用的功能,应支持智能合约的部署,智能合约的升级,智能合约的冻结,智能合约的

解冻,智能合约的废止,智能合约状态查询,智能合约事件查询,智能合约运行环境变量的

查询等功能;

b)接口名称具有标识性,宜能够直接明确接口功能,并在直接调用接口的时候能够执行规定的

智能合约调用流程;

c)接口名称不存在时,应有明确的默认结构被调用,提供明确的错误信息供调用者修改错误;

d)直接调用的接口参数错误时(参数类型错误等),应有明确的错误参数转换规则,明确错误

信息供调用者修改错误;

e)直接调用的接口执行出现错误时,应有明确的错误参数转换规则,或者明确错误信息供调用

者修改错误。

6.3.1.2.3直接调用的结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3.1.3智能合约间调用

6.3.1.3.1智能合约间调用的评估方法如下:

a)核查智能合约间调用的安全性规则,智能合约间调用应符合安全性规则,明确调用上下文是

本智能合约还是代理智能合约;

b)核查智能合约间的调用参数校验,避免调用的实际接口与预期不相符合;

c)核查智能合约接口,智能合约接口符合最小暴露性原则、智能合约权限原则等。

6.3.1.3.2智能合约间调用的评估预期结果如下:

11

GB/TXXXXX—XXXX

a)智能合约间调用的安全性规则,智能合约间调用应符合安全性规则(防重入),明确调用上

下文是本智能合约还是代理智能合约;

b)智能合约间的调用参数有参数校验,判断调用的实际接口应与预期相符合;

c)智能合约接口应符合最小暴露性原则、智能合约权限原则等。

6.3.1.3.3智能合约间调用的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3.1.4预言机调用

6.3.1.4.1预言机调用的评估方法如下:

a)核查调用接口,预言机的调用接口名称、输入参数、返回数据应符合API接口规范;

b)核查接口描述文件,采用预言机提供的结构化描述语言;

c)核查接口协议,包含安全传输协议;

d)核查源数据,保证源数据完整未被篡改;

e)核查数据源的有效证明,数据由指定的数据源产生时,能够提供数据源的有效证明;

f)核查身份标识,不同的预言机节点具备唯一的身份标识;

g)核查影响范围,预言机提供的外部数据源的影响范围仅限于智能合约范围内,不应影响系统

的整体运行。

6.3.1.4.2预言机调用的评估预期结果如下:

a)预言机调用接口名称、输入参数、返回数据应符合API接口规范;

b)接口描述文件应采用预言机提供的结构化描述语言;

c)接口协议应包含安全传输协议;

d)预言机应保证源数据完整未被篡改;

e)数据由指定的数据源产生时,应能够提供数据源的有效证明;

f)不同的预言机节点宜具备唯一的身份标识;

g)预言机提供的外部数据源的影响范围仅限于智能合约范围内,不应影响系统的整体运行。

6.3.1.4.3预言机调用的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3.1.5链上随机数调用

6.3.1.5.1链上随机数调用的评估方法如下:

a)在不同的区块链节点中的相同区块的相同交易中分别调用链上随机数接口;

b)在不同的区块和相同区块的不同交易中分别调用链上随机数接口。

6.3.1.5.2链上随机数调用的评估预期结果如下:

a)所有节点返回的链上随机数一致;

b)不同区块及相同区块不同交易返回的随机数符合随机性。

6.3.1.5.3链上随机数调用的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

12

GB/TXXXXX—XXXX

6.3.2智能合约执行

6.3.2.1智能合约执行的评估方法如下:

a)核查智能合约的可终止性原理,一般可采用解释执行或JIT编译到机器指令执行两种方式;

b)智能合约执行结果应具备事务一致性,若调用失败,支持回滚到执行交易之前的状态或者有

明确的错误返回值;

c)核查智能合约账户和智能合约内容,支持智能合约状态作为智能合约账户的属性保存在区块

链网络上;

d)核查该智能合约和链上智能合约的哈希值,在执行之前,两者应保持一致;

e)核查事件推送,在智能合约执行的过程中应将事件推送给已订阅的客户端;

f)核查正确处理异常的能力,支持实时监测和状态回滚。

6.3.2.2智能合约执行的评估预期结果如下:

a)应符合可执行终止性原理,确定性执行结果原理,如采用JIT执行试,执行效率较解释执行

有倍数提升;

b)当前智能合约执行结果具备事务一致性,若调用失败,支持回滚到执行交易之前的状态或者

有明确的错误返回值;

c)应支持智能合约状态作为智能合约账户的属性保存在区块链网络上;

d)在执行之前,该智能合约和链上智能合约的哈希值应保持一致;

e)在智能合约执行的过程中,支持将事件推送给已订阅的客户端;

f)应具备正确处理异常的能力,支持实时监测和状态回滚。

6.3.2.3智能合约执行的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3.3智能合约运行时外部交互

6.3.3.1智能合约运行时外部交互的评估方法如下:

a)核查外部用户/应用与智能合约交互的形式,包括部署、升级、查询、调用等;

b)核查智能合约的外部交互功能,支持支持通过智能合约获取外部数据,如预言机;

c)核查智能合约的接口,智能合约对外提供准确的接口描述,同时对外部的输入做严格检查;

d)核查智能合约与外部数据交互时的影响范围,外部数据应只影响本智能合约的状态。

6.3.3.2智能合约运行时外部交互的评估预期结果如下:

a)外部用户/应用与智能合约交互的形式,应包括部署、升级、查询、调用等;

b)智能合约的外部交互功能,应支持支持通过智能合约获取外部数据,如预言机;

c)智能合约应对外提供准确的接口描述,同时对外部的输入做严格检查;

d)智能合约与外部数据交互时的影响,外部数据应只影响本智能合约的状态。

6.3.3.3智能合约运行时外部交互的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3.4智能合约执行环境

13

GB/TXXXXX—XXXX

6.3.4.1智能合约执行环境的评估方法如下:

a)核查智能合约运行环境与外部的隔离,确保调用智能合约不会对区块链状态外的外部环境造

成影响,也不会导致区块链系统失败;

b)核查运行环境,运行环境应具备执行无二义性,能处理异常事件,当发生异常时,能够对事

件进行回滚;

c)核查智能合约执行结果,保证在相同的输入和相同的历史状态下,不同的节点执行相同的交

易可获得一致的结果;

d)核查可信性,应具备可信性;

e)不泄漏信息,具有可信追溯的特性;

f)核查智能合约调用出现错误时,应提供智能合约回退功能,恢复该次调用对区块链状态造成

的影响。

6.3.4.2智能合约执行环境的评估预期结果如下:

a)智能合约运行环境应与外部的隔离,确保调用智能合约不会对区块链状态外的外部环境造成

影响,也不会导致区块链系统失败;

b)运行环境,运行环境应具备执行无二义性,能处理异常事件,当发生异常时,能够对事件进

行回滚;

c)智能合约执行结果,应保证在相同的输入和相同的历史状态下,不同的节点执行相同的交易

可获得一致的结果;

d)可信性,应具备可信性;

e)不应泄漏信息,具有可信追溯的特性;

f)当智能合约调用出现错误时,应提供智能合约回退功能,恢复该次调用对区块链状态造成的

影响。

6.3.4.3智能合约执行环境的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3.5智能合约事件

6.3.5.1事件约束

6.3.5.1.1智能合约事件约束的评估方法如下:

a)核查智能合约事件的监听,业务方通过监听应可得到事件名称、事件参数、区块高度等详细

信息;

b)核查智能合约事件类型,包含异常业务事件、正常业务事件,且异常业务事件、正常业务事

件应通过测评;

c)核查智能合约事件包含事件名称和事件参数;

d)核查事件名称,是智能合约内事件的唯一标识,简短概要,体现事件的业务类型。

6.3.5.1.2智能合约事件约束的评估预期结果如下:

a)智能合约事件应可以被监听,业务方通过监听能得到事件名称、事件参数、区块高度等详细

信息;

14

GB/TXXXXX—XXXX

b)智能合约事件类型应包含异常业务事件、正常业务事件,且异常业务事件、正常业务事件能

通过测评;

c)智能合约事件应包含事件名称和事件参数;

d)事件名称应是智能合约内事件的唯一标识,简短概要,能体现事件的业务类型。

6.3.5.1.3智能合约事件约束的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3.5.2正常业务事件

6.3.5.2.1正常业务事件的评估方法如下:

a)核查正常业务事件记录了引起业务状态变更的相关方,业务的类型、内容;

b)核查事件名称使用能代表业务的名字,如Transfer;

c)核查事件参数,事件参数为记录的业务数据,标识业务的执行结果。

6.3.5.2.2正常业务事件的评估预期结果如下:

a)正常业务事件应记录了引起业务状态变更的相关方,业务的类型、内容;

b)事件名称宜使用能代表业务的名字,如Transfer;

c)事件参数应为记录的业务数据,标识业务的执行结果。

6.3.5.2.3正常业务事件的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3.5.3异常业务事件

6.3.5.3.1异常业务事件的评估方法如下:

a)核查异常业务事件记录引起异常业务事件的发起方,异常的原因;

b)核查异常业务事件记录引起异常业务事件的智能合约接口及传参内容;

c)核查事件名称,使用能代表业务异常的类型,如Transfer_Error;

d)核查事件参数,包含错误异常类型和错误者异常的原因,异常类型宜使用ENUM。

6.3.5.3.2异常业务事件的评估预期结果如下:

a)异常业务事件应记录了引起异常业务事件的发起方,异常的原因;

b)检查异常业务事件应记录了引起异常业务事件的智能合约接口及传参内容;

c)事件名称宜使用能代表业务异常的类型,如Transfer_Error;

d)事件参数应包含错误异常类型和错误者异常的原因,异常类型使用了ENUM。

6.3.5.3.3异常业务事件的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.3.5.4事件接口结构

6.3.5.4.1事件接口结构的评估方法如下:

a)核查事件接口包含唯一的声明事件接口关键字;

15

GB/TXXXXX—XXXX

b)核查事件接口包含唯一的调用事件接口关键字;

c)核查事件接口包含应将智能合约执行过程中的事件上链,打包进当前区块,并回调给业务调

用方。

6.3.5.4.2事件接口结构的评估预期结果如下:

a)事件接口包含了唯一的声明事件接口关键字;

b)事件接口包含了唯一的调用事件接口关键字;

c)事件接口包含将能将智能合约执行过程中的事件上链,打包进当前区块,并回调给业务调用

方。

6.3.5.4.3事件接口结构的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.4维护管理

6.4.1智能合约版本维护

6.4.1.1智能合约版本维护的评估方法如下:

a)核查智能合约发生修改之后的版本,是否能够在源代码中通过区块链平台指定方式定义版本

号;

b)核查智能合约发生修改之后的版本,是否能够在配置文件中定义版本号,该配置文件是否能

够与智能合约代码一同部署;

c)核查智能合约在部署或升级时,是否能够在部署或升级操作时定义版本号。

6.4.1.2智能合约版本维护的评估预期结果如下:

a)智能合约能够在源代码中通过区块链平台指定方式定义版本号;

b)智能合约能在配置文件中定义版本号,该配置文件应与智能合约代码一同部署;

c)智能合约在部署或升级时,能够在部署或升级操作时定义版本号。

6.4.1.3智能合约版本维护的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.4.2智能合约升级

6.4.2.1智能合约升级的评估方法如下:

a)核查智能合约的升级,是否能够在线升级;

b)核查智能合约的升级,是否能够在区块链平台升级后,仍能稳定运行;

c)核查智能合约的升级,是否能够将升级操作记录在区块中,并符合区块链中交易要求、遵从

交易执行的流程;

d)核查智能合约的升级,是否能够保留历史版本;

e)核查智能合约的升级,是否支持智能合约升级失败时,回滚到原来的智能合约;

f)核查智能合约的升级,是否支持智能合约具备版本控制功能,在智能合约升级到新版本后,

也兼容旧版本智能合约。

6.4.2.2智能合约升级的评估预期结果如下:

16

GB/TXXXXX—XXXX

a)智能合约应支持智能合约的在线升级;

b)智能合约应支持区块链平台升级后,仍能稳定运行;

c)智能合约升级操作宜记录在区块中,符合区块链中交易要求、遵从交易执行的流程;

d)智能合约能在升级之后,应保留历史版本;

e)智能合约能在升级失败时,应能回滚到原来的智能合约;

f)智能合约应具备版本控制功能,能在智能合约升级到新版本后,宜向前兼容旧版本智能合约。

6.4.2.3智能合约升级的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.4.3智能合约冻结和解冻

6.4.3.1智能合约冻结和解冻的评估方法如下:

a)核查智能合约的冻结,是否能够在发现智能合约存在漏洞时,可以停止智能合约调用功能;

b)核查智能合约的解冻,是否能够在智能合约的漏洞修复后,可以恢复智能合约调用功能;

c)核查智能合约权限访问控制,是否能够在调用智能合约冻结和解冻功能时,进行权限访问控

制。

6.4.3.2智能合约冻结和解冻的评估预期结果如下:

a)智能合约应支持冻结功能,能够在发现智能合约存在漏洞时,停止智能合约调用功能;

b)智能合约应支持解冻功能,能够在智能合约漏洞修复后,恢复智能合约调用功能;

c)智能合约能够在调用智能合约冻结和解冻功能时,应进行权限访问控制。

6.4.3.3智能合约冻结和解冻的评估结果判定准则如下:

a)实际评估结果与相关预期结果一致则判定为符合,其他情况判定为不符合。

6.4.4智能合约废止

6.4.4.1智能合约废止的评估方法如下:

a)核查智能合约的废止,是否能够通过交易的方式实现智能合约的废止功能,且智能合约废止

后数据仍然存在,保存被终止版本的智能合约代码,并且不能再次被启动执行;

b)核查智能合约的废止,是否能够在调用智能合约废止时,有权限访问控制,只有管理员或者

响应权限用户才有权利废止智能合约;

c)核查智能合约的废止,是否能够在可被废止的智能合约部署时设置显式声明;

d)核查智能合约的废止,是否能够有相应的处置措施,保障智能合约参与用户的权利与资产安

全。

6.4.4.2智能合约废止的评估预期结果如下:

a)智能合约应支持通过交易的方式实现智能合约的废止功能,且智能合约废止后数据仍然存在,

保存被终止版本的智能合约代码,并且不能再次被启动执行;

b)智能合约能够在调用智能合约废止时,应有有权限访问控制,只有管理员或者响应权限用户

才有

温馨提示

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

评论

0/150

提交评论