首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果以太的合同是基于“如果这比那”,是否有一个“其他”在相同的水平上工作?-newbie问题

如果以太的合同是基于“如果这比那”,是否有一个“其他”在相同的水平上工作?-newbie问题
EN

Ethereum用户
提问于 2017-10-28 12:48:55
回答 1查看 63关注 0票数 0

我刚开始学习智能合同,我有一个初学者的问题。

在编码之前,我正在做一个自上而下的研究。我读了很多关于这个而不是那个的书。不过,我没有听过“其他”,即如果不符合条件,是否可以执行呢?例如,如果某人A没有给我发正确的金额,执行合同,否则,不要。这能办到吗?如果A不给我发正确的金额,执行其他合同,纠正错误(要么从我的帐户中减去钱,要么从他们的帐户中减去,然后向管理层提交一份报告(比如说) )。此外,合同可以是基于时间的吗?例如,如果A星期一不给我钱,执行合同并向管理层提交一份报告。

EN

回答 1

Ethereum用户

回答已采纳

发布于 2017-10-28 13:22:54

例如,如果某人A没有给我发正确的金额,执行合同,否则,不要。这能办到吗?

是的,当然。有几种方法可以做到这一点。

假设基本函数是:

代码语言:javascript
复制
//WATCH OUT: Not tested for potential vulnerabilities
function sendMoney(uint _money) payable{
  require (_money <= this.balance);
  msg.sender.transfer(_money);
}

上面的函数基本上是将eth从合同发送给调用此函数的人。

我们已经有一个“如果-否则”了。如果契约中没有足够的平衡,则函数将不会执行。

您还可以添加一个要求或如果-否则,如下所示:

代码语言:javascript
复制
//WATCH OUT: Not tested for potential vulnerabilities
    function sendMoney(uint _money) payable{
      require (_money <= this.balance);
      if(_money < 1 ether)
        msg.sender.transfer(_money);
      else
        //Do something else. Don't do anything, revert, call a function on another contract, etc, etc.
    }

此外,合同可以是基于时间的吗?例如,如果A星期一不给我钱,执行合同并向管理层提交一份报告。

是的,但没那么简单。你可以检查合同内的时间。因此,当您调用上面的函数时,您可以检查现在是否小于或高于某个任意日期,并对其进行操作。您不能轻松完成的是让这个函数在给定的时间点自动运行。有几个替代方案,比如http://www.ethereum-alarm-clock.com/,它允许您安排事务。

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

https://ethereum.stackexchange.com/questions/29433

复制
相关文章

相似问题

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