我需要在指定的时间(块号)发送事务。如何编写智能契约,在不需要外部输入的情况下触发指定的块号?
发布于 2017-05-13 04:16:22
您需要从外部输入来启动事务。
但是,您可以做的是检查您的合同中的block.number,以确保如果在指定的时间之前发送了一个事务,它将没有任何效果。(此事务将使用gas并被视为已使用,因此不能再次发送相同的事务,因此您必须发送一个新的事务。)
然后,您可以使用像以太闹钟这样的服务来激励互联网上一些随机的人在合适的时间为您发送交易,并收取相应的费用。这可以通过您合同中的电话来安排。
还有在将事务包含在块中之前提取初始事务验证的计划。,从理论上讲,它可以预先准备一笔只允许包含在特定block.number街区内的交易,如果矿商检查了该交易,发现时机还没有到,你就不用花汽油了。比特币的nLockTime就是这样运作的:一项交易被认为是无效的,它的时代还没有到来,有人可以抓住它,免费转售它,直到它的时间终于到来。
请注意,没有方法,也没有可能存在确保事务包含在特定块中的方法。该块的矿工决定它将包括哪些事务。因此,您的契约可以强制执行“除非是块x,否则不要运行此逻辑”,或者“除非是块x之后,否则不要运行此逻辑”,但它不能强制执行“必须在块x处执行此操作”。
https://ethereum.stackexchange.com/questions/16124
复制相似问题