如何使合同在不调用任何功能的情况下采取行动?

时间:2019-11-20 13:56:45

标签: solidity

这是一个很难解释的问题,我将尽力而为:

我写了一份合同,更新了房地产房屋的所有权。我有卖方(所有者),买方和其他一些职能。

但是我希望这个合同是临时合同。由于卖方已部署合同,因此买方有30秒(例如)签署合同。 如果买方不及时签订合同,则合同将采取某些措施(例如,自毁)。签名是将bool属性从false更改为true。

我写了一个修饰符来解释我的目标:

 modifier upTo30Seconds
    {
        if( now-timeOfContractCreation > 30)
        {
            if(isContractPayed && buyerSign == false)
            {
                emit  notifyCancelOffer(address(this), buyerAddress , oldOwnerAddress); //notifyCancelOffer 
                selfdestruct(buyerAddress); //Destruct the contract and return ether to the buyer

            }
        }
        _;
    } 
    //'timeOfContractCreation' is another property, initialized in the constructor, and its means the time of deployment (since 01/01/1970)

    //'now' is a solidity method which returns the time passed in seconds since 01/01/1970 

此修饰符在函数调用中效果很好,但是我希望这些动作能够自动执行。

我的要求有点类似于线程运行。 是否可以使用坚固性做到这一点?

1 个答案:

答案 0 :(得分:1)

没有交易就无法自动更改合同状态/数据。但是,您可以在接收下一个事务时检查时间戳,如果它在创建后已超过30秒,则只需忽略它并运行自毁。

此外,请注意,以太坊中的时间戳不是事务创建的实际时间戳,而是该块的时间戳。