搞了两三个月联盟链,基本上算是告一段落,大概梳理下所做的东西,希望能对要做联盟链的人有所帮助。
在写这篇文章前,简单介绍下联盟链的功能。
- 国密和国际算法切换
- 参数toml配置
- 有币无币
- 支持gmssl
- p2p的证书准入
- 委员会成员更新
- solc编译器
- tendermint共识
- 权限准入
- 交易校验
- rpc api
- 状态存储
- 系统合约
加密算法
- 国密和S256,P256
支持国密sm2,sm3,sm4,国际的支持p256,比特币和以太坊都使用的s256.刚开始做的时候计算支持p256和国密,因为go sdk里面证书使用了p256。后在做的过程中发现国外证书很多还需要支持RSA,遂引入了gmssl,委员会中的PK公钥和证书做了分离。- 统一的接口,外部调用同一签名验签方法
- 国密里面有个问题,无法
recover公钥
,校验签名比较慢。
Toml文件配置
toml文件的优点在于不需要在启动的时候指