当我发出我的链码时,我会收到一条消息:
服务器返回:为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();
}
于是,我自己想通了:
如果网络没有设置任何锚节点,则发现失败,因为没有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,以便对其进行背书