5

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?

1
  • Kinda, basically I just watch some tutorial that chainlink putout on governance and they configure the whole thing
    – johnny 5
    Commented Feb 25, 2022 at 13:22

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.