时间锁本质就是:让交易先创建,过一段时间才能执行。这期间,如果人们发现交易有问题,就有时间做应对。
此合约,学习的知识点有:
1、modifier, 用来约束函数,权限控制。
2、call调用, 合约如何调用, 函数签名, 函数选择器。
3、remix熟练
下面是写的一个练手的代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
contract Timelock {
event QueueTransaction(bytes32 txHash, address target, uint256 value, bytes data, string signature, uint256 exectime);
event ExecuteTransaction(bytes32 txHash, address target, uint256 value, bytes data, string signature, uint256 exectime);
event CancelTransaction(bytes32 txHash, address target, uint256 value, bytes data, string signature, uint256 exectime);
event ChangeAdmin(address old, address newAddr);
uint256 public delay ;
address public admin;
uint256 public GraceTime = 200;
mapping(bytes32 => bool) public isQueuedTx;
constr