区块链数据格式规范编者按:在由工业和信息化部信息化和软件服务业司指导、工业和信息化部中国电子技术标准化研究院主办的“中国区块链技术和产业发展论坛第二届开发大会”上,《区块链数据格式规范》标准正式发布,该标准的发布有助于为区块链系统的数据结构设计提供参考,为区块链行业应用提供统一的数据标准,对我国区块链标准建设具有重要意义。全文如下:(来源:中国电子技术标准化研究院网站,2017-12-27)I目次前言...............................................................................III1范围...............................................................................12术语和缩略语.......................................................................12.1其他标准中定义的术语............................................................12.2缩略语..........................................................................23数据对象结构.......................................................................24数据分类...........................................................................35数据元属性.........................................................................36数据格式规范.......................................................................36.1账户数据格式....................................................................36.2区块数据格式....................................................................56.3事务数据格式....................................................................86.4实体数据格式....................................................................96.5合约数据格式...................................................................116.6配置数据格式...................................................................12附录A(资料性附录)数据项标识符..................................................15附录B(资料性附录)共识机制相关数据格式..........................................16B.1类拜占庭容错..................................................................16B.2基于权益的证明................................................................19B.3基于工作量的证明..............................................................20参考文献............................................................................21III前言本标准按照GB/T1.1-2009给出的规则起草。本标准由中国区块链技术和产业发展论坛提出。本标准负责起草单位:中国电子技术标准化研究院、中国万向控股有限公司、浙江蚂蚁小微金融服务集团有限公司、深圳前海微众银行股份有限公司、乐视联服信息技术(北京)有限公司、万达网络科技集团有限公司、中国平安保险(集团)股份有限公司、上海金丘实业股份有限公司、上海钜真金融信息服务有限公司、鑫苑(中国)置业有限公司、众安信息技术服务有限公司、上海分布信息科技有限公司、用友网络科技股份有限公司、海航科技集团有限公司、三一集团有限公司。本标准主要起草人:李鸣,唐晓丹,谭智勇,张开翔,季宙栋,周平,吴小川,赵博然,华正皓,陈家乐,宋文鹏,周子焱,李斌,李俊,左鹏,李奕,李彦博,金龙,杜宇,姚辉亚,韩梅,杨宝刚,李佳秾,罗荣阁,胡丹青,郝玉琨,董长江,高西林,杜君君,朱天阳,倪旻,易锋平,孙琳,周政军,李升林。使用帮助信息:任何单位和个人在使用本标准的过程中,若存在疑问,或有对本标准的改进建议和意见,请与中国电子技术标准化研究院(中国区块链技术和产业发展论坛秘书处)联系。电话:010-64102801/2804;电子邮件:cbdforum@cesi.cn通信地址:北京市东城区安定门东大街1号(100007)为了推动本标准的持续改进,使其内容更加贴近用户组织的实际需求,欢迎社会各方力量参加本标准的持续改进,本标准的更多信息欢迎关注中国区块链技术和产业发展论坛官方网站和公众号。范围本标准规定了区块链的数据格式规范。具体规定了以下内容:a)区块链技术相关的数据结构;b)区块链技术相关的数据分类及其相互关系;c)区块链技术相关的数据元的数据格式要求。本标准适用于:a)为计划使用区块链的组织建设区块链系统提供数据格式参考;b)指导区块链服务提供组织建立区块链系统数据结构;c)为区块链系统建设过程的中间件服务组织提供数据格式参考。2术语和缩略语2.1其他标准中定义的术语GB/T19488.1-2004、GB/T18391.2-2009、GB/T18391.1-2002和CBD-Forum-001-2017界定的以下术语和定义适用于本文件。2.1.1属性attribute一个对象或实体的特征。[GB/T18391.2-2009]2.1.2区块链blockchain一种在对等网络环境下,通过透明和可信规则,构建不可伪造、不可篡改和可追溯的块链式数据结构,实现和管理事务处理的模式。注:事务处理包括但不限于可信数据的产生、存取和使用等。[CBD-Forum-001-2017]2.1.3数据元dataelement通过定义、标识、表示和允许值等一系列属性描述的一个数据单元。[GB/T19488.1-2004]2.1.4数据类型datatype由数据元操作决定的用于采集字母、数字和(或)符号的格式,以描述数据元的值。2[GB/T18391.1-2002]2.1.5标识符identifier数据元的唯一标识。[GB/T18391.1-2002]2.1.6智能合约smartcontract以数字形式定义的能够自动执行条款的合约。注:在区块链技术领域,智能合约是指基于预定事件触发、不可篡改、自动执行的计算机程序。[CBD-Forum-001-2017]2.2缩略语下列缩略语适用于本标准。PKI公钥基础设施(PublicKeyInfrastructure)ID标识(Identity)3数据对象结构区块链技术相关的数据对象结构包括上述区块、事务、实体、合约、账户、配置六个主要数据对象。其中区块链核心的数据对象包括区块、事务、实体和合约。每一区块数据对象中包含一个或多个事务数据对象,每个事务对象包括属性类的实体数据对象,还包括事务的业务逻辑,即合约数据对象。在区块链核心数据对象之外,包括配置数据对象,提供区块链系统正常运行过程中所需的配置信息。配置数据对象和区块链核心数据对象共同构建了区块链运行所需的基础数据基础。而账户数据对象表示区块链业务的实际发起者和相关方对应的数据结构。图1给出了数据视图相关的实体间关系。注:区块链技术数据结构中所包含的关键要素是区块链技术中涉及到的必要数据,在不同区块链技术相关的平台中可能包含其他非必要数据未在本标准的范围中。图1核心区块配置事务实体合约账户34数据分类本标准以数据对象的类别为依据,将区块链数据分为以下六类:a)账户数据:指描述区块链事务的实际发起者和相关方的数据。区块中记录的事务信息均被关联到相关的账户之上,每个区块链服务客户拥有一个或多个账户来使用区块链服务。b)区块数据:指区块链网络的底层链式数据,用来把一段给定时间内发生的事务处理结果持久化为成块链式数据结构。通常情况下,区块由区块头和区块体组成。区块头包含区块相关的控制信息,区块体包含具体的事务数据。c)事务数据:指描述区块链系统上承载的具体业务动作的数据。其中,事务既包括交易类型事务,也包括非交易类型事务。d)实体数据:指描述事务的静态属性的数据。通常包括发起方地址、接收方地址、交易发生额、交易费用、存储数据和实体数据备注。e)合约数据:指描述事务的动态处理逻辑的数据。合约又称智能合约,是一套以计算机代码形式定义的承诺,以及合约参与方可执行承诺的协议。这里的合约数据既包括处理逻辑的可执行代码,也包括处理逻辑的执行结果。f)配置数据:指区块链系统正常运行过程中所需的配置信息。通常包括共识协议版本号、软件版本号和网络通信底层对等节点配置信息等。5数据元属性区块链数据元通过数据标识符、中文名称、英文名称、数据类型、数据长度、数据说明、数据备注7个属性来描述。具体属性说明见表1。表1属性名称属性说明数据标识符各数据元的唯一标识,编号是以阶层式分类,分别将数据分类和数据元依顺序进行流水号编码记录。前段码为数据分类号码,后段码以数据元的流水号,详见附录A。中文名称数据元的中文名称,在一定语境下名称应保持唯一。英文名称数据元的英文名称,在一定语境下名称应保持唯一。数据类型描述数据元的特征和基本要素,本标准中使用的数据类型主要包括:字符串类型、整数类型、数组类型。数据长度描述该数据元的长度,在本标准中用定长或不定长表示,并给出了推荐字节长度。数据说明详细描述该数据元的内容和表达的含义。数据备注描述该数据元是否必要,在本标准中分为必选和可选。第6章给出了对各种区块链数据元属性的说明和要求。对各数据元的数据标识符的参考性规范见附录A。6数据格式规范6.1账户数据格式账户数据主要包括以下几种数据元:a)账户公钥;b)账户私钥;4c)账户资产;d)数字证书;e)账户所属机构。6.1.1账户公钥账户公钥的数据格式要求见表2。表2属性内容中文名称账户公钥英文名称AccountPublicKey数据类型字符串数据长度定长,推荐64字节数据说明根据PKI体系为用户生成的密钥对里,可公开的部分。数据备注必选6.1.2账户私钥账户私钥的数据格式要求见表3。表3属性内容中文名称账户私钥英文名称AccountPrivateKey数据类型字符串数据长度定长,推荐32字节数据说明根据PKI体系为用户生成的密钥对里,不公开的部分。数据备注必选6.1.3账户资产账户资产的数据格式要求见表4。表4属性内容中文名称账户资产英文名称AccountAsset数据类型数组数据长度不定长数据说明账户拥有的资产说明,包括资产名称,资产列表,余额等。数据备注可选6.1.4数字证书数字证书的数据格式要求见表5。5表5属性内容中文名称数字证书英文名称DigitalCerti