How a round works
- Signal. The keeper takes the 20 most profitable traders on Perpl over the last 30 days and reads their open positions directly from Perpl's exchange contract on Monad mainnet, all at one block. If they hold more long than short, smart money is LONG; otherwise SHORT. The full list is written on-chain with the round.
- Betting. You bet that smart money is right or wrong. Betting closes when the round starts, so nobody can bet after the start price is known.
- Start and end price. At the start and end, anyone can call the contract to snapshot the price. The contract reads it from Perpl's on-chain oracle (Chainlink Data Streams) itself. Nobody, not even the keeper, can type in a price.
- Payout. If the price moved the way smart money was positioned, "right" wins, otherwise "wrong" wins. Winners split the whole pool in proportion to their stake. A 2% fee is taken from the losing side only, so a winner never gets back less than they put in. If nobody bet on one side, or the price did not move, everyone is refunded.
- Claim. Payouts are pulled: press Claim when a round settles. Unclaimed winnings stay claimable for 90 days.
What you do not have to trust
- Prices come from an immutable oracle address; the owner cannot swap it.
- Anyone can lock and settle a round; if nobody does within 20 minutes, anyone can void it and everyone is refunded.
- The keeper cannot cancel a round once it has started and never touches funds.
- Each round's trader list and positions are published on-chain and can be re-checked against Perpl.
- The fee is fixed per round when it opens and capped at 10% in the contract.
Verify a round yourself
git clone https://github.com/Saylool/smartmoney cd smartmoney/keeper && npm ci node src/verify-signal.mjs <roundId>
The script fetches the signal from the round's block, checks its hash against the one stored in the contract, re-reads every trader's position on Perpl mainnet at the same block and confirms the direction.
Contracts
- SmartMoneyRounds: 0x860844ca0ca1f3ec43a8045370d7cef8b329f141
- PerplOracleAdapter: 0x762378bcabb0507b56c56fcdd24986b3f6d5c1b3
- GitHub: https://github.com/Saylool/smartmoney