区块链教程Fabric1.0源代码分析MSP成员关系服务提供者一

简介:

Fabric 1.0源代码笔记 之 MSP(成员关系服务提供者)

1、MSP概述

MSP,全称Membership Service Provider,即成员关系服务提供者,作用为管理Fabric中的众多参与者。

成员服务提供者(MSP)是一个提供抽象化成员操作框架的组件。
MSP将颁发与校验证书,以及用户认证背后的所有密码学机制与协议都抽象了出来。一个MSP可以自己定义身份,以及身份的管理(身份验证)与认证(生成与验证签名)规则。
一个Hyperledger Fabric区块链网络可以被一个或多个MSP管理。

MSP的核心代码在msp目录下,其他相关代码分布在common/config/msp、protos/msp下。目录结构如下:

  • msp目录
        * msp.go,定义接口MSP、MSPManager、Identity、SigningIdentity、IdentityDeserializer。

    * mspimpl.go,实现MSP接口,即bccspmsp。
    * mspmgrimpl.go,实现MSPManager接口,即mspManagerImpl。
    * identities.go,实现Identity、SigningIdentity接口,即identity和signingidentity。
    * configbuilder.go,提供读取证书文件并将其组装成MSP等接口所需的数据结构,以及转换配置结构体(FactoryOpts->MSPConfig)等工具函数。
    * cert.go,证书相关结构体及方法。
    * mgmt目录
        * mgmt.go,msp相关管理方法实现。
        * principal.go,MSPPrincipalGetter接口及其实现,即localMSPPrincipalGetter。
        * deserializer.go,DeserializersManager接口及其实现,即mspDeserializersManager。

  • common/config/msp目录
        * config.go,定义了MSPConfigHandler及其方法,用于配置MSP和configtx工具。
  • protos/msp目录,msp相关Protocol Buffer原型文件。

2、核心接口定义

IdentityDeserializer为身份反序列化接口,同时被MSP和MSPManger的接口嵌入。定义如下:

type IdentityDeserializer interface {
    DeserializeIdentity(serializedIdentity []byte) (Identity, error)
}
//代码在msp/msp.go

MSP接口定义:

type MSP interface {
    IdentityDeserializer //需要实现IdentityDeserializer接口
    Setup(config *msp.MSPConfig) error //根据MSPConfig设置MSP实例
    GetType() ProviderType //获取MSP类型,即FABRIC
    GetIdentifier() (string, error) //获取MSP名字
    GetDefaultSigningIdentity() (SigningIdentity, error) //获取默认的签名身份
    GetTLSRootCerts() [][]byte //获取TLS根CA证书
    Validate(id Identity) error //校验身份是否有效
    SatisfiesPrincipal(id Identity, principal *msp.MSPPrincipal) error //验证给定的身份与principal中所描述的类型是否相匹配
}
//代码在msp/msp.go

MSPManager接口定义:

type MSPManager interface {
    IdentityDeserializer //需要实现IdentityDeserializer接口
    Setup(msps []MSP) error //用给定的msps填充实例中的mspsMap
    GetMSPs() (map[string]MSP, error) //获取MSP列表,即mspsMap
}
//代码在msp/msp.go

Identity接口定义(身份):

type Identity interface {
    GetIdentifier() *IdentityIdentifier //获取身份ID
    GetMSPIdentifier() string //获取MSP ID,即id.Mspid
    Validate() error //校验身份是否有效,即调取msp.Validate(id)
    GetOrganizationalUnits() []*OUIdentifier //获取组织单元
    Verify(msg []byte, sig []byte) error //用这个身份校验消息签名
    Serialize() ([]byte, error) //身份序列化
    SatisfiesPrincipal(principal *msp.MSPPrincipal) error //调用msp的SatisfiesPrincipal检查身份与principal中所描述的类型是否匹配
}
//代码在msp/msp.go

SigningIdentity接口定义(签名身份):

type SigningIdentity interface {
    Identity //需要实现Identity接口
    Sign(msg []byte) ([]byte, error) //签名msg
}
//代码在msp/msp.go

未完待续感谢关注兄弟连区块链教程分享!

相关文章
|
8月前
|
存储 供应链 监控
区块链技术在供应链管理中的应用与前景分析
随着信息化时代的到来,供应链管理面临着越来越多的挑战和机遇。本文主要探讨了区块链技术在供应链管理中的应用,以及未来的发展前景。通过对区块链技术的特点和优势进行分析,结合实际案例和趋势展望,展示了区块链技术在提升供应链透明度、效率和安全性方面的潜力,以及未来发展的可能方向。
|
8月前
|
安全 区块链
区块链积分商城系统开发详细指南//需求功能/指南教程/源码流程
Developing a blockchain points mall system involves multiple aspects such as blockchain technology, smart contracts, front-end development, and business logic design. The following is the general process for developing a blockchain points mall system
|
测试技术 区块链 Android开发
区块链项目开发的合作服务流程指南
区块链项目开发的合作服务流程指南
|
5月前
|
开发框架 IDE .NET
【Azure 微服务】Service Fabric中微服务在升级时,遇见Warning - System.Collections.Generic.KeyNotFoundException 服务无法正常运行
【Azure 微服务】Service Fabric中微服务在升级时,遇见Warning - System.Collections.Generic.KeyNotFoundException 服务无法正常运行
【Azure 微服务】Service Fabric中微服务在升级时,遇见Warning - System.Collections.Generic.KeyNotFoundException 服务无法正常运行
|
8月前
|
存储 算法 API
面向企业的区块链教程(一)(2)
面向企业的区块链教程(一)
118 6
|
5月前
|
安全 区块链
Massa Layer 1区块链 POS 安全性分析
Massa Labs 回应 Certik 的挑战,通过严格的数学分析证明了其权益证明系统的安全性,抵抗了潜在攻击者试图操纵随机抽签的企图。
67 0
Massa Layer 1区块链 POS 安全性分析
|
5月前
|
网络协议 微服务
【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
|
7月前
|
供应链 安全 API
区块链技术在金融服务行业的创新应用
区块链技术在金融服务行业的创新应用
179 1
|
8月前
|
存储 供应链 安全
基于区块链技术的智能合约安全性分析
【5月更文挑战第31天】本文深入探讨了区块链技术中智能合约的安全性问题,通过分析现有智能合约的安全漏洞和攻击手段,提出了一系列增强智能合约安全性的策略。文章首先介绍了区块链和智能合约的基本概念,随后详细讨论了智能合约面临的安全挑战,包括代码漏洞、重入攻击等问题,并对比分析了不同平台下智能合约的安全性差异。最后,文章提出了一系列提高智能合约安全性的建议,旨在为区块链应用的健康发展提供参考。
|
7月前
|
存储 安全 区块链
元宇宙与区块链技术的关系可以从多个角度进行阐述。以下是对这两者之间关系的详细分析
**元宇宙:虚拟世界融合现实元素,强调交互与沉浸;区块链:去中心化、安全的分布式账本。两者结合,区块链确保元宇宙中虚拟资产安全、支付高效、身份验证私密、治理透明,支撑其经济体系与用户信任,驱动未来发展。**