如何获取链码的控制台信息.js从核心超级账本命令调用时



嗨,我创建了一个区块链网络,我正在尝试将数据保存到对等体中,为此我将其保存到 data.json 文件中,其中包含一些已经存在的数据对象,但我的代码不起作用:

> peer chaincode instantiate -o orderer.tech.com:7050 --tls --cafile
> /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/tech.com/orderers/orderer.tech.com/msp/tlscacerts/tlsca.tech.com-cert.pem
> -C mychannel -n mychain -l node -v 1.0 -c '{"Args":["init","SBIN0000607", "ramji", "10000007","20500"]}' -P "OR
> ('Org1MSP.peer','Org2MSP.peer')"

这是我的链码.js页面代码

const shim = require('fabric-shim'); 
const util = require('util'); 
var db = require('data.json'); 
var fs = require('fs');

var Chaincode = class {
// Initialize the chaincode   async Init(stub) {
console.info('========= example02 Init =========');
let ret = stub.getFunctionAndParameters();
console.info(ret);
let args = ret.params;
// initialise only if 4 parameters passed.
if (args.length != 4) {
return shim.error('Incorrect number of arguments. Expecting 4');
}
let Ifsc = args[0];
let AccountHolder = args[2];
let AccountNumber = args[1];
let Amount = args[3];
console.info("step2");

console.info("step3");
db.push({"Ifsc":Ifsc,"AccountHolder":AccountHolder,"AccountNumber":AccountNumber,"Amount":Amount})
fs.writeFile('data.json', JSON.stringify(db));
return shim.success();
//return shim.success();
}
async Invoke(stub) {
let ret = stub.getFunctionAndParameters();
console.info(ret);
let method = this[ret.fcn];
if (!method) {
console.log('no method of name:' + ret.fcn + ' found');
return shim.success();
}
try {
let payload = await method(stub, ret.params);
return shim.success(payload);
} catch (err) {
console.log(err);
return shim.error(err);
}   }
async invoke(stub, args) {
if (args.length != 3) {
throw new Error('Incorrect number of arguments. Expecting 3');
}
let A = args[0];
let B = args[1];
if (!A || !B) {
throw new Error('asset holding must not be empty');
}
// Get the state from the ledger
let Avalbytes = await stub.getState(A);
if (!Avalbytes) {
throw new Error('Failed to get state of asset holder A');
}
let Aval = parseInt(Avalbytes.toString());
let Bvalbytes = await stub.getState(B);
if (!Bvalbytes) {
throw new Error('Failed to get state of asset holder B');
}
let Bval = parseInt(Bvalbytes.toString());
// Perform the execution
let amount = parseInt(args[2]);
if (typeof amount !== 'number') {
throw new Error('Expecting integer value for amount to be transaferred');
}
Aval = Aval - amount;
Bval = Bval + amount;
console.info(util.format('Aval = %d, Bval = %dn', Aval, Bval));
// Write the states back to the ledger
await stub.putState(A, Buffer.from(Aval.toString()));
await stub.putState(B, Buffer.from(Bval.toString()));
}
// Deletes an entity from state   async delete(stub, args) {
if (args.length != 1) {
throw new Error('Incorrect number of arguments. Expecting 1');
}
let A = args[0];
// Delete the key from the state in ledger
await stub.deleteState(A);   }
// query callback representing the query of a chaincode   async query(stub, args) {
if (args.length != 1) {
throw new Error('Incorrect number of arguments. Expecting name of the person to query')
}
let jsonResp = {};
let A = args[0];
// Get the state from the ledger
let Avalbytes = await stub.getState(A);
if (!Avalbytes) {
jsonResp.error = 'Failed to get state for ' + A;
throw new Error(JSON.stringify(jsonResp));
}
jsonResp.name = A;
jsonResp.amount = Avalbytes.toString();
console.info('Query Response:');
console.info(jsonResp);
return Avalbytes;   } };
shim.start(new Chaincode());

我正在尝试将数据存储到 data.json 文件中,但它不起作用,我也无法访问链码.js页面的控制台信息以便我可以调试。 谁能帮我解决这个问题 谢谢!

使用

docker logs -f <container-name>

其中container-name是链码实例化的容器的名称。 以查看控制台日志。要获取容器名称,请尝试

docker ps --format "{{.Names}}"

最新更新