Blockchain 如何在Hyperledger v1.0中检索/实现基于用户/角色的执行?

Blockchain 如何在Hyperledger v1.0中检索/实现基于用户/角色的执行?,blockchain,hyperledger,hyperledger-fabric,Blockchain,Hyperledger,Hyperledger Fabric,我正在尝试在Hyperledger v1.0中构建一个具有以下功能的应用程序 多sig合同执行 合同的可发现性 选择性 能见度 但是我找不到, 用于检索角色/用户信息的任何函数 定义和创建具有不同角色的用户 我将非常感谢任何关于如何使我的智能合约被其他智能合约发现的示例。您可以通过以下方式在链码执行中获得提案创建者的证书: creatorByte, err := stub.GetCreator() if err != nil { return sh

我正在尝试在Hyperledger v1.0中构建一个具有以下功能的应用程序

  • 多sig合同执行
  • 合同的可发现性
  • 选择性 能见度
但是我找不到,

  • 用于检索角色/用户信息的任何函数
  • 定义和创建具有不同角色的用户

我将非常感谢任何关于如何使我的智能合约被其他智能合约发现的示例。

您可以通过以下方式在链码执行中获得提案创建者的证书:

        creatorByte, err := stub.GetCreator()
    if err != nil {
        return shim.Error("Error stub.GetCreator")
    }
    bl, _ := pem.Decode(creatorByte)
    if bl == nil {
        return shim.Error("Could not decode the PEM structure")
    }
    cert, err := x509.ParseCertificate(bl.Bytes)
    if err != nil {
        return shim.Error("ParseCertificate failed")
    }

我将回答你问题中的一点:

定义和创建具有不同角色的用户

当您创建一个用户或组件时,您通过Fabric CA创建它,即当您创建某个东西时,您定义它将是什么:对等方、订购方、用户。。。因此,用户的类型取决于其角色


我不知道我是否回答了你的问题。你能提供更多关于他们的信息吗?

第一个问题:

用于检索角色/用户信息的任何函数

这是使用库完成的

客户机标识链码库使您能够编写链码,该链码根据客户机的标识(即链码的调用方)做出访问控制决策。特别是,您可以根据与客户端关联的以下任一项或两项做出访问控制决策:

  • 客户端标识的MSP(会员服务提供商)ID
  • 与客户端标识关联的属性。 属性只是与标识关联的名称和值对。例如,电子邮件=me@gmail.com指示标识具有值为的电子邮件属性me@gmail.com
对于Nodejs:

第二个问题:

定义和创建具有不同角色的用户

或者在注册时

fabric-ca-client enroll -u http://user1:user1pw@localhost:7054 --enrollment.attrs "email,phone:opt"
:

属性作为扩展存储在X509证书中,ASN.1 OID(抽象语法符号对象标识符)为1.2.3.4.5.6.7.8.1。扩展名的值是一个JSON字符串,格式为{“attrs”:{: 寻找

如何使用Hyperledger Fabric CA客户端和服务器生成所有加密资料,而不是使用cryptogen。cryptogen工具不适用于生产环境,因为它在一个位置生成所有私钥,然后必须将这些私钥复制到相应的主机或容器。此示例演示如何生成加密资料用于订购者、对等方、管理员和最终用户的资料,以便私钥永远不会离开生成它们的主机或容器


>任何关于如何让我的智能合约被其他智能合约发现的例子都将受到高度赞赏。你能详细说明吗?谢谢。但我的意思是角色取决于用户而不是组件,让我们以一个市场为例。因为将有x家供应商,他们可能已将其定价详细信息作为智能合约上传合同。现在,只有买方才能查询和查看智能合同的价格。如果我们为供应商和买方分配不同的角色,然后根据智能合同查询人的角色限制查看权限,就可以实现这一点。嗨!首先,如果我不太理解你的问题,我很抱歉。其次,我很抱歉k你混淆了术语智能合约:它意味着它部署在区块链上的代码。在那里你可以编写你想要的东西,即你的代码。例如,一个解决方案可以是供应商用买方的公钥加密他们的定价细节,然后买方可以查询和查看。此外,你可以编写智能合约根据每个用户的角色过滤每个用户的功能,您可以限制智能合约上的查看权限。我同意,使用买方公钥加密内容是一种方式。但我对您指定的第二种方式感兴趣,因为我如何根据v1.0中的角色限制查看权限。我是able在v0.6中使用getCertAttribute函数并提取角色和用户信息。我认为@yacovm在previos答案中回答了这一点。谢谢你,但通过这一点,我将获得用户的身份。我们在v1.0中不是像在v0.6中那样有一个用户角色映射吗?以实现基于角色的逻辑(例如,所有买家都应该能够看到特定供应商的报价,但没有供应商能够看到价格)我们需要知道所有相关组织的身份。你的意思是:?是的,链码中基于角色的访问。在v0.6中,它是按照清单11中的规定完成的,只有银行住房贷款管理员可以创建住房贷款应用程序,其他人不能。类似地,只有买方可以看到供应商的价目表,并且没有解析证书(cert变量)的结构是什么
fabric-ca-client enroll -u http://user1:user1pw@localhost:7054 --enrollment.attrs "email,phone:opt"