fabric读书笔记

chaincode:一种类似于智能合约的代码,通过执行这个代码与账本交互。chaincode存储在节点上

transaction:一次chaincode的运行过程

contract:满足某个条件下,将要运行的transaction

block ledger:区块账本

      存储于文件系统中。 存储于peer中,部分存储于order中

state ledger:状态账本

       存储于记账节点中。用户或者账户的状态,可以通过block

history ledger:历史交易信息。存储与levelDB可替换

        主要是block ledger的索引

客户端发送请求给背书节点,背书模拟执行交易,整理出要读到哪些key和要写入哪些key。背书节点将处理结果发回给客户端,再通过order排序,然后发送给peer节点写入账本。

crash faults:因为宕机发生的错误。

non crash:非宕机造成的错误,恶意的节点,数据错误

CFT:可以容忍宕机,但不能容忍恶意节点     2F+1  性能好

BFT: 可以容忍恶意节点,3f+1   性能差

XFT:   可以容忍恶意节点,2f+1   好于BFT

分布的节点接受消息的顺序不同,可能造成结果不一致。  例如有100块钱,一个请求要求扣掉60,另一个要求扣掉80. 接收的顺序不同,会造成执行结果的差异。而造成无法进行共识。

多个节点选一个领袖,领袖来进行排序,保证执行的一致性。

事务或者执行程序的结果必须是确定的,相同的输入不能有不同的输出,才能保证一致性。(例如处理过程中涉及到了随机数)

fabirc1.0包含的节点

peer

endorsement peer 背书节点(做试运算节点,加快处理速度)

order 节点排序

cran提供(QQ:34429255):

chaincode里面可以查到某个值改变记录的tx_id,一个chaincode的多次写库tx_id是一样的..sdk里面可以根据tx_id查询相关的记录的.

fabric区块结构

原文地址:https://www.cnblogs.com/maobuji/p/7121500.html