Tx提交后获取空缓冲区:使用结构网络客户端的结构2.1

问题描述 投票:0回答:1

我正在使用结构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);
}

有人有什么建议吗?

hyperledger-fabric hyperledger hyperledger-fabric-sdk-java
1个回答
0
投票

检查链码,当我收到一个空的缓冲区时,我遇到了类似的问题。如果您使用的是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
}

所以请先检查您的链码是否应该返回任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.