首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >监视以太坊合同状态

监视以太坊合同状态
EN

Stack Overflow用户
提问于 2017-11-09 23:39:30
回答 2查看 79关注 0票数 1

我希望能够查看以太合约的状态/存储,并知道例如何时满足某些条件。例如,一个帐户值大于200,另一个映射具有超过30个键,等等。

我能用什么来做这件事?是否有可用于此目的的SaaS平台?

编辑:我忘了说我不是合同的所有者。我只是想看看别人的else合约。

EN

回答 2

Stack Overflow用户

发布于 2017-11-10 06:28:09

出于此目的,支持事件。

Event Documentation

示例:

代码语言:javascript
运行
复制
contract SomeContract {
  struct AccountData {
    address account;
    uint value;
  }

  ...
  event AccountValueChange(address account, uint value, bytes msg);
  ...

  function someAction() {
    AccountData accountData;

    // some activity with accountData...

    if (accountData.value > 200) {
      AccountValueChange(accountData.address, accountData.value, "Some message");
    }
  }
}

您可以监听客户端中的事件

代码语言:javascript
运行
复制
const someContract = web3.eth.contract(abi).at(address);

myContract.events.AccountValueChange({
    filter: {//Optional event filters},
    fromBlock: 0
}, function(error, event){ console.log(event); })
.on('data', function(event){
    console.log(event);
})
.on('error', console.error);

编辑:更新了客户端代码,以侦听所有事件,而不仅仅是单个触发的事件。

票数 0
EN

Stack Overflow用户

发布于 2018-01-07 10:00:41

简而言之,您必须自己探测EVM以实现这一点,然后在您可以监视的网络上运行您自己的节点。我找不到可以做到这一点的公共项目,RPC api也没有提供任何方法来实现这一点。我使用了一个经过修改的Geth二进制文件,当我的条件得到满足时,它会通过自定义事务过滤器和mailgun向我发送电子邮件。

事件不会解决您的问题,因为事件必须在创建时包含在合同中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47205887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档