PPK Rewards

The payout of the rewards, although seemingly straight forward, presented us with a problem. The intuitive way was to pay the reward in $SNK. The same $SNK that were used for Minting or resurrecting and that were allocated for PPK Rewards. However, this meant that if a Snooker Killed a snook that was Minted when the value of $SNK was lower than it is at the time that he claimed the reward, he would get more $SNK which would be worth more. An example would illustrate:
  • Say that a snook was Killed. Let’s say that at the time of its Minting, 1 $SNK was worth $1USD.
  • That means that its PPK allocation and reward should be 0.12 $SNK (which at the time of Minting were worth $ 0.15USD).
  • Now imagine a scenario in which at the time the Snooker who Killed that snook claims the PPK Reward 1 $SNK is worth $10USD. Those 0.15 $SNK would then be worth $1.5USD.
Although this may be confusing to some, this is not necessarily a problem. The value of $SNK could go up or down and being paid in $SNK, based on the amount of SNK that were allocated at the time of the Minting, would reflect those changes.
Nevertheless, this approach is less practical for two reasons. The first is that it brings up complicated implementation issues. We would need to track every Mint and be able to match the exact amount of SNK allocated for that Mint as the claimable reward. It would make the Treasury very complex, and we try to avoid complexity, especially in reward systems. It would be a lot simpler to mix all the PPK allocations in one pot. The second problem is, as we briefly mentioned and exemplified above, that the payout could be quite widely spread, depending on the $SNK to USD exchange rate. We suspect it would be confusing to explain, especially to new Snookers, why one Kill yielded a reward worth 5 cents while another yielded a reward worth 5 dollars.
We could theoretically pay the PPK Rewards in USDC, but that would expose the Treasury to a potential deficit and that’s not happening (we’re not a hedge fund, we just wanna play).
We came up with a solution that is simple to implement, does not incur potentially high gas costs when interacting with the Mint contract, and ensures the Treasury doesn't run a deficit:
  • All the PPK allocations in the Treasury – mixed.
  • A local average is calculated every time there’s a PPK Reward claim
Here’s how the local average calculation is done:
  1. 1.
    The PPK contract keeps track of two numbers:
    • The number of Mints with a snook Population Counter (sPC)
    • The total amount allocated for PPK rewards with a Pot Counter (PC)
  2. 2.
    Every time a snook is Minted, or resurrected the PPK contract adds 1 to the sPC and adds the $SNK amount allocated to the PC
  3. 3.
    When a snooker makes a claim, after it is verified as valid, the contract:
    • Calculates the PPK Reward per snook Killed, by dividing the amount kept in the PC by the snook population kept in the sPC (that’s the local average).
    • It then multiplies that amount by the number of snooks the snooker is claiming for.
    • It then subtracts the number of snooks the Snooker is claiming for, from the sPC.
    • And finally, it subtracts the paid amount from the PC...
That way the PPK rewards’ Pot has an amount that is always proportional to the (Killable) snook population size captured in the sPC. We also address two other cases:
  1. 1.
    Dying at the wall
    In this case the sPC will subtract 1 because a snook is out of circulation. The PC will remain unchanged. Effectively it means that dying without a Killer will slightly increase the rewards for whomever claims (posthumously).
  2. 2.
    It’s a rebirth and there’s a Killable snook back in circulation, which is why that snook will be recounted in the sPC. Also, there’s an allocation from the Resurrection fees toward the PPK Rewards and so that amount will be added to the PC.
Below is an example using random simulated data:
The graph on the left is based on synthetic data (various Rand functions) and simulated analysis. It was not designed to replicate real value., only to show the relationship between the Killable snook population and the average PPK Reward.
The horizontal (X) axis is in days. The right vertical (Y) axis is in currency, and the left vertical (Y) axis is an integer counter. The yellow line (orange data points) shows the growth in the Killable snook population according to the sPC over time. The purple line (dark purple data points) shows the fairly stable PPK Reward allocation per snook Killed.
Below is the synthetic data and simulated analysis we used: