jolestar
18-02-21 10:00 微博认证:科技博主 头条文章作者

Hyperledger 源码阅读

Hyperledger 的架构基本就是我前一次说的 EventSource/CQRS 架构( http://t.cn/RRs1MqK )。账本就是 EventSource,状态数据库使用 couchdb 或者 leveldb, 然后给客户端提供 kv 形式的更新和查询。

这样简化了业务实体到数据库记录的映射的复杂度,但缺点不好提供复杂的查询或者关系索引。所以它提供了一种 chaincode 的扩展方式,相当于它的『智能合约』,用于实现业务逻辑校验以及复杂的查询。chaincode 运行在独立的 docker 容器中,提供 rpc 接口,通过区块链调用,所以理论上可以用任何语言实现。如果把区块链看成数据库,chaincode(包括其他智能合约)相当于数据库的存储过程,所以妄图通过智能合约实现整个应用的同学可以再思考下。Hyperledger 因为定位是一个框架,所以大多数主要组件都是插件式的,比如共识,排序服务,校验服务等。

最后 Hyperledger 的这篇 paper 中对各种共识算法的分析比较挺详细,值得一看。附图中的 Finality 可以理解成延迟,Scalability 指节点规模。为了追求速度,肯定要牺牲节点规模,而牺牲了节点规模后,为了安全性,防女巫攻击,就需要引入人工许可机制,本质上 Hyperledger 的联盟链共识机制和 EOS 这种 DPoS 是一样的,关键的区别就是许可的方式,联盟链是成员许可,而 DPoS 是通过用户社区投票。

http://t.cn/RRs1Mqp

#hyperledger# #区块链#