微服务 联盟链在交易吞吐量低、交易实时性上很难满足行业应用的要求。另外,区块链 技术发展迅速,单体应用也很难满足演进要求。
为了解决这两个问题, CITA 将单个节点按照功解构为交易共识、合约引擎、链 式存储、网络同步、服务网关等多个松耦合的微服务,一方面利用云计算基础设 施来按需提升性能,另一方面,各个组件可独立替换升级。
另外,采用消息总线进行通信,各个微服务可以利用异步消息简化处理,又可以 确保消息的安全、可靠送达。当与外部系统集成时,外部系统可以直接访问消息 总线,而无需 CITA 做适配。
Flow Chart
node0 (tx into chain)node1
--------------------------------------------------------------------------------------------------------------------// reply when reveive the tx from the remote
---------------------------------------------------------------------------------
|^
|----------------------------------------------^
||3.1.reply^^
||||
+-----+0.send+---------+1.forward+------+2.2.send+-----------+3.2.send+---------+broadcast:tx+---------+
| APP |------>| jsonRPC |--------->| auth |------->| consensus |------------->| network |<------------>| network | ...
+-----++---------++------++-----------++---------++---------+
^| ^^| ^ ^^^
|4.reply| ^|2.1.reply| ^ | // tx from remote|4.broadcast tx|
------------------ ^--------------------- ^ ---------------------|--------------------------------
^^|
^|6.2.sync | 5.package+-------+6.1.process
||-------------->| chain |---->
||+-------+|
||6.3.sync tx hash|||
|-------------------------------------------||
||+---------+
-----------------------------------------------------------------------| rocksDB |
6.4.reply+---------+
Timing Diagram
+-----++---------++------++-----------++-------++---------++-----------+
| APP || jsonRPC || auth || consensus || chain || network || other_node|
+-----++---------++------++-----------++-------++---------++-----------+
| -----new_tx-------> ||||||
|| --------new_tx-----> |-------------+||||
|||tx in pool and check||||
|||<------------+||||
|| <-------result------ |||||
| <----result-------- || ----------broadcast tx------------------------------------------------> ||
|||||| ----flooding new tx----> |-----+
|||||||reflect
|||||| <---flooding new tx----- |<----+
||| <---------receive new_tx----------------------------------------------- ||
||| ----------package_tx-----> |---------+|||
|||| consensus txs|||
||||---------+|||
|||| ----new_block---> |-----+||
||||| add block||
|||||<----+||
||| <----------tx hash---------------------------- |||
|||||||
|||| <---new status--- | ---broadcast status--> ||
|||||| --flooding new status--> |-----+
| ----request-------> |||||||
|| -----forward request------------------------------------------------> |||reflect
|| <----response-------------------------------------------------------- ||||
|<-forward response-- ||||| <--flooding new status-- |<----+
||||| <-----new status------ ||
|||||-------+||
|||||if need sync||
|||||<------+||
||||| ---request block-----> ||
|||||| --request block--------> |-----+
|||||||reflect
|||||| <-response block-------- |<----+
||||| <--response block----- ||
||||| -----+||
|||||add block||
||||| <----+||
-------
ProtocolBuffer ProtocolBuffer_ 是一种用于序列化结构数据的语言无关、平台无关的扩展机制, 经常被用于跨进程、跨机器的应用程序间的数据通信,特别是微服务间的数据通 信。它的编译器接受接口描述语言(IDL)作为输入,通过不同语言的插件,可以编译 成各自语言的本地代码。
【区块链|CITA架构设计】CITA采用了ProtocolBuffer作为数据序列化的方法。一方面,序列化/反序列化 性能高,另一方面,不同微服务间可以通过接口描述语言很方便的集成到CITA的 微服务架构中。
Block Block结构
- version: u32
- header: BlockHeader结构
- body: BlockBody结构
- prevhash: 上一个块的Keccak 256-bit哈希值
- timestamp: Unix时间戳
- proof: Proof结构,出块人签名
- commit: Commit 结构,Chain处理结果
- height: uint64 块号
- transactions: 交易列表
- stateRoot: Keccak 256-bit,状态root
- transactionsRoot: Keccak 256-bit,交易列表root
- receiptsRoot: Keccak 256-bit,交易回执root
- to: 160-bit address;如果为空表示创建合约
- content: bytes,交易data
- valid_until_block: 交易超时设置
- signature: bytes,签名
- crypto: 签名类型
推荐阅读
- 推动NFT走出监管困境,BSN推出支持NFT基础设施网络
- 腾讯|SaaS的收入模型有哪些(终于有人讲明白了)
- 就业方向上什么才是最重要的(--- 来自程序猿的迷茫。(C++?Java?or算法?))
- 区块链中加密货币的含义
- 波场万倍潜力币HYL23号21:09分 正式上线JustSwap
- 《瀚兰房地产开发区块链应用及案例分享》BSN培训精华回顾
- 对联盟链而言,跨链协议为什么重要()
- 区块链能够应用在哪些行业
- BSN区块链服务网络中密钥托管模式和公钥上传模式有啥区别()
- 币圈人物传|币圈大佬今何在 唯有一诺正当时