区块链数据格式规范.pdf
中国区块链技术和产业发展论坛标准 CBD-Forum-002-2017 区块链 数据格式规范 Blockchain Data format specification 2017- 12 - 22 发布 CBD-Forum-002-2017 I 目 次 前言 . III 1 范围 . 1 2 术语和缩略语 . 1 2.1 其他标准中定义的术语 . 1 2.2 缩略语 . 2 3 数据对象结构 . 2 4 数据分类 . 3 5 数据元属性 . 3 6 数据格式规范 . 3 6.1 账户数据格式 . 3 6.2 区块数据格式 . 5 6.3 事务数据格式 . 8 6.4 实体数据格式 . 9 6.5 合约数据格式 . 11 6.6 配置数据格式 . 12 附录 A (资料性附录) 数据项标识符 . 15 附录 B (资料性附录 ) 共识机制相关数据格式 . 16 B.1 类拜占庭容错 . 16 B.2 基于权益的证明 . 19 B.3 基于工作量的证明 . 20 参考文献 . 21 CBD-Forum-002-2017 III 前 言 本标准按照 GB/T 1.1-2009 给出的规则起草。 本标准由中国区块链技术和产业发展论坛提出。 本标准负责起草单位:中国电子技术标准化研究院、中国万向控股有限公司、浙江蚂蚁小微金融服务集团有限公司、深圳前海微众银行股份有限公司、乐视联服信息技术(北京)有限公司、万达网络科技集团有限公司、中国平安保险(集团)股份有限公司、上海金丘实业股份有限公司、上海钜真金融信息服务有限公司、鑫苑(中国)置业有限公司、众安信息技术服务有限公司、上海分布信息科技有限公司、用友网络科技股份有限公司、海航科技集团有限公司、三一集团有限公司。 本标准主要起草人: 李鸣,唐晓丹,谭智勇,张开翔,季宙栋, 周平, 吴小川,赵博然,华正皓 ,陈家乐,宋文鹏,周子焱,李斌,李俊,左鹏,李奕,李彦博,金龙,杜宇,姚辉亚,韩梅,杨宝刚,李佳秾,罗荣阁,胡丹青 ,郝玉琨,董长江,高西林,杜君君,朱天阳,倪旻,易锋平,孙琳,周政军 ,李升林 。 使用帮助信息:任何单位和个人在使用本标准的过程中,若存在疑问,或有对本标准的改进建议和意见,请与中国电子技术标准化研究院(中国区块链技术和产业发展论坛 秘书处)联系。 电话: 010-64102801/2804;电子邮件: cbdforumcesi 通信地址:北京 市 东城区安定门东大街 1号( 100007) 为了推动 本标准的持续改进,使其内容更加贴近用户组织的实际需求,欢迎社会各方力量参加本标准的持续改进,本标准的更多信息欢迎关注中国区块链技术和产业发展论坛官方网站和公众号。 cbdforum CBD-Forum-002-2017 1 区块链 数据格式规范 1 范围 本标准规定了区块链的数据格式规范。具体规定了以下内容: a) 区块链技术相关的数据结构; b) 区块链技术相关的数据分类 及其相互关系 ; c) 区块链技术相关的 数据元 的 数据格式要求。 本标准适用于: a) 为计划使用区块链的组织建设区块链系统提供数据格式参考; b) 指导区块链服务提供组织建立区块链系统数据结构; c) 为区块链系统建设过程的中间件服务组织提供数据格式参考。 2 术语和缩略语 2.1 其他标准中定义的术语 GB/T 19488.1-2004、 GB/T 18391.2-2009、 GB/T 18391.1-2002 和 CBD-Forum-001-2017 界定的以下术语和定义适用于本文件。 2.1.1 属性 attribute 一个对象或实体的特征。 GB/T 18391.2-2009 2.1.2 区块链 blockchain 一种在对等网络环境下,通过透明和可信规则,构建不可伪造、不可篡改和可追溯的块链式数据结构,实现和管理事务处理的模式。 注 : 事务处理包括但不限于可信数据的产生、存取和使用等。 CBD-Forum-001-2017 2.1.3 数据元 data element 通过定义、标识、表示和允许值等一系列属性描述的一个数据单元。 GB/T 19488.1-2004 2.1.4 数据类型 data type 由数据元操作决定的用于采集字母、数字和(或)符号的格式,以描述数据元的值。 CBD-Forum-002-2017 2 GB/T 18391.1-2002 2.1.5 标 识 符 identifier 数据元的唯一标识。 GB/T 18391.1-2002 2.1.6 智能 合约 smart contract 以 数字形式定义的 能够自动执行条款的合约 。 注: 在区块链技术领域,智能合约是指基于预定事件触发、不可篡改、自动执行的计算机程序。 CBD-Forum-001-2017 2.2 缩略语 下列缩略语适用于本标准。 PKI 公钥基础设施( Public Key Infrastructure) ID 标识( Identity) 3 数据 对象 结构 区块链技术相关的数据 对象结构 包括上述区块、事务、实体、合约、账户、配置六个 主要数据 对象 。其中 区块链核心的数据对象包括区块、事务、实体和合约。每一区块数据对象中包含一个或多个事务数据对象,每个事务对象包括属性类的实体数据对象,还包括事务的业务逻辑,即合约数据对象。在区块链核心数据对象之外,包括配置数据对象,提供区块链系统正常运行过程中所需的配置信息。配置数据对象和区块链核心数据对象共同构建了区块链运行所需的基础数据基础。而账户数据对象表示区块链业务的实际发起者和相关方对应的数据结构。 图 1 给出了数据视图相关的实体间 关系 。 注: 区块链技术数据结构中所包含的关键要素是区块链技术中涉及到的必要数据,在不同 区块链技术相关的平台中可能包含其他非必要数据未在本标准的范围中。 图 1 核心 区块 配置 事务 实体 合约 账户 CBD-Forum-002-2017 3 4 数据分类 本标准以数据对象的类别为依据,将 区块链数据分为以下六类: a)账户数据:指描述区块链事务的实际发起者和相关方的数据。区块中记录的事务信息均被关联到相关的账户之上,每个区块链服务客户拥有一个或多个账户来使用区块链服务。 b)区块数据:指区块链网络的底层链式数据,用来把一段给定时间内发生的事务处理结果持久化为成 块 链式数据结构。通常情况下,区块由区块头和区块体组成。区块头包含区块相关的控制信息,区块体包含具体的事务数据。 c)事务数据:指描述区块链系统上承载的具体业务动作的数据。其中,事务既包括 交易类型事务,也包括 非交易类型事务。 d)实体数据:指描述事务的静态属性的数据。通常包括发起方地址、接收方地址、交易发生额、交易费用、存储数据和实体数据备注。 e)合约数据: 指描述事务的动态处理逻辑 的数据。 合约又称智能合约,是一套以计算机代码形式定义的承诺,以及合约参与方可执行承诺的协议 。这里的合约数据既包括处理逻辑的可执行代 码,也包括处理逻辑的执行结果。 f)配置数据:指区块链系统正常运 行过程中所需的配置信息。通常包括共识协议版本号、软件版本号和网络通信底层对等节点配置信息等。 5 数据元 属性 区块链数据元通过数据标识符、中文名称、英文名称、数据类型、数据长度、数据说明、数据备注7个属性来描述。具体属性 说明 见 表 1。 表 1 属性名称 属性说明 数据标识符 各 数据元 的唯一标识, 编号是以阶层式分类,分别将数据分类和 数据元 依顺序进行流水号编码记录。前段码为数据分类号码,后段码以 数据元 的流水号,详见附录 A。 中文名称 数据元 的中文名称,在一定语境下名称应保持唯一。 英文名称 数据元 的英文名称,在一定语境下名称应保持唯一。 数据类型 描述 数据元 的特征和基本要素,本标准中使用的数据类型主要包括:字符串类型、整数类型、数组类型。 数据长度 描述该 数据元 的长度,在本标准中用定长或不定长表示,并给出了推荐字节长度。 数据说明 详细描述该 数据元 的内容和表达的含义。 数据备注 描述该 数据元 是否必要,在本标准中分为必选和可选。 第 6章给出了 对各种 区块链 数据元 属性 的说明和要求。 对 各 数据元 的 数据标识符的参考性规范见附录 A。 6 数据格式规范 6.1 账户数据格式 账户数据 主要 包括以下几种数据元: a)账户公钥; b)账户私钥; CBD-Forum-002-2017 4 c)账户资产; d)数字证书; e)账户所属机构。 6.1.1 账户公钥 账户公钥的数据格式要求 见表 2。 表 2 属性 内容 中文名称 账户公钥 英文名称 Account Public Key 数据 类型 字符串 数据 长度 定长,推荐 64字节 数据 说明 根据 PKI体系为用户生成的密钥对里,可公开的部分。 数据 备注 必选 6.1.2 账户私钥 账户私钥的数据格式要求 见表 3。 表 3 属性 内容 中文名称 账户私钥 英文名称 Account Private Key 数据 类型 字符串 数据 长度 定长,推荐 32字节 数据 说明 根据 PKI体系为用户生成的密钥对里,不公开的部分。 数据 备注 必选 6.1.3 账户资产 账户资产的数据格式要求 见表 4。 表 4 属性 内容 中文名称 账户资产 英文名称 Account Asset 数据 类型 数组 数据 长度 不定长 数据 说明 账户拥有的资产说明,包括资产名称,资产列表,余额等。 数据 备注 可选 6.1.4 数字证书 数字证书的数据格式要求 见表 5。 CBD-Forum-002-2017 5 表 5 属性 内容 中文名称 数字证书 英文名称 Digital Certificate 数据 类型 数组 数据 长度 不定长 数据 说明 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。 数据 备注 可选 6.1.5 账户所属机构 账户所属机构的数据格式要求 见表 6。 表 6 属性 内容 中文名称 账 户所属机构 英文名称 Institution 数据 类型 数组 数据 长度 不定长 数据 说明 机构为加入到区块链网络的,独立运作的成员,可以为企业,组织,团体等,账户可以在组织关系上归属于某个机构。 数据 备注 可选 6.2 区块数据格式 区块数据主要包括以下几种数据元: a)区块高度; b) 区块标识; c)版本信息; d)前一区块摘要值; e)默克尔树根; f)区块时间戳; g)区块随机数; h)难度系数; i)事务列表。 6.2.1 区块高度 区块高度的数据格式要求 见表 7。 表 7 属性 内容 中文名称 区块高度 英文名称 Block Height 数据 类型 整数 数据 长度 定长 数据 说明 标识区块序号,描述区块在区块链中的位置。 CBD-Forum-002-2017 6 属性 内容 数据 备注 可选 6.2.2 区块标识 区块标识的数据格式要求 见表 8。 表 8 属性 内容 中文名称 区块标识 英文名称 Block ID 数据 类型 字符串 数据 长度 定长,推荐长度 32字节 数据 说明 通常指区块摘要,区块在区块链中的唯一标识。 数据 备注 必选 6.2.3 版本信息 版本信息 的数据格式要求 见表 9。 表 9 属性 内容 中文名称 版本信息 英文名称 Block Version 数据 类型 字符串 数据 长度 不定长 数据 说明 当前区块版本号,主要对应当前区块头的结构及各个字段的含义。 数据 备注 可选 6.2.4 前一区块摘要值 前一区块摘要值的数据格式要求 见表 10。 表 10 属性 内容 中文名称 前一区块摘要值 英文名称 Previous Block Hash 数据 类型 字符串 数据 长度 定长,推荐长度 32字节 数据 说明 通常指前一区块的区块摘要,区块在区块链中的唯一标识。 数据 备注 必选 6.2.5 默克尔树根 默克尔树根的数据格式要求 见表 11。 表 11 属性 内容 中文名称 默克尔树根 CBD-Forum-002-2017 7 属性 内容 英文名称 Merkle Tree Root 数据 类型 字符串 数据 长度 定长,推荐长度 32字节 数据 说明 由本区块里相关的信息通过树状结构算法汇总生成的摘要值。 数据 备注 事务树根必选, 状态 和 回执 树根可选 6.2.6 区块时间戳 区块时间戳的数据格式要求见表 12。 表 12 属性 内容 中文名称 区块时间戳 英文名称 Block Timestamp 数据 类型 整数 数据 长度 定长,推荐长度 8字节 数据 说明 表示本区块的生成时间刻度 ( 正整 数 ) ,从 1970年起的时间计数,精度为毫秒数,正序增加。 数据 备注 必选 6.2.7 区块随机数 区块随机数的数据格式要求见表 13。 表 13 属性 内容 中文名称 区块随机数 英文名称 Block Nonce 数据 类型 整数 数据 长度 定长 数据 说明 区块随机数,通常用于记账节点竞争记账权的 Hash计算的可变参数。 数据 备注 可选 6.2.8 难度系数 难度系数的数据格式要求见表 14。 表 14 属性 内容 中文名称 难度系数 英文名称 Difficulty 数据 类型 整数 数据 长度 定长,推荐长度 8字节 数据 说明 通常用于表示记账节点竞争记账权的 Hash计算难度的参数。 数据 备注 可选 6.2.9 事务列表