How it works

Two flows,
one engine.

Sharpfi is a two-sided protocol: liquidity providers put up capital and become the house, bettors place on-chain bets with signed quotes and IPFS receipts. Same infrastructure, same smart contracts, same math.

Flow · Liquidity Provider

Become the house. Always.

From USDC deposit to Aave yield + trading fees, all the way to $SHARP staking. You're the other side of every bet, without ever running a single market.

Target APY10–25%
UnderlyingAave V3
WithdrawOn-demand
  1. 01

    Pool deposit

    The LP deposits USDC into Sharpfi's global pool and receives LP shares representing their proportional stake of the house.

    deposit(USDC) → mint(shares)
  2. 02

    Auto-allocation to Aave

    Funds not actively locked as collateral are routed by the keeper into Aave V3. The pool earns base yield 24/7 with or without betting volume.

    keeper.supply(Aave V3)
  3. 03

    Pool becomes the house

    Every bet opens a position against the pool: LMSR prediction, sport with EIP-712 signed quotes — all backed by the same shared liquidity.

    BettingEngine.openBet()
  4. 04

    Trading fees accrue

    LMSR spread, sport flat fees and cashout fees are credited to the pool block by block. LP shares appreciate automatically.

    shares.value↑ (fees + yield)
  5. 05

    Settlement & rebalance

    At event settlement the keeper repays or withdraws from Aave to cover payouts. The pool stays solvent by design.

    keeper.rebalance()
  6. 06

    Withdraw or stake $SHARP

    The LP can exit anytime (burn shares → USDC + yield + fees) or stake their shares to earn additional $SHARP emissions.

    burn(shares) → USDC
Flow · Bettor

Bet on-chain native.

From market selection to settlement, every step is signed, recorded and verifiable. No account, no custodian: just wallet and smart contracts.

QuotesEIP-712
ReceiptsIPFS
CashoutRealtime
  1. 01

    Pick a market

    The bettor picks an LMSR prediction market or a sport event. Odds are live: LMSR-derived for prediction, signed bookmaker feed for sport.

    marketId, side, stake
  2. 02

    EIP-712 signed quote

    The backend signs the quote off-chain with EIP-712. The bettor receives a payload with price, deadline and nonce: gas-less to generate, on-chain to execute.

    sign(Quote) → 0x…sig
  3. 03

    Submit on-chain

    The bettor sends the signed quote to BettingEngine. The contract verifies the signature, locks the stake and opens a position against the pool.

    BettingEngine.bet(quote, sig)
  4. 04

    Immutable IPFS receipt

    Stake, price, potential payout and terms are pinned to IPFS. The hash is emitted on-chain: a receipt verifiable forever, independent of Sharpfi's servers.

    emit BetOpened(ipfsCid)
  5. 05

    Realtime cashout

    At any time the bettor can close the position: live LMSR for prediction, live odds − haircut for sport. Liquidity always available.

    engine.cashout(betId)
  6. 06

    Automatic settlement

    Once the oracle confirms the outcome, the contract pays out in USDC to the bettor's wallet. No manual claim, no operational risk.

    auto-payout(USDC)

Same engine, two experiences.

Bettor fees flow into the LP pool. LP liquidity makes instant bettor execution possible. It's not a market metaphor: it's literally the same BettingEngine.sol.

Ready to use the engine?