我正在尝试在Hyperledger v1.0中构建一个具有以下功能的应用程序
但我无法找到,
关于如何让我的智能合约被其他智能合约发现的任何例子也将受到高度赞赏。
答案 0 :(得分:1)
您可以通过以下方式获取链码执行中提案创建者的证书:
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")
}
答案 1 :(得分:0)
我要回答你问题的单点:
定义并创建具有不同角色的用户。
当您创建用户或组件时,您可以通过Fabric CA创建它,即当您创建某个内容时,您可以定义它的内容:peer,orderer,user ...那么,它的用户类型取决于它的作用。
我不知道我是否回答了你的问题。你能提供更多关于他们的信息吗?
答案 2 :(得分:0)
第一个问题:
任何用于检索角色/用户信息的功能
这是通过CID库完成的。
使用客户端身份链代码库,您可以编写链代码,该链代码根据客户端(即链代码的调用者)的身份做出访问控制决策。特别是,您可以根据与客户端关联的以下两项或一项来做出访问控制决定:
- 客户身份的MSP(会员服务提供商)ID
- 与客户端身份关联的属性。 属性只是与身份相关联的名称和值对。例如,email = me @ gmail.com表示身份具有电子邮件属性,其值为me@gmail.com
对于Node.js:https://fabric-shim.github.io/master/fabric-shim.ClientIdentity.html
第二个问题:
定义和创建具有不同角色的用户。
fabric-ca-client register --id.name user1 --id.secret user1pw --id.type user --id.affiliation org1 --id.attrs 'app1Admin=true:ecert,email=user1@gmail.com'
或在注册时
fabric-ca-client enroll -u http://user1:user1pw@localhost:7054 --enrollment.attrs "email,phone:opt"
https://github.com/hyperledger/fabric/blob/release-1.3/core/chaincode/lib/cid/README.md:
属性以扩展名的形式存储在X509证书中,其ASN.1 OID(抽象语法表示法对象标识符)为1.2.3.4.5.6.7.8.1。扩展名的值是格式为{“ attrs”:{:的JSON字符串。
请参见https://github.com/hyperledger/fabric-samples/blob/release-1.3/fabric-ca/README.md
如何使用Hyperledger Fabric CA客户端和服务器生成所有加密材料,而不是使用加密原。 cryptogen工具不适用于生产环境,因为它在一个位置生成所有私钥,然后必须将其复制到适当的主机或容器中。此示例演示了如何为订购者,对等方,管理员和最终用户生成加密材料,以使私钥永远不会离开生成它们的主机或容器。