我正在使用结构2.1,并带有新的客户端库结构网络。我已经配置了网络,创建了频道,安装了链码等。我可以通过CLI调用事务。
Fabric版本:2.1光纤网络:2.1
我已如下定义事件处理程序策略1)策略:DefaultEventHandlerStrategies.MSPID_SCOPE_ANYFORTX
2)策略:createTransactionEventHandler
await gateway.connect(ccp, {
wallet, identity: username, discovery: { enabled: true, asLocalhost: true }, transaction: {
strategy: DefaultEventHandlerStrategies.MSPID_SCOPE_ANYFORTX
}
});
[当我提交事务时,在两种情况下都得到一个空的缓冲区,而不是事务ID(不确定我们是否得到TX ID)。
被调用的交易被添加到区块链中。我已从CouchDB确认并正在查询资产。
> let result = await contract.submitTransaction(fcn, args[0], args[1],args[2], args[3], args[4]);
我尝试使用自定义事件处理程序,但未触发此功能。策略:createTransactionEventHandler
const createTransactionEventHandler = (transactionId, network) => { const mspId = network.getGateway().getIdentity().mspId; const myOrgPeers = network.getChannel().getEndorsers(mspId); console.log(`tx id : ${transactionId}`) return new MyTransactionEventHandler(transactionId, network, myOrgPeers); }
有人有什么建议吗?
检查链码,当我收到一个空的缓冲区时,我遇到了类似的问题。如果您使用的是fabcar,我假设您正在调用此函数:
async createCar(ctx, carNumber, make, model, color, owner) {
console.info('============= START : Create Car ===========');
const car = {
color,
docType: 'car',
make,
model,
owner,
};
await ctx.stub.putState(carNumber, Buffer.from(JSON.stringify(car)));
console.info('============= END : Create Car ===========');
return car; // if you don't return anything you get an empty response
}
所以请先检查您的链码是否应该返回任何内容。