Можно ли использовать метод invokeChaincode для извлечения данных из цепного кода, который находится на другом канале

В настоящее время я веду проект с двумя цепными кодами, двумя каналами и двумя организациями. Я хочу установить свой первый чейнкод (CC1) на первом канале (channel-1), состоящем из org1 и org2. Второй чейнкод (CC2) будет установлен на канале-2, состоящем только из org2.

Я хочу получить данные из первого чейнкода, и полученные данные будут использоваться во втором чейнкоде. Можно ли получить данные из чейнкода, который находится на другом канале, с помощью метода invokeChaincode?

Если это невозможно, то каковы способы получения данных из других цепных кодов, установленных на другом канале?

Я использую Hyperledger Fabric версии 2.0 и node js для создания своего чейнкода.


person Satish Chandra Medi    schedule 13.05.2020    source источник


Ответы (1)


Вы можете использовать функцию invokeChaincode для вызова цепного кода из разностного канала:

//get data from channel 1
const cc1Args = ['arg1', 'arg2'];
const cc1Res = await ctx.stub.invokeChaincode('CC1', cc1Args, 'channel-1');
if (cc1Res.status !== 200) {
    throw new Error(cc1Res.message);
}
const cc1Asset = JSON.parse(cc1Res.payload.toString('utf8'));

//save data to channel 2
const cc2Args = [cc1Asset.arg1, cc1Asset.arg2];
const cc2Res = await ctx.stub.invokeChaincode('CC2', cc2Args, 'channel-2');
if (cc2Res.status !== 200) {
    throw new Error(cc2Res.message);
}
const cc2ResObj = JSON.parse(cc1Res.payload.toString('utf8'));

Вы также можете прочитать документ invokeChaincode: https://hyperledger.github.io/fabric-chaincode-node/master/api/fabric-shim.ChaincodeStub.html#invokeChaincode__anchor

person ShaLalala    schedule 28.05.2020