#javascript #solidity #ethers.js #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)
Ответ №1:
Когда вы создаете транзакцию с Ethers.js, вы получаете ответ на транзакцию, который еще не может быть включен в блокчейн. Поэтому он не знает, какие журналы будут выдаваться.
Вместо этого вы хотите подождать, пока транзакция не будет подтверждена, и вы получите ответ на транзакцию. В этот момент транзакция была включена в блок, и вы можете видеть, какие события были отправлены.
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)