EPOCH is the currency of Epoch Island


Smart Contract Summary

The EPOCH token contract went live on Nov 12th 2023, deployed by the EPOCH DAO per a snapshot proposal.

The EPOCH token source code can be found on Etherscan.

The EPOCH token is a generic ERC20 token with the following additional functionality:

  1. EPOCH is Ownable (has an owner)

    • The Epoch Island DAO multisig currently holds ownership of this token.

  2. EPOCH supports Permit

  3. EPOCH can be minted and burned

    • EPOCH tokens can only be minted by the Owner of the token

    • EPOCH tokens can be burned by anyone

  4. EPOCH implements a minting cap


The EPOCH token lives on Ethereum Mainnet and has 18 decimals. EPOCH has been bridged to other networks.


The ability to mint new tokens is controlled by governance, requiring a successful proposal that requests tokens to be minted.

mint() method

function mint(
    address to,
    uint256 amount
) public onlyOwner

With the mint method, the owner of the EPOCH contract can mint new EPOCH tokens. It takes as parameters:

  • to: the address to send the minted EPOCH tokens to

  • amount: how many tokens to mint

Currently, the owner of the EPOCH contract is the EPOCH DAO multisig, which means governance proposals control new token minting.

Minting Cap

The EPOCH token implements a custom minting cap which restricts the maximum amount mintable to 10% of the total supply each week. This cap logic is part of the EpochToken.sol contract's mint() function.

Some of the reasons to introduce this cap:

  • This prevents an infinite mint exploit by limiting the maximum possible that can be minted at once.

  • This creates a maximum ceiling on total tokens that can be minted per week, ensuring no proposal can request or be passed that asks for an obscene amount of new supply minted.

  • This gives LPs a safety net. If there was a security breach or exploit, or if the voters choose to mint as much as possible week after week, then if the maximum mint cap was completely market sold, the LPs should in theory still have meaningful value remaining, with at least another week before more tokens could be minted to be sold. This gives LPs time to exit and prevent further losses.

For example, if the current supply is 80million tokens at the time the weekly mint cap is recalculated for the week, then no more than 8million tokens can be minted grand total over the next 7 days.

Burning tokens has no effect on the mint cap.

Minting Cap Example

The current total supply is 100 million.

If the DAO minted 4 million EPOCH tokens on Jan 1st, 2024, the mint cap (10%) would only allow an additional 6 million tokens to be minted until Jan 8. The total supply is now 104 million.

The code snippet below shows the relevant code extracted from the token source code.

uint256 public mintCapStartTs;
uint256 public mintableUntilMintCap;

// @notice Returns timestamp of when minting cap ends
function mintCapEndTs() public view returns(uint256) {
    return mintCapStartTs + 604800;

// @notice Allows Owner to mint tokens
// @dev No more than 10% of the total supply can be minted each week
function mint(address to, uint256 amount) public onlyOwner {
    if(block.timestamp >= mintCapEndTs()) {
        mintCapStartTs = block.timestamp;
        mintableUntilMintCap = (totalSupply() * 1000) / 10000;

    // @dev This is decorative and could be removed with mint cap still enforced
    require(amount <= mintableUntilMintCap, "MINT CAP");

    mintableUntilMintCap -= amount;
    _mint(to, amount);


Calling the burn() function will reduce the total supply by burning associated tokens.

burn() method

function burn(
    uint256 amount
) public virtual

With the burn method, any wallet that holds EPOCH tokens can destroy any amount of their EPOCH tokens, reducing the total supply by the amount permanently removed from their wallet.


Last updated