Skip to content

Commit

Permalink
fix: hh staked tasks against stkBPT
Browse files Browse the repository at this point in the history
chore: added more info and better formatting of staked-snap hh task
feat: added staked-time hh task
  • Loading branch information
naddison36 committed Jan 12, 2022
1 parent 544ec8c commit d27fefe
Showing 1 changed file with 37 additions and 18 deletions.
55 changes: 37 additions & 18 deletions tasks/stakingV2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,27 +17,31 @@ subtask("staked-snap", "Dumps a user's staking token details.")

const userAddress = resolveAddress(taskArgs.user, chain)

const tokenType = taskArgs.asset === "MTA" ? "vault" : "address"
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, tokenType)
const stakingToken = StakedToken__factory.connect(stakingTokenAddress, signer)
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, "vault")
const stakingToken = StakedTokenBPT__factory.connect(stakingTokenAddress, signer)

const [rawBalance, cooldownBalance] = await stakingToken.rawBalanceOf(userAddress)
const boostedBalance = await stakingToken.balanceOf(userAddress)
const votes = await stakingToken.getVotes(userAddress)
const delegatedVotes = votes.sub(boostedBalance)
const effectiveMultiplier = rawBalance.gt(0) ? boostedBalance.mul(10000).div(rawBalance) : BN.from(0)
const balanceData = await stakingToken.balanceData(userAddress)
const delegatee = await stakingToken.delegates(userAddress)
const priceCoeff = taskArgs.asset === "MTA" ? BN.from(10000) : await stakingToken.priceCoefficient()

console.log(`Raw balance ${usdFormatter(rawBalance)}`)
console.log(`Boosted balance ${usdFormatter(boostedBalance)}`)
console.log(`Delegated votes ${usdFormatter(delegatedVotes)}`)
console.log(`Cooldown balance ${usdFormatter(cooldownBalance)}`)
console.log(`Voting power ${usdFormatter(votes)}`)
console.log(`Cooldown balance ${usdFormatter(cooldownBalance)} ${cooldownBalance.toString()}`)
console.log(`Effective multiplier ${formatUnits(effectiveMultiplier, 2).padStart(14)}`)

const balanceData = await stakingToken.balanceData(userAddress)

// Multipliers
console.log("\nMultipliers")
console.log(`Time ${balanceData.timeMultiplier.toString().padStart(2)}`)
console.log(`Quest ${balanceData.questMultiplier.toString().padStart(2)}`)
console.log(`Time ${formatUnits(balanceData.timeMultiplier + 100, 2)}`)
console.log(`Quest ${formatUnits(balanceData.questMultiplier + 100, 2)}`)
console.log(`MTA Price coefficient ${formatUnits(priceCoeff, 4)}`)
console.log(`Effective multiplier ${formatUnits(effectiveMultiplier, 4)}`)

if (balanceData.cooldownTimestamp > 0) {
const cooldownEnds = balanceData.cooldownTimestamp + ONE_WEEK.mul(3).toNumber()
Expand All @@ -60,8 +64,7 @@ subtask("staked-stake", "Stake MTA or mBPT in V2 Staking Token")
const signer = await getSigner(hre, taskArgs.speed, false)
const chain = getChain(hre)

const tokenType = taskArgs.asset === "MTA" ? "vault" : "address"
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, tokenType)
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, "vault")
const stakingToken = StakedToken__factory.connect(stakingTokenAddress, signer)
const stakeAmount = simpleToExactAmount(taskArgs.amount)
let tx
Expand All @@ -85,8 +88,7 @@ subtask("staked-cooldown-start", "Start cooldown of V2 staking token")
const signer = await getSigner(hre, taskArgs.speed, false)
const chain = getChain(hre)

const tokenType = taskArgs.asset === "MTA" ? "vault" : "address"
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, tokenType)
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, "vault")
const stakingToken = StakedToken__factory.connect(stakingTokenAddress, signer)
const cooldownAmount = simpleToExactAmount(taskArgs.amount)
const tx = await stakingToken.startCooldown(cooldownAmount)
Expand All @@ -104,8 +106,7 @@ subtask("staked-cooldown-end", "End cooldown of V2 staking token")
const signer = await getSigner(hre, taskArgs.speed, false)
const chain = getChain(hre)

const tokenType = taskArgs.asset === "MTA" ? "vault" : "address"
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, tokenType)
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, "vault")
const stakingToken = StakedToken__factory.connect(stakingTokenAddress, signer)
const tx = await stakingToken.endCooldown()

Expand Down Expand Up @@ -136,8 +137,7 @@ subtask("staked-withdraw", "Withdraw MTA or mBPT in V2 Staking Token")
const signer = await getSigner(hre, taskArgs.speed, false)
const chain = getChain(hre)

const tokenType = taskArgs.asset === "MTA" ? "vault" : "address"
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, tokenType)
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, "vault")
const stakingToken = StakedToken__factory.connect(stakingTokenAddress, signer)
const withdrawAmount = simpleToExactAmount(taskArgs.amount)
const recipientAddress = taskArgs.recipient ? resolveAddress(taskArgs.recipient, chain) : await signer.getAddress()
Expand Down Expand Up @@ -195,8 +195,7 @@ subtask("staked-delegate", "Delegate V2 Staking Tokens")
const signer = await getSigner(hre, taskArgs.speed, false)
const chain = getChain(hre)

const tokenType = taskArgs.asset === "MTA" ? "vault" : "address"
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, tokenType)
const stakingTokenAddress = resolveAddress(taskArgs.asset, chain, "vault")
const stakingToken = StakedToken__factory.connect(stakingTokenAddress, signer)
const delegateAddress = resolveAddress(taskArgs.delegate, chain)
const tx = await stakingToken.delegate(delegateAddress)
Expand Down Expand Up @@ -256,3 +255,23 @@ subtask("staked-fees", "Converts fees accrued in BPT to MTA, before depositing t
task("staked-fees").setAction(async (_, __, runSuper) => {
await runSuper()
})

subtask("staked-time", "Updates a user's time multiplier.")
.addParam("user", "Address or contract name of user", undefined, types.string)
.addOptionalParam("asset", "Symbol of staking token. MTA or mBPT", "MTA", types.string)
.addOptionalParam("speed", "Defender Relayer speed param: 'safeLow' | 'average' | 'fast' | 'fastest'", "average", types.string)
.setAction(async (taskArgs, hre) => {
const signer = await getSigner(hre, taskArgs.speed, false)
const chain = getChain(hre)

const stakingTokenAddress = resolveAddress("MTA", chain, "vault")
const stakingToken = StakedToken__factory.connect(stakingTokenAddress, signer)

const userAddress = resolveAddress(taskArgs.user, chain)

const tx = await stakingToken.reviewTimestamp(userAddress)
await logTxDetails(tx, `update time multiplier`)
})
task("staked-time").setAction(async (_, __, runSuper) => {
await runSuper()
})

0 comments on commit d27fefe

Please sign in to comment.