如何在链码中添加事件? (超级账本结构)
How to add events in chaincode? (Hyperledger Fabric)
我正在尝试让事件在 Hyperledger Fabric 中运行。我在我的链代码中编写了 setEvent 函数,并在我的应用程序文件中添加了一个侦听器 (addContractListener)。似乎什么都没发生
在我的合约文件中,就在 putState 函数之后:
await this.ctx.stub.setEvent('event1', data);
在我的应用程序文件中,就在 submitTransaction 函数之后:
let eventTxn = await contract.addContractListener('some-string', 'trade-network',
(err, event, blkNum, txid, status) => {
console.log('event received', status, event, blkNum, txid);
if (err) {
this.emit('error', err);
} else if (status && status === 'VALID') {
// only if a valid block is committed should we emit an event
let evt = event.payload.toString('utf8');
evt = JSON.parse(evt);
if (Array.isArray(evt)) {
for(const oneEvent of evt) {
this.emit('ChaincodeEvent', oneEvent);
}
}
else {
this.emit('ChaincodeEvent', evt);
}
}
},
{filtered: false}
);
我已经在我的合同和申请中添加了以上代码行。在执行应用程序功能时,似乎什么也没发生,程序卡住了,没有任何响应。即使 'console.log' 也没有执行,这意味着它没有完全进入功能。
我期待应用程序功能得到执行。
有人可以指导我如何在 Hyperledger Fabric 中进行简单的活动吗?
可能链代码的事件名称 event1
与您正在侦听的事件 trade-network
不匹配
我正在尝试让事件在 Hyperledger Fabric 中运行。我在我的链代码中编写了 setEvent 函数,并在我的应用程序文件中添加了一个侦听器 (addContractListener)。似乎什么都没发生
在我的合约文件中,就在 putState 函数之后:
await this.ctx.stub.setEvent('event1', data);
在我的应用程序文件中,就在 submitTransaction 函数之后:
let eventTxn = await contract.addContractListener('some-string', 'trade-network',
(err, event, blkNum, txid, status) => {
console.log('event received', status, event, blkNum, txid);
if (err) {
this.emit('error', err);
} else if (status && status === 'VALID') {
// only if a valid block is committed should we emit an event
let evt = event.payload.toString('utf8');
evt = JSON.parse(evt);
if (Array.isArray(evt)) {
for(const oneEvent of evt) {
this.emit('ChaincodeEvent', oneEvent);
}
}
else {
this.emit('ChaincodeEvent', evt);
}
}
},
{filtered: false}
);
我已经在我的合同和申请中添加了以上代码行。在执行应用程序功能时,似乎什么也没发生,程序卡住了,没有任何响应。即使 'console.log' 也没有执行,这意味着它没有完全进入功能。
我期待应用程序功能得到执行。 有人可以指导我如何在 Hyperledger Fabric 中进行简单的活动吗?
可能链代码的事件名称 event1
与您正在侦听的事件 trade-network