从 hardhat 的交易收据中获取事件
Get events from a transaction receipt in hardhat
我有一个 ethers
合同,我已经与以下交易进行了交易:
const randomSVG = new ethers.Contract(RandomSVG.address, RandomSVGContract.interface, signer)
let tx = await randomSVG.create()
我有一个交易事件:
function create() public returns (bytes32 requestId) {
requestId = requestRandomness(keyHash, fee);
emit requestedRandomSVG(requestId);
}
但是,我在交易收据中看不到日志。](https://docs.ethers.io/v5/api/providers/types/#providers-TransactionReceipt)
// This returns undefined
console.log(tx.logs)
当您使用 Ethers.js 创建交易时,您会得到一个 TransactionResponse 可能尚未包含在区块链中。因此它不知道将发出什么日志。
相反,您想等到交易得到确认并取回 TransactionReceipt。此时交易被包含在一个块中,您可以看到发出了哪些事件。
const randomSVG = new ethers.Contract(RandomSVG.address, RandomSVGContract.interface, signer)
const tx = await randomSVG.create()
// Wait until the tx has been confirmed (default is 1 confirmation)
const receipt = await tx.wait()
// Receipt should now contain the logs
console.log(receipt.logs)
我有一个 ethers
合同,我已经与以下交易进行了交易:
const randomSVG = new ethers.Contract(RandomSVG.address, RandomSVGContract.interface, signer)
let tx = await randomSVG.create()
我有一个交易事件:
function create() public returns (bytes32 requestId) {
requestId = requestRandomness(keyHash, fee);
emit requestedRandomSVG(requestId);
}
但是,我在交易收据中看不到日志。](https://docs.ethers.io/v5/api/providers/types/#providers-TransactionReceipt)
// This returns undefined
console.log(tx.logs)
当您使用 Ethers.js 创建交易时,您会得到一个 TransactionResponse 可能尚未包含在区块链中。因此它不知道将发出什么日志。
相反,您想等到交易得到确认并取回 TransactionReceipt。此时交易被包含在一个块中,您可以看到发出了哪些事件。
const randomSVG = new ethers.Contract(RandomSVG.address, RandomSVGContract.interface, signer)
const tx = await randomSVG.create()
// Wait until the tx has been confirmed (default is 1 confirmation)
const receipt = await tx.wait()
// Receipt should now contain the logs
console.log(receipt.logs)