我正在创建一个开发应用程序,例如每隔 5 分钟就想从我的 erc20 代币的智能合约中运行一些代码。在 Solidity 中,如何每 5 分钟调用该函数一次?
Pet*_*jda 13
Solidity(或一般的 EVM 字节码)中没有本机延迟(睡眠,或任何等待一定时间的东西)功能。
\n每个 Solidity 函数都作为事务的一部分执行。
\n因此,您可以在链下应用程序上设置计时器,每 5 分钟发送一笔交易。请注意,从应用程序发送交易和实际发布包含该交易的区块(由矿工)之间存在延迟。
\nJS 中的示例:
\nfunction sendTx() {\n myContract.methods.myFunction().send();\n};\n\nsetInterval('sendTx', 5 * 1000 *\xc2\xa060);\nRun Code Online (Sandbox Code Playgroud)\n您还可以验证 Solidity 中的延迟,并仅在自上次操作后 5 分钟过去后才执行操作。
\npragma solidity ^0.8;\n\ncontract MyContract {\n uint256 lastRun;\n\n function myFunction() external {\n require(block.timestamp - lastRun > 5 minutes, 'Need to wait 5 minutes');\n\n // TODO perform the action\n\n lastRun = block.timestamp;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
8080 次 |
| 最近记录: |