Epoch Docs
manifesto
  • Start Here
  • EPOCH Token
  • EPOCH-LP (80/20)
  • vEPOCH
    • User Methods
    • Admin Methods
    • Events
  • Initial Time Offering (ITO)
    • User Methods
    • Admin Methods
    • Events
  • Governance
  • Links
Powered by GitBook
On this page
  • Smart Contract Summary
  • Minting vEPOCH
  • Mint Calculation
  • Burning vEPOCH
  • Withdraw
  • Withdraw Early
  • Forfeited Tokens
  • Transferring vEPOCH
  • Non transferrable
  • Reward Distributions
  • Subgraphs
  • Audits

vEPOCH

vEPOCH is the governance token of Epoch Island

PreviousEPOCH-LP (80/20)NextUser Methods

Last updated 1 year ago

Smart Contract Summary

The vEPOCH token lives on Ethereum Mainnet at contract address and has 18 decimals.

The contract went live on Nov 17th 2023, deployed by the EPOCH DAO per a .

vEPOCH is a custom developed token contract that provides better flexibility to liquidity providers and has a straight forward veToken minting that does not reduce over time and can be extended at any time up to the maximum lock duration.

Participating within the requires that users have a balance of Voting Escrow EPOCH (vEPOCH) on Ethereum Mainnet.

vEPOCH cannot be transferred. The only way to obtain vEPOCH is to lock Balancer 80/20 (EPOCH/WETH) LP tokens () for your chosen duration. The maximum lock duration is currently set to 365 days but can be updated at any time via governance.

The can be used to perform most actions found on this page and on-board users to the governance system.

Minting vEPOCH

The only way to mint new vEPOCH tokens is by locking up tokens for some period of time with the . While the LP tokens are locked, they can not be sold or transferred or be able to remove liquidity.

The minimum lock duration is 1 hour.

The maximum lock duration is currently 1 year but can be modified by . Any deposit that has not been locked for max duration can be extended at any time to mint more vEPOCH and be locked longer, up to the max duration.

Every deposit is managed separately and gets its own deposit ID and can be withdrawn at any time.

Locked EPOCH-LP tokens will continue to earn swap fees while they are locked.

Mint Calculation

The total amount of vEPOCH minted is equivalent to total tokens locked times total days locked. The number of vEPOCH minted is hard coded to follow this formula:

Math examples:

  • Locking 5 EPOCH-LP tokens for 100 days = 500 vEPOCH

  • Locking 24 EPOCH-LP tokens for 1 hour = 1 vEPOCH

  • Locking 1,000 EPOCH-LP tokens for 1 year = 365,000 vEPOCH

Burning vEPOCH

Withdrawing EPOCH-LP tokens will burn vEPOCH.

Withdraw

Withdraw Early

When withdrawing early and calling withdrawForfeit, there are no partial amount calculations. If for example you locked EPOCH-LP tokens for 1 year, then received 100 EPOCH reward distribution to this deposit and claimed them, you would need to pay back all 100 EPOCH tokens whether you are withdrawing after 1 day or 1 month since locking or withdrawing only minutes before the stake matures.

This means if a user has never claimed their EPOCH rewards they should have no problems withdrawing when ever they want to: the EPOCH tokens still exist in the contract and there are no tokens that must be paid back from the users wallet. The unclaimed reward tokens would simply stay in the vEPOCH contract.

Forfeited Tokens

This acts like a loyalty reward. Users who leave early forfeit their rewards, they weren't loyal to the terms they agreed to for duration they would remain locked. Users who are actively loyal receive these forfeited tokens as a bonus.

Transferring vEPOCH

It is possible for any user to transfer their deposit and all vEPOCH associated with it by calling transferDepositOwnership method. This sends their deposit, associated vEPOCH, and associated EPOCH-LP tokens ownership to the new address provided.

Non transferrable

The benefit of allowing vEPOCH to be whitelisted is so future contracts not yet developed may need the ability to stake vEPOCH for additional utility. A new proposal could be made to enable a contract to gain whitelisting status to allow vEPOCH staking.

The reason for making vEPOCH non transferrable by default is because the vEPOCH contract requires vEPOCH tokens in the wallet that is attempting to withdraw EPOCH-LP tokens. If no vEPOCH exists in your wallet when attempting to withdraw EPOCH-LP tokens, the EPOCH-LP tokens would be stuck in the contract and you would not be able to withdraw them. Users could make a mistake by transferring or selling vEPOCH tokens from a wallet that has a deposit, and lose access to their deposit. A secondary reason is this also means whales can't buy voting rights without providing liquidity, which helps prevent governance attacks.

Reward Distributions

The vEPOCH contract also facilitates EPOCH reward distributions that are sent proportionally to all vEPOCH holders. Anyone can call the method addRewardTokens at any time to distribute the supplied amount of tokens to all vEPOCH holders, immediately, proportionally.

  • Math example: Alice has 10 vEPOCH. Bob has 90 vEPOCH. These are the only 2 users who have vEPOCH. Someone calls addRewardTokens and supplies 50 EPOCH tokens. Alice will receive 5 EPOCH and Bob will receive 45 EPOCH.

When EPOCH is distributed from calling addRewardTokens, those tokens still exist in the vEPOCH contract and must be manually claimed by each user.

These claimable rewards never expire. There is no time limit on when you must claim your rewards. Once they are associated to your address, the only way these become no longer yours to claim is if you call withdrawForfeit so you can withdraw early which means you have chosen to forfeit those rewards by distributing them to the other vEPOCH holders.

Subgraphs

Moai Labs is currently maintaining a subgraph tracking vEPOCH positions and events. This can be found below.

Network
Subgraph

Mainnet

Sepolia

Audits

Moai Labs facilitated getting 5 different audits completed for the vEPOCH contract:

(tokenAmount∗(11574074074075∗duration))/1e18(tokenAmount * (11574074074075 * duration)) / 1e18(tokenAmount∗(11574074074075∗duration))/1e18

To withdraw after the deposit duration has matured, use the method. You will be able to keep all EPOCH rewards associated with this deposit.

To withdraw before the deposit duration has matured, use the method. You must pay back all EPOCH rewards associated with this deposit for the withdraw to succeed.

When calling , the EPOCH tokens you must forfeit to withdraw early will go to all other vEPOCH holders, as though all of your forfeited tokens were sent directly to the addRewardTokens method immediately after your withdraw completed so that you are not participating in that reward distribution with this deposit.

vEPOCH tokens themselves are currently non-transferrable, but can control which addresses are whitelisted that allow transferring.

0xFoobar: |

Quantstamp: |

Hans Friese: |

Milo Truck: |

WeiChain: |

governance
IPFS upload
epochisland.io upload
IPFS upload
epochisland.io upload
IPFS upload
epochisland.io upload
IPFS upload
epochisland.io upload
IPFS upload
epochisland.io upload
https://thegraph.com/hosted-service/subgraph/moai-labs/upside
https://thegraph.com/hosted-service/subgraph/moai-labs/upside-sepolia
0x731a2572b1cf56cfb804c74555715c8c8b5e980b
snapshot proposal
Vote Escrow
Epoch Island governance structure
EPOCH-LP
Epoch Island Dapp
EPOCH-LP
governance
EPOCH-LP
deposit method
withdraw
withdrawForfeit
withdrawForfeit