How a round works

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Claim. Payouts are pulled: press Claim when a round settles. Unclaimed winnings stay claimable for 90 days.

What you do not have to trust

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