一.Fabric 1.0 账本分类
1.1 账本内容分类
- Block ledger (事件)
- File system based, only new Blocks appending
- Blocks are stored on all committers and optional subset of(可选子集) ordering service nodes
超过64M会新建文件。保存交易数据
- State ledger / World State
Stored on all committers(记账节点) - History ledger (1.0加入,可选项)
- Stored on all committers
- Index stored in KVS and hidden from developer by chaincode APIs(对state账本的key值作索引),LevelDB
1.2 文档和代码实现的分类
peer ledger:存储在背书节点和记账节点
orderer ledger:存储在order service node
Chaincode是无状态的。Chaincode存储在节点上,账本只会存储hash值
账本的隔离和隐私性用多通道(Multiple Channels)技术来保护
二.Chaincode和Ledger的交互
- Single key operations
- Key range queries
- Non-Key queries on data content(LevelDB不支持,CouchDB支持,将JSON存储在StateDB中)
Query System Chaincode(QSCC)
背书节点需提前设定,也作为记账节点
transaction事务处理流
• 应用向一个或多个Peer节点(背书节点)发送对事务的背书请求;
• 背书节点模拟执行ChainCode,但并不将结果提交到本地账本(不会修改底层账本),只是将结果(读写集)返回给应用;
• 应用收集所有背书节点的结果后,(去除不确定无效的交易,1.0未实现)将结果广播给Orderers;
• Orderers执行共识过程,并生成Block,通过消息通道批量的将Block发布给Peer节点(记账节点);
• 各个Peer节点验证交易,并提交到本地账本中
网友评论