Bookmaker Protocol to Decentralize the House Edge

Providing Liquidity

Our smart contracts ensure potential payouts for every bet position, use Chainlink to provide low-vig odds for bets and game results, collateralize every bet position with a portion of total value locked in the liquidity pool, and allow LPs to facilitate bets based on any scope. Provisions will be used as collateral across the application.

Liquidity will be freed after a bet position is closed based on game results data from the Chainlink consumer, and then roll over to another active position.

House Liquidity Pools

Currently, LPs can deposit stablecoins (USDC, USDT and/or DAI) into liquidity pools and receive BETLP 1:1 in return. The amount of BETLP received represents the amount of stablecoin deposited.

There are two liquidity pools: Parlay and Single. Funds deposited into the Single liquidity pool collateralize Moneyline, Point Spread and Over Under positions for a stablecoin across active games. The Parlay liquidity pool collateralizes all user parlay bets for a stablecoin. Both pools' PnL is aggregated during rewards distribution.

The amount LPs can deposit depends on the max allocation multiplier set by the Betonchain DAO. If the max allocation multiplier is 4.0, the allowance formula would be:

MaxDeposit[USD]=stakedBET4.0MaxDeposit [USD] = stakedBET * 4.0 (where USD refers to the total stablecoin deposit USDC + USDT + DAI).

  1. LPs will not be able to unstake locked BET while providing liquidity. To unlock locked stakedBET, they must withdraw the corresponding share of liquidity from the pool first.

    An LPer's locked stakedBET is stakedBETlocked=Deposit[USD]/4.0stakedBET_{locked} = Deposit[USD] / 4.0 (where USD refers to the stablecoin deposited and 4.0 is the max allocation multiplier). Note that BETLP=Deposit[USD]BETLP = Deposit[USD] for an LP.

  2. LPs will not be able to withdraw locked liquidity (liquidity being used to collateralize active bet positions) until the liquidity is freed.

  3. There is a 48 hour cooldown for withdrawing liquidity in exchange for BETLP.

The max amount of liquidity an LPer can withdraw at anytime is:

min(BETLPdeposit,[HouseLiquidityfreeBETLPdeposit/BETLPtotal])min(BETLP_{deposit}, [HouseLiquidity_{free} * BETLP_{deposit} / BETLP_{total}]) In other words, LPers can redeem a max liquidity amount equal to that of their original deposit.

This mechanic, along with the withdrawal cooldown, discourages LPers from removing their liquidity prior to the completion of an LP round.

During a withdrawal, the corresponding BETLP will be transferred to the contract and the user will receive their share of stablecoin liquidity. As the protocol evolves, some of the liquidity pool will be delegated to sports vaults.

Users with winning bet positions are paid out in full with bet volume from counter positions (in the case of single bets) and seeded collateral provided by the Liquidity Pool.

Users with losing bet positions have their position wagers delegated to free house liquidity, which is used to collateralize new bet positions.

After the rewards snapshot (at the end of an LP round), all house profits (excess house liquidity) are distributed to the Profit Pool.

Profit Pool

LPs are directly incentivized by the protocol via juice. Rewards APR is variable since the book can lose money on any given bet position. A sports book's APR is inherently tied to bet volume and fluctuating juice/vig in bet positions (displayed on the frontend and easily accessible on-chain).

Each time a bet is placed, the amount wagered is attributed to active LPs based on their share of BETLP in relation to total BETLP supply at the time the bet is created. This share of volume hosted over an LP round determines rewards.

This pool distributes BETLP holders' shares of protocol profits after each LP round by exchanging stablecoin profits for BET and one stable set by the DAO (USDC at the time of writing) on a DEX, according to a % split parameter governed by the Betonchain DAO. It is capital efficient in this exchange. Each LP round currently lasts 30 days.

If there is no house profit over an LP round, funds from liquidity pool were used to payout winning bet positions. Before depositing, LPers must agree that providity liquidity exposes them to smart contract risks and potential loses.

By aggregating rewards in an ERC20 chosen by the DAO (such as USDC), the protocol can align house liquidity with betting demand based on historical volume (while some LPers claim, deposit and re-stake).

Last updated