MasterWombatV3
contracts/wombat-governance/MasterWombatV3.sol
Title: MasterWombatV3
Notice: MasterWombat is a boss. He is not afraid of any snakes. In fact, he drinks their venoms. So, veWom holders boost their (boosted) emissions. This contract rewards users in function of their amount of lp staked (base pool) factor (boosted pool) Factor and sumOfFactors are updated by contract VeWom.sol after any veWom minting/burning (veERC20Upgradeable hook). Note that it's ownable and the owner wields tremendous power. The ownership will be transferred to a governance smart contract once Wombat is sufficiently distributed and the community can show to govern itself.
Details: Updates: - Compatible with gauge voting
event Add
***MasterWombatV3.Add(pid, lpToken, rewarder) ***
Arguments
name
type
description
pid
uint256
indexed
lpToken
address
indexed
rewarder
address
not indexed
event Deposit
***MasterWombatV3.Deposit(user, pid, amount) ***
Arguments
name
type
description
user
address
indexed
pid
uint256
indexed
amount
uint256
not indexed
event DepositFor
***MasterWombatV3.DepositFor(user, pid, amount) ***
Arguments
name
type
description
user
address
indexed
pid
uint256
indexed
amount
uint256
not indexed
event EmergencyWithdraw
***MasterWombatV3.EmergencyWithdraw(user, pid, amount) ***
Arguments
name
type
description
user
address
indexed
pid
uint256
indexed
amount
uint256
not indexed
event EmergencyWomWithdraw
***MasterWombatV3.EmergencyWomWithdraw(owner, balance) ***
Arguments
name
type
description
owner
address
not indexed
balance
uint256
not indexed
event Harvest
***MasterWombatV3.Harvest(user, pid, amount) ***
Arguments
name
type
description
user
address
indexed
pid
uint256
indexed
amount
uint256
not indexed
event Initialized
***MasterWombatV3.Initialized(version) ***
Details: Triggered when the contract has been initialized or reinitialized.
Arguments
name
type
description
version
uint8
not indexed
event OwnershipTransferred
***MasterWombatV3.OwnershipTransferred(previousOwner, newOwner) ***
Arguments
name
type
description
previousOwner
address
indexed
newOwner
address
indexed
event Paused
***MasterWombatV3.Paused(account) ***
Details: Emitted when the pause is triggered by
account
.
Arguments
name
type
description
account
address
not indexed
event SetRewarder
***MasterWombatV3.SetRewarder(pid, rewarder) ***
Arguments
name
type
description
pid
uint256
indexed
rewarder
address
not indexed
event Unpaused
***MasterWombatV3.Unpaused(account) ***
Details: Emitted when the pause is lifted by
account
.
Arguments
name
type
description
account
address
not indexed
event UpdateEmissionPartition
***MasterWombatV3.UpdateEmissionPartition(user, basePartition, boostedPartition) ***
Arguments
name
type
description
user
address
indexed
basePartition
uint256
not indexed
boostedPartition
uint256
not indexed
event UpdateVeWOM
***MasterWombatV3.UpdateVeWOM(user, oldVeWOM, newVeWOM) ***
Arguments
name
type
description
user
address
indexed
oldVeWOM
address
not indexed
newVeWOM
address
not indexed
event UpdateVoter
***MasterWombatV3.UpdateVoter(user, oldVoter, newVoter) ***
Arguments
name
type
description
user
address
indexed
oldVoter
address
not indexed
newVoter
address
not indexed
event Withdraw
***MasterWombatV3.Withdraw(user, pid, amount) ***
Arguments
name
type
description
user
address
indexed
pid
uint256
indexed
amount
uint256
not indexed
function ACC_TOKEN_PRECISION
MasterWombatV3.ACC_TOKEN_PRECISION() view
Outputs
name
type
description
uint256
function REWARD_DURATION
MasterWombatV3.REWARD_DURATION() view
Outputs
name
type
description
uint256
function add
***MasterWombatV3.add(_lpToken, _rewarder) ***
Notice: Add a new lp to the pool. Can only be called by the owner.
Details: Reverts if the same LP token is added more than once.
Arguments
name
type
description
_lpToken
address
the corresponding lp token
_rewarder
address
the rewarder
function basePartition
MasterWombatV3.basePartition() view
Outputs
name
type
description
uint16
function boostedPartition
MasterWombatV3.boostedPartition() view
Outputs
name
type
description
uint256
function calRewardPerUnit
MasterWombatV3.calRewardPerUnit(_pid) view
Arguments
name
type
description
_pid
uint256
Outputs
name
type
description
accWomPerShare
uint256
accWomPerFactorShare
uint256
function deposit
***MasterWombatV3.deposit(_pid, _amount) ***
Notice: Deposit LP tokens to MasterChef for WOM allocation.
Details: it is possible to call this function with _amount == 0 to claim current rewards
Arguments
name
type
description
_pid
uint256
the pool id
_amount
uint256
amount to deposit
Outputs
name
type
description
reward
uint256
additionalRewards
uint256[]
function depositFor
***MasterWombatV3.depositFor(_pid, _amount, _user) ***
Notice: Deposit LP tokens to MasterChef for WOM allocation on behalf of user
Details: user must initiate transaction from masterchef
Arguments
name
type
description
_pid
uint256
the pool id
_amount
uint256
amount to deposit
_user
address
the user being represented
function emergencyWithdraw
***MasterWombatV3.emergencyWithdraw(_pid) ***
Notice: Withdraw without caring about rewards. EMERGENCY ONLY.
Arguments
name
type
description
_pid
uint256
the pool id
function emergencyWomWithdraw
***MasterWombatV3.emergencyWomWithdraw() ***
Notice: In case we need to manually migrate WOM funds from MasterChef Sends all remaining wom from the contract to the owner
function getAssetPid
MasterWombatV3.getAssetPid(asset) view
Arguments
name
type
description
asset
address
Outputs
name
type
description
uint256
function initialize
***MasterWombatV3.initialize(_wom, _veWom, _voter, _basePartition) ***
Arguments
name
type
description
_wom
address
_veWom
address
_voter
address
_basePartition
uint16
function lastTimeRewardApplicable
MasterWombatV3.lastTimeRewardApplicable(_periodFinish) view
Arguments
name
type
description
_periodFinish
uint256
Outputs
name
type
description
uint256
function massUpdatePools
***MasterWombatV3.massUpdatePools() ***
Notice: Update reward variables for all pools.
Details: Be careful of gas spending!
function migrate
***MasterWombatV3.migrate(_pids) ***
Notice: Helper function to migrate fund from multiple pools to the new MasterWombat.user must initiate transaction from masterchef
Details: Assume the orginal MasterWombat has stopped emisions hence we skip IVoter(voter).distribute() to save gas cost
Arguments
name
type
description
_pids
uint256[]
function multiClaim
***MasterWombatV3.multiClaim(_pids) ***
Notice: claims rewards for multiple pids
Arguments
name
type
description
_pids
uint256[]
array pids, pools to claim
Outputs
name
type
description
reward
uint256
amounts
uint256[]
additionalRewards
uint256[][]
function notifyRewardAmount
***MasterWombatV3.notifyRewardAmount(_lpToken, _amount) ***
Notice: Distribute WOM over a period of 7 days
Details: Refer to synthetix/StakingRewards.sol notifyRewardAmount Note: This looks safe from reentrancy.
Arguments
name
type
description
_lpToken
address
_amount
uint256
function owner
MasterWombatV3.owner() view
Details: Returns the address of the current owner.
Outputs
name
type
description
address
function pause
***MasterWombatV3.pause() ***
Details: pause pool, restricting certain operations
function paused
MasterWombatV3.paused() view
Details: Returns true if the contract is paused, and false otherwise.
Outputs
name
type
description
bool
function pendingTokens
MasterWombatV3.pendingTokens(_pid, _user) view
Notice: View function to see pending WOMs on frontend.
Arguments
name
type
description
_pid
uint256
the pool id
_user
address
the user address
Outputs
name
type
description
pendingRewards
uint256
bonusTokenAddresses
address[]
bonusTokenSymbols
string[]
pendingBonusRewards
uint256[]
function poolInfo
MasterWombatV3.poolInfo(_pid) view
Notice: [Deprecated] A backward compatible function to return the PoolInfo struct in MasterWombatV2
Arguments
name
type
description
_pid
uint256
Outputs
name
type
description
lpToken
address
allocPoint
uint96
rewarder
address
sumOfFactors
uint256
accWomPerShare
uint104
accWomPerFactorShare
uint104
lastRewardTimestamp
uint40
function poolInfoV3
MasterWombatV3.poolInfoV3() view
Arguments
name
type
description
uint256
Outputs
name
type
description
lpToken
address
rewarder
address
periodFinish
uint40
sumOfFactors
uint128
rewardRate
uint128
accWomPerShare
uint104
accWomPerFactorShare
uint104
lastRewardTimestamp
uint40
function poolLength
MasterWombatV3.poolLength() view
Notice: returns pool length
Outputs
name
type
description
uint256
function renounceOwnership
***MasterWombatV3.renounceOwnership() ***
Details: Leaves the contract without owner. It will not be possible to call
onlyOwner
functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.
function rewarderBonusTokenInfo
MasterWombatV3.rewarderBonusTokenInfo(_pid) view
Notice: Get bonus token info from the rewarder contract for a given pool, if it is a double reward farm
Arguments
name
type
description
_pid
uint256
the pool id
Outputs
name
type
description
bonusTokenAddresses
address[]
bonusTokenSymbols
string[]
function setNewMasterWombat
***MasterWombatV3.setNewMasterWombat(_newMasterWombat) ***
Arguments
name
type
description
_newMasterWombat
address
function setRewarder
***MasterWombatV3.setRewarder(_pid, _rewarder) ***
Notice: Update the given pool's rewarder
Arguments
name
type
description
_pid
uint256
the pool id
_rewarder
address
the rewarder
function setVeWom
***MasterWombatV3.setVeWom(_newVeWom) ***
Notice: updates veWom address
Arguments
name
type
description
_newVeWom
address
the new VeWom address
function setVoter
***MasterWombatV3.setVoter(_newVoter) ***
Notice: updates voter address
Arguments
name
type
description
_newVoter
address
the new Voter address
function transferOwnership
***MasterWombatV3.transferOwnership(newOwner) ***
Details: Transfers ownership of the contract to a new account (
newOwner
). Can only be called by the current owner.
Arguments
name
type
description
newOwner
address
function unpause
***MasterWombatV3.unpause() ***
Details: unpause pool, enabling certain operations
function updateEmissionPartition
***MasterWombatV3.updateEmissionPartition(_basePartition) ***
Notice: updates emission partition
Arguments
name
type
description
_basePartition
uint16
the future base partition
function updateFactor
***MasterWombatV3.updateFactor(_user, _newVeWomBalance) ***
Notice: updates factor after any veWom token operation (minting/burning)
Details: can only be called by veWom
Arguments
name
type
description
_user
address
the user to update
_newVeWomBalance
uint256
the amount of veWOM
function updatePool
***MasterWombatV3.updatePool(_pid) ***
Notice: Update reward variables of the given pool
Arguments
name
type
description
_pid
uint256
the pool id
function userInfo
MasterWombatV3.userInfo(, ) view
Arguments
name
type
description
uint256
address
Outputs
name
type
description
amount
uint128
factor
uint128
rewardDebt
uint128
pendingWom
uint128
function veWom
MasterWombatV3.veWom() view
Outputs
name
type
description
address
function voter
MasterWombatV3.voter() view
Outputs
name
type
description
address
function withdraw
***MasterWombatV3.withdraw(_pid, _amount) ***
Notice: Withdraw LP tokens from MasterWombat.Automatically harvest pending rewards and sends to user
Arguments
name
type
description
_pid
uint256
the pool id
_amount
uint256
the amount to withdraw
Outputs
name
type
description
reward
uint256
additionalRewards
uint256[]
function wom
MasterWombatV3.wom() view
Outputs
name
type
description
address
Last updated