Hyperledger Fabric 整理体系:
链码
链码接口
链码启动必须通过shim包中的start函数,而start函数被调用时需要传递一个类型为Chaincode的参数。这个参数Chaincode是一个接口类型,该接口有两个重要函数Init和Invoke,必须由所有链码实现。
文件位置:/hyperledger/fabric/core/chaincode/shim/interfaces.go
type Chaincode interface {
Init(stub ChaincodeStubInterface) pb.Response
Invoke(stub ChaincodeStubInterface) pb.Response
}
- Init:在链码实例化或者升级时被调用,完成初始化数据工作
- Invoke:更新或查询提案事务中分类账本数据状态时,Invoke方法被调用,因此响应调用或查询的业务实现逻辑都需要在此方法中编写实现。
必要结构
shim包为链码实现了链码与账本交互的中间层,提供API用来访问/操作数据状态、事务上下文和调用其他链代码;peer包提供了链码执行后的响应信息。
任务实现
shim包提供给链码的相应接口有如下几种类型:
- 参数解析API:调用链码时需要给被调用的目标函数/方式传递参数,与参数解析相关API提供了获取这些参数的方法
- 账本状态数据操作API:提供了对账本数据状态进行操作的方法,包括对状态数据的查询及事务处理等
- 交易信息获取API:获取提交的交易信息的相关API
- 事件处理API:与事件处理相关的API
- 对PrivateData操作的API:对私有数据操作
MSP
MSP定义及实现
MSP
各个网络参与者之间的通信完全依赖于PKI标准来实现,并确保在区块链上发布的消息得到相应的认证。
PKI(Public Key Infrastructure)公钥基础结构,由证书颁发机构组成。四大关键要素:
- 数字证书:包含与证书持有者相关的一组属性的文档。最常见的证书类型是符合X.509标准的证书,允许在其结构中编码一方的识别细节。
- 公钥和私钥:身份验证和消息完整性是安全通信中的重要概念。身份验证要求确保交易消息的各方创建特定消息的身份。对于具有“完整性”的消息意味着在其传输期间不能被修改。
- 证书颁发机构:证书颁发机构向不同的参与者分发证书,这些证书由CA进行数字签名。CA是为组织的参与者提供可验证的数字身份的基础。
- 证书撤销列表:某种原因而被撤销的证书的引用列表。
MSP类型:
- 网络MSP:对整个fabric网络中成员进行管理;定义参与组织的MSP,以及组织成员中哪些成员被授权执行管理任务。
- 通道MSP:对一个通道中的组织成员进行管理。通道在特定的一组组织之间提供私有通道。在该通道的MSP环境中通道策略定义了谁有权限参与通道上的某些行为。
- Peer MSP:本地MSP在每个Peer的文件系统上定义,并且每个Peer都有一个单独的MSP实例。执行与通道MSP相同的功能,其限制是它仅适用于定义它的Peer。
- Orderer MSP:与Peer MSP相同,Orderer本地MSP也在其节点的文件系统上定义,仅适用于该节点。
- User MSP:每个组织都可以拥有多个不同的用户,都在其Organizations节点的文件系统上定义,仅使用该组织。
MSP组成结构
MSP组成结构- 根CA(Root CAs):包含根CA的自签名X.509证书列表。用于自签名及为中间CA证书签名。
- 中间CA(ICA):包含由根CA颁发的证书列表。
- 组织单位(OUs):这些单位列在$FABRIC_CFG_PATH/msp/onfig.yaml文件中,包含一个组织单位列表,其成员被视为该MSP所代表的组织的一部分。
- 管理员(B):此文件夹包含一个标识列表,用于定义具有此组织管理员的角色。
- 撤销证书(ReCA):保存已被撤销参与者身份的信息。
- 签名证书(SCA):背书节点在交易提案响应中的签名证书。此文件夹对于本地MSP是必需的,并且该节点必须只有一个X.509证书。
- 私钥(KeyStore):此文件夹是为Peer或Orderer节点的本地MSP定义的,并包含节点的签名密钥。此密钥以加密方式匹配SCA文件夹中包含的签名证书,并用于签署数据。此文件夹对于本地MSP是必需的,并且必须只包含一个私钥。
- TLS根CA(TLS RCA):包含组织信任的用于TLS通信的根CA的自签名X.509证书列表。此文件夹中必须至少有一个TLS根X.509证书。
- TLS中间CA(TLS ICA):保存由根CA颁发的中间证书列表。
网友评论