HYPERLEDGER FABRIC V1.1 笔记-概念原理

概念:

fabric的智能合约也叫链码,链码分为系统链码和用户链码,系统链码实现系统层功能,用户链码实现用户层功能,链码最后会被编译为一个独立的程序,在独立的Docker容器中运行。与区块链2.0以太坊技术相比,hyperledger Fabric的3.0技术中实现链码和账本分离,也就是逻辑与数据分离,在更新链码时不再需要将账本数据迁移到新链码中。

 

1.transaction:一次chaincode函数的运行。

①.目前有五类,其中一个是Undefined,其余均与chaincode的执行有关。

②.transaction存储chaincode执行的相关信息,比如chaincodeID/函数名称/参数等,并不包含操作的数据。

2.world state:fabric区块链系统中所有变量的值的集合。

①.transaction实际操作的是数据,比如,交易商品的信息。每个chaincode都有自己的数据。

②.fabric使用Rocksdb存储数据,一个key-value数据库,key表示变量,value表示值。

③.fabric将每一对key-value叫做一个state,而所有的chaincode的state的合集就是world state。

 

原理:

在Fabric中可以用Go,JAVA,NodeJS语言编写链码,链码与peer节点交互是通过gprc来实现的,它们的交互流程如下:

1.cli端给peer节点发输入提案(propsal)请求,peer节点向对应链码发送链码消息对象,该消息对象带有提按和调用者信息。

2.链码调用ChaincodeBase的invoke方法,向peer节点发送获取数据(getState)和写入数据(putState)消息,并获取peer节点账本状态信息和发送预提交状态。

3.链码发送最终输出结果给peer节点,peer节点对输入和输出背书签名,完成第一阶段签名提交。

4.cli收集所有peer节点第一阶段提交信息,组装成一个事务(transaction)并对其进行签名,后将事务发送到orderer节点排队,最后orderer节点产生区块,同时将该区块发送到各peer节点,peer节点再把输入和输出写到账本,完成第二阶段的提交过程。

Fabric peer的运行模式:

1.一般模式:

①Chiancode运行在docker容器中

②开发调试过程非常复杂:部署->调试->修改->创建docker镜像->部署->…

2.开发模式:

①Chaincode运行在本地

②开发调试较容易:部署->调试->修改->部署->…

开发模式下Chaincode注册过程:


开发模式下Chaincode Deploy/Invoke/Query过程:


猜你喜欢

转载自blog.csdn.net/huhaoxuan2010/article/details/80103374