如何在Hyperledger Fabric 1.0中实现分散的成员资格

如何在Hyperledger Fabric 1.0中实现分散的成员资格,hyperledger,hyperledger-fabric,Hyperledger,Hyperledger Fabric,目前在Hyperledger Fabric 1.0中有一个中央会员服务。我希望有一种方法使其分散,以便atlas 50%的成员必须同意新成员加入网络。我怎样才能做到这一点 其基本思想是将成员逻辑放入链码中,让成员服务在注册时从链码中获取数据。但如何实施这一点,我的意思是,我们如何知道会员服务实际上是从区块链读取而不是作弊。对于不依赖于集中CA的分散会员,请查看区块堆栈。对于不依赖于集中CA的分散会员,看看Blockstack。这实际上是Hyperledger Fabric的本机支持,您描述的行为

目前在Hyperledger Fabric 1.0中有一个中央会员服务。我希望有一种方法使其分散,以便atlas 50%的成员必须同意新成员加入网络。我怎样才能做到这一点


其基本思想是将成员逻辑放入链码中,让成员服务在注册时从链码中获取数据。但如何实施这一点,我的意思是,我们如何知道会员服务实际上是从区块链读取而不是作弊。

对于不依赖于集中CA的分散会员,请查看区块堆栈。

对于不依赖于集中CA的分散会员,看看Blockstack。

这实际上是Hyperledger Fabric的本机支持,您描述的行为实际上是频道成员身份更改的默认行为

每个通道都以一个创世纪区块开始生命。此genesis区块的内容定义了渠道成员,以及授权这些组织的用户在区块链上执行不同功能的策略。例如,一些用户可以提交交易,但不能读取整个区块链,而其他用户可以同时提交交易和读取整个区块链

要更改通道成员身份,请提交通道重新配置事务。此事务指定新成员身份,并且必须包含足够的签名以授权此修改。默认情况下,这是大多数组织管理员的签名

策略框架实际上非常强大,只需一点知识,就可以定义更强大的规则。例如,您可以要求OrgA和3/10其他组织签署变更成员资格。或者,您可以要求除一个组织外的所有组织都同意进行任何成员变更,或者进行无限数量的其他排列

您可能会发现一些有用的链接:

在撰写本文时,关于重新配置的文档和工具有点缺乏。您可能会看到的最有用的地方是:

您必须熟悉两种protobuf结构,即
common.ConfigUpdate
,和
common.Config
。通道是通过向订购服务提交签名配置更新来创建的,订购服务将生成嵌入genesis块中的相应配置

管理频道成员资格更改的策略指定为
应用程序
组的
mod_policy
字段,该组是
频道
组的子组。此字段默认为
管理员
,它指的是
应用程序
组中的策略定义
管理员
。默认情况下,此策略设置为
应用程序
组下定义的组织组的
管理员
策略的
多数

因此,要在创建频道之前修改此策略,您需要使用
configtxlator
工具将configtx解码为JSON,进行修改,然后再次使用
configtxlator
工具对其进行编码。提交此新事务将使用指定的策略创建通道

如果您希望在事后修改成员资格,过程与此类似。检索当前频道配置,解码并修改它,然后使用
configtxlator
计算代表您的更改的配置更新结构。通过
peer channel signconfigtx
收集签名,然后提交以修改频道配置

目前,这个过程显然都有点手动,但在将来,SDK应该自动完成常见任务,并且工具也应该改进

注意:
configtxlator
是一种REST服务,因此可以从SDK应用程序内部方便地访问它,而不受语言的影响


作为快速补充。你问如何确保没有人“作弊”并且没有真正获得所需的签名。这也是系统内置的。对通道配置的所有更改不仅由订购网络验证,而且由系统中的所有对等方验证。如果出现无法验证的配置,则网络中的所有节点都将注意到,并将停止使用该通道,直到采取纠正性管理措施。

这实际上是Hyperledger Fabric本机支持的,您描述的行为实际上是通道成员身份更改的默认行为

每个通道都以一个创世纪区块开始生命。此genesis区块的内容定义了渠道成员,以及授权这些组织的用户在区块链上执行不同功能的策略。例如,一些用户可以提交交易,但不能读取整个区块链,而其他用户可以同时提交交易和读取整个区块链

要更改通道成员身份,请提交通道重新配置事务。此事务指定新成员身份,并且必须包含足够的签名以授权此修改。默认情况下,这是大多数组织管理员的签名

策略框架实际上非常强大,只需一点知识,就可以定义更强大的规则。例如,您可以要求OrgA和3/10其他组织签署变更成员资格。或者,您可以要求除一个组织外的所有组织都同意进行任何成员变更,或者进行无限数量的其他排列

您可能会发现一些有用的链接:

在撰写本文时,关于重新配置的文档和工具有点缺乏。您可能会看到的最有用的地方是:

您必须熟悉两种protobuf结构,
common.Con