《信息技术 区块链和分布式记账技术 智能合约实施规范》_第1页
《信息技术 区块链和分布式记账技术 智能合约实施规范》_第2页
《信息技术 区块链和分布式记账技术 智能合约实施规范》_第3页
《信息技术 区块链和分布式记账技术 智能合约实施规范》_第4页
《信息技术 区块链和分布式记账技术 智能合约实施规范》_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

ICSICS35.240

CCSL70

中华人民共和国国家标准

GB/TXXXXX—XXXX

信息技术区块链和分布式记账技术智能

合约实施规范

InformationTechnology-BlockchainandDistributedLedgerTechnology-Smart

contractimplementationspecification

点击此处添加与国际标准一致性程度的标识

(征求意见稿)

1.1.1XXXX-XX-XX发布XXXX-XX-XX实施

国家市场监督管理总局发布

国家标准化管理委员会

GB/TXXXXX—XXXX

前言

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

起草。

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

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

本文件起草单位:

本文件主要起草人:

II

GB/TXXXXX—XXXX

引言

近年来,在政策、法律、技术、市场等多方推动下,区块链技术正加速脱虚向实,助力实体经济

高速发展。智能合约是存储在分布式记账技术系统中的计算机程序,该程序的任何执行结果都记录在

分布式账本上。智能合约将区块链带入了可编程,智能化时代。然而,随着智能合约日益广泛地应用,

不规范的设计,开发,测试,维护带来了许多风险问题,导致了很严重的损失。

为了给区块链链接的各行业,企业及其他组织提供可实施的标准,本文件对区块链智能合约的生

命周期进行了深入的分析,梳理了智能合约生命周期各阶段,包括设计开发,编译部署,触发执行,

和维护治理。在生命周期的各个阶段,提炼需要遵循的相关要求,从而构建出一套可实施的,能够避

免智能合约可能出现风险的执行流程。为区块链链接的各个行业提供可操作,具有指导意义的智能合

约实施规范。

III

GB/TXXXXX—XXXX

信息技术区块链和分布式记账技术智能合约实施规范

1范围

本文件给出了区块链智能合约的实施规范,规定了智能合约的实施框架、实施过程,以及相应的

评估方法。

本文件适用于为区块链各参与方在智能合约设计、开发、部署、使用和运维过程中提供实施参考,

也适用于指导智能合约的监管和审计。

2规范性引用文件

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

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

用于本文件。

GB/T18391.1-2002信息技术数据元的规范与标准化第1部分:数据元的规范与标准化框架

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

GB/TXXXX-XXXX信息技术区块链和分布式记账技术术语

3术语和定义

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

3.1

区块链blockchain

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

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

[来源:GB/TXXXX-XXXX信息技术区块链和分布式记账技术术语,定义3.6]

3.2

智能合约smartcontract

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

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

[来源:GB/TXXXX-XXXX信息技术区块链和分布式记账技术术语,定义3.72]

3.3

数据类型datatype

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

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

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

1

GB/TXXXXX—XXXX

3.5

形式化验证formalverification

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

3.6

预言机oraclemachine

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

[来源:GB/TXXXX-XXXX信息技术区块链和分布式记账技术术语,定义3.28]

3.7

图灵完备turingcomplete

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

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

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)应避免逻辑漏洞和逻辑错误,如转账前余额未校验,未检查返回值的调用,整数溢出等;

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

等;

h)智能合约中宜采用条件保护语句,如require,如条件不满足,则触发保护机制,断言防护

语句,如assert,当断言失败时,触发断言保护机制。

5.1.3合约语言约束

智能合约的语言,包含数据类型、计算类型和控制结构,满足如下要求:

a)应支持图灵完备和非图灵完备语言;

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

的数组类型;

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

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

义类型等;

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

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

f)合约支持的控制结构应包含顺序结构、分支结构和循环结构等;

g)合约支持的控制结构宜包含异常结构处理、递归结构处理;

h)应支持区块数据,当前状态数据以及历史状态数据的访问能力,宜支持统一的数据访问模型;

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

查询等;

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

5.1.4合约的测试

合约开发完之后需要进行必要的测试,满足如下要求:

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

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

c)应支持对智能合约进行静态安全扫描、动态安全扫描和形式化验证;

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

5.2智能合约的编译部署

5.2.1合约编译

3

GB/TXXXXX—XXXX

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

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预言机调用

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

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

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

4

GB/TXXXXX—XXXX

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

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

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

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

标识;

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

5.3.2合约的执行

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

a)应满足可执行终止性原理,确定性执行结果原理;

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

确的错误返回值;

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

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

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

f)支持智能合约执行过程可终止;

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

5.3.3合约运行时的外部交互

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

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

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

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

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

5.3.4合约的执行环境

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

a)应保证智能合约运行环境与外部隔离,调用智能合约不会导致区块链系统失败;

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

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

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

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

f)当智能合约出现错误时,应提供智能合约挂起功能。

5.3.5合约的事件

5.3.5.1事件的约束

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

如下要求:

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

信息;

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

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

5

GB/TXXXXX—XXXX

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合约升级约束

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

如下要求:

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

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

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

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

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

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

5.4.3合约冻结和解冻

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

6

GB/TXXXXX—XXXX

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

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

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

5.4.4合约废止

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

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

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

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

合约;

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

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

6智能合约的实施过程测评

6.1智能合约的设计开发测评

6.1.1合约的设计测评

合约的设计测评如下:

a)测试方法

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

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

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

4)核查合约需求文档中的设计图;

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

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

b)预期结果

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

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

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

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

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

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

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

描述应一致。

c)结果判定:

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

6.1.2合约的编码规范测评

合约的编码规范测评如下:

a)测试方法

1)核查智能合约语言的类型;

2)核查智能合约语言的版本信息;

7

GB/TXXXXX—XXXX

3)核查智能合约编码是否符合合约语言的规范;

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

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

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

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

8)核查智能合约在条件不满足时是否具有条件保护功能,在断言失败时是否具有断言防护

功能。

b)预期结果

1)智能合约应使用已广泛应用的合约语言,如solidity、C++、Java、Go等;

2)智能合约宜使用最新的稳定版本的合约语言;

3)智能合约编码应符合使用的合约语言规范;

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

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

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

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

8)智能合约宜采用条件保护语句在条件不满足时出发保护机制,宜采用断言防护语句在断

言失败时触发断言保护机制。

c)结果判定:

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

6.1.3合约语言约束的测评

合约语言约束的测评如下:

a)测试方法

1)核查智能合约语言是否支持图灵完备语言和非图灵完备语言;

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

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

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

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

6)核查智能合约语言应支持的控制结构;

7)核查智能合约语言宜支持的控制结构;

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

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

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

b)预期结果

1)设计文档描述智能合约支持的语言应包括图灵完备语言和非图灵完备语言,智能合约代

码实际编写与上述描述一致;

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

(字符型)、boolean(布尔型)以及基本类型的数组类型,智能合约代码实际编写与上

述描述一致;

3)设计文档描述智能合约宜支持的数据类型应包含byte(字节型)、short(短整型)、long

(长整型)、float(单精度浮点型)、double(双精度浮点型)、map(映射)、vector

(向量)自定义类型,智能合约代码实际编写与上述描述一致;

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

8

GB/TXXXXX—XXXX

算、赋值运算,智能合约代码实际编写与上述描述一致;

5)设计文档描述智能合约支持的计算类型宜包含位运算、数据类型转换、哈希运算,智能

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

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

异常结构处理、递归结构处理,智能合约代码实际编写与上述描述一致;

7)设计文档描述智能合约支持的控制结构宜包含异常结构处理、递归结构处理,智能合约

代码实际编写与上述描述一致;

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

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

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

码实际编写与上述描述一致;

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

写与上述描述一致。

c)结果判定:

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

6.1.4合约的测试的测评

合约的测试的测评如下:

a)测试方法

1)核查智能合约的测试流程和测试方案;

2)核查测试方案内容;

3)核查对智能合约的安全验证;

4)核查合约的运行结果和安全性。

b)预期结果

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

2)测试方案内容应包含对智能合约的业务逻辑、业务流程、合约代码是否符合业务需求的

测试和评估;

3)测试内容应包含静态安全扫描、动态安全扫描和形式化验证;

4)测试结果显示合约的运行结果和安全性应符合预期。

c)结果判定:

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

6.2智能合约的编译部署测评

6.2.1合约编译测评

合约编译测评如下:

a)测试方法:

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

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

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

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

辑一致性;

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

9

GB/TXXXXX—XXXX

b)预期结果:

1)应使用最新的稳定的安全编译工具;

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

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

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

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

c)结果判定:

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

6.2.2合约部署测评

合约部署测评如下:

a)测试方法:

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

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

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

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

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

b)预期结果:

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

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

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

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

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

c)结果判定:

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

6.3智能合约的触发执行测评

6.3.1合约调用测评

6.3.1.1基本要求测评

基本要求测评如下:

a)测试方法:

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

2)核查合约调用的原理,要满足事务一致性的原理,可执行终止性原理,确定性执行结果

原理等。

b)预期结果:

1)合约触发方式支持接口直接调用、合约间调用和预言机调用三种触发方式;

2)合约调用的原理,满足事务一致性的原理,可执行终止性原理,确定性执行结果原理。

c)结果判定:

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

6.3.1.2直接调用测评

直接调用测评如下:

10

GB/TXXXXX—XXXX

a)测试方法:

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

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

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

定的合约调用流程;

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

用者修改错误;

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

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

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

调用者修改错误。

b)预期结果:

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

废止,合约状态查询,合约事件查询,合约运行环境变量的查询等功能;

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

定的合约调用流程;

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

误;

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

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

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

调用者修改错误。

c)结果判定:

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

6.3.1.3合约间调用测评

合约间调用测评如下:

a)测试方法:

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

约还是代理合约;

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

3)核查合约接口,合约接口满足最小暴露性原则、合约权限原则等。

b)预期结果:

1)合约间调用的安全性规则,合约间调用应符合安全性规则(防重入),明确调用上下文

是本合约还是代理合约;

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

3)合约接口应满足最小暴露性原则、合约权限原则等。

c)结果判定:

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

6.3.1.4预言机调用测评

预言机调用测评如下:

a)测试方法:

11

GB/TXXXXX—XXXX

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

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

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

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

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

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

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

系统的整体运行。

b)预期结果:

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

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

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

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

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

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

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

c)结果判定:

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

6.3.2合约的执行测评

合约执行是运行智能合约代码完成预定功能,测评如下:

a)测试方法:

1)满足可执行终止性原理,确定性执行结果原理;

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

有明确的错误返回值;

3)核查合约账户和合约内容,支持智能合约状态作为合约账户的属性保存在区块链网络上;

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

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

6)核查执行过程的可终止性,支持智能合约执行过程可终止;

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

b)预期结果:

1)应满足可执行终止性原理,确定性执行结果原理;

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

有明确的错误返回值;

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

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

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

6)支持智能合约执行过程可终止;

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

c)结果判定:

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

6.3.3合约运行时的外部交互测评

12

GB/TXXXXX—XXXX

合约运行时的外部交互测评如下:

a)测试方法:

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

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

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

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

b)预期结果:

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

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

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

4)合约与外部数据交互时的影响,外部数据应只影响本合约的状态;

c)结果判定:

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

6.3.4合约的执行环境测评

合约执行环境测评如下:

a)测试方法:

1)核查智能合约运行环境与外部的隔离,确保调用智能合约不会导致区块链系统失败;

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

对事件进行回滚;

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

易可获得一致的结果;

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

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

6)核查合约错误处理,当智能合约出现错误时,提供智能合约挂起功能。

b)预期结果:

1)智能合约运行环境应与外部的隔离,确保调用智能合约不会导致区块链系统失败;

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

件进行回滚;

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

可获得一致的结果;

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

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

6)约错误处理,当智能合约出现错误时,应提供智能合约挂起功能;

c)结果判定:

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

6.3.5合约事件约束测评

合约事件约束测评如下:

a)测试方法:

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

信息;

13

GB/TXXXXX—XXXX

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

件应通过测评;

3)核查合约事件包含事件名称和事件参数;

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

b)预期结果:

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

信息;

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

通过测评;

3)合约事件应包含事件名称和事件参数;

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

c)结果判定:

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

6.3.5.1正常业务事件测评

正常业务事件测评如下:

a)测试方法:

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

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

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

b)预期结果:

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

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

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

c)结果判定:

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

6.3.5.2异常业务事件测评

异常业务事件测评如下:

a)测试方法:

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

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

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

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

b)预期结果:

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

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

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

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

c)测试评价方法:

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

6.3.5.3事件接口结构测评

14

GB/TXXXXX—XXXX

事件接口结构测评如下:

a)测试方法:

1)核查事件接口包含唯一的声明事件接口关键字,如event;

2)核查事件接口包含唯一的调用事件接口关键字,如emit;

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

用方。

b)预期结果:

1)事件接口包含了唯一的声明事件接口关键字,如event;

2)事件接口包含了唯一的调用事件接口关键字,如emit;

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

方。

c)测试评价方法:

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

6.4智能合约的维护治理测评

6.4.1合约版本维护测评

合约版本维护的测评如下:

a)测试方法:

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

版本号;

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

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

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

b)预期结果:

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

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

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

c)结果判定:

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

6.4.2合约升级测评

合约升级的测评如下:

a)测试方法:

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

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

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

遵从交易执行的流程;

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

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

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

后,也兼容旧版本合约。

b)预期结果:

15

GB/TXXXXX—XXXX

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

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

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

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

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

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

c)结果判定:

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

6.4.3合约冻结和解冻测评

合约冻结和解冻的测评如下:

a)测试方法:

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

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

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

问控制。

b)预期结果:

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

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

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

c)结果判定:

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

6.4.4合约废止测评

合约废止的测评如下:

a)测试方法:

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

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

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

或者响应权限用户才有权利废止合约;

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

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

全。

b)预期结果:

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

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

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

用户才有权利废止合约;

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

4)智能合约能够在智能合约废止时,应有相应的处置措施,保障合约参与用户的权利与资

产安全。

c)结果判定:

16

GB/TXXXXX—XXXX

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

17

GB/TXXXXX—XXXX

参考文献

[1]20173824-T-469信息技术区块链和分布式账本技术参考架构

[2]JR/T0193—2020区块链技术金融应用评估规则

[3]JR/T0184-2020金融分布式账本技术安全规范

[4]GB/TXXXX-XXXX信息安全技术区块链技术安全框架

[5]GB/TXXXX-XXXX信息技术区块链和分布式记账技术参考架构

18

GB/TXXXXX—XXXX

目次

目次......................................................................I

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

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

信息技术区块链和分布式记账技术智能合约实施规范............................1

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智能合约的维护治理测评.................................................15

参考文献................................................................18

I

温馨提示

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

最新文档

评论

0/150

提交评论