Governance & Crosschain

InterestRate Ballot

InterestRateBallot.cast(uint256 weight)

Cast vote for the numerical value of the relative income percentage in Bishop NAV. weight is a number that should not exceed 1e18, representing 100%. To calculate the voting power the user, the function will synchronize its lock position with VotingEscrow contract.

Controller Ballot

ControllerBallot.cast(uint256[] weights)

Cast a distribution of the user’s current voting power across all valid Tranchess funds, liquidity pools. and other eligible reward receivers. weights is an array of numbers that should sum up to 1e18, representing 100%. To calculate the voting power the user, the function will synchronize its lock position with VotingEscrow contract.

VotingEscrow

This contract handles the main logic for creation, redemption and balance calculation of the vote-lock CHESS token veCHESS. vecCHESS is the governance token in Tranchess ecosystem. Users should lock up their CHESS token for a specified period of time in exchange for veCHESS. The balance of veCHESS diminishes linearly with respect to time for all users alike.

Depositing/withdrawing veCHESS

VotingEscrow.createLock(uint256 amount, uint256 unlockTime)

Create a vote-lock position of amount CHESS expired at unlockTime. Note that the unlockTime must be at the end of a future week but cannot exceed the maximal allowed lock time maxTimeAllowed.

VotingEscrow.increaseAmount(address account, uint256 amount)

Increase the number of CHESS of an existing vote-lock position. Note that you cannot call increaseAmount upon an expired position; you will have to withdraw the previous position and use createLock to create a new position.

VotingEscrow.increaseUnlockTime(uint256 unlockTime)

Extend the expiration date of an existing vote-lock position. Note that you cannot call increaseAmount upon an expired position; you will have to withdraw the previous position and use createLock to create a new position.

VotingEscrow.withdraw()

Withdraw CHESS locked in expired positions.

veCHESS Crosschain

VotingEscrow.veChessCrossChain(uint256 amount, uint256 toChainID)

Transfer veCHESS to the VotingEscrow on another chain specified by toChainID using Multichain’s AnyCall infrastructure. User should pay cross-chain fee in native currency (e.g. ETH on Ethereum) when calling this function. Exact fee amount can be queried from the AnyCall proxy contract, i.e. IAnyCallV6Proxy(thisContract.anyCallProxy()).calcSrcFees(thisContract, toChainID, 96).

Last updated