Hyperledger Fabric与其他区块链方案最大的一个区别就是她是有权限的,权限管理贯穿整个系统中,本文主要讨论执行chaincode过程中涉及的权限管理
以下讨论针对Fabric V1.0.2
Client提交一笔交易到Endorser
该过程中,Endorser会判断该Client是否有权限来执行Transaction,若没有则拒绝出错。这里判断的依据是client所使用的用户是否有application group的写权限,该权限可以在创建Channel时指定或通过channel update来进行更改
Client将收集到的endorsement提交给Orderer
Client收到Endorser的回应后,讲收集到的endorsement打包提交给Orderer,这时Orderer会判断该Client是否有Channel的写权限,若有则将其打包进入Block,否则出错
Peer校验Block
Transaction打包进Block后,leader peer主动拉取新产生的Block,并通过Gossip传送给本组织内的节点进行commit操作,在commit时peer会按照endorsement policy对transaction进行验证,这时因为transaction已经在Block中,peer会将验证结果写入block的metadata,而并不会修改Block中的内容。endorsement policy是在deploy/upgrade一个chaincode时制定的,默认channel的任何一个成员都可以。注意endorsement policy的检验只有当transaction包含write set时,就是修改/增加时才会进行。