Обновите Chaincode на фабрике hyperledger, используя узел sdk - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь установить и обновить цепной код, используя node-sdk из фабрики hyperledger.Однако я, похоже, что-то упускаю.

Я могу правильно установить цепной код на одноранговых узлах, однако я не могу его обновить.Я пропускаю идентификатор транзакции какого-либо вида

В основном, я хотел бы использовать sdk, чтобы иметь возможность делать следующее:

peer chaincode install -n mychaincode -p /path/to/chaincode -l node -v 0.0.2
peer chaincode upgrade -C mychannel -n mychaincode -l node -v 0.0.2 -c '{"Args": ["instantiate", "test"]}'

Использование sdk:

// Create a new gateway for connecting to our peer node.
const gateway = new Gateway();
await gateway.connect(ccp, { wallet, identity: 'xxxx' });

const client = gateway.getClient();
const peers = client.getPeersForOrg('PeerMSP');

let installResponse = await client.installChaincode({
    targets: peers,
    chaincodePath: '/path/to/chaincode',
    chaincodeId: 'mychaincode',
    chaincodeVersion: '0.0.2',
    chaincodeType: 'node',
    channelNames: ['mychannel']
});

let channel = client.getChannel('mychannel');

let upgradeResponnse = await channel.sendUpgradeProposal({
    targets: peers,
    chaincodeType: 'node',
    chaincodeId: 'mychaincode',
    chaincodeVersion: '0.0.2',
    args: ['instantiate', 'test'],
    txId: ??????? <----------------------------------
});

Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Для дальнейшего использования я пропустил client.newTransactionID().

Полный пример

// Create a new gateway for connecting to our peer node.
const gateway = new Gateway();
await gateway.connect(ccp, { wallet, identity: 'xxxx' });

const client = gateway.getClient();
const peers = client.getPeersForOrg('PeerMSP');

let installResponse = await client.installChaincode({
    targets: peers,
    chaincodePath: '/path/to/chaincode',
    chaincodeId: 'chaincode',
    chaincodeVersion: '0.0.2',
    chaincodeType: 'node',
    channelNames: ['mychannel']
});

let channel = client.getChannel('mychannel');

let proposalResponse = await channel.sendUpgradeProposal({
    targets: peers,
    chaincodeType: 'node',
    chaincodeId: 'chaincode',
    chaincodeVersion: '0.0.2',
    args: ['test'],
    fcn: 'instantiate',
    txId: client.newTransactionID()
});

console.log(proposalResponse);

console.log('Sending the Transaction ..');
const transactionResponse = await channel.sendTransaction({
    proposalResponses: proposalResponse[0],
    proposal: proposalResponse[1]
});

console.log(transactionResponse);
0 голосов
/ 13 марта 2019

Всякий раз, когда вы обновляете код цепи, вам нужно изменить его версию. Я вижу, вы используете одну и ту же версию 0.0.2 для обеих команд. Пожалуйста, измените это и проверьте.

Обновление одноранговой цепочки -o orderer.example.com:7050 --tls --cafile $ ORDERER_CA -C mychannel -n mycc -v 0.0.3 -c '{"Args": ["init", "a", "100", "b", "200", "c", "300"]}' -P "AND ( 'Org1MSP.peer', 'Org2MSP.peer') "

...