当前位置: 首页 > 知识库问答 >
问题:

Hyperledger面料:背书政策三分之二同行。误差

曾晨
2023-03-14

当我发出我的链码时,我会收到一条消息:

服务器返回:为ChainCodesName构造描述符失败:“mycc”:没有对等方组合可以满足认可策略

令人困惑的是,当我使用策略:和(org1msp.member)时,一切都非常清楚,并调用了我的chaincode。在本例中使用discovery命令返回服务器上的每一个对等点,非常好。但这不是我想要实现的!我想强制执行3个背书人中的2个背书。

---
certificateAuthorities:
  Org1CA:
    caName: ca
    url: http://<IP is correct links to the right server>:7054
client:
  connection:
    timeout:
      orderer: '300'
      peer:
        endorser: '300'
  organization: Org1MSP
name: example.com
organizations:
  Org1MSP:
    certificateAuthorities:
      - Org1CA
    mspid: Org1MSP
    peers:
      - peer0.org1.example.com
      - peer1.org1.example.com
      - peer9.org1.example.com
peers:
  peer0.org1.example.com:
    url: grpc://peer0.org1.example.com:7051
  peer9.org1.example.com:
    url: grpc://peer9.org1.example.com16051
  peer1.org1.example.com:
    url: grpc://peer1.org1.example.com:8051
version: 1.0.0

每个对等点都在不同的机器上。下面是如何执行事务调用的示例:

Gateway.Builder builder = Gateway.createBuilder();
Wallet wallet = Wallets.newInMemoryWallet();
X509Identity ident;

try {
    ident = Identities.newX509Identity("Org1MSP",
            Identities.readX509Certificate("removed key due to security porpuse"),
            Identities.readPrivateKey("removed key due to security porpuse"));
    String userName = "admin";
    Contract contract = null;

    InputStream input = classLoader.getResourceAsStream("connection-org1.yaml");
    wallet.put("admin", ident);
    builder.identity(wallet, userName).networkConfig(input).discovery(true);
    Gateway gateway = builder.connect();
    Network network = gateway.getNetwork("crm-field-1");
    contract = network.getContract(contractName);

    byte[] response = null;
    Transaction trans = contract.createTransaction("createCrmContact");
    Map<String, byte[]> data = new HashMap<String, byte[]>();
    data.put("value", value.getBytes());
    data.putAll(initialize());
    trans = trans.setTransient(data);
    response = trans.submit(pk, fieldName);
    // response = contract.submitTransaction("createCrmContact", pk, fieldName,
    // value);
    LOGGER.error("Logging: Response - " + response);
    if (response == null)
        return null;
    return decode(response);
} catch (Exception e) {
    LOGGER.error("Logging: Error" + e.getMessage());
    e.printStackTrace();
}

共有1个答案

韩琛
2023-03-14

于是,我自己想通了:

如果网络没有设置任何锚节点,则发现失败,因为没有endpoint,在那里他可以获得关于网络中每个节点的信息。所以把它们添加到网络上解决了我的问题。

谢谢你的建议

 类似资料:
  • 在hyperledger结构中提交分类账之前,谁负责检查背书策略?订购方服务还是提交对等方?在里面https://www.hyperledger.org/wp-content/uploads/2017/05/HL_Meetup_Blockchain_IBM__Mai_v2a-1.pdf表明提交对等方会检查背书策略。但在一些视频中,订购服务会对其进行检查,检查后会生成块并发送给对等方,以便盲目提交。

  • 我使用的是Hyperledger Fabric版本1.2。我创建了一个有1个订购者和10个对等节点的通道,所有这些节点都属于同一个组织。我想用背书策略实例化链码,这样ORG1的所有对等体都是背书对等体,而不仅仅是1。相同的有效表达式是什么? Fabric文档包含包括来自不同组织的同行的示例。

  • 用例 我的用例由两种不同类型的参与者组成。许多组织(上载和共享分布式分类帐上的个人信息)和可以查询个人信息的客户端。客户端不能看到组织上传的事务,也没有DL上的写权限。他有只读权限。此外,组织之间相互信任,它们与客户之间也有一定程度的信任。 设计思想

  • peer chaincode实例化-o orderer.example.com:7050-c mychannel-n mycc-v 1.0-c'{“args”:[]}'-p“outof(2,'org1msp.peer')”

  • 下面是我对Hyperledger结构系统的理解。如果有任何错误,一定要告诉我。 1)所以我们有对等方(背书人、锚、将军(谁有分类账)、订货人)。此外,当我们设置结构时,假设我们注册了两个组织。让我们称他们为公司甲和公司乙。现在我应该做的是使用密码来生成他们的证书,这些证书将被保存到特定的文件夹中。(在加密文件夹中,现阶段我将拥有公司甲和公司乙的密钥库和签名)。 现在,对于这些公司,A和B,我也为他

  • 我有一个理论问题。 假设我们有一笔交易需要两位同行的认可。但这两位同行对背书交易有不同的要求。例如,如果我们想改变数字N的值,对于1号节点,只有当值大于5时,它才会认可它,而对于2号节点,只有当值大于10时,它才会认可它(我知道这个例子没有多大意义,但是……假设是这样的)。 在链码中拆分逻辑的方法是什么?如何理解当前在哪个对等机上执行链码,以便我可以检查值是否应该大于5或大于10,以便对其进行背书