网站地图 | Tags | 热门标准 | 最新标准 | 订阅

GB/T 43579-2023 区块链和分布式记账技术 智能合约生命周期管理技术规范

  • 名  称:GB/T 43579-2023 区块链和分布式记账技术 智能合约生命周期管理技术规范 - 下载地址2
  • 下载地址:[下载地址2]
  • 提 取 码
  • 浏览次数:3
下载帮助: 发表评论 加入收藏夹 错误报告目录
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
新闻评论(共有 0 条评论)

资料介绍

  ICS 35.240 CCS L 70

  中 华 人 民 共 和 国 国 家 标 准

  GB/T 43579—2023

  区块链和分布式记账技术

  智能合约生命周期管理技术规范

  Blockchain anddistributed ledgertechnology—

  Technicalspecification ofsmartcontractlifecyclemanagement

  2023-12-28发布 2024-04-01实施

  国家市场监督管理总局国家标准化管理委员会

  

  发

  

  布

  GB/T 43579—2023

  目 次

  前言 Ⅰ

  引言 Ⅱ

  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 编译部署 8

  6. 3 触发执行 8

  6. 4 维护管理 11

  附录 A (资料性) 常见智能合约漏洞 13

  参考文献 15

  GB/T 43579—2023

  前 言

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

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

  本文件由中华人民共和国工业和信息化部提出 。

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

  本文件起草单位 : 蚂蚁区块链科技(上海)有限公司 、中国电子技术标准化研究院 、众安信息技术服务有限公司 、深圳市前海智慧版权创新发展研究院 、上海万向区块链股份公司 、四川长虹电器股份有限公司 、南京鑫智链科技信息有限公司 、湖南天河国云科技有限公司 、西南林业大学 、蚂蚁科技集团股份有限公司 、杭州趣链科技有限公司 、深圳市腾讯计算机系统有限公司 、复旦大学 、工银科技有限公司 、西安交通大学 、南方电网大数据服务有限公司 、国家应用软件产品质量检验检测中心 、上海分布信息科技有限公司 、达闼机器人股份有限公司 、腾讯云计算(北京)有限责任公司 、北京大数据先进技术研究院 、上海阵方科技有限公司 、浙商银行股份有限公司 、上海零数众合信息科技有限公司 、广州南方投资集团有限公司 、永旗控股(北京)有限公司 、研祥智能科技股份有限公司 、京东科技信息技术有限公司 、中移动信息技术有限公司 、北京泰尔英福科技有限公司 、工业和信息化部电子第五研究所 、联通数字科技有限公司 、国家工业信息安全发展研究中心 、华为云计算技术有限公司 、华为技术有限公司 、北京大学计算与数字经济研究院 、神州数码信息服务股份有限公司 、国网区块链科技(北京)有限公司 、上海奥若拉信息科技集团有限公司 、北京微芯区块链与边缘计算研究院 、中国民航信息网络股份有限公司 、浙江大学 、香港理工大学 、广州赛西标准检测研究院有限公司 、敏于行(北京)科技有限公司 、恒宝股份有限公司 、北京合思信息技术有限公司 、深圳江行联加智能科技有限公司 、深圳博思互联科技有限公司 、北京国金汇德工程管理有限公司 、浙江出彩智能科技有限公司 、江西开创数码科技有限公司 、中国信息通信研究院 。

  本文件主要起草人 :李鸣、闫莺、彭晋、昌文婷、周平、邱英英、杜宇、郝汉、李克鹏、欧昀、王栋、于秀明、李努锲 、杨征 、梁志宏 、王海军 、张雁 、张晓蒙 、蔡亮 、陶立春 、王绍刚 、王晨辉 、王威 、谢辉 、刘亭杉 、劳卫伦 、刘天成 、阚海斌 、笪鸿飞 、龚自洪 、杨国正 、兰春嘉 、王义 、艾崧溥 、相里朋 、王文呈 、潘妍 、张子怡 、张亮亮 、任凤丽 、杨文锋 、武杨 、任常锐 、孙林 、陈晓丰 、郝玉琨 、康信伟 、石娜 、郁岩生 、谭林 、黄宇翔 、范铭 、邬萌 、邱炜伟 、刘冕宸 、金晓娜 、梁军 、钟礼斌 、宋文鹏 、杨珍 、王鑫 、王海龙 、田森 、包小敏 、彭涛 、孙琳 、种法辉 、张小军 、曲强 、李达 、晏海水 、杨荣霞 、苏庆慧 、杜娟 、贾祥娟 、周钢 、张栋 、曹建农 、王保春 、庞伟伟 、颜爱军 、钱京 、樊小毅 、陈冬 、周子茗 、张 金 伟 、马 春 荃 、华 崇 鑫 、魏 凯 、张 奕 卉 、石 竹 玉 、黄 德 俊 、秦 日 臻 、谢 云 龙 、郭东升 、季静婷 、陈志列 、庞观士 。

  Ⅰ

  GB/T 43579—2023

  引 言

  近年来 ,在产业政策 、法律法规 、技术进步 、市场发展等多方面推动下 , 区块链技术正加速 “脱虚向实 ”,助力实体经济高速发展 。智能合约是存储在分布式记账技术系统中的计算机程序 ,该程序的任何执行结果都记录在分布式账本上 。智能合约将区块链带入了可编程 ,智能化时代 。然而 , 随着智能合约日益广泛地应用 ,不规范的设计 、开发 、测试及维护带来了许多风险问题 ,造成了严重损失 。

  为了给应用区块链联结的各行业 、各企业和相关组织提供可实施的标准 ,本文件对区块链智能合约的生命周期进行了深入的分析 ,梳理了智能合约生命周期各阶段 ,包括设计开发 、编译部署 、触发执行和维护管理 。在生命周期的各个阶段 ,本文件提炼需要遵循的相关要求 ,从而构建出一套可实施的 , 能够避免智能合约可能出现风险的执行流程 ,为区块链联结的各个行业提供可操作 、具有指导意义的智能合约实施规范 。

  Ⅱ

  GB/T 43579—2023

  区块链和分布式记账技术

  智能合约生命周期管理技术规范

  1 范围

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

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

  2 规范性引用文件

  本文件没有规范性引用文件 。

  3 术语和定义

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

  3. 1

  区块链 blockchain

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

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

  [来源 :GB/T 43572—2023,3. 6] 3.2

  智能合约 smartcontract

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

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

  [来源 :GB/T 43572—2023,3. 72] 3.3

  数据类型 data type

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

  [来源 :GB/T 5271. 17—2010,17. 05. 08] 3.4

  形式化验证 formalverification

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

  3.5

  预言机 oracle

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

  [来源 :GB/T 43572—2023,3. 28]

  1

  GB/T 43579—2023

  3.6

  图灵完备 turing complete

  在可计算性理论中 ,一系列操作数据的规则(如指令集 、编程语言 、细胞自动机) 按照一定的顺序计算并解决所有可计算的问题 。

  3.7

  智能合约生命周期 smartcontractlifecycle

  当智能合约从构思开始至不可使用为止的时间周期 。

  4 概述

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

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

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

  c) 智能合约的触发执行是将符合条件的事件推送到待验证的队列中 , 区块链上的验证节点对交易进行全面认证并达成共识 。 区块链执行该交易 ,并将交易和执行结果记入区块链中 。

  d) 智能合约的维护管理是指智能合约部署上线后 , 因需要修正错误 ,提升性能 ,或其他问题而导致的智能合约升级 、冻结 、废止等操作 。

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

  5 通用技术要求

  5. 1 设计开发

  5. 1. 1 智能合约设计

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

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

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

  c) 应对智能合约的使用权限 、时序逻辑进行合理设计 ,权限粒度要做到尽量小 ,按最低要求分配权限 ,对时序逻辑要严格验证 ,避免时序逻辑导致的安全性问题 ,如条件竞争等 ;

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

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

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

  5. 1.2 智能合约编程

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

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

  2

  GB/T 43579—2023

  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) 应提供智能合约的单步调试能力 ,包括断点设置 , step into(单步跳入) 、step out(单步跳出) 、 step over(单步跳过)及 callstack(调用栈)查询 ,断点处变量查询等能力 ;

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

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

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

  5.2 编译部署

  5.2. 1 智能合约编译

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

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

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

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

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

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

  3

  GB/T 43579—2023

  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) 接口名称 、输入参数 、返回数据应符合应用程序接口规范 ;

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

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

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

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

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

  4

  GB/T 43579—2023

  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) 应具备可信性 ,不应泄漏信息 ,具有可信追溯的特性 ;

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

  5.3.5 智能合约事件

  5.3.5. 1 事件约束

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

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

  5

  GB/T 43579—2023

  细信息 ;

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

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

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

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

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

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

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

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

  6

  GB/T 43579—2023

  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 智能合约设计实际评估结果达到了 5. 1. 1 的相关要求则判定为符合 ,其他情况判定为不符合 。

  6. 1.2 智能合约编程

  6. 1.2. 1 智能合约编程评估方法如下 :

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

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

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

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

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

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

  6. 1.2.2 智能合约编程实际评估结果达到 5. 1. 2 的相关要求则判定为符合 ,其他情况判定为不符合 。

  6. 1.3 智能合约语言

  6. 1.3. 1 智能合约语言评估方法如下 :

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

  7

  GB/T 43579—2023

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

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

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

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

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

  6. 1.3.2 智能合约语言实际评估结果达到 5. 1. 3 的相关要求则判定为符合 ,其他情况判定为不符合 。

  6. 1.4 智能合约调试

  6. 1.4. 1 智能合约调试的评估方法如下 :

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

  b) 核查是否支持智能合约的单步调试能力 ,包括断点设置 , step into(单步跳入) 、step out(单步跳出) 、step over(单步跳过)及 callstack(调用栈)查询 ,断点处变量查询等能力 ;

  c) 核查是否有文档 、工具等 ,对智能合约的业务逻辑 、业务流程 , 以及代码是否符合业务需求进行测试和评估 ;

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

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

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

  6. 1.4.2 智能合约调试实际评估结果达到 5. 1. 4 的相关要求则判定为符合 ,其他情况判定为不符合 。

  6.2 编译部署

  6.2. 1 智能合约编译

  6.2. 1. 1 智能合约编译的评估方法如下 :

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

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

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

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

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

  6.2. 1.2 智能合约编译实际评估结果达到 5. 2. 1 的相关要求则判定为符合 ,其他情况判定为不符合 。

  6.2.2 智能合约部署

  6.2.2. 1 智能合约部署的评估方法如下 :

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

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

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

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

  6.2.2.2 智能合约部署实际评估结果达到 5. 2. 2 的相关要求则判定为符合 ,其他情况判定为不符合 。

  6.3 触发执行

  6.3. 1 智能合约调用

  6.3. 1. 1 基本要求评估方法

  6.3. 1. 1. 1 智能合约调用基本要求的评估方法为 :核查智能合约触发类型 ,支持直接调用 、智能合约间

  8

  GB/T 43579—2023

  调用 、预言机调用和链上随机数调用 。

  6.3. 1. 1. 2 智 能 合 约 调 用 实 际 评 估 结 果 达 到 5. 3. 1. 1 的 相 关 要 求 则 判 定 为 符 合 , 其 他 情 况 判 定 为 不符合 。

  6.3. 1.2 直接调用

  6.3. 1.2. 1 直接调用的评估方法如下 :

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

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

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

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

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

  6.3. 1.2.2 直接调用实际评估结果达到 5. 3. 1. 2 的相关要求则判定为符合 ,其他情况判定为不符合 。

  6.3. 1.3 智能合约间调用

  6.3. 1.3. 1 智能合约间调用的评估方法如下 :

  a) 核查智能合约间调用的安全性规则 ,智能合约间调用是否符合安全性规则 , 明确调用上下文是本智能合约还是代理智能合约 ;

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

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

  6.3. 1.3.2 智能合约间调用实际评估结果达到 5. 3. 1. 3 的 相 关 要 求 则 判 定 为 符 合 , 其 他 情 况 判 定 为 不符合 。

  6.3. 1.4 预言机调用

  6.3. 1.4. 1 预言机调用的评估方法如下 :

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

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

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

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

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

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

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

  6.3. 1.4.2 预言机调用实际评估结果达到 5. 3. 1. 4 的相关要求则判定为符合 ,其他情况判定为不符合 。

  6.3. 1.5 链上随机数调用

  6.3. 1.5. 1 链上随机数调用的评估方法如下 :

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

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

  9

  GB/T 43579—2023

  6.3. 1.5.2 链上随机数调用实际评估结果达到 5. 3. 1. 5 的 相 关 要 求 则 判 定 为 符 合 , 其 他 情 况 判 定 为 不符合 。

  6.3.2 智能合约执行

  6.3.2. 1 智能合约执行的评估方法如下 :

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

29139698829
下载排行 | 下载帮助 | 下载声明 | 信息反馈 | 网站地图  360book | 联系我们谢谢