SpankBank v2 Upgrade Plan


The SpankBank, launched in 2018, has been operating as intended and delivering community rewards to SPANK stakers for several years. However, recent sustained spikes in Ethereum gas fees have rendered it unsustainable in its current form. It doesn’t make sense for every staker to pay $5-10 in fees for each check-in, BOOTY claim, and BOOTY redemption. While we previously announced our plans to migrate the SpankBank to xDAI, that isn’t optimal due to cross-chain transfer fees. We now propose to a hybrid system which maintains most of the core functionality of the SpankBank system, but attempts to minimize fees incurred.

Last week we submitted an initial draft of this document for community review, and given the unanimous approval, we are moving forward!

Upgrade Summary

  • We will keep the SpankBank contract on Ethereum mainnet as is and use it for staking.
  • We will retire the BOOTY token & burning mechanism. If you have BOOTY, please send it to 0x86e3EF2DbDFd238BDC160fA9Db9215E459Ab95da and DM @nh2 in discord to redeem.
  • Instead of buying & burning BOOTY, we do quarterly (3mo) DAI airdrops to stakers, like how we did UNI. The amount of DAI airdropped is still based on our earnings across all products, the same as how we calculated the BOOTY burn amount before.
  • The staker airdrops will still require the staker to claim, but only once every 3 months.
  • Unclaimed airdrop earnings will be rolled into the next airdrop perpetually.
  • The first airdrop will be April 1st, and future airdrops on each 1st month of the quarter (July 1st, Oct 1st, Jan 1st…). Note, we skipped the BOOTY burn for January given the community decision to move forward with this upgrade.
  • Airdrops will enforce a minimum claim amount, similar to how we did for UNI. We have not decided on the cutoff yet, but it’s likely to be around $20. That means all staker rewards below $20 would be redistributed proportionally to the other stakers for that quarter. 
  • Spank will also provide more detailed financial reporting on a quarterly basis.

Rewards Accounting

  • To eliminate check-ins, we want to let stakers “set it and forget it”, and just claim every quarter.
  • To preserved the current incentive for community members to stake SPANK, we’ll keep the SpankPoints calculation as is (for more info, check the spankpoints documentation).
  • However, we’ll move away from the following SpankBank v1 rewards accounting:

  • In order to earn the maximum BOOTY, a staker would need to stake for 12 periods, and then opt to extend their stake by 1 period during every check in.

  • If a staker stakes for 12 periods but doesn't opt to extend their stake during check ins, they would receive 100% of the BOOTY for the first period, 95% for the second period, and so forth until they receive 45% during the final period.

  • Instead, if you stake for the maximum of 12 months, you’ll receive rewards at the 12 month rate (100%) in each quarter that your stake is active. You will not need to extend your stake by 1 month every month in order to max out your rewards.

Staking Periods

We are choosing to keep the SpankBank contract as-is, and so we will have to work around one of the idiosyncratic aspects of it, which is “staking periods”. When a user stakes, they choose how many 30-day periods to stake (min 1, max 12), and their SPANK gets locked in the contract until the end of the final staking period. As of this writing, the current period ends and the next period starts on 2/21/2021 @ 4:12 AM PST, so staking (or checking in and extending your stake) for 12 periods anytime before that would lock the user’s SPANK in for 360 days starting on 2/21/2021, in addition to however much time there is from the time they stake until 2/21/2021.

In the SpankBank v2, the periods will still affect when you can withdraw your stake, but we will ignore periods for the purposes of rewards accounting. To make things easier on stakers, your stake will be considered “active” as soon as you hit stake and lock in your SPANK, and continue to be considered “active” until the day your stake expires and you are eligible to withdraw, which would be the last day of the final staking period. 

So long as your stake is “active” for even 1 day of the quarter, you would be eligible to receive rewards for that quarter. Here are a few examples:
  • You stake for 12 periods (360 days) on Jan 1st 2021, and the next period starts 1/21/2021 - you are eligible for Q1-Q4 2021 rewards, and because your stake expires on 1/16/2022 you would be eligible for Q1 2022 rewards as well. In each quarter you receive rewards, your SpankPoints would be calculated based on your staking 12 periods (SpankPoints = 100% * staked SPANK). 
  • You stake for 11 periods (330 days) on Jan 1st 2021, and the next period starts 1/21/2021 - you are eligible for Q1-Q4 2021 rewards, but because your stake expires on 12/16/2022 you would not be eligible for Q1 2022 rewards. In each quarter you receive rewards, your SpankPoints would be calculated based on your staking 11 periods (SpankPoints = 95% * staked SPANK). 

So to make this concrete, the last day to stake and be eligible for the inaugural April 1st, 2021 staker airdrop would be March 31st, 2021, before 11:59 PM PST.

Multiple Stakes

Another aspect of the SpankBank is that it doesn’t allow users to have multiple stakes from the same Ethereum address, nor does it allow users to add to their existing stakes. To work around some of this limitation, users can edit their “Booty address”—the destination for their rewards—in their staker profile from each of their stakes to the same address, and then only claim from that address each quarter. By default, the Booty address is set to whatever the staker’s address is.

With the above updates, the only remaining reason to check-in would be to avoid having a stake expire and being forced to stake again from a different address (because 1 stake per address rule). Instead, you could check-in and extend your stake, and thus keep the same staking address.

Next Steps

Prior to April 1st, we will update the SpankBank UI to inform stakers of the updates above, and allow them to claim their rewards. We will also prepare snapshot scripts and a means of deploying the rewards contracts. Ideally we’ll automate as much of this process as possible so we can execute it quarterly with minimal overhead.