The SPAM system has two components:
- An onchain mechanism to track user transactions, calculate rewards per user, and let users mint $SPAM in proportion to the number of txs they sent.
- A web miner for users to easily send lots of transactions automatically, as well as mint and claim $SPAM coins.
Let's dig in at different levels of analysis:
ELI5
- One billion $SPAM coins are minted every day.
- Users earn $SPAM by sending Sui transactions.
- The more txs you send, the more $SPAM you receive.
- There is no proof of work, only proof of spam.
MECHANISM
A Sui "epoch" is roughly equivalent to 1 day.
Users send txs to increase their tx counters during epoch N, register their tx counters during epoch N+1, and mint $SPAM anytime from epoch N+2 based on the spamming they did in epoch N:
- Epoch 0: user spams UserCounter.0 (UC.0)
- Epoch 1: user spams UC.1, registers UC.0
- Epoch 2: user spams UC.2, registers UC.1, claims UC.0
- Epoch 3: user spams UC.3, registers UC.2, claims UC.1
- And so on
IMPLEMENTATION
- Single-writer
UserCounter
objects are used to track the number of txs sent by each user within one epoch. - When that epoch ends, the user registers their
UserCounter
in a shared object, so that the total number of txs in the previous epoch can be calculated. - After that next epoch (registration period) ends, users can mint $SPAM coins in proportion to the number of txs they sent.