Architecture
System Architecture

Components
见各组件详细文档
Core Flow
用户发 Transaction 到 Transaction 上链发生了什么

交易
从 User
- 用户通过
SDK、GraphiQL等工具对节点提交一笔交易 Mempool验证交易信息是否合法,典型的有:交易签名、TimeoutGap、Cycles等,同时存入自身的交易内存池。- 交易池达到上限将丢失该交易,同时不会广播。
- 验证不通过将丢弃该交易,同时不会广播。
- 当交易验证成功后,调用
Network,Network把交易序列化后,向已连上的其他节点广播该交易。
从 Network
- 本节点通过
Network收到一笔交易,Network直接转交给Mempool验证。验证流程参考2- 不同点: 从
Network来的交易不会被再次广播
- 不同点: 从
出块
提案节点
Consensus向Mempool请求筛选一批交易,Mempool会根据一些系统参数如:CyclesLimit,来决定最后筛选出的交易数量Consensus将筛选后的交易打包成Block并且对它签名后组成Proposal,然后通过Network广播给其他节点。Muta使用了Compact Blocks,所以Block中并不存放交易的具体内容
提案块投票
- 通过
Network收到提案节点的Proposal,验证Proposal的签名、区块参数等基础信息。 - 查看本地是否存在对应交易。
- 不存在的交易将通过
Network从网络获取。 - 验证通过后将对
Proposal投Yes票,详细的共识流程可以查看Overlord设计文档,这里不再赘述。
Commit 区块
- 存储共识成功后的
Block到Storage, 同时进入下一轮共识。 - 异步的将交易提交给
Framework执行。 Framework根据交易内容找到对应的Service。- 执行成功后,数据存储到
Storage
Parallet Execution

Execution Block
