长安链ChainMaker v2.0.0版本已经正式发布!
本次大版本升级中,我们对长安链的区块、数据结构以及部分模块代码都进行了重构,并将部分模块拆分为独立项目,另外新增了一个新功能。详细讲解v2.0.0版本以前我们对v1.x版本的工作做一个回顾。
v1.x版本的工作回顾
长安链ChainMaker自v1.0.0版本发布以来经过6个版本的迭代,截止v1.2.4版本中已经支持:
- 四种合约引擎:支持GASM、WASMER、WXVM、EVM四种合约引擎;
- 四种合约语言:支持Golang、Rust、C++、Solidity四种合约语言;
- 五种共识算法:支持Solo、RAFT、TBFT、HotStuff、dPoS;
- 三种存储引擎:支持LevelDB、RocksDB、MySQL。
在v1.2.x版本中长安链ChainMaker支持go、java、nodejs的链sdk,支持spv轻节点和跨链;支持合约内执行sql语句,合约支持基于paillier的半同态运算和bulletproofs的范围证明;支持区块链浏览器、CMC命令行工具、CA服务管理、chainmaker-cryptogen证书生成工具等。
至此长安链ChainMaker v1.2.x版本作为区块链底层技术平台,已经在政务、金融、能源及食品溯源等行业得到应用,成为数字经济、数字社会和数字政府建设的基础底座。长安链ChainMaker v1.2.x版本也将作为我们的长期稳定版本进行定期升级维护。
v2.x版本的开启
在最新发布的长安链 v2.x版本中,我们将着重在长安链的易用性、稳定性、安全性三方面做更多工作。除丰富产品工具集以外,长安链特有的可装配性将进一步体现出来。
此次更新的 v2.0.0版本中侧重对数据模型、代码结构的调整,我们进行了如下升级:
1. 对区块、交易等数据结构进行了重构(章节见:v2.0.0技术文档>技术设计文档>3.数据结构)
本次升级对数据模型主要做了以下三方面的调整:
- 数据类型更准确,更易扩展。比如区块高度字段,在实际中从创世区块(Genesis)高度为0开始递增,不可能为负数,所以将数据类型从int64调整为uint64。再比如合约参数KeyValuePair,之前Value为string类型,传入二进制数据时需要进行hex或base64编码及解码操作,使得交易变大且合约逻辑变复杂,所以本次升级将其改为bytes类型。
- 交易数据模型重构。在v1.x版本中,交易请求内容分为多种并使用TxType区分,每种交易请求使用不同的数据结构,并序列化后放入交易的Payload字段。在v2.x中,将合约安装、用户合约调用、系统合约调用、链配置更改、查询链数据、订阅消息等等各种行为都统一为合约调用,只是被调用的合约名、方法名和参数不同,因此可以用统一的Payload并简化TxType。一方面统一了用户行为,另一方面减少了序列化、反序列化的次数。
- 为多个数据模型增加了新字段,以适应新的需求的扩展。以交易的Payload对象为例,在原有基础上增加了Limit和Sequence字段,BlockHeader增加了BlockType,SerializedMember增加了MemberType字段等,这些字段都为v2.x中可装配性提供了扩展能力。
2. 身份权限、系统合约等模块代码重构
在不影响原有功能的前提下,对身份权限、系统合约等模块的代码进行重构,提升代码质量。其中,身份权限模块一方面调整整体接口框架,为之后增加公钥身份、DID身份提供扩展能力;另一方面将原有整体流程中分步鉴权的代码进行收拢,进一步理清鉴权逻辑,并支持根据系统合约的合约名加方法名进行更细粒度权限控制。系统合约模块,一方面根据合约内容对系统合约进行归类,使整体结构更加清晰;另一方面,将合约管理逻辑从原来的合约模块移入系统合约中,与系统合约定位相符。
3. 拆分部分模块为独立项目,并启用go mod代替原有的git submodule
本次升级中将common、pb、pb-go、protocol、sdk-go作为chainmaker-go的依赖包,以go mod的形式引入,代替原有的git submodule模式。Go mod模式是go语言官方推荐的包管理模式,长安链各组件以go mod包的形式被引入,可以更好的做到依赖包的版本管理,从而方便长安链在可装配性和自定义模块的扩展能力。
4. 增加外部证书兼容(章节见:v2.0.0技术文档>技术设计文档>9.身份权限管理>9.3权限管理>9.3.4外部证书兼容)
长安链v1.x版本中,若采用数字证书作为用户标识,需要在证书O和OU字段中,附加组织和角色等信息,无法复用参与方原有的数字证书。因此在v2.0.0中,增加了对外部证书的兼容支持,用户可将已有的第三方CA颁发的数字证书作为区块链节点或用户的签名证书,从而支持更灵活易用的证书体系。
以上详情可查看v2.0.0技术文档:https://docs.chainmaker.org.cn/index.html
同时,docker go 智能合约引擎功能已在v2.0.0_dockervm_alpha分支已经开放试用,欢迎大家提出宝贵意见。