๐Ÿšซ๐Ÿšซ SPAM: HOW IT WORKS โš™๏ธโš™๏ธ

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.