不会为以太坊智能合约生成事件日志

Posted

技术标签:

【中文标题】不会为以太坊智能合约生成事件日志【英文标题】:Event log is not generated for Ethereum smart contract 【发布时间】:2019-12-11 20:16:24 【问题描述】:

我使用 remix IDE 和 metamask 为 ethereum ropsten 网络创建了一个以太坊智能合约。创建智能合约并进行交易。但这些事件不会记录任何事件。

生成智能合约的代码如下所示。

pragma solidity ^0.5.1;
contract SimpleStorage
uint storeddata;
function set(uint x) public
storeddata = x;


function get() public view returns(uint)
return storeddata;



得到的智能合约地址是

0xA41B2508Ee53cE00E07405Bc15A190F8af5dE0a4

未记录事件的原因可能是什么。

【问题讨论】:

你没有初始化事件在 set 函数中发出 【参考方案1】:

这是因为运行上述代码时没有注册事件。你可以重写代码如下。

pragma solidity ^0.5.1;
contract SimpleStorage
uint storeddata;

event Store(uint _value);

function set(uint x) public

emit Store(x);

storeddata = x;

function get() public view returns(uint)


return storeddata;



第四行和第六行应该可以解决你的问题

【讨论】:

以上是关于不会为以太坊智能合约生成事件日志的主要内容,如果未能解决你的问题,请参考以下文章

用松露测试以太坊事件日志

区块链开发之Solidity编程基础合约事件

区块链开发之Solidity编程基础合约事件

以太坊的ABI编码

详解 Solidity 事件Event - 完全搞懂事件的使用

完全搞懂事件