4

I went to OpenZeppelin's wizard to attempt to set up a simple token with Governance, I'm can see examples of the token but I'm wondering what the standard deployment for a TimelockController is.

I have a token:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol";

contract MyToken is ERC20, ERC20Permit, ERC20Votes {
    constructor() ERC20("MyToken", "MYT") ERC20Permit("MyToken") {
        _mint(msg.sender, 10000 * 10 ** decimals());
    }

    // The following functions are overrides required by Solidity.

    function _afterTokenTransfer(address from, address to, uint256 amount)
        internal
        override(ERC20, ERC20Votes)
    {
        super._afterTokenTransfer(from, to, amount);
    }

    function _mint(address to, uint256 amount)
        internal
        override(ERC20, ERC20Votes)
    {
        super._mint(to, amount);
    }

    function _burn(address account, uint256 amount)
        internal
        override(ERC20, ERC20Votes)
    {
        super._burn(account, amount);
    }
}

The Governance Contract also takes in a TimelockController:

constructor(ERC20Votes _token, TimelockController _timelock)
    Governor("MyTokenGov")
    GovernorVotes(_token)
    GovernorVotesQuorumFraction(4)
    GovernorTimelockControl(_timelock)
{}

I dont see in the wizard or the docs on how to setup and configure a TimelockController.

Can anyone shed some light on this?

2
  • 1
    +1. Did you find a solution? Feb 25 at 0:54
  • Kinda, basically I just watch some tutorial that chainlink putout on governance and they configure the whole thing
    – johnny 5
    Feb 25 at 13:22

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.