9 min read7 sections
Rewards for P2P makers
How Saturn scores the people and bots who keep P2P offers close to the reference price, and how payouts from P2P fees are made.
Open the Makers tabIn shortEach week Saturn scores every P2P maker by the USD its own balances cover in RA and TAZ offers within 5% of the reference price, times the hours those offers are online, adjusted for how reliably it accepts takes and locks. Trading volume never counts. Saturn computes and publishes the scores; where automatic payouts are on, a rewards wallet the owner funds pays them in USDC on Base once it holds a week's whole total, and elsewhere the owner decides any payout and pays it from P2P fees.
- Score
- depth near the reference price × time online
- Volume
- never counts
- Week
- Monday to Monday, UTC
- Paid by
- a rewards wallet the owner funds, where automatic payouts are on; otherwise the owner
Saturn runs no market maker of its own. Every offer on the P2P market comes from a person, or from a bot someone runs with their own keys. Each week Saturn scores those makers by how much they keep on offer close to the reference price, covered by their own balances, and for how long. Saturn computes and publishes the scores. On networks where automatic payouts are on, a rewards wallet that the owner funds pays each week's shares in USDC on Base once it holds the week's whole total, after a waiting period in which the owner can hold the week; elsewhere the owner decides any payout and pays it from P2P fees. Payouts are listed with their transactions.
A score is not a promise of any payment. Where automatic payouts are on, a week is paid only once the owner has funded the rewards wallet with its whole total and has not held the week; the owner may also leave out a maker or close a week unpaid. Elsewhere the owner decides whether anything is paid for a week, and how much.
How a score is made
Every minute, each live offer of RA or TAZ within 5% of the reference price counts with the USD that its maker's balance covers: in full at the reference price, less the further away it is, and nothing at 5% away. Added up over the week, that is the maker's score, in USD-hours: $100 kept on offer at the reference price for 10 hours scores 1,000. Offers of SOUL and KCAL are not scored.
- Only what balances cover counts: USDC on Base behind offers to buy, the token on Phantasma behind offers to sell. The same USDC counts only once across all of a maker's offers to buy, and tokens already promised to an accepted take do not count again.
- Only offers that could be taken right now count. A maker paused for no-shows counts nothing, and neither does an offer that follows the reference price while it is paused.
- Hours online are the minutes in which at least one of the maker's offers counted, divided by 60. An offer stays listed only while its page or bot keeps it alive, so time online is time the maker was there to accept takes.
- Trading volume never counts. Neither the size nor the number of trades is part of a score, so trading with yourself earns nothing.
Quality: accepting takes and locking on time
A score is multiplied by its quality, a figure from 0 to 1: the maker's accept rate squared, then 25% less for each of its no-shows in the week.
- The accept rate is the share of takes on the maker's offers that reached a lock (honored takes). Declining a take or leaving it unanswered lowers it, and so does accepting a take on an offer to sell and then not locking. Squaring makes a low rate cost more: an accept rate of 90% gives a quality of 0.81, one of 50% gives 0.25. A maker with no takes has an accept rate of 1.
- Some takes are left out of the accept rate: those where the taker missed its own step in time (a taker no-show); those on an offer to sell whose lock something outside the maker's control made impossible, such as the buyer's USDC leaving its address; and takes from the offer's own API key or from the same network address as the offer (the same IPv4 address, or the same IPv6 /64), whatever API key they use. Those count as the maker's own: they are left out of its takes, honored takes, accept rate and the no-shows of its score, and out of the 24-hour check that decides whether its offers count in P2P depth, so a second key on the same machine cannot raise a rate. A lock the maker misses on one still counts toward the pause for 3 no-shows in 24 hours. Takes from someone else behind the same address (an office, or a mobile network's shared address) are left out too. Only takes on offers of proven address pairs count (see Who is eligible).
- A no-show is a trade where the maker had to lock next and did not, in time: on an offer to sell, the token lock after its accept (unless something outside its control made it impossible); on an offer to buy, the USDC lock after the seller's. Each one cuts quality by 25%, so four in a week bring it to 0. A taker's no-show changes nothing for the maker.
- A maker who had at least 2 takes in the last 24 hours and honored fewer than 4 in 5 of them counts nothing at all for as long as that holds: its offers count 0 in P2P depth, and so in its score.
Who is eligible
- Scores are kept per Base address: the address an offer to sell is paid to, or the address an offer to buy pays from.
- An offer counts only when a completed trade has used its exact pair of addresses, Phantasma and Base, in the same role. Anyone can type someone else's addresses into an offer, but only the people who signed a completed trade's locks chose that pair. So naming another person's funded addresses scores nothing.
- A maker has a share only once its Base address has completed a trade as a maker (paid there on an offer to sell, or paying from there on an offer to buy), by the end of the week. Until then its score is shown, and its share is 0.
Shares, weeks and payment
- An eligible maker's share is its score × quality, divided by the total of that figure for every maker. Splitting offers across several addresses changes nothing, because shares are proportional.
- A week runs from Monday 00:00 UTC to the next Monday 00:00 UTC. The scores update every few minutes for each hour that has ended, and a week is final an hour after it ends. Final figures never change.
- Each week also shows the P2P fees of the trades that finished in it and, when the owner has set one, a reward pool: the share of those fees the owner offers to makers. Where automatic payouts are on, the rewards wallet pays it out, at most the owner's cap for a week, once the owner has funded the wallet; elsewhere it is a suggestion, not a promise.
- Where automatic payouts are on: an hour after the week ends its figures are final, and its planned payouts are published, each eligible maker's share of the pool rounded down to the smallest USDC unit (0.000001 USDC). Amounts under the minimum, 0.10 USDC by default, are not sent. Payment waits 24 hours by default, so the owner can review the plan, hold the week or leave out a maker. Then, once the rewards wallet holds the week's whole total, it sends each maker its amount in USDC on Base, one transaction per maker, and the Makers tab links each transaction. A week waits while the wallet holds less than its whole total; it is never paid in part to fit. What is not paid out stays in the rewards wallet.
- Where automatic payouts are off, nothing changes. The owner pays by hand, in USDC on Base, to each maker's Base address, from the fees the P2P market has collected, and records each payment. The Makers tab then lists it under that maker with a link to its transaction.
- When the keeper's gas top-up is on, it is paid from the same P2P fees, up to 25 USDC a day.
- Saturn itself never posts offers or trades, so it scores nobody of its own.
| An example week | Maker A | Maker B |
|---|---|---|
| Offers | $500 of TAZ to sell, at the reference price | $1,000 of RA to buy, 2% under it |
| Weight at that price | 1 | 0.6 |
| Online | 40 hours | 40 hours |
| Score | 20,000 USD-hours | 24,000 USD-hours |
| Takes honored | all of them | 9 of 10 |
| Quality | 1 | 0.81 |
| Score × quality | 20,000 | 19,440 |
| Share | 50.7% | 49.3% |
Why tricks score nothing
- Wash trades earn nothing, because volume is not part of a score.
- Offers no balance covers, and offers that name someone else's addresses, count 0.
- Takes from your own API key or from your own network address, with any key, are left out of your accept rate and the no-shows your quality counts, and every decline, unanswered take or missed lock lowers your quality.
- Splitting across addresses gains nothing, because shares are proportional.
- Each maker's takes, honored takes and no-shows are published beside its score, and a week's planned payouts are published before they are sent, so the owner can review them, hold the week or leave out a maker.
Where to see the scores
The Makers tab of the P2P page shows the week you pick: each maker's Base address, score in USD-hours, share, hours online, average depth, accept rate, no-shows, whether it is eligible, and what was paid, the planned payout and its status. Your own Base address is highlighted. Programs read the same figures at https://apiops.saturnx.cc/v1/p2p/rewards, with the weeks at https://apiops.saturnx.cc/v1/p2p/rewards/epochs, as the P2P guide for programs explains (https://apiops.saturnx.cc/llms/p2p.txt).
P2P is open on devnet only for now, so the scores there are for trying the market out, counted in test tokens and test fees.