Can I reuse my staking address to stake again?
No. 1 address = 1 staker.
Once an address has staked, it cannot stake again, even after your staking period(s) are over.
How much BOOTY will I get?
The amount of BOOTY generated depends on how many fees are paid to the SpankBank each period.
Every month, all the fees that SpankChain collects will get sent as BOOTY to the SpankBank to be counted and burned (eliminated from the total supply). At the beginning of each new period, the SpankBank will issue new BOOTY only if the total BOOTY supply is less than the target BOOTY supply, which is 20x the previous period’s fees.
If there are 20,000 total BOOTY in circulation, and in a given period 20,000 BOOTY is transacted on the SpankChain camsite (some BOOTY would be re-used and spent multiple times), we would take our 5% cut (1,000 BOOTY), and send it to SpankBank where it would be counted and burned, leaving only 19,000 BOOTY remaining. The target supply would then be 20 x 1,000 BOOTY in fees= 20,000 BOOTY, and so 1,000 new BOOTY would be minted to get from 19,000 to 20,000 BOOTY and it would be distributed to all SPANK stakers proportional to their SpankPoints.
How do SpankPoints work?
Stakers are rewarded with extra BOOTY for staking for additional periods. The SpankPoints for each staker are calculated as the amount of SPANK staked multiplied by the staking factor. The staking factor ranges linearly from 100% if staking for the maximum length of 12 periods, to 45% for staking the minimum length of 1 period. So 50% for 2 periods, 55% for 3 periods, etc…
So let’s say there are only two stakers, Alice and Bob, each with 100 SPANK staked. Alice stakes for 12 periods while Bob stakes for only 2. This means Alice has 100 SPANK * 100% = 100 SpankPoints, and Bob has 100 SPANK * 50% = 50 SpankPoints. Now, Alice and Bob would each receive BOOTY equal to their fraction of the total SpankPoints for the period. The total SpankPoints would be 100 Alice + 50 Bob = 150 total. If we plug this into our last example and distribute the 1,000 newly minted BOOTY among these two stakers, Alice would receive (100 / 150) * 1,000 = ~667 BOOTY and Bob would receive (50 / 150) * 1,000 = ~333 BOOTY.
What else can I do in the SpankBank?
The SpankBank has several other features, which we explain in detail in the documentation, but will cover briefly here:
- checkIn — Used by stakers to establish their eligibility for receiving BOOTY for the next period. Can also optionally extend the staker’s ending period.
- claimBooty — Used by stakers to withdraw their share of the BOOTY minted for a previous period.
- withdrawStake — Used by stakers to withdraw their staked SPANK after their stake’s ending period has passed or after the SpankBank has been closed via
- splitStake — Used by stakers to transfer some of their staked SPANK (up to 100%) to a new address. Can only be called before the staker checks in for a period.
- voteToClose — Used by stakers to close the SpankBank and be able to withdraw early (e.g. in case of catastrophic bug or planned upgrade). If stakers accounting for more than 50% of the staked SPANK call
voteToClosein the same period, the SpankBank will immediately transition to a "closed" state and allow stakers to withdraw early.
- updateDelegateKey — Used by a staker to update the
delegateKeyaccount which they use to
- updateBootyBase — Used by a staker to update the
bootyBaseaccount at which they receive the BOOTY they claim.
Once we upgrade the SpankBank Explorer UI we’ll create a follow up guide with screenshots to explain how to use each of these features.
What if this all goes horribly wrong?
So in the absolute worst case scenario, where staked SPANK from the SpankBank are somehow stolen or frozen, we would have to “hard-fork” our own SPANK ERC20 token. We would immediately contact all exchanges to let them know to stop all SPANK trading to limit any potential upside for an attacker in selling to unknowing buyers. Then we would migrate to a new SPANK ERC20 contract and airdrop to a snapshot of balances, deploy a new SpankBank, and start sending fees to that.
This would be a massive coordination headache, but ultimately the migration cost isn’t that high, we’re confident that the codebase has been thoroughly tested, and the upside for an attack is limited enough that it probably makes more sense to just let us know. So I’m not that worried about this scenario.
In the less bad scenario where we discover a critical bug, but no funds have been stolen or frozen yet, we would vote with our staked SPANK to close the SpankBank, and all stakers would immediately be able to withdraw their stakes. Then we would redeploy a new SpankBank, but wouldn’t have to hard-fork the SPANK ERC20 token.