TimelockController?

제안과 실행 사이에 지연을 도입하는 역할을 한다.

TimelockController는 timelock을 가지고 컨트랙트를 제어할 수 있도록 한다.

일반적인 사용 사례는 이 TimelockController를 컨트랙트의 owner로 설정하는 것이다.

contract TimelockController is AccessControl, IERC721Receiver, IERC1155Receiver {
    bytes32 public constant TIMELOCK_ADMIN_ROLE = keccak256("TIMELOCK_ADMIN_ROLE");
    bytes32 public constant PROPOSER_ROLE = keccak256("PROPOSER_ROLE");
    bytes32 public constant EXECUTOR_ROLE = keccak256("EXECUTOR_ROLE");
    bytes32 public constant CANCELLER_ROLE = keccak256("CANCELLER_ROLE");
    uint256 internal constant _DONE_TIMESTAMP = uint256(1);
mapping(bytes32 => uint256) private _timestamps;
    uint256 private _minDelay;