# Bet with Betonchain

Driving the Future of Sports Betting and Fantasy

<figure><img src="/files/ZGakTsGWPhfiuwk6ioyf" alt="" width="375"><figcaption></figcaption></figure>

**Betonchain** is a data provider, smart contract infrastructure, and liquidity layer for community-owned and permissionless on-chain betting and fantasy.

The platform features player-friendly odds, frictionless betting and fantasy experiences with a data-rich UI, progressive onboarding, protocol-ensured payouts, decentralized liquidity providers for collateralizing bet positions, among other features.&#x20;

Betonchain is leading the way for leveraging odds and game data in smart contracts on the blockchain. We're encapsulating the sportsbook edge into a yield-generating financial instrument and are dedicated to transforming betting and fantasy into decentralized, accessible, social, and data-driven activities.


# FAQ

Answers to Commonly Asked Questions

### **Which networks host the Betonchain protocol?**&#x20;

Betonchain is currently operating on the [Sepolia](https://sepolia.etherscan.io/) testnet on <img src="/files/7dNvwxf8XSE7iPjv2VRx" alt="" data-size="line">. Stay tuned for our Mainnet Launch!

### **What sports leagues are supported?**&#x20;

Betonchain currently supports **NBA** (basketball)**, Euroleague** (basketball), **WNBA** (basketball), **NFL** (American football), **MLB** (baseball), **NHL** (hockey), **Premier League** (soccer), **La Liga** (soccer), **MLS** (soccer), **Champions League** (soccer), **Serie A** (soccer), **Ligue 1** (soccer), **Europa League** (soccer), **German Bundesliga** (soccer). More leagues/sports will be supported after Mainnet launch!

### **What currencies can I bet with?**

Betonchain currently supports sports betting with <img src="/files/FikOFZ3vrnepgGU3WyCT" alt="" data-size="line"> USDC, <img src="/files/d8aYNsQi1PHHtA4dGhDr" alt="" data-size="line"> USDT and <img src="/files/0piDr9Ld0xkEjU1XMEOe" alt="" data-size="line"> DAI. It supports Fantasy contests with <img src="/files/qyBxQIVSSXn87F3lUPl2" alt="" data-size="line"> ETH, <img src="/files/FikOFZ3vrnepgGU3WyCT" alt="" data-size="line"> USDC, <img src="/files/d8aYNsQi1PHHtA4dGhDr" alt="" data-size="line"> USDT and <img src="/files/0piDr9Ld0xkEjU1XMEOe" alt="" data-size="line"> DAI.

### How does Betonchain get odds and game data?

Betonchain hosts end-to-end infrastructure for on-chain odds and game data. Our Chainlink node, oracle and consumer are supported by our powerful, pragmatic and blazing fast API. Our API aggregates consistent, accurate and real-time odds data from 11+ high volume bookies across more than a dozen sports leagues.

### Why is Betonchain safe to use?&#x20;

**Nothing can ever prevent users from accessing their rightful winnings**. Our smart contracts ensure potential payouts for every bet position. Bet amounts are capped by the available collateral for that position. In contrast to conventional bookies, impactful data such as player performance, bet position volume and collateral, implied probabilities with the vig/juice removed and more is openly available and easily accessible.

### What bet types are supported?

Betonchain currently supports Money Line, Over Under, Point Spread and Parlays (including same game parlays).

### What Fantasy contests are supported?

Betonchain currently supports team-level Fantasy pools with 50/50, Head2Head and other types of player contests.

### How do I bet?

Visit <https://betonchain.gg/> **on your computer** and check out our [guides](/platform-reference/guides) for tutorials.

### How do I play Fantasy?

Visit <https://betonchain.gg/> **on your mobile device** and check out our [guides](/platform-reference/guides) for tutorials.


# How Betonchain Works

## Betting

#### Market Creation

Betting is opened 5 minutes after bet positions are intitialized for a game. Betting is closed 15 minutes before game start time. These buffers are represented by `uint256 public betStartBuffer` and `uint256 public betEndBuffer`contract variables and are updateable.

#### Market Finalization

After a batch request of game results is fulfilled on-chain, corresponding bet positions are closed and locked/available user balances are adjusted based on results. Any unused collateral is freed and rolled over to new active bet positions. Any house profit is claimed at the end of an LP round. For more details on house liquidity, visit [this section](/platform-reference/bookmaker-protocol-to-decentralize-the-house-edge).

{% hint style="info" %}
It can currently take up to **\~12-24** hours after game completion for results to post and user balances to update. Please be patient!
{% endhint %}

## Odds

Odds and game data is stored on-chain after requests to the Chainlink node are fulfilled. Deployed jobs request our public API endpoints and parse responses.&#x20;

{% hint style="success" %}
Response data from `/chainlink` endpoints called by our contracts is all `uint256` for low gas consumption.
{% endhint %}

GET <https://betonchain.gg/api/chainlink/health> (not called on-chain) should return the response

```json
{
    "status": "ok",
    "version": "0.1.0"
}
```

## Fantasy

Betonchain offers accessible, secure, and trustless on-chain **Fantasy contests** through a dedicated Progressive Web DApp (PWDA). Contests are created and managed via protocol smart contracts. **To install the app, visit** [**https://betonchain.gg/**](https://betonchain.gg/) **from your mobile device.**&#x20;

Contests are currently at a team-level, and transpire over various time lengths (daily, weekly, season-long, etc). These include 50/50 Matchup Winner and other types of player contests. Players create and submit their lineups along with an entry fee to participate.&#x20;

The prize pool consists of all collected entry fees minus a winners fee charged by the protocol. Prize pools are evenly distributed to winners.&#x20;

Winners can claim their winnings at any time. Winners and losers are finalized off-chain depending on the pool type, and are easily verifyable.&#x20;

Odds and game data is available on-chain and pulled from our Chainlink consumer. For team-level fantasy contests, a player's points are determined by their selected positions' odds. For example, the underdog in a matchup would yield more points than the favored team. Winners and losers are determined based on points earned.&#x20;

{% hint style="info" %}
**Users earn no points for postponed or canceled games.** If a contest pool consists only of postponed or canceled games, then everyone is tied.
{% endhint %}

### Contest Types

#### 50/50 Matchup WInner

Players submit a lineup of matchup winners. Top 50% of the players win, bottom 50% lose. Ties are determined at random via Chainlink VRF. If there is an odd number of players, there will be an extra winner.

#### All or Nothing Matchup Winner

Players submit a lineup of matchup winners. The top player wins the entire prize pool, everyone else loses. Ties are determined at random via Chainlink VRF.

#### Long Tail Matchup Winner

Players submit a lineup of matchup winners. Ties are determined at random via Chainlink VRF. The prize pool distribution depends on the number of participants as follows:

<table><thead><tr><th width="146">Participants</th><th width="212">Position Paid</th><th>Prize</th></tr></thead><tbody><tr><td>1</td><td>1st</td><td>100%</td></tr><tr><td>2 - 4</td><td>1st and 2nd</td><td>70% and 30%</td></tr><tr><td>5 - 9</td><td>1st 2nd and 3rd</td><td>50% 30% and 20%</td></tr><tr><td>10 - 19</td><td>1st 2nd 3rd and 4th</td><td>50% 25% 15% and 10%</td></tr><tr><td>20+</td><td>1st 2nd 3rd 4th and 5th</td><td>40% 25% 20% 10% and 5%</td></tr></tbody></table>

### LP Vaults

Betonchain pools liquidity in USDT, USDC and DAI. These tokens are provided by LPs and used to seed active bet positions with collateral. LPs are directly incentivized by the protocol via juice from fixed-odds. The protocol's immutable contract checks ensure potential payouts based on odds and volume on counter positions and seeded liquidity. Seeded liquidity for bet positions are managed by the Betonchain DAO and are a % of TVL in [House liquidity pools](/platform-reference/bookmaker-protocol-to-decentralize-the-house-edge#house-liquidity-pools) to manage risk.

{% hint style="success" %}
**Betonchain can drive infinite volume** (provided seeded liquidity is large enough).
{% endhint %}

If available collateral is fully used for a bet position, betting would be halted for that position (0 max bet allowed) until users, or automated betting vaults, take risk on a counter position. Betonchain is arbitrage-proof with no fees (besides inherent juice), slippage, or skew.&#x20;

### API

Our API aggregates consistent, accurate and real-time odds data from 11+ high volume bookies across more than a dozen sports leagues. The backend stack includes scripts that ensure attribute bindings and perform pragma optimized database operations with custom error handling and logging. Our API is written in Rust and features robust request handlers with consistent responses and powerful request routing. For more information on the API please visit the [framework docs](https://docs.rs/actix-web/latest/actix_web/) or [reach out](https://discord.gg/rrpyAwWEb7) on our Discord.&#x20;

### Smart Contracts

Contract methods that initialize and update state variables (game results, odds, etc.) are immutable and directly pull data from the Chainlink consumer contract **BetConsumer.sol**. **BetCore.sol** interacts with child contracts and faciltiates betting on Moneylines, Over Under, Point Spread and Parlays with fund forwarding and available user balances. **BetPoolDeployer.sol** creates and manages on-chain fantasy pools.

Contracts emit events relevant to the scope of their functionalities, for more details please visit the [Developers](/platform-reference/developers) section.


# Betonchain Frontend

Betting with our contracts is frontend-agnostic, [betonchain.gg](https://betonchain.gg) is just to provide progressive onboarding with a unified, trustworthy and data-rich UI/UX for both seasoned and casual bettors.

This frontend can be cloned and hosted decentrally on IPFS or Arweave. No user data is stored in a backend database and all displayed metrics are publically viewable and called directly from the official smart contracts. Users are encouraged to use Etherscan to validate metrics themselves. By using this frontend to interact with the official contracts and place bets, users commit to have accepted our [Terms of Service](/resources/terms-of-service).

### Fantasy

Accessible, secure, and trustless on-chain **Fantasy contests are mobile-only**.&#x20;

Our Progressive Web DApp (PWDA) is dedicated to fantasy sports and features embedded wallet generation and convenient user authentication flows. Real-time player chats and leaderboards are also available in the app.

{% hint style="success" %}
**To install the app, visit** [**https://betonchain.gg/**](https://betonchain.gg/) **from your mobile device.**&#x20;
{% endhint %}

### Sports

Odds can be displayed as American, Decimal or Implied Probabilties. This user supplied odds format is cached to persist through other components like pending/closed bet data. A countdown timer is displayed to inform when betting will be opened and closed for a game.

**Total Volume Across Currencies** is for all available bet positions (besides parlays which are [collateralized separately](/platform-reference/bookmaker-protocol-to-decentralize-the-house-edge#providing-liquidity)).

**Juice Removed Implied Probabilities**

For example, a 2 position moneyline market with HOME (H) and AWAY (A) outcomes would have the following no-juice implied probabilties when initialized:

* $$P\_{nj}(H) = P\_{j}(H) - (TotalJuice \*0.5)$$&#x20;
* $$P\_{nj}(A) = P\_{j}(A) - (TotalJuice \*0.5)$$&#x20;

where$$P\_{j}(H)$$ and $$P\_{j}(A)$$ are Implied Probabilities for HOME and AWAY positions with juice included, $$P\_{nj}(H)+P\_{nj}(A) = 100$$ and $$TotalJuice = (P\_{j}(H)+P\_{j}(A) - 1)$$.

**House Juice** for bet positions is $$(P\_{j}(H)+P\_{j}(A) - 1)$$ for the previous ex. This (usually) won't change.

**Total Liquidity** is the total seeded house liquidity for bet positions. For more details please visit the [Providing Liquidity](/platform-reference/bookmaker-protocol-to-decentralize-the-house-edge#providing-liquidity) section.

**House Max Payout - Max Profit** are the potential max payout and profit for the house based on position odds and volume. A color gradient with fade is for visualizing these potential house PnLs.

### User Profile

The total Betonchain wallet balance for a user includes available (deposits + winnings) and pending (locked in bets) balances. Users can claim all of their available balance or a portion in USDC, USDT or DAI. Users can deposit funds in USDC, USDT or DAI to their Betonchain wallet.

Users can also view their total number of bets made, lifetime profits and rewards from betting, and total amount bet on games.&#x20;

The pending and closed betting history for a user is displayed in a table with sortable columns and includes the Date, League, Bet Type, Odds, Currency, Amount, Result, etc. for all bets. This table is downloadable as a readable `csv` file for accounting and further analysis. All profiles are queryable by wallet address or ENS ([https://betonchain.gg/profile/pending?address=](https://betonchain.gg/profile/pending?address=0x54fA7494f2ED4F25024c7771197E0440506aA868)\<address>).

### Activity

Real-time event stream of newly created bets and bet results alongside a leaderboard showcasing top users. Users can also easily copy and counter each other.

### LP Vaults

View protocol stats, stake/unstake BET and deposit/withdraw funds from the house liquidity pool. For more details please visit the [tokenomics](/platform-reference/tokenomics-staking-and-incentives) section.


# 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.&#x20;

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] = 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.&#x20;

   An LPer's locked stakedBET is $$stakedBET\_{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]$$ 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.**&#x20;
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(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.&#x20;

{% hint style="success" %}
**This mechanic, along with the withdrawal cooldown, discourages LPers from removing their liquidity prior to the completion of an LP round.**
{% endhint %}

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](#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](#liquidity-pool-and-rewards).&#x20;

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

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).

### 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).&#x20;

{% hint style="success" %}
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.**
{% endhint %}

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.**

{% hint style="warning" %}
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.**
{% endhint %}

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](/platform-reference/tokenomics-staking-and-incentives#bonding)).


# Developers

Developer Resources

{% hint style="warning" %}
These pages are under active maintenance and being updated regularly. Please check back for the latest info.
{% endhint %}

{% content-ref url="/pages/VLYgnuWzN5yJuTuGBpIB" %}
[Smart Contracts](/platform-reference/developers/smart-contracts)
{% endcontent-ref %}

{% content-ref url="/pages/MPmPtu2O4DJDKl1wfgqC" %}
[API](/platform-reference/developers/api)
{% endcontent-ref %}


# Smart Contracts

Using our contract infrastructure, developers can:

* Analyze betting trends and access transparent odds, volume and game result data
* Deploy a hedging contract for players to hedge parlays automatically&#x20;
* Develop a frontend on existing Betonchain contracts
* Capture contract events to stream on social platforms
* Deploy and fund our [NFT voucher](#nft-vouchers) contracts to host risk-free bets for holders&#x20;
* And more!

<figure><img src="/files/dItEVC80JVVgEeFm0lcT" alt=""><figcaption><p>Screen Shot from the Betonchain Node's Chainlink Operator UI</p></figcaption></figure>

## Child Bet Contracts

You can access a wallet's bets by calling the functions below. The structs referenced below are`MoneyLineBetJoin`, `OverUnderBetJoin` and`PointSpreadBetJoin`. For relevant events see the [Events](#events) section.

## NFT Vouchers

Anyone can deploy and fund our NFT Voucher contracts to host risk-free bets for a specified scope of holders. The vouchers are compatible with both `ERC721` and `ERC1155` contract types.&#x20;

* The vouchers can be updated by their deployer and optionally support an array of IDs that allow subsets of NFT holders to qualify.&#x20;
* Vouchers accept funding in USDC, USDT or DAI for distributing risk-free bets after they're placed by qualified users through the Betonchain protocol.&#x20;
* The amount to distribute per bet and the interval over which to do so are required parameters. For example, one can specify that up to 100 USDC should be distributed in risk-free bets every 24 hours until funding is depleted.

Please [reach out ](https://discord.gg/FdUWQa7vE7)on our Discord for more details on NFT Vouchers and assistance with configuration and deployment.

## Events

{% hint style="info" %}
The official DApp displays an event stream: <https://betonchain.gg/activity>
{% endhint %}

### Examples

{% tabs %}
{% tab title="Python" %}

```python
import web3
import json

# endpoint, address, abi
PROVIDER_ENDPOINT = "https://eth-sepolia.g.alchemy.com/v2/..." 
CONTRACT_ADDRESS = "0x..."
with open("<abi_file_path>.json") as f:
    CONTRACT_ABI = json.load(f)
    
# web3 client
w3 = web3.Web3(web3.Web3.HTTPProvider(PROVIDER_ENDPOINT))

# example using BetML.sol contract 
ml_ct = w3.eth.contract(address=CONTRACT_ADDRESS, abi=CONTRACT_ABI)
ml_filter_results = ml_ct.events.MLBetResult.create_filter(fromBlock='latest')
ml_bet_results = ml_filter_results.get_all_entries()
# print logs
for log in ml_bet_results:
    print(log['args'], log['event'])
```

{% endtab %}
{% endtabs %}

### event RequestGameIdInit()

```solidity
/* BetConsumer.sol */
event RequestGameIdInit(bytes32 indexed requestId, uint256 game_id);
```

An event emitted when `fulfillInitGame()` executes successfully.&#x20;

| Parameter   | Type            | Description                                        |
| ----------- | --------------- | -------------------------------------------------- |
| `requestId` | bytes32 indexed | Request ID of the data request that was fulfilled  |
| `game_id`   | uint256         | Game ID of the game for which data was initialized |

### event RequestGameIdOdds()

```solidity
/* BetConsumer.sol */
event RequestGameIdOdds(bytes32 indexed requestId, uint256 game_id);
```

An event emitted when `fulfillOdds()` executes successfully.&#x20;

| Parameter   | Type            | Description                                        |
| ----------- | --------------- | -------------------------------------------------- |
| `requestId` | bytes32 indexed | Request ID of the data request that was fulfilled  |
| `game_id`   | uint256         | Game ID of the game for which data was initialized |

### event RequestGameIdResults()

```solidity
/* BetConsumer.sol */
event RequestGameIdResults(bytes32 indexed requestId, uint256 game_id);
```

An event emitted when `fulfillResults()` executes successfully.&#x20;

| Parameter   | Type            | Description                                        |
| ----------- | --------------- | -------------------------------------------------- |
| `requestId` | bytes32 indexed | Request ID of the data request that was fulfilled  |
| `game_id`   | uint256         | Game ID of the game for which data was initialized |

### event GameAdded()

```solidity
/* BetCore.sol */
event GameAdded(uint256 gameId, string league);
```

An event emitted when `_addGame()` executes successfully.

| Parameter | Type    | Description                                    |
| --------- | ------- | ---------------------------------------------- |
| `gameId`  | uint256 | Game ID of the game that was added for betting |
| `league`  | string  | League of the game that was added for betting  |


# API


# Tokenomics, Staking and Incentives

{% hint style="warning" %}
This page is under active maintenance and being updated regularly. Please check back for the latest info.
{% endhint %}

**Align Incentives**

Protocols with the deepest sustained liquidity often align incentives for all ecosystem actors. Betonchain pairs a strong product-market-fit with unique tokenomics to create and sustain attractive incentives for LPers and users.

**Fair and Strategic Initial Distribution**

A fair and strategic token distribution is essential for a community-owned protocol, Betonchain is no exception. It's part of our core mission to give back to early participants via a token that provides indirect access to the house edge.

<figure><img src="/files/3o3kIj16ey8M2MZUHFqy" alt=""><figcaption><p>High-level tokenomics diagram</p></figcaption></figure>

## BET

BET is the ecosystem token of Betonchain. The BET token includes decentralized finance (DeFi) features like community governance, and utility via staking to provide house liquidity and access protocol PnL (house edge).

To deposit funds into Betonchain's [liquidity pools](/platform-reference/bookmaker-protocol-to-decentralize-the-house-edge#providing-liquidity) and receive BETLP in return, LPers need to hold and stake BET. The max allowed deposit across stables for an LP is `stakedBET * m` . After staking BET, users receive stakedBET 1:1. The multiplier value `m` is set by the [Betonchain DAO](/platform-reference/betonchain-dao) and might fluctuate to better align incentives under different conditions. A higher multiplier could be used to incentivize purchase of more BET for LPers, conversely a lower multiplier could be used to incentivize purchase of more stables for LPers.

{% hint style="info" %}
`stakedBET * m >= BETLP`
{% endhint %}

## BETLP

{% hint style="success" %}
**BETLP governs protocol profit distribution.**
{% endhint %}

Protocol PnL over LP rounds is in USDC, USDT and DAI. At the end of an LP round, **all house profits are used to purchase BET and a stablecoin set by the DAO on decentralized exchanges (DEXs)**. The purchased BET and stablecoin is distributed across BETLP holders. Protocol profits are allocated based on an LP's share of volume hosted over a round. After every bet, new volume is attributed to active LPs based on their share of BETLP. Please visit [this section](/platform-reference/bookmaker-protocol-to-decentralize-the-house-edge) for more details on depositing and withdrawing house liquidity to receive BETLP and LPer rewards.

The % split of protocol PnL used to purchase BET vs. stablecoin for distribution is set by the [Betonchain DAO](/platform-reference/betonchain-dao). This value might fluctuate based on betting volume over an LP round. Since over time higher volume would converge to higher protocol PnL, the % split might be weighted more towards the stable when volume is lower on the site and more towards BET when volume is higher.

### Bonding

Depositing house liquidity for BETLP bonds (locks) the corresponding stakedBET amount to qualify the liquidity deposit.&#x20;

The bond lasts for a minimum of **48 hours** (unstaking cooldown). **Multiplier points** apply to a minimum bond of 1 LP round (which yields the lowest BET APR, while a forever bond yields the highest).&#x20;

BETLP holders can claim their share of rewards after the snapshot. In the future, users can claim, deposit and re-stake all rewards. The latter would stake all of`rewardsBET` to receive `stakedBET` 1:1 and deposit `m * stakedBET` of stablecoin rewards to the liquidity pool, where `m` is the max allocation multiplier decided by the DAO.

{% hint style="info" %}
The Betonchain DAO is allowed to change this max allocation multiplier at any time, including between an BETLP holder's initial liquidity deposit and their claim+deposit+re-stake.
{% endhint %}

**Multiplier Points**&#x20;

The goal of multiplier points is to incentivize long-term staking while lowering the governance power and BET rewards share of new ecosystem actors (that have yet to accumulate multiplier points), while still encouraging them into Betonchain's ecosystem flywheel.

{% hint style="info" %}
Multiplier points are an extension of the [Incentives](#incentives), and are governed and funded by the Betonchain DAO.
{% endhint %}

After depositing house liquidity for BETLP, you receive multiplier points for each LP round `r` you provided liquidity for based on the function`f(r)` set by the Betonchain DAO. This function can be adjusted to better align incentives under different conditions. Assuming$$f(r) =log\_{a}(r+b)$$ and `a = 2` and `b = 1`, if you held BETLP for `r = 3` LP rounds, you would earn`log2(3+1) = 2` multiplier points.

In comparison to a linear rate for multiplier points, these mechanics can incentivize new stakers, and mitigate the dilution of governance power to long-term stakers while incentivizing them to further grow their liquidity provisions (BETLP) in the protocol to earn more rewards.

So the total BET rewards from multiplier points for a LPer `x` are $$rewards\_{x,mp} =  pool\_{mp} \* f(r\_{x})/\sum\_{u\in users}f(r\_u)$$&#x20;

The compute is off-chain. At the end of each LP round, a merkle root of the distribution is published on-chain, allowing users to claim their multiplier rewards from a contract using the DApp.

[Example](/platform-reference/tokenomics-staking-and-incentives/rewards-example)

## Incentives

{% hint style="info" %}
These incentives are meant to bootstrap DEX and house liquidity, allocate governance power, and drive volume. **They are governed by the Betonchain DAO.**
{% endhint %}

### Community Airdrops

Airdrops will be conducted in several rounds aimed at dispersing governance to early adopters, active participants, and other projects pushing the Ethereum ecosystem forward.

### User Rewards

While this incentive is active and funded by the DAO, users will receive BET tokens for every bet based on the chosen rewards model (ideally incorporating bet volume, type and consistency for each user). By giving back to users we encourage longevity and hedging for financially responsible betting.&#x20;

### House Liquidity&#x20;

Early house liquidity depositors can purchase discounted `BET` tokens over-the-counter based on their deposit share at that time. This is an incentive funded by the DAO.

### DEX Liquidity

DEX liquidity providers for qualified pairs will receive BET token rewards proportionally based on supplied liquidity (staked LP).

#### BET-USDC on UniswapV3

To incentivize liquidity providers for the BET-USDC pool on UniswapV3, BET will be rewarded to users that stake their ERC721 BET-USDC LP. Reward amounts are based on the BET share of a user's deposited LP. The minimum stake time is 1 LP round and the max is forever (ie. 2400 LP rounds or 200 years).

By integrating with uniswap-v3 contracts for distributing BET rewards over time to LPers, this incentive is for the most useful liquidity on BET positions. Rewards are distributed monthly, and the granular rewards compute for swaps over time can be done off-chain. Only in-range liquidity provisions can earn rewards.&#x20;

The valid tick range for a position set by tickLower (int24) and tickUpper (int24), is supplied by the Betonchain DAO. Rewards are computed based on individual swaps, swaps where a users LP falls out of this valid range (ie. their tickLower is too low or their tickUpper is too high) won’t be considered for rewards. Reward amounts as computed by the off-chain scripts are based on the following factors:

* Share of fees earned by the position (the virtual liquidity provided)
* Share of BET in the position compared to total BET reserves in the liquidity pool
* Share of USDC in the positions compared to total USDC reserves in the liquidity pool
* Formula for computing `rewardsBET` applied to each in-range swap:

  `[(0.4 x (feesLP / feesTOTAL)) + (0.2 x (betLP / betTOTAL)) + (0.2 x (usdcLP / usdcTOTAL))] x boost_BET`where TOTAL represents the entire liquidity pool and LP the position.

`boost_BET` is set by the DAO and corresponds to the BET share of the LP. At the end of each month, `rewardsBET` for an LPer address is summed for all in-range swaps, normalized 0 – 1, and then applied to the `allocBET` for that month. `allocBET` is the BET allocated to this incentive per month as set by the DAO.&#x20;

A merkle root of the distribution is published on-chain, allowing DEX LPs to claim their BET rewards from a contract using the DApp. Even though an offchain script is doing the rewards compute, `allocBET` is still set by the DAO (and can be set to 0 in an emergency). This preserves trust via on-chain governance.

UniV3 Wrapper tooling for active liquidity management (on concentrated liquidity AMMs) can be applied on top of this framework so LPers can opt to have their positions managed for them.&#x20;

{% hint style="warning" %}
LPers who use tooling for active liquidity management are responsible for ensuring rewards-earning liquidity ranges are aligned between the DAO and the third-party manager.
{% endhint %}

The total supply of LP and BET / USDC reserve amounts will fluctuate according to market conditions, as will the amounts of BET and USDC in a user's LP position. The formula for computing BET share from an LP amount is: ​$$share\_{BET} = (deposit\_{LP} / supply\_{LP}) \* reserves\_{BET-LP}$$

### Added Volume Drivers

#### Betonchain NFT Voucher

Betonchain's NFT provides holders with a daily allocation of risk-free bets and boosted BET rewards for all bets placed.

#### User Tournaments

Monthly user parlay tournaments coming soon! [Stay tuned](https://discord.gg/rrpyAwWEb7) on our Discord for updates.


# Rewards Example

Coming Soon!


# Betonchain DAO

{% hint style="warning" %}
This page is under active maintenance and being updated regularly. Please check back for the latest info.
{% endhint %}

Once a delegation/voting system using the BET token is live on-chain, the Betonchain DAO is solely responsible for protocol operation and proposing and approving protocol upgrades and improvements. This includes all (1) data provision decisions, (2) contract updates and state variable changes, and (3) tokenomics decisions.&#x20;

Tokenomics decisions include distribution adjustments and incentive programs to accelerate growth and development. This includes the type of stable token being paid out to BETLP holders, the rewards multiplier ratio, the percent split between BET and stable rewards paid out to BETLP holders, etc. These descisions allow incentives to better adapt to market positioning and maturity of the protocol.

Contract upgrades involve anything from security improvements to which betting types are offered (ex. whether to offer double chance bets through the protocol). Upgrades might overlap with data provision decisions, such as changing which API endpoints are requested.

The DAO is responsible for the full scope of the contracts’ admin, such as refunding user bets in the case of emergency.

The inclusion of state variable changes implies the DAO is responsible for day-to-day protocol operations. All relevant transactions are initiated and funded by the DAO, including but not limited to:

* Adding or updating betting or game data in BetCore.sol, which pulls data directly from the Chainlink consumer contract using game IDs
* Adding game results to BetCore.sol, which also pulls data directly from the Chainlink consumer contract using game IDs to close relevant active bet positions and adjust user balances
* Adding support for new teams and/or leagues&#x20;
* Seeding active bet positions with initial liquidity, freeing unused liquidity for closed positions, and rolling it over to new positions


# Guides

Tutorials for interacting with the Betonchain DApp.

## Fantasy

{% embed url="<https://drive.google.com/file/d/1aGDaItL7xPQj-VavuBHKlkW-_UnW2Yuo/view?usp=sharing>" %}

## Sports Betting

{% embed url="<https://drive.google.com/file/d/1I2TCcVgQ84-IIgaa4y5ncmUFFs5HpZqY/view?usp=sharing>" %}


# DApp

Official Frontends for the Betonchain Protocol

Primary [https://betonchain.gg](https://betonchain.gg/)


# Contract Addresses

Official Smart Contracts for the Betonchain Protocol

## Mainnet

BetCore.sol `<coming_soon>`

BetConsumer.sol `<coming_soon>`

BetML.sol `<coming_soon>`

BetOU.sol `<coming_soon>`

BetPS.sol `<coming_soon>`

Parlay.sol `<coming_soon>`

HouseLpManager.sol `<coming_soon>`


# Socials

Official Socials for the Betonchain Protocol

Email `team@betonchain.gg`

Twitter <https://twitter.com/Betonchaingg>

Discord <https://discord.gg/FdUWQa7vE7>

Medium <https://medium.com/@betonchain>


# Terms of Service

Before using our on-chain betting platform, please carefully read and understand the following Terms of Service ("Terms"). By accessing or using our platform, you agree to be bound by these Terms, so make sure to review them thoroughly.

1. **Acceptance of Terms** By accessing or using Betonchain, you acknowledge that you have read, understood, and agree to these Terms. If you do not agree with any part of these Terms, you are not permitted to use the platform.
2. **Description of the Service** Betonchain is an on-chain betting platform that allows users to place bets on various events, including sports, entertainment, and other markets, using blockchain technology. Users can interact with smart contracts to participate in betting and provide liquidity to collateralize markets.
3. **Eligibility** You must be at least 18 years old (or the legal age in your jurisdiction) to use Betonchain. By accessing or using the platform, you represent and warrant that you meet this eligibility requirement.
4. **Prohibited Activities** You agree not to engage in any of the following activities while using Betonchain: a. Violating any applicable laws, regulations, or these Terms. b. Impersonating any individual or entity or providing false information. c. Engaging in fraudulent or deceptive behavior. d. Tampering with or attempting to manipulate the platform's smart contracts or data. e. Engaging in any activity that could harm the platform's integrity or functionality.
5. **Risks** Participating in betting or liquidity providing on Betonchain involves financial risk. You acknowledge that the value of your liqudiity provision and bets can fluctuate due to various factors. You agree to assume full responsibility for your activities and any associated losses.
6. **Intellectual Property** All intellectual property rights related to Betonchain, including but not limited to trademarks and logos, are owned by or licensed to us. You agree not to reproduce, distribute, modify, or create derivative works from any part of the platform without our prior written consent.
7. **User Responsibilities** You are solely responsible for maintaining the security and confidentiality of your wallets. Any activity performed under your wallets will be considered as your own.
8. **Disclaimer of Warranty** Betonchain is provided "as is" without any warranties, express or implied. We do not guarantee the accuracy, reliability, or completeness of the platform or its content. Your use of the platform is at your own risk.
9. **Limitation of Liability** To the extent permitted by law, Betonchain and its affiliates will not be liable for any direct, indirect, incidental, special, or consequential damages arising from your use of the platform or any content provided therein.
10. **Indemnification** You agree to indemnify and hold harmless Betonchain, its affiliates, and their respective directors, officers, employees, and agents from and against any claims, losses, damages, liabilities, costs, and expenses arising out of your use of the platform or violation of these Terms.
11. **Modification of Terms** We reserve the right to update or modify these Terms at any time without prior notice. Your continued use of Betonchain after such changes constitute your acceptance of the revised Terms.

By using Betonchain, you agree to comply with these Terms and any additional guidelines or rules published on the platform. Happy betting!


