我刚开始学习智能合同,我有一个初学者的问题。
在编码之前,我正在做一个自上而下的研究。我读了很多关于这个而不是那个的书。不过,我没有听过“其他”,即如果不符合条件,是否可以执行呢?例如,如果某人A没有给我发正确的金额,执行合同,否则,不要。这能办到吗?如果A不给我发正确的金额,执行其他合同,纠正错误(要么从我的帐户中减去钱,要么从他们的帐户中减去,然后向管理层提交一份报告(比如说) )。此外,合同可以是基于时间的吗?例如,如果A星期一不给我钱,执行合同并向管理层提交一份报告。
发布于 2017-10-28 13:22:54
例如,如果某人A没有给我发正确的金额,执行合同,否则,不要。这能办到吗?
是的,当然。有几种方法可以做到这一点。
假设基本函数是:
//WATCH OUT: Not tested for potential vulnerabilities
function sendMoney(uint _money) payable{
require (_money <= this.balance);
msg.sender.transfer(_money);
}上面的函数基本上是将eth从合同发送给调用此函数的人。
我们已经有一个“如果-否则”了。如果契约中没有足够的平衡,则函数将不会执行。
您还可以添加一个要求或如果-否则,如下所示:
//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/,它允许您安排事务。
https://ethereum.stackexchange.com/questions/29433
复制相似问题