# About Megapot

![](https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-7db45cf24de66ab593a4fee78cd3b32a7f0b6a9c%2FCover.png?alt=media)

## $1 per ticket. $1,000,000 prize pool. 1 drawing every day.

The internet's first global, community-run lottery.

Traditional lotteries keep up to 70% of ticket sales for government programs and administrative costs. Megapot returns 100% to the community—split between prize winners, the people who fund the pool, and those who help it grow.

Since July 2024, Megapot has run over $200 million in drawings and created 19 jackpot winners. Real people, winning life-changing money, every single day.

***

## Why Megapot Exists

Megapot is about far more than running a crypto lottery—it's about bringing real-world users onchain.

We believe the best way to onboard the next wave of crypto users isn't through memecoins and trading. It's through something everyone already plays: a lottery. Rebuilt for the internet age, where every ticket sale flows back to the community, every drawing is verifiable, and winners get paid instantly, anywhere in the world.

That's Megapot.

**Community-funded.** The prize pool is backed by real people who deposit funds and earn returns when tickets sell. No money leaving the ecosystem so more money flows back to players, backers, and the community.

**Provably fair.** Winning numbers are transparently generated. You don't have to trust us. You can check the results yourself, after every drawing.

**Global and instant.** Anyone with an internet connection can play. Win, and the funds are immediately claimable—no paperwork, no waiting weeks for a check.

**Transparent.** Every ticket purchase, every drawing, every payout is publically viewable. Nothing hidden.

***

## Backed by the Best

![](https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-4a4ac9c404edf1ae6a7298484886ad07628497a9%2Ffundraise.png?alt=media)

Our ultimate vision is that lotteries converge into a single global draw, a daily ritual where millions of people pause to check their phones and see who just became a billionaire.

In order to achieve this vision, Megapot has raised a $5M pre-seed round led by Dragonfly, with participation from Coinbase Ventures, Bankless Ventures, and the founders of global gaming brands FanDuel, Betfair, and MyPrize.

## Get Started

Ready to participate?

[**Learn How It Works**](/getting-started/how-it-works)

Whether you want to play, back the pool, or refer others—start here.


# How It Works

Megapot is a daily lottery with a simple premise: pick your numbers, buy a ticket, and see if you win. Here's what you need to know.

## The Basics

* **$1 per ticket** — That's it.
* **Daily drawings** — A new drawing every single day.
* **Pick your numbers** — Choose 5 numbers plus 1 bonusball, to win one of 10 different prize tiers.

## What You're Trying to Match

Each drawing produces 6 winning numbers: 5 main numbers and 1 bonusball.

* **Match more numbers = bigger prizes.** The more numbers you match, the more you win.
* **The bonusball multiplies your chances.** It creates extra ways to win across multiple prize tiers.

You don't need to match everything to win something.

## Prize Tiers

Megapot has **10 different prize tiers**, ranging from winning free tickets all the way up to the jackpot.

* Match just a few numbers? You still win.
* Match all 5 numbers plus the bonusball? You hit the jackpot.
* **1 in 4 tickets wins something** — those are pretty good odds.

[See the full prize breakdown](/getting-started/how-to-play/prize-structure)

## Daily Drawings

* Drawings happen **once per day**, every day.
* Results are posted **immediately** after each drawing.
* You can check your tickets right away to see if you won.

Curious how we ensure drawings are completely fair and random? [Learn how drawings are verified](/getting-started/provably-fair)

## Claiming Winnings

Won something? Great — claiming is instant.

* **Check your tickets** after each drawing to see your results.
* **Claim instantly** directly to your wallet.
* **No paperwork, no waiting periods, no hassle.**

Your winnings are yours the moment you claim them.

***

Ready to play? [Buy your first ticket](/getting-started/how-to-play)


# Provably Fair

Every lottery asks you to trust that the drawing is fair. Megapot is different: you can verify it yourself.

Megapot uses [Pyth Network's entropy protocol](https://pyth.network/entropy) to generate winning numbers. Pyth is a trusted data provider that secures over $8 billion in blockchain assets. When the drawing runs, the winning numbers are generated by Pyth and recorded permanently on-chain. Anyone can check the result—no special access required.

This is what "provably fair" means: instead of asking you to trust us, we give you the tools to verify for yourself.

***

## Secured by the Best

[Our smart contracts](/learn/using-smart-contracts) were audited by top security firms:

* [Zellic](https://www.zellic.io/), trusted by Polymarket, Morpho, and Hyperliquid ([view report](https://github.com/coordinationlabs/megapot-v2-audit-reports/tree/main/zellic))
* [Code4rena](https://code4rena.com/), trusted by AAVE, Coinbase, and Chainlink ([view report](https://github.com/coordinationlabs/megapot-v2-audit-reports/blob/main/code4rena/))
* [RiskCherry](https://riskcherry.com/), prominent iGaming auditors (see our [RNG certificate](/appendix/gaming-license#rng-certificate))

***

## How to Verify Results

### Step 1: Locate Jackpot Settlement Transaction

Find a list of [Jackpot Settled Transactions](https://dune.com/megapot/megapot-v2) on our Dune dashboard.

### Step 2: How to Verify the Blockchain Transaction

Search for the `RevealedWithCallback` event which is emitted from [Pyth Entropy](https://www.pyth.network/entropy) Base contract for generating random numbers: [`0x6E7D74FA7d5c90FEF9F0512987605a6d546181Bb`](https://basescan.org/address/0x6e7d74fa7d5c90fef9f0512987605a6d546181bb). You can confirm this is the correct contract in [Pyth's docs](https://docs.pyth.network/entropy/chainlist).

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-60cd7f29c5c61acc4a524933a0a1df7e52bf1c86%2Freveal-with-callback.png?alt=media" alt="Network"><figcaption></figcaption></figure>

Next you can view the actual winning numbers and the amount of winner per tier in the `WinnersCalculated` event. This event is emitted by the `Jackpot` contract: [0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2). The `winningNormals` and `winningBonusball` make up the 6 numbers selected as part of the draw. These numbers are generated using the random number returned by Pyth (see below for more information). The `uniqueResult` field shows the winners within each tier from 0-11 (no matches to jackpot). No matches will always be 0 but the rest reflect the amount of tickets in that tier. Read our [article on prize tiers](/getting-started/how-to-play/prize-structure) to learn more!

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-93160077eb2ccb19f42ccf84f6822d3ee683977e%2Fwinning-ticket.png?alt=media" alt="Network"><figcaption></figcaption></figure>

***

## Deep Dive

### Two-Party Randomness

Here is the key to why Megapot is fair: **two-party randomness**.

When a drawing runs, two things happen:

1. **A random numbers are requested** from Pyth Network, anyone can trigger this once the drawing time arrives
2. **Pyth returns a random number** on-chain
3. **Pyth's random number is combined** with an on-chain random number to create a seed
4. **The seed is used** to select 5 random numbers and a bonusball number

No single party can know what seed will be generated using Pyth and the on-chain randomness. This makes it impossible for anyone—including the Megapot team—to predict or influence the outcome. The results cannot be rigged because no single party controls the randomness.

For more technical details, see [Pyth's documentation](https://docs.pyth.network/entropy/protocol-design).

***

### Why You Can Trust It

Three things make Megapot provably fair:

**1. Independent randomness**

The winning numbers come from Pyth Network, not from Megapot. Anyone can create a number request, it is not reliant on the Megapot team.

**2. Permanent public record**

Every selected combination of numbers is recorded on the blockchain for each drawing. This is a permanent record that anyone can inspect at any time. Nothing can be changed after the fact.

**3. No human intervention**

Once ticket sales close, the entire process runs automatically through smart contracts. No one can step in to change the outcome.

***


# How to Play

Pick your numbers and buy a ticket for just $1.

***

{% hint style="info" %}
**Playing on Telegram?** Telegram users can play on our official [Telegram MiniApp](https://t.me/megapotappbot) — start a chat with [@megapotappbot](https://t.me/megapotappbot) to play!
{% endhint %}

## Buying a Ticket

Each ticket costs **$1 USDC**. Here's how to purchase:

1. **Select ticket quantity** — Choose how many tickets you want to buy
2. **Pick your numbers** — Select 5 numbers (1-30) and 1 bonusball (range varies by jackpot size), or tap **Quick Pick** for random selections
3. **Choose drawings** — Select how many drawings you want to enter. Learn more about our [Auto-Subscription feature](/appendix/faq#what-is-an-auto-subscription-and-how-does-it-work).

Confirm your purchase and you're in.

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-c9994e30c687ae41839fb7a881f239a6c5be960b%2Fplay.png?alt=media&amp;token=d56a03a8-4379-4dac-bec0-201d45e8b1d1" alt=""><figcaption><p>Example Purchase Page</p></figcaption></figure>

***

## After the Drawing

Drawings happen **daily**. After each one:

1. **Check results** — See the winning numbers on the homepage
2. **View matches** — Your tickets show how many numbers matched
3. **Claim winnings** — Prizes pay out instantly to your wallet

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-963a97684aecdec0d538e79ee1b34e18e74a31d1%2Fresults.png?alt=media&amp;token=a0573caa-e066-4cf8-9eee-e261fe84c38b" alt=""><figcaption><p>Example Results Page</p></figcaption></figure>

***

## Your Tickets

View all your tickets in the **My Tickets** section.

* See past and current tickets
* Check match results after drawings
* Track your points earned

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-dbd2fca48045602f85ec7cd64140c9b7afb38fdf%2Ftickets.png?alt=media&amp;token=598bd335-475e-4388-9c68-473e8a32bdf4" alt=""><figcaption><p>Example My Tickets Page</p></figcaption></figure>

***


# Prize Structure

Megapot offers 10 winning prize tiers, giving you many ways to win beyond just the jackpot. With 1 in 4 tickets winning something, your chances of walking away with a prize are better than you might expect.

***

## How Tickets Work

Each ticket costs $1 USDC and contains:

* **5 normal numbers** (selected from 1-30)
* **1 bonusball** (selected from a separate, dynamic range)

You can pick your own numbers or use Quick Pick for random selections. Either way, your ticket is minted as an NFT that you own.

***

## Prize Tiers

There are 10 winning combinations, ranging from matching just the bonusball to hitting the full jackpot:

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-63855942c0ab80f82c458ab6745603c969987923%2Fprize-tiers.png?alt=media" alt="The Prize Tiers panel from the Megapot app: the 10 winning combinations with example payouts from one round, from 5 normal balls plus the bonus ball at the top down to bonus ball only, which wins a free ticket."><figcaption><p>The 10 winning combinations, with example payouts from one round.</p></figcaption></figure>

{% hint style="info" %}
Payouts change every round. For the current round's prizes, head to [megapot.io/play](https://megapot.io/play) and click **Prize Tiers**.
{% endhint %}

**What does NOT win:**

* No matches at all (0 normal numbers, no bonusball)
* 1 normal number only (no bonusball)

***

## How Payouts Are Calculated

Megapot uses a two-part payout system that combines guaranteed minimums with premium payouts. Here is how it works:

### Step 1: Guaranteed Minimums

Each winning tier (except no-win combinations) has a guaranteed minimum payout per ticket. This means if you win, you are assured at least a baseline prize.

### Step 2: Calculate Total Guarantees

Before distributing premiums, the system calculates all potential winners across the ticket pool. This includes any unpurchased ticket combinations.

### Step 3: Create the Premium Pool

After all guaranteed payouts are set aside, what remains becomes the "premium pool." This is the extra prize money available on top of the guaranteed minimums.

### Step 4: Distribute Premium Payouts

Each tier is assigned a percentage of the premium pool based on how many numbers you matched. Higher tiers receive a larger share of the premium.

### Step 5: Final Payout

Your total payout = Guaranteed minimum + Your ticket's share of the premium for your tier

***

## What About Duplicate Numbers?

Since players can choose their own numbers, multiple tickets might share the same winning combination. Here is how that affects payouts:

**Guaranteed portion**: Every winning ticket receives the full guaranteed minimum, regardless of duplicates. If 10 tickets share the same winning numbers, all 10 get the guaranteed payout.

**Premium portion**: The premium for that tier is split among all winning combinations (including unpurchased tickets) for that tier *plus* duplicate tickets. More duplicates mean a smaller premium share for each.

**What this means for you**: Picking unique number combinations can result in larger payouts if you hit a premium tier, since you would not be splitting the premium with others who chose the same numbers.

***

## Understanding Your Odds

### Why Odds Vary

Your odds of winning depend on two factors:

1. **Normal numbers**: Always selected from 1-30
2. **Bonusball range**: This is dynamic and adjusts based on prize pool size

### Dynamic Bonusball Range

The bonusball range changes to keep the system sustainable:

* **Larger prize pool** = Wider bonusball range = Harder jackpot odds
* **Smaller prize pool** = Narrower bonusball range = Better jackpot odds

This adjustment ensures the prize pool can cover expected payouts while still offering meaningful prizes.

### The Numbers

* **1 in 4 tickets** wins something across all tiers
* **Lower tiers** (matching just the bonusball or 1-2 numbers) have reasonable odds
* **Jackpot odds** are long, as with any major lottery

### Compared to Traditional Prize Games

Megapot returns approximately 77.5% of ticket sales as prizes, compared to 50% or less for many traditional operators. This means more of each dollar goes back to winners.

However, like any lottery, the jackpot remains a long shot. The difference is that Megapot is transparent about the odds, and you can verify exactly how every drawing works on-chain.

***

## Expected Value

We believe in being upfront: like all lotteries, Megapot has a house edge. For every $1 ticket:

* **\~77.5%** is returned as prizes to winners
* **\~12.5%** goes to Backers (who fund the prize pool)
* **\~10%** goes to Referrers (who help grow the community)

This means the expected return per ticket is approximately $0.775. You are paying for the chance to win, not for a guaranteed return.

The difference from traditional games: instead of ticket revenue leaving the ecosystem, that 22.5% goes directly to community members (Backers and Referrers) who make Megapot possible.

{% hint style="info" %}
As of June 25, 2026, the share of the edge accruing to Backers changed from \~20% to \~12.5% per ticket, with the difference redirected into larger prize payouts.
{% endhint %}

***

## Prize Pool Size and Payouts

The size of the prize pool directly affects your potential winnings:

* **Larger pool** = Bigger prizes across all tiers
* **More tickets sold** = More revenue = Larger pool

The jackpot grows as more players participate. The current jackpot is always displayed before you buy, so you know exactly what is at stake.

***

## Key Takeaways

1. **10 winning tiers** - Many ways to win beyond the jackpot
2. **1 in 4 tickets wins** - Better odds of winning something
3. **Guaranteed minimums** - Every winner gets at least the baseline
4. **Premium payouts** - Extra winnings on top of guarantees
5. **Unique numbers matter** - Avoid duplicates for potentially larger premiums
6. **\~77.5% back to winners** - More than traditional operators return
7. **Transparent odds** - Everything is verifiable on-chain

***

## Next Steps

* [How to Play](/getting-started/how-to-play) - Buy your first ticket
* [Provably Fair](/getting-started/provably-fair) - How randomness is generated
* [The Ecosystem](/learn/the-ecosystem) - How Players, Backers, and Referrers work together


# Lottery Mechanism

Understanding how Megapot's lottery works helps you make informed decisions about playing.

***

## How the Lottery Works

Each Megapot ticket has 6 numbers:

* **5 normal numbers** - chosen from 1 to 30
* **1 bonusball** - chosen from a dynamic range that changes each drawing

When the drawing runs, 6 winning numbers are selected using verifiable randomness from Pyth Network. Your prize depends on how many of your numbers match (see our article on [Prize Structure](/getting-started/how-to-play/prize-structure) to learn more).

***

## Dynamic Bonusball Range

You may notice the bonusball range changes from drawing to drawing. This is intentional and serves an important purpose.

### Why the Range Changes

The bonusball range adjusts based on the size of the prize pool:

* **Larger pool** - Wider bonusball range, harder to hit the jackpot
* **Smaller pool** - Narrower bonusball range, easier to hit the jackpot

This keeps the lottery economically sustainable by ensuring the backers can keep their edge on ticket sales. If the bonusball range was set too low for the size of the pool then they would be incentivized to withdraw from the pool thus making the prize pool smaller for players!

### When the Range Is Set

The bonusball max is locked in the moment a new drawing begins, right after the previous drawing is drawn. Once set, it stays fixed for that entire drawing while tickets are on sale.

### How the Range Is Calculated

The goal is to make sure there are always enough possible ticket combinations to back the prize pool being offered. It comes down to three numbers:

**1. How many combinations a single bonusball value provides.** With 5 normal balls chosen out of `normalBallMax` options, each bonusball value opens up this many combinations:

```
combosPerBonusball = C(normalBallMax, 5)
```

(where `C(n, 5)` is "n choose 5" — the number of ways to pick 5 balls from n.)

**2. How many tickets need to exist to support the prize pool.** This depends on the prize pool, the ticket price, and the target edge:

```
minNumberTickets = prizePool / ((1 − lpEdgeTarget) × ticketPrice)
```

Intuitively, the higher the target edge, the more tickets the prize pool has to be spread across — which in turn calls for a wider bonusball range.

**3. The bonusball max itself** — the range needed to cover that target number of tickets:

```
bonusballMax = ⌈ minNumberTickets / combosPerBonusball ⌉
```

(rounded up to the next whole number.)

Where:

* **`normalBallMax`** - the number of options for each normal ball (currently 30, so players pick 5 numbers from 1-30).
* **`prizePool`** - the size of the prize pool being offered for the drawing.
* **`ticketPrice`** - the cost of a single ticket.
* **`lpEdgeTarget`** - the target edge the backers keep on ticket sales, expressed as a fraction (e.g. `0.3` for a 30% edge).

Put together: **as the prize pool grows, the bonusball range widens; when the pool is smaller, the range shrinks back down.** This keeps the number of possible tickets in step with whatever prize is on offer for that drawing.

## Understanding Your Odds

Your odds depend on two factors:

1. **Normal balls** - Fixed range of 1-30, picking 5 unique numbers
2. **Bonusball** - Dynamic range that changes each drawing

### Calculating Odds

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-6ad1d62062f7e03c964e01dc0f5f132935abb6f4%2Ftier-formula.png?alt=media" alt=""><figcaption><p>Prize tier probability formula</p></figcaption></figure>

For the normal balls, you are matching 5 numbers out of 30. The odds of matching all 5 are approximately 1 in 142,506.

For the bonusball, if the range is 1-10, your odds of matching it are 1 in 10.

Combined jackpot odds would be roughly 1 in 1.4 million (142,506 x 10). If the bonusball range narrows to 1-5, jackpot odds become approximately 1 in 713,000; if it widens, the jackpot becomes correspondingly harder to hit.

Lower prize tiers have much better odds since they require fewer matches.

***


# How to Refer

Share Megapot with others and earn fees when they play.

***

## What is Referring?

Referrers earn fees by bringing new players to Megapot. You have two income streams:

* **Purchase fees** — 8% of ticket sales from your referrals
* **Win share** — 8% when your referrals claim prizes
* **Second-order** — 2% of your referrals' referral sales and prizes

Plus, earn points when your referrals participate.

***

## Quick Start

1. **Generate your link** — Click Share & Win to generate a unique referral URL
2. **Share it** — Send to friends, post on social media
3. **Earn fees** — Accumulate rewards when they buy or win

***

## Creating Your Referral Link

1. Navigate to the [**Share & Win**](https://megapot.io/share) page
2. Copy your unique referral link
3. Share it anywhere

Anyone who visits through your link becomes your referral.

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-2e3eef01dafbcbcd462d6ab7b7351566e708084c%2Fshare.png?alt=media&amp;token=cbf9957d-3af7-4911-b4bb-86dfae167438" alt=""><figcaption><p>Example Share &#x26; Win Page</p></figcaption></figure>

***

## How You Earn

| Source                           | You Earn       |
| -------------------------------- | -------------- |
| Referral buys tickets            | 8% of purchase |
| Referral wins a prize            | 8% of winnings |
| Referral's referral buys tickets | 2% of purchase |
| Referral's referral wins a prize | 2% of winnings |

Fees accumulate automatically and can be claimed anytime.

***

## Tracking & Claiming

View your referrals on the [**Share & Win**](https://megapot.io/share) page:

* **Referred players** — See who you referred

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-3fca84e39aea9ff1e2723d9f8ddfb4fabf4f567d%2Freferred.png?alt=media&amp;token=7c0aad60-197f-443c-bfc5-979f526a2dd6" alt=""><figcaption><p>Example Referred Players Page</p></figcaption></figure>

View your referrals tickets on your **My Tickets** page:

* **Shared Tickets** — See the tickets your Referral is playing, if they win you win!

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-06983c83592ec4626713a2fc8b23c0e560207c58%2Freferred-win.png?alt=media&amp;token=f1814a36-a057-4395-8d0b-f85ac3aadb0a" alt=""><figcaption><p>Example My Tickets Page</p></figcaption></figure>

To [claim Winnings & Referral Fees](https://megapot.io/winnings), tap **Claim**. Fees transfer instantly to your wallet.

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-c47ae56775bcca58da4a547a715d26882f306de8%2Fwinnings.png?alt=media&amp;token=d1679be2-50c0-48cb-b0af-8a9b97f29bd2" alt=""><figcaption><p>Example Claim Winnings Page</p></figcaption></figure>


# Earn by Referring Your Friends

Referrers earn by growing the Megapot community. When you bring new players to Megapot, you earn a portion of their activity for life. Every ticket they buy, every prize they win, you get a cut.

But it doesn't stop there. When your referrals refer others, you earn from them too.

***

## Build Your Network, Multiply Your Chances

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-1c4e052ddacd8f82957685d5b81198e4e0ffeb57%2Fcould-be-a-winner.png?alt=media" alt="Multiply Your Chances"><figcaption></figcaption></figure>

Every person in your referral network is another chance at sharing in a big win. The more your network grows, the more tickets are being played on your behalf.

**Your referral wins a $100,000 prize. You earn $8,000.**

You didn't buy the ticket. You didn't pick the numbers. You just shared a link.

### How Your Network Grows

When you refer someone, they become your **first-order referral**. When they refer someone else, that person becomes your **second-order referral**. You earn from both.

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-ea0628e44b894e2e5d3ac9e2e50252c23241d160%2Fnetwork.png?alt=media" alt="Network"><figcaption></figcaption></figure>

Your network can grow without you lifting a finger. Every time Alice brings someone new to Megapot, your earning potential increases.

***

## Two Ways to Earn

### Purchase Fees

Every time someone in your network buys a ticket, you earn a percentage.

* First-order referrals: **8%** of ticket price
* Second-order referrals: **2%** of ticket price

| Who Buys            | Ticket Price | You Earn |
| ------------------- | ------------ | -------- |
| Alice (first-order) | $100         | $8.00    |
| Bob (second-order)  | $10          | $0.20    |

### Win Share

When someone in your network wins a prize, you earn a percentage of their winnings.

* First-order referrals: **8%** of prize
* Second-order referrals: **2%** of prize

| Who Wins            | Prize    | You Earn |
| ------------------- | -------- | -------- |
| Alice (first-order) | $100,000 | $8,000   |
| Bob (second-order)  | $1,000   | $20      |

***

## When You Get Paid

| Fee Type      | When It's Credited                    | When You Can Claim |
| ------------- | ------------------------------------- | ------------------ |
| Purchase fees | Instantly when tickets are bought     | Anytime            |
| Win share     | When your referral claims their prize | Anytime            |

No minimum threshold. No waiting period. Claim whenever you want.

***

## Next Steps

* [How to Refer](/getting-started/how-to-refer) - Set up your referral link and start earning
* [The Ecosystem](/learn/the-ecosystem) - Understand how all participants work together


# Funding Pages

Funding Pages let you support causes you care about while playing Megapot. When you buy tickets through a Funding Page, 100% of Megapot's referral fees go directly to that organization, Megapot takes none of it.

***

## How It Works

### For Players

When you purchase tickets through a Funding Page (like `/fund/pg` for Protocol Guild):

1. **You play normally** — Same jackpot, same odds, same prizes
2. **Fees fund the cause** — 100% of referral fees are held in the smart contract for the organization to claim
3. **Your support compounds** — If you sign up through a Funding Page, all your future purchases continue funding that cause

### For Organizations

Organizations receive a dedicated landing page with:

* Custom branding and messaging
* Embedded ticket checkout
* Built-in compliance — geo-blocking, KYC, and gaming license coverage handled by Megapot

Fees accumulate in the Megapot smart contract and can be claimed by the organization at any time.

{% hint style="info" %}
Interested in launching a Funding Page? [Fill out our interest form](https://docs.google.com/forms/d/1BEz1RVzX-GMyNFX_ov07-GyG2OUToCpJ-prgrvcLkbc/edit).
{% endhint %}

***

## What Makes This Different

Traditional lotteries claim to fund good causes, but you have no say in where the money goes. With Funding Pages, you choose. Every ticket purchase becomes a direct contribution to the cause you select.

Because fund allocations happen onchain, anyone can verify exactly how much has been raised and when funds are claimed.

***

## FAQ for Players

**Do I have the same chance of winning?**

Yes. Funding Pages use the same prize pool and drawing mechanism as the main Megapot game. Your odds are identical.

**Can I support multiple causes?**

If you're an existing Megapot user, yes. Each purchase you make through a different Funding Page routes fees to that organization.

If you're a new user who signs up through a Funding Page, that organization becomes your permanent referrer for all future purchases (except for ticket purchases on a different funding page).

**How do I know the funds actually reach the organization?**

All fee accumulation and claims happen onchain. We will vet organizations we work with to ensure they are legitimate. The funding page displays the address designated by the organization as the claimer.

**Does this cost me more than buying tickets normally?**

No. The ticket price is the same. The difference is where the referral fees are directed.

***

## FAQ for Organizations

**How much do we receive?**

You receive 100% of the referral fees from purchases made through your Funding Page. Megapot takes none of it.

**How and when do we get paid?**

Fees accumulate in the Megapot smart contract as players purchase tickets. You can claim your accumulated fees at any time, there's no minimum threshold or waiting period.

**Is this one-time or recurring?**

Both. Each purchase generates fees immediately. Additionally, new users who sign up through your page become permanently attributed to your organization, so their future purchases continue generating fees for you indefinitely.

**Do we need to worry about gaming compliance?**

No. Your Funding Page is hosted on Megapot's platform and operates under our gaming licenses. You receive referral fees, not lottery proceeds directly, so your organization doesn't need to obtain gaming licenses or manage regulatory compliance. Megapot handles geo-blocking, KYC requirements, and all other compliance obligations.

***

## Current Partners

* [**Protocol Guild**](https://github.com/coordinationlabs/v2-gitbook/tree/main/fund/pg/README.md) — Funding the 190+ contributors who build and maintain Ethereum's core infrastructure

***

Interested in launching a Funding Page for your organization? [Get in touch](https://github.com/coordinationlabs/v2-gitbook/tree/main/learn/link-to-form/README.md).


# Earn by Backing the Prize Pool

**Anyone can back the prize pool and earn yield on dollars, in dollars, by taking on variance!**

Think of it like being the house, you fund the prizes and receive mathematical edge from every ticket sold. Over time, the math favors you, and the more tickets sold, the more you're likely to earn.

***

## How Backing the Prize Pool Works

First a quick, high-level refresher on the Megapot protocol:

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-6dffa04e186a6e37e145035f56c3e5ed4f0bfa80%2Fwhat-is-megapot.png?alt=media" alt="What is Megapot"><figcaption></figcaption></figure>

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-e925147a7d9f3be5d3d69c6cbe8a375111b34a6a%2Fnew-flywheel.png?alt=media" alt="Flywheel"><figcaption></figcaption></figure>

Now, here's how backing the prize pool works:

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-bd888c5ed38ef503c4d1cf2000de1c9e7ceaedd9%2Fnew-high-level.png?alt=media" alt="High Level"><figcaption></figcaption></figure>

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-7a792e57650dfc259ccd8c1f517510ca737153d2%2Fnew-mech-walkthrough.png?alt=media" alt="Mechanism Walkthrough"><figcaption></figcaption></figure>

***

## Understanding the Return Profile

Backers have a mathematical edge, for every dollar of tickets sold, they expect to earn approximately 12.5 cents after prizes are paid as compensation for taking on the variance of any single drawing.

{% hint style="info" %}
As of June 25, 2026, the share of the edge accruing to Backers changed from \~20 cents to \~12.5 cents per dollar of tickets sold, with the difference redirected into larger prize payouts.
{% endhint %}

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-11e9aaecb99812ce57f48bdcb45e35787d24f3bd%2Fdrawing-outcomes.png?alt=media" alt="Drawing Outcomes"><figcaption></figcaption></figure>

Over hundreds or thousands of drawings, this edge compounds and trends toward expected returns.

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-2ddec259d6c717f1f5c93468a6b025cdacc6d327%2Fposition-growth.png?alt=media" alt="Compounding Returns"><figcaption></figcaption></figure>

Ultimately, it pays to stay in the pool over the long-term. Every outcome probability is known ahead of time and constantly working in the backer's favor.

{% hint style="info" %}
For a more technical discussion of the return profile and to run your own profit simulations check out our [Jupyter Notebook](https://colab.research.google.com/github/coordinationlabs/backer-jupyter-notebook/blob/main/LP_Risk_Return_Analysis.ipynb).
{% endhint %}

***

## Next Steps

* Ready to back? Learn [How to Back the Pool](/getting-started/backer-economics/how-to-back-the-pool)
* Want to understand the full system? Read [The Ecosystem](/learn/the-ecosystem)
* Questions? Reach out on our [Support Chat](https://megapot.io/support)


# How to Back the Prize Pool

Fund the prize pool and earn returns from ticket sales.

***

## What is Backing?

Backers deposit USDC to fund the jackpot prizes. In return, you earn a share of ticket sales revenue from every drawing. Think of it like being the house—you fund the prizes and earn returns.

**Key points:**

* Returns come from ticket sales (\~12.5% of each ticket)
* Risk: Large jackpot wins reduce the pool temporarily
* No guaranteed returns—this is not a fixed-yield product
* Earn points based on your deposited amount
* Learn more about [Backer Economics](/getting-started/backer-economics)

***

## Quick Start

1. **Connect wallet** — Have USDC ready on Base
2. **Deposit USDC** — Enter your amount and confirm
3. **Earn returns** — Your share of ticket sales accumulates each drawing

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-67bef514ac402d7f8763f647b6423509b9a6bddb%2Fdeposit.png?alt=media&amp;token=f6091769-0c91-443a-99a0-b94f8d3cb613" alt=""><figcaption><p>Example Back the Pool Page</p></figcaption></figure>

***

## Depositing Funds

1. Navigate to the **Back** page
2. Enter your deposit amount in USDC
3. Approve and confirm the transaction
4. Your deposit becomes active in the next drawing

Your deposit is converted to shares, representing your portion of the pool.

***

## Monitoring Your Position

View your backing position anytime:

* **Your shares** — Your ownership stake in the pool
* **Current value** — What your shares are worth now
* **Earnings** — Returns accumulated from ticket sales

***

## Withdrawing Funds

Withdrawals follow a three-phase process:

1. **Initiate** — Request your withdrawal
2. **Wait** — The current drawing must complete first
3. **Finalize** — Claim your USDC

The waiting period ensures fair settlement of each drawing before funds leave the pool.

{% hint style="info" %}
Join our [Prize Pool Notification Telegram Group](https://t.me/+LCapkuwT3IViZjIx) to receive updates on pool openings, performance, and other important information.
{% endhint %}


# Points Program

Points reward you for participating in Megapot. Earn points by playing, referring friends, or backing the prize pool.

## How to Earn Points

There are three ways to earn points:

### Playing

Every ticket you buy earns points. Each ticket is assigned a random point value when purchased:

| Points | Chance |
| ------ | ------ |
| 100    | 60%    |
| 200    | 20%    |
| 500    | 10%    |
| 1,000  | 7%     |
| 2,500  | 2%     |
| 5,000  | 0.75%  |
| 10,000 | 0.25%  |

Most tickets earn 100 points, but you might get lucky with a rare 10,000-point ticket!

### Referring Friends

Earn points when people you refer buy tickets:

* **Direct referrals**: Earn **20%** of your referral's ticket points
* **Second-level referrals**: Earn **5%** of their ticket points

For example, if someone you referred buys a ticket worth 1,000 points, you earn 200 points. And if *they* referred someone who buys that ticket, they'd earn 50 points too.

### Backing the Prize Pool

Liquidity providers earn points based on their deposit size:

* **65 points per $100 deposited per drawing**

If you deposit $500, you earn 325 points each drawing for as long as your deposit is active.

Note: Backer points are tracked separately and don't count toward VIP level progression.

***

## VIP Levels

As you accumulate points, you'll progress through VIP levels. Each level unlocks a multiplier that boosts all your future point earnings.

| Level    | Points Required | Multiplier |
| -------- | --------------- | ---------- |
|          | 0               | 1x         |
| Bronze   | 1+              | 1.1x       |
| Silver   | 10,000+         | 1.25x      |
| Gold     | 50,000+         | 1.5x       |
| Platinum | 250,000+        | 1.75x      |
| Emerald  | 3,000,000+      | 2x         |
| Ruby     | 15,000,000+     | 2.25x      |
| Diamond  | 100,000,000+    | 2.5x       |
| Elite    | 1,000,000,000+  | 3x         |

### How Multipliers Work

Your VIP multiplier applies to points you earn *after* reaching that level.

For example, if you're Gold level (1.5x) and buy a ticket worth 1,000 base points, you'll receive 1,500 points. The higher your level, the faster you climb!

Multipliers apply to:

* Ticket purchase points
* Referral points (based on *your* level, not the buyer's)

Multipliers do **not** apply to Backer points.

***

## Tips for Earning More Points

1. **Keep playing** - Every ticket earns points, and you might hit a rare high-value ticket
2. **Refer friends** - Build your network and earn 20% of their ticket points automatically
3. **Level up early** - Higher VIP levels mean bigger multipliers on everything you earn going forward


# VIP Program

Megapot offers a competitive VIP program for creators who want to share Megapot with their community.

## How VIPs Earn

Megapot VIPs receive **80% revenue share on their referrals**.

This means that for players you refer, **you keep the large majority of the revenue**. Megapot retains the remaining share, which it reinvests — along with more — into rewards and incentives for users.

You drive the traffic, so you earn the majority of the revenue from your audience.

There are two ways to earn: from ticket purchases and from prizes won by your network.

### Tier 1:

Creators who share Megapot with their communities and earn referral revenue.

Benefits:

* **8% fee on tickets their referrals buy**
* **8% bonus on what their referrals win**
  * If someone wins $100k, you win $8k.
* **2% from second-level referrals**
  * If your referral’s referral buys $50 of tickets and wins $100, you earn $3. This is from $1 in fees and $2 bonus.

| Ticket Volume Referred | Earnings from ticket fees | Expected earnings from winnings bonus | **Total Earnings** |
| ---------------------- | ------------------------- | ------------------------------------- | ------------------ |
| $5,000                 | $400                      | Variable ($280 avg)                   | **$680**           |
| $15,000                | $1,200                    | Variable ($840 avg)                   | **$2,040**         |
| $30,000                | $2,400                    | Variable ($1,680 avg)                 | **$4,080**         |
| $50,000                | $4,000                    | Variable ($2,800 avg)                 | **$6,800**         |
| $62,500+               | $5,000                    | Variable ($3,500 avg)                 | **$8,500**         |

### Tier 2:

This tier for creators who actively grow participation in their communities and want a long-term partnership with Megapot.

Partners in this tier receive all Tier 1 benefits, and can earn additional milestone-based bonuses based on meeting ticket volume milestones.

| Ticket Volume Referred | Earnings from ticket fees | Expected earnings from winnings bonus | Additional milestone bonus | **Total Earnings** |
| ---------------------- | ------------------------- | ------------------------------------- | -------------------------- | ------------------ |
| $5,000                 | $400                      | Variable ($280 avg)                   | $250                       | **$930**           |
| $15,000                | $1,200                    | Variable ($840 avg)                   | $900                       | **$2,940**         |
| $30,000                | $2,400                    | Variable ($1,680 avg)                 | $2,100                     | **$6,180**         |
| $50,000                | $4,000                    | Variable ($2,800 avg)                 | $4,000                     | **$10,800**        |
| $62,500+               | $5,000                    | Variable ($3,500 avg)                 | $5,000 (cap)               | **$13,500**        |

**Requirements**

* Maintain an **active LP position backing the jackpot**
* Minimum **$1,000 deposit to back the jackpot**
* Limited availability, we are prioritizing a small group to work closely with

This ensures partners are aligned with the network by backing the prize pool while helping grow it. The LP position also earns yield from ticket fees.

[Learn more about the liquidity program.](/getting-started/backer-economics)

## Build a Network That Earns Over Time

You do not need to win the jackpot yourself to benefit.

As your network grows:

* more people are buying tickets through your referral link
* your earnings grow alongside the activity you help generate
* more chances exist for someone in your network to win

Every participant you introduce increases the number of possible winning outcomes that can generate rewards for you. You even get to see who you referred and how much volume they’re contributing.

## Points Program

Megapot also runs a points system that rewards participation.

Points can be earned through:

* buying tickets
* referring players
* backing the prize pool

As points accumulate, participants progress through VIP tier levels that increase future point earnings through multipliers.

## Perks Coming Soon for VIPs

* **Sign-up bonuses-** When someone signs up using your referral link, they receive a free ticket on their first deposit.
* **Giveaways-** Create a limited-supply link to gift free tickets directly to your audience.

## Next Steps

If you are interested in joining the Megapot VIP Program, reach out to us at <team@megapot.io>, DM us on X [@megapot](https://x.com/megapot), or Telegram at @Megalouisa


# The Ecosystem

Megapot brings together three groups of participants, each playing a different role in making the lottery work. Understanding how they fit together helps explain why Megapot can offer better odds and instant payouts.

***

## Three Roles, One System

### Players

Traditional lotteries keep most of your money. Megapot returns approximately 77.5% as prizes. For just $1 USDC, you're in the running for 10 prize tiers—including the jackpot. And with a drawing every single day, you don't have to wait long for your next chance.

### Backers

Backers fund the prize pool. They deposit USDC, and that money becomes available as prizes. In return, Backers earn a share of ticket sales revenue.

Think of Backers as the foundation that makes everything possible. Without them, there would be no prizes to win. In exchange for taking on this role, they earn returns from every ticket sold.

### Referrers

Referrers help spread the word about Megapot. When someone uses a referral link to buy tickets, the Referrer earns a portion of the sale. If that player wins, the Referrer also earns a share of the winnings.

Referrers are incentivized to bring in players who stick around, because their earnings grow when their referrals win. Learn more on our [Referral Economics](/getting-started/how-to-refer/referral-economics-v2) page.

***

## How Money Flows

Every dollar spent on tickets flows through the system in a predictable way. Here is how it breaks down:

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-5961ae1e65eabfc57c95e86622fb85011f6ebd86%2FMegapot.png?alt=media&amp;token=b5b760b0-b8f7-40c4-9001-2f09bd0a12b8" alt="Megapot Mechanism"><figcaption><p>Megapot Mechanism</p></figcaption></figure>

### Step by Step

**1. Backers fund the prize pool**

Backers deposit funds into the prize pool. Their deposits becomes available as prize money.

**3. Players buy tickets**

Each $1 ticket purchase gets split:

* \~90% goes to Backers (as revenue)
* \~10% goes to Referrers (as fees)

**4. The drawing runs**

Once daily, Pyth Network generates verifiable random numbers. These determine the winning combination. No one can predict or manipulate the outcome.

**5. Winnings Calculated**

Approximately 77.5% of ticket sales are paid out as prizes across all tiers. 10% of prizes are paid to referrer's as a referral win share.

**6. The cycle continues**

After each drawing, a new round begins. Backers' positions update based on the results, and the system is ready for the next day.

### The Key Insight

Backers receive 90% of ticket revenue, but over time approximately 77.5% gets paid out as prizes. The difference (roughly 12.5%) is the expected Backer return per ticket. This is how Backers earn yield while making the prize pool possible.

***

## Why Everyone Benefits from Growth

The Megapot ecosystem is designed so that all three roles benefit each other and drive further community growth.

**When more Players join:**

* Backers earn more revenue
* More Backers join the pool
* Prize pools get larger (more exciting jackpots)

**When more Backers join:**

* Bigger jackpots mean bigger wins
* Larger prize pools attract more Players
* Referrers convert at a higher rate
* More referrers join

**When more Referrers join:**

* More Players discover Megapot
* More Players play Megapot
* Backers earn more revenue

This alignment of incentives is what makes the system sustainable. No single group can succeed at the expense of the others.

***

## What Makes This Work

Megapot operates differently from traditional lotteries in several important ways:

| How Megapot Works                      | What This Means for You                                        |
| -------------------------------------- | -------------------------------------------------------------- |
| Community funds the prizes             | 100% of ticket sales return to Players, Backers, and Referrers |
| Every transaction is on-chain          | You can verify exactly where your money goes                   |
| Pyth Network generates winning numbers | Results are provably random and tamper-proof                   |
| Smart contracts handle payouts         | Winners receive prizes instantly to their wallets              |
| Global participation                   | Same game, same rules, wherever you are                        |

***

## Next Steps

Now that you understand how the ecosystem works, try out the role that interests you most:

* **Want to play?** Learn [How to Play](/getting-started/how-to-play)
* **Interested in backing?** Learn [How to Back the Pool](/getting-started/backer-economics/how-to-back-the-pool)
* **Ready to refer?** Learn [How to Refer](/getting-started/how-to-refer)

Or continue learning:

* [Provable Fairness](/getting-started/provably-fair) - Why our lotteries are provably fair
* [Prize Structure](/getting-started/how-to-play/prize-structure) - How tiers and payouts work
* [Backer Economics](/getting-started/backer-economics) - Deep dive on Backer returns
* [Referrer Economics](/getting-started/how-to-refer/referral-economics-v2) - Deep dive on Referrer returns


# Application vs Protocol

Megapot consists of two distinct components: the **Megapot Protocol** and the **Megapot Application**. Understanding the difference helps clarify how the system works and what options you have for participating.

## The Megapot Protocol

The Megapot Protocol is a set of smart contracts deployed on Base (an Ethereum Layer 2 network). These contracts handle all lottery operations—ticket sales, prize distribution, backer management, and referral tracking.

The protocol is **fully on-chain and permissionless**. This means:

* **Anyone can interact with it directly** through the [smart contracts](/learn/using-smart-contracts)
* **All transactions are publicly verifiable** on the [blockchain](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2)
* **The rules are encoded in** [**code**](https://github.com/coordinationlabs/megapot-v2-public), not controlled by any single entity

### Interact Directly With the Protocol

You can interact with the Megapot Protocol directly through Basescan without using any application. This allows you to buy tickets, claim prizes, manage Backer positions, and more—all by calling the smart contracts yourself.

[**Learn how to use the smart contracts directly on Basescan**](/learn/using-smart-contracts)

## The Megapot Application

The Megapot Application is the web interface at [megapot.io](https://megapot.io). It provides a user-friendly way to interact with the Megapot Protocol, including:

* Buying tickets with an easy-to-use interface
* Viewing drawings and checking results
* Managing Backer positions
* Tracking referral earnings

The application is **one way to access the protocol**, but not the only way.

### Licensed Gaming Operator

The Megapot Application is a [licensed gaming operator](/appendix/gaming-license) that must adhere to gaming regulations. This includes requirements such as:

* Know Your Customer (KYC) verification for certain activities
* Responsible gaming protections
* Geographic restrictions based on regulatory requirements
* Compliance with applicable gaming laws

These requirements apply to the Megapot Application **only**. The underlying protocol remains permissionless, but applications built on top of it may have their own compliance obligations.

## Key Differences

|                  | Megapot Protocol                  | Megapot Application                                   |
| ---------------- | --------------------------------- | ----------------------------------------------------- |
| **What it is**   | Smart contracts on Base           | Web interface at megapot.io                           |
| **Access**       | Permissionless, open to anyone    | Publicly accessible website                           |
| **Regulation**   | Code-based rules only             | Licensed gaming operator with compliance requirements |
| **Alternatives** | None                              | One of many possible interfaces                       |
| **Data**         | All on-chain, publicly verifiable | Displays on-chain data                                |


# Audits

Megapot's smart contracts have been audited by leading security firms in the blockchain and iGaming industries. We believe in transparency and security, which is why we've worked with top-tier auditors to ensure the safety of your funds.

{% hint style="info" %}
**Reporting a vulnerability:** email <security@megapot.io>. Review our [Security policy](/appendix/security) and [Bug Bounty Program](/appendix/bug-bounty).
{% endhint %}

***

## Security Audits

Our smart contracts were audited by top security firms:

* [Zellic](https://www.zellic.io/), trusted by Polymarket, Morpho, and Hyperliquid ([view report](https://github.com/coordinationlabs/megapot-v2-audit-reports/tree/main/zellic))
* [Code4rena](https://code4rena.com/), trusted by AAVE, Coinbase, and Chainlink ([view report](https://github.com/coordinationlabs/megapot-v2-audit-reports/blob/main/code4rena/))
* [RiskCherry](https://riskcherry.com/), prominent iGaming auditors (see our [RNG certificate](/appendix/gaming-license#rng-certificate))

***

## Smart Contracts on Basescan

You can view and verify all of our smart contracts directly on Basescan, Base's blockchain explorer. This provides complete transparency into how Megapot operates.

For detailed information on interacting with our contracts, see our guide on [Using Smart Contracts With Basescan](/learn/using-smart-contracts).

***

## Additional Security Information

For more information about how Megapot ensures fairness and security:

* Learn about our [Provably Fair](/getting-started/provably-fair) lottery mechanism
* View our [Gaming License](/appendix/gaming-license) and RNG certificate
* Explore the [Protocol Reference](/build-on-megapot/build/protocol-reference) for technical details


# Use Smart Contracts With Basescan

The Megapot protocol operates autonomously, enabling anyone to build on it, or use it, without permission. This article covers usage via the neutral third-party app, Basescan. *Use the quick links below to learn how to use the contracts directly for the given actions. If you are new to Basescan, make sure to review the* [*Getting Started*](#getting-started) *section*:

* [Buy Tickets (10 or less)](#buy-tickets)
* [Buy Random Tickets (10 or less)](#buy-random-tickets)
* [Buy Tickets (more than 10)](#create-batch-order)
* [Claim Winnings](#claim-winnings)
* [Deposit Funds to Prize Pool](#deposit-to-prize-pool)
* [Initiate Withdrawal from Prize Pool](#initiate-withdrawal)
* [Finalize Withdrawal from Prize Pool](#finalize-withdrawal)
* [Claim Referral Fees](#claim-referral-fees)
* [Transfer USDC from Smart Contract Wallet](#transferring-usdc-from-a-smart-contract-wallet)

***

## Use the Contract Directly on Basescan

### Getting Started

![Basescan Connect Wallet](https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-1a49c81a84af12c673809f0b20f91426c7ea900e%2Fconnect-wallet.png?alt=media)

1. Navigate to the contract address on [Basescan](https://basescan.org)
2. Click the **Contract** tab (pink box), then **Write Contract** tab (green box). When approving USDC you will need to click on the **Write as Proxy** tab instead of **Write Contract**.
3. Click **Connect to Web3** (see red arrow in image above) and connect your wallet
4. Find the function you want to call and enter the required parameters

***

## Contract Addresses

All contracts are deployed on **Base** (Chain ID: 8453).

| Contract                          | Address                                      | Description                         |
| --------------------------------- | -------------------------------------------- | ----------------------------------- |
| Jackpot                           | `0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2` | Main lottery orchestrator           |
| JackpotLPManager                  | `0xE63E54DF82d894396B885CE498F828f2454d9dCf` | Backer deposit and share management |
| JackpotTicketNFT                  | `0x48FfE35AbB9f4780a4f1775C2Ce1c46185b366e4` | ERC-721 ticket NFTs                 |
| JackpotAutoSubscription           | `0x2694Bd48f3e6B4775943067DC842C93bf5F19DcD` | Auto-subscription management        |
| BatchPurchaseFacilitator          | `0xBA343479D98a1Ed333899999D95a7343B808a76F` | Batch ticket purchases              |
| JackpotRandomTicketBuyer          | `0xb9560b43b91dE2c1DaF5dfbb76b2CFcDaFc13aBd` | Random ticket purchases             |
| GuaranteedMinimumPayoutCalculator | `0x97a22361b6208aC8cd9afaea09D20feC47046CBD` | Prize tier calculations             |
| ScaledEntropyProvider             | `0x5D030DEC2e0d38935e662C0d2feD44B050c8Ae51` | Pyth randomness integration         |

***

## Player Functions

### Buy Tickets

**Contract:** Jackpot ([Basescan](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2))

**Function:** `buyTickets`

Purchase lottery tickets for the current drawing.

**Parameters:**

* `_tickets`: Array of ticket structs, each containing:
  * `normals`: Array of 5 numbers (1 to ballMax, typically 1-30)
  * `bonusball`: Single number (1 to current bonusballMax)
* `_recipient`: Address to receive the ticket NFTs
* `_referrers`: Array of referrer addresses (can be empty `[]`)
* `_referralSplit`: Array of split percentages in 1e18 scale (must sum to 1e18 if referrers provided)
* `_source`: Telemetry identifier (use `0x0000000000000000000000000000000000000000000000000000000000000000`)

**Before calling:**

1. [Connect your wallet](#getting-started)
2. In a separate tabIn a separate tab, [Approve USDC spending](#approving-usdc) for the Jackpot contract (1e6 per ticket)

**Example: 1 ticket with numbers 1, 5, 10, 15, 20 and bonusball 3, no referrer:**

```
_tickets: [[[1,5,10,15,20], 3]]
_recipient: 0xYourAddress
_referrers: []
_referralSplit: []
_source: 0x0000000000000000000000000000000000000000000000000000000000000000
```

***

### Buy Random Tickets

**Contract:** JackpotRandomTicketBuyer ([Basescan](https://basescan.org/address/0xb9560b43b91dE2c1DaF5dfbb76b2CFcDaFc13aBd))

**Function:** `buyTickets`

Purchase tickets with randomly generated numbers. The contract handles number selection for you using on-chain randomness.

**Parameters:**

* `_count`: Number of random tickets to purchase
* `_recipient`: Address to receive the ticket NFTs
* `_referrers`: Array of referrer addresses (can be empty `[]`)
* `_referralSplitBps`: Array of split percentages in 1e18 scale (must sum to 1e18 if referrers provided)
* `_source`: Telemetry identifier (use `0x0000000000000000000000000000000000000000000000000000000000000000`)

**Before calling:**

1. [Connect your wallet](#getting-started)
2. In a separate tab, tabIn a separate tab, [Approve USDC spending](#approving-usdc) for the JackpotRandomTicketBuyer contract (1e6 per ticket)

**Example: 5 random tickets, no referrer:**

```
_count: 5
_recipient: 0xYourAddress
_referrers: []
_referralSplitBps: []
_source: 0x0000000000000000000000000000000000000000000000000000000000000000
```

***

### Claim Winnings

**Contract:** Jackpot ([Basescan](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2))

**Function:** `claimWinnings`

Claim prizes from winning tickets. The ticket NFTs are burned upon claiming.

**Parameters:**

* `_userTicketIds`: Array of ticket NFT IDs to claim

**Before calling:**

1. [Connect your wallet](#getting-started)
2. In a separate browser tab, find your ticket IDs (see below)
3. Ensure the drawing has completed (tickets must be from a past drawing)

**Example claiming 2 tickets:**

```
_userTicketIds: [98765432109876543210987654321098765432109876543210987654321012345, 98765432109876543210987654321098765432109876543210987654321012346]
```

**How to find your ticket IDs:**

You can find your winning ticket IDs using either the Megapot API or by viewing tickets on OpenSea.

#### Option 1: Using the Megapot API (Recommended)

Query the API to get your winning tickets directly. You can either paste the URL into your browser or use `curl`:

```
https://api.megapot.io/v1/wallets/<YOUR_ADDRESS>/wins?claimed=false
```

Replace `<YOUR_ADDRESS>` with your wallet address.

If you have an API key (for higher rate limits), you can use `curl` with authentication:

```bash
curl "https://api.megapot.io/v1/wallets/<YOUR_ADDRESS>/wins?claimed=false" \
  -H "Authorization: Bearer mpk_live_xxxxxxxxxxxxxxxxxxxxxx"
```

See the [Data API documentation](/build-on-megapot/pull-data) for more details on authentication and rate limits.

The response includes your winning tickets with their IDs and prize amounts. Use `claimed=false` to see only unclaimed wins, which is useful for claim flows. You can paginate through results using the `cursor` parameter if you have many wins.

**Example response:**

```json
{
  "data": [
    {
      "ticket_id": "98765432109876543210987654321098765432109876543210987654321012345",
      "round_id": 42,
      "winnings_amount": "50000000",
      "claimed": false,
      ...
    }
  ],
  "has_more": false
}
```

Extract the `ticket_id` values and use them in the `_userTicketIds` array when calling `claimWinnings`.

#### Option 2: Using OpenSea + Smart Contracts

Navigate to `https://opensea.io/<YOUR_ADDRESS>?collectionSlugs=megapot-tickets` (replacing `<YOUR_ADDRESS>` with your wallet address) to view your Megapot Tickets. Clicking on one of the tickets should show the metadata below:

![OpenSea ticket metadata](https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-4cd36c78d7611d36a1104b174dfb26cbcf2dd9b5%2Fopensea-metadata.png?alt=media)

From here you have three options:

* **Preferred for smaller number of tickets:** For each ticket, locate the ticketId (yellow box). Add each id to the `_userTicketIds` array that you will pass in to `claimWinnings`. Optionally, you can use the next method as well.
* **Many tickets in one drawing:** Get the `drawingId` from any ticket (red box), then go to the [JackpotTicketNFT contract on Basescan](https://basescan.org/address/0x48FfE35AbB9f4780a4f1775C2Ce1c46185b366e4#readContract) and call `getUserTickets` with your address and the drawing ID to get all your ticket IDs for that drawing (see example below). Repeat for each drawing you participated in. It is recommended you claim one drawing at a time.
* **More than 75 tickets:** Break up your `claimWinnings` calls across multiple transactions to avoid running into gas limits.

**Example calling getUserTickets for drawing 42:**

```
_userAddress: 0xYourAddress
_drawingId: 42
```

***

## Backer Functions

### Deposit to Prize Pool

**Contract:** Jackpot ([Basescan](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2))

**Function:** `lpDeposit`

Deposit USDC to back the prize pool and earn returns from ticket sales.

**Parameters:**

* `_amountToDeposit`: Amount of USDC in wei (6 decimals, so 1000000 = $1)

**Before calling:**

1. [Connect your wallet](#getting-started)
2. In a separate tab, [Approve USDC spending](#approving-usdc) for the Jackpot contract

**Example depositing $1,000:**

```
_amountToDeposit: 1000000000
```

***

### Initiate Withdrawal

**Contract:** Jackpot ([Basescan](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2))

**Function:** `initiateWithdraw`

Begin the withdrawal process. Shares are moved to pending status.

**Parameters:**

* `_amountToWithdrawInShares`: Amount of shares to withdraw (6 decimals, like USDC)

**Before calling:**

1. [Connect your wallet](#getting-started)

**Note:** You can view your share balance by calling `getLPShares` on JackpotLPManager with your address.

**Example withdrawing 100 shares:**

```
_amountToWithdrawInShares: 100000000
```

***

### Finalize Withdrawal

**Contract:** Jackpot ([Basescan](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2))

**Function:** `finalizeWithdraw`

Complete a pending withdrawal and receive USDC. Call this after the drawing completes.

**Parameters:** None (uses your connected wallet address)

**Before calling:**

1. [Connect your wallet](#getting-started)

***

### Emergency Withdrawal

**Contract:** Jackpot ([Basescan](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2))

**Function:** `emergencyWithdrawLP`

Only available when emergency mode is enabled. Withdraws all LP positions immediately.

**Parameters:** None

**Before calling:**

1. [Connect your wallet](#getting-started)

***

## Referrer Functions

### Claim Referral Fees

**Contract:** Jackpot ([Basescan](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2))

**Function:** `claimReferralFees`

Claim accumulated referral fees from ticket sales and winner payouts.

**Parameters:** None (uses your connected wallet address)

**Before calling:**

1. [Connect your wallet](#getting-started)

**Check your balance first:** Call `referralFees` on the Jackpot contract with your address to see your claimable amount.

***

## Auto-Subscription Functions

### Create Subscription

**Contract:** JackpotAutoSubscription ([Basescan](https://basescan.org/address/0x2694Bd48f3e6B4775943067DC842C93bf5F19DcD))

**Function:** `createSubscription`

Set up automatic daily ticket purchases.

**Parameters:**

* `_recipient`: Address to receive the tickets
* `_totalDays`: Number of days to subscribe
* `_dynamicTicketCount`: Number of random tickets per day
* `_userStaticTickets`: Array of static tickets (same numbers each day)
* `_referrers`: Referrer addresses
* `_referralSplit`: Referral split percentages (1e18 scale)
* `_source`: Telemetry identifier (use `0x0000000000000000000000000000000000000000000000000000000000000000`)

**Before calling:**

1. [Connect your wallet](#getting-started)
2. Calculate total cost: `totalDays × (dynamicTickets + staticTickets) × ticketPrice`
3. tabIn a separate tab, In a separate tab, [Approve USDC spending](#approving-usdc) for the JackpotAutoSubscription contract

**Example: 30-day subscription with 2 random tickets + 1 static ticket (1, 5, 10, 15, 20 with bonusball 3) per day, no referrer:**

```
_recipient: 0xYourAddress
_totalDays: 30
_dynamicTicketCount: 2
_userStaticTickets: [[[1,5,10,15,20], 3]]
_referrers: []
_referralSplit: []
_source: 0x0000000000000000000000000000000000000000000000000000000000000000
```

***

### Cancel Subscription

**Contract:** JackpotAutoSubscription ([Basescan](https://basescan.org/address/0x2694Bd48f3e6B4775943067DC842C93bf5F19DcD))

**Function:** `cancelSubscription`

Cancel your subscription and receive a refund for unused days.

**Parameters:** None (uses your connected wallet address)

**Before calling:**

1. [Connect your wallet](#getting-started)

***

## Batch Purchase Functions

### Create Batch Order

**Contract:** BatchPurchaseFacilitator ([Basescan](https://basescan.org/address/0xBA343479D98a1Ed333899999D95a7343B808a76F))

**Function:** `createBatchOrder`

Create a batch order for purchasing many tickets at once.

**Parameters:**

* `_recipient`: Address to receive the tickets
* `_dynamicTicketCount`: Number of randomly generated tickets
* `_userStaticTickets`: Array of user-defined tickets
* `_referrers`: Referrer addresses
* `_referralSplit`: Referral split percentages
* `_source`: Telemetry identifier (use `0x0000000000000000000000000000000000000000000000000000000000000000`)

**Before calling:**

1. [Connect your wallet](#getting-started)
2. Calculate total cost: `totalTickets × ticketPrice`
3. tabIn a separate tab, In a separate tab, [Approve USDC spending](#approving-usdc) for the BatchPurchaseFacilitator contract

**Example: 50 random tickets + 2 static tickets (7, 14, 21, 28, 30 with bonusball 5) and (2, 4, 6, 8, 10 with bonusball 1), no referrer:**

```
_recipient: 0xYourAddress
_dynamicTicketCount: 50
_userStaticTickets: [[[7,14,21,28,30], 5], [[2,4,6,8,10], 1]]
_referrers: []
_referralSplit: []
_source: 0x0000000000000000000000000000000000000000000000000000000000000000
```

***

### Cancel Batch Order

**Contract:** BatchPurchaseFacilitator ([Basescan](https://basescan.org/address/0xBA343479D98a1Ed333899999D95a7343B808a76F))

**Function:** `cancelBatchOrder`

Cancel a pending batch order and receive a full refund.

**Parameters:** None (uses your connected wallet address)

**Before calling:**

1. [Connect your wallet](#getting-started)

***

## Read Functions

These view functions help you check state before making transactions:

| Function                       | Contract                 | Description                                                  |
| ------------------------------ | ------------------------ | ------------------------------------------------------------ |
| `currentDrawingId`             | Jackpot                  | Current drawing number                                       |
| `getDrawingState(drawingId)`   | Jackpot                  | Drawing details (prizePool, ticketPrice, bonusballMax, etc.) |
| `ticketPrice`                  | Jackpot                  | Current ticket price in USDC wei                             |
| `referralFees(address)`        | Jackpot                  | Claimable referral fees for an address                       |
| `getLpInfo(address)`           | JackpotLPManager         | LP position details (shares, deposits, withdrawals)          |
| `getLPValueBreakdown(address)` | JackpotLPManager         | USDC-denominated breakdown of LP position                    |
| `getSubscriptionInfo(address)` | JackpotAutoSubscription  | Subscription details                                         |
| `getBatchOrderInfo(address)`   | BatchPurchaseFacilitator | Batch order details                                          |

***

## Approving USDC

Many Megapot functions require you to approve USDC spending before calling them. This is a standard ERC-20 pattern that allows the contract to transfer USDC on your behalf.

**USDC on Base:** [`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`](https://basescan.org/address/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913)

### How to Approve

1. Go to the [USDC contract on Basescan](https://basescan.org/address/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913#writeProxyContract)
2. Click the **Write as Proxy** tab
3. Connect your wallet
4. Find the `approve` function
5. Enter the parameters:
   * `spender`: The Megapot contract address you want to interact with (see table below)
   * `value`: The amount in USDC wei (6 decimals)
6. Click **Write** and confirm the transaction

### Amount Examples

| USDC Amount | Value (wei)  |
| ----------- | ------------ |
| $1          | `1000000`    |
| $10         | `10000000`   |
| $100        | `100000000`  |
| $1,000      | `1000000000` |

### Which Contract to Approve

| Action              | Contract                 | Address                                      |
| ------------------- | ------------------------ | -------------------------------------------- |
| Buy tickets         | Jackpot                  | `0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2` |
| Buy random tickets  | JackpotRandomTicketBuyer | `0xb9560b43b91dE2c1DaF5dfbb76b2CFcDaFc13aBd` |
| Deposit to pool     | Jackpot                  | `0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2` |
| Create subscription | JackpotAutoSubscription  | `0x2694Bd48f3e6B4775943067DC842C93bf5F19DcD` |
| Create batch order  | BatchPurchaseFacilitator | `0xBA343479D98a1Ed333899999D95a7343B808a76F` |

***

## Transferring USDC from a Smart Contract Wallet

If you created a wallet through the Megapot app, you have a smart contract wallet. To transfer USDC out of this wallet using Basescan, you'll need to use the `execute` function on your wallet contract.

### Prerequisites

1. **Export your private key** from the Megapot app
2. **Import the key into a browser wallet** (e.g., MetaMask, Rabby, or Coinbase Wallet)
3. **Navigate to your smart contract wallet address** on Basescan (e.g., `https://basescan.org/address/YOUR_WALLET_ADDRESS`)

### Creating the Transfer Calldata

To transfer USDC, you need to encode the `transfer(address,uint256)` function call. You can use this tool to generate the calldata:

1. Go to [HashEx ABI Encoder](https://abi.hashex.org/)
2. Select **"Auto-parse"** and enter:

   ```json
   [{
      "name": "transfer",
      "type": "function",
      "inputs": [
         {
            "name": "to",
            "type": "address"
         },
         {
            "name": "amount",
            "type": "uint256"
         }
      ]
   }]
   ```

   ![](https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-a4518708a83997f3d3c7835e8009eb87a0b2f949%2Fexample-json.png?alt=media)
3. Click `Parse` and select `transfer(address,uint256)` from the drop down ![](https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-22798fc8ef6fa629197e775a01b68c9ecd9eeeee%2Fselect-dropdown.png?alt=media)
4. Fill in the parameters:
   * **address**: The destination wallet address (where you want to send USDC)
   * **uint256**: The amount in USDC wei (6 decimals, so `1000000` = $1)
5. Copy the resulting encoded data (it will start with `0xa9059cbb...`)

### Executing the Transfer

![Execute function on Basescan](https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-c7b31803c8bbb9704fcc15d7cd737d100851b952%2Fexecute-basescan.png?alt=media)

1. On your smart contract wallet's Basescan page, click **Contract** → **Write Contract as Proxy**
2. Connect your browser wallet (the one with your exported private key)
3. Find the `execute` function and enter:
   * **payableAmount**: `0` (USDC transfers don't require ETH)
   * **target**: `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` (USDC contract on Base)
   * **value**: `0`
   * **data**: The encoded calldata from the previous step
4. Click **Write** and confirm the transaction in your wallet

### Example: Transferring $100 USDC

To send $100 USDC to address `0x1234...5678`:

1. Generate calldata with:
   * address: `0x1234567890123456789012345678901234567890`
   * uint256: `100000000` (100 × 10^6)
2. The encoded data will look like:

   ```
   0xa9059cbb0000000000000000000000001234567890123456789012345678901234567890000000000000000000000000000000000000000000000000000000005f5e100
   ```
3. Use this as the `data` parameter in the `execute` function

***

## Need Help?

Ask our [Support Chat](https://megapot.io/support) if you have any questions about direct contract interactions.


# Advanced Features

Megapot offers advanced features for power users who want to automate their participation.

* [Autosubscribe](/learn/advanced/autosubscribe) - Automatically buy tickets for every drawing
* [Batch Purchase](/learn/advanced/batch-purchases) - Buy multiple tickets in a single transaction


# Autosubscribe

Never miss a drawing. Auto-subscriptions automatically purchase tickets on your behalf for every drawing until you cancel.

***

## How It Works

1. **Deposit USDC** - Add funds upfront to cover multiple drawings
2. **Choose your ticket type** - Static (your numbers) or Dynamic (random)
3. **Set quantity** - How many tickets per drawing
4. **Confirm** - Your subscription starts with the next drawing

Once active, tickets are purchased automatically before each drawing closes. Keep playing until you cancel or your balance runs out.

***

## Two Ticket Types

### Static Tickets

Same numbers every drawing. Pick your 5 numbers + 1 bonusball once, and those exact numbers are used for every drawing. Perfect for lucky numbers you always want to play.

If your numbers go out of range due to dynamic bonusball adjustments, a random ticket is purchased for that drawing instead. This ensures you never miss a drawing.

### Dynamic Tickets

Fresh random numbers each drawing. New numbers are generated automatically before each drawing. Great if you prefer variety.

You can set up multiple subscriptions with a mix of both types. There is no limit to how many tickets you can subscribe to.

***

## Managing and Canceling

Cancel your subscription at any time:

* **Instant refund** - Your remaining balance returns to your wallet immediately
* **No penalties** - Cancel anytime without fees
* **Current drawing honored** - Tickets already purchased for the current drawing stay active

***

## Your Funds Are Secure

Your deposited funds are held in a smart contract on the blockchain:

* **No one takes custody** - Megapot cannot access or move your funds
* **Only you control withdrawals** - Your funds are always under your control
* **Transparent balance** - Verify your balance on-chain anytime

***

## Frequently Asked Questions

**What happens if my balance runs out?**

If your balance is insufficient, no tickets are purchased for that drawing. Add funds to resume.

**What if my static numbers go out of range?**

The bonusball range adjusts dynamically based on pool size. If your chosen numbers fall outside the current range, a random ticket is purchased for that drawing instead. You will not miss the drawing.

***

## Need Help?

Questions about auto-subscriptions? Reach out on our [Support Chat](https://megapot.io/support) for help.


# Batch Purchase

When you buy a large number of tickets at once, Megapot automatically splits your order into smaller batches. This keeps your purchase reliable and secure.

***

## Why Purchases Are Batched

Blockchain transactions have size limits. Purchasing many tickets in a single transaction could exceed these limits, causing the transaction to fail.

Batching solves this by:

* Breaking large orders into manageable chunks
* Ensuring each transaction completes successfully

You do not need to do anything different. Megapot handles the batching automatically when your order exceeds the per-transaction limit.

***

## What to Expect

For large orders, here is what happens:

1. **Single payment** - You pay once upfront for your entire order
2. **Automatic processing** - The system handles splitting and executing each batch
3. **Progressive delivery** - Tickets appear in your wallet as each batch completes
4. **Brief wait time** - Large orders may take a few minutes to fully process

The app shows your progress so you always know how many tickets have been purchased.

***

## Your Funds Are Secure

Your funds remain safe throughout the batching process:

* **Paid upfront** - Your full payment is secured before any tickets are minted
* **Guaranteed delivery** - Once paid, all your tickets will be minted
* **On-chain security** - Every ticket purchase is recorded on the blockchain

***

## Frequently Asked Questions

**How many tickets trigger batching?**

Batching kicks in for larger orders. For most purchases, you will not notice any difference. The exact threshold depends on current network conditions.

**Do batched tickets have the same odds?**

Absolutely. Batched tickets are identical to regular tickets. They are eligible for all prize tiers, including the jackpot.

***

## Need Help?

Questions about a batched purchase? Reach out on our [Support Chat](https://megapot.io/support) for help.


# Start Here

Megapot is a fully on-chain daily $1 jackpot on Base. This section is for everyone who wants to refer, reward, embed, build on, or read data from it. Pick the lane that fits and go.

## Set up once

Three steps. Most people only need the first two.

**1. Create your account.** Sign in at [megapot.io](https://megapot.io) with email, or an existing wallet. If you don't have a wallet, one is created for you automatically. This is the prerequisite for everything below.

**2. Get your referral link.** Generated automatically when you sign up. Your link is `https://megapot.io/r/{CODE}`. Find and copy it at [megapot.io/invite](https://megapot.io/invite). Sharing it earns you **8% of ticket fees + 8% of winnings** from people you refer.

**3. Do you need an API key?** Only if you plan to call the [Data API](/build-on-megapot/pull-data) (and optionally for a higher-tier starter-kit deploy). Mint one at [megapot.io/dashboard](https://megapot.io/dashboard) under Profile → API keys.

| What you want to do           | What you need                             |
| ----------------------------- | ----------------------------------------- |
| Share a link and earn         | Your account (and its referral code)      |
| Gift tickets, embed, or build | A referrer **wallet** address, no API key |
| Read the Data API             | An API key                                |

{% hint style="info" %}
**Building with an AI assistant?** Point it at [llms.megapot.io](https://llms.megapot.io). It loads an entry-point skill and routes itself to the right addresses, ABIs, and patterns.
{% endhint %}

## Which describes you?

Pick your **primary** goal. The lanes link sideways where they meet, so you won't get stuck if your project spans two of them.

* **Share a link & earn.** Drop your referral link anywhere and earn a cut, no code required. → [Share a link & earn](/build-on-megapot/share-and-earn)
* **Gift tickets & run giveaways.** Buy tickets for someone else's wallet and pay the USDC yourself. → [Gift tickets & run giveaways](/build-on-megapot/gift-tickets)
* **Add the jackpot to your site.** Embed buy, claim, and history flows into your existing app. → [Add the jackpot to your site](/build-on-megapot/add-to-your-site)
* **Build something custom.** Call the contracts directly for bespoke purchase, subscription, or compounding flows. → [Build on the protocol](/build-on-megapot/build)
* **Pull data.** Read round history, wallet stats, and per-round wins over a REST API. → [Pull data](/build-on-megapot/pull-data)

{% hint style="warning" %}
**Not self-serve today:** free-ticket giveaway campaigns and white-label funding/partner pages are team-provisioned. [Contact the team](https://megapot.io) to set one up.
{% endhint %}

***

## Built on Megapot

A sample of what builders have shipped on the protocol:

* [**Blink.cash**](https://blink.cash) - gives new users 3 free tickets just to try
* [**Lotpot**](https://lotpot.fun) - third-party UI with a fun twist
* [**Tator**](https://tator.quickintel.io/) - buy Megapot tickets by just asking
* [**Potwars**](https://potwars.fun) - completely custom, ERC-20 based, purchases tickets from fees
* [**BasedMining**](https://basedmining.xyz) - BTC mining lottery pool that rewards you tickets with every purchase
* [**PennyPot**](https://pennypot.xyz/) - fractional tickets, play for just $0.01
* [**Balkan Lotto**](https://www.balkanlotto.com/) - third-party UI made for the Balkans
* **Peoples Pot** - third-party UI with a clean dark-mode feel
* [**Megapot.Build**](https://megapot.build) - Instant marketing site or ticket sales app deployed to Vercel free
  * [**Megapot Templates**](https://github.com/BuiltByGoat/megapot-templates) - Fully built HTML templates. Edit, publish & earn

{% hint style="info" %}
Megapot has been audited 3 times by top security firms and has run [$200M+ in drawings since July 2024](https://stats.megapot.io/).
{% endhint %}


# Share a Link & Earn

The fastest way to earn with Megapot needs zero code. Sign in, copy your link, share it. When the people you refer buy tickets, you earn a cut of the fees, plus a cut of their winnings.

## Your link, in 60 seconds

1. **Sign in** at [megapot.io](https://megapot.io). Use your email or a wallet you already have. If you don't have a wallet, one is created for you automatically, with nothing to install.
2. **Grab your link.** A unique 6-character referral code is generated for you the moment you sign up. Your link is:

   ```
   https://megapot.io/r/{YOUR_CODE}
   ```

   Find and copy your exact link, plus ready-made share images, at [megapot.io/invite](https://megapot.io/invite).
3. **Share it anywhere:** your bio, a post, a newsletter, a group chat, a video description.
4. **Earn.** When someone opens your link and buys tickets, you earn **8% of their ticket fees** and **8% of their winnings**.

{% hint style="info" %}
Your `/r/` link drops a **30-day first-touch attribution cookie**. If someone clicks today and buys within 30 days, you still get credit. You claim your earnings right inside the app.
{% endhint %}

Want the exact earnings math, including how second-level referrals work? See [Referral economics](/getting-started/how-to-refer/referral-economics-v2).

***

## Want a landing page?

A link alone works. A simple page of your own, with your name, your pitch, and one big button, converts better.

{% hint style="info" %}
**One-click and one-prompt launch tooling is coming very soon.** We are building a way to spin up a branded referral site in a couple of clicks. For now, the fastest path is to hand an AI agent one of the starter prompts below.
{% endhint %}

### Build it with your AI agent

Paste any of these into your AI assistant (Claude, ChatGPT, Cursor, and others). Each one points the agent at [llms.megapot.io](https://llms.megapot.io), where it reads the live Megapot recipes and does the work. Swap in your own referral link and wallet where noted.

**A marketing page for your referral link:**

```
Using llms.megapot.io, how can I build a marketing page for my Megapot
referral link (https://megapot.io/r/{YOUR_CODE}) and help me deploy it to
Vercel for free?
```

**A site that sells quick-pick tickets:**

```
Using llms.megapot.io, how can I build a website that sells quick-pick
Megapot tickets, using my wallet address (from megapot.io/dashboard) as the
referrer and my referral link from megapot.io/invite?
```

**Reward your own users with tickets:**

```
Using llms.megapot.io, how can I gift Megapot tickets to my app's users as a
reward, paying for them from my own wallet and earning referral fees?
```

**A live jackpot dashboard or leaderboard:**

```
Using llms.megapot.io and the Megapot Data API, how can I build a leaderboard
that shows recent winners and the current jackpot size?
```

**Understand the protocol contracts:**

```
Using llms.megapot.io, tell me about the different Megapot protocol contracts
and their uses for developers. Include the mainnet address and a link to the
contract code on Basescan for each.
```

{% hint style="info" %}
Once your agent has something running, keep prompting it for changes: your colors, your copy, your logo, extra sections. It already has the Megapot recipes loaded.
{% endhint %}

***

## For causes / 100% to you

Running a fundraiser, a community pool, or a campaign where you want **all** the fees routed to one wallet? Megapot offers white-label **funding pages** at `megapot.io/fund/{slug}` that send fees straight to a partner wallet.

These are **team-provisioned**, not self-serve, so [contact the team](https://megapot.io/support) to set one up. See [Funding pages](/getting-started/how-to-refer/funding-pages) for what they do and who they are for.

***

**Building this into your own app?** See [Referrals & attribution](/build-on-megapot/build/referrals-and-attribution) for the on-chain referrer model.


# Gift Tickets & Run Giveaways

Reward your users with jackpot tickets: a thank-you, a referral incentive, a contest prize, or a community drop. The recipient gets real ticket NFTs in their own wallet and can win and claim like any other player.

{% hint style="info" %}
**Tickets are never free, you fund every gift.** There is no zero-price primitive (setting a ticket price to 0 reverts). When you gift a ticket, **you** pay for it in USDC. The recipient pays nothing.
{% endhint %}

There are two ways to do this: a no-code path on megapot.io for one-off or small giveaways, and an in-code path for programmatic rewards inside your own app.

***

## No code: gift from megapot.io

The fastest way to gift, with nothing to build:

1. Go to [megapot.io/gift](https://megapot.io/gift).
2. Enter the **recipient's wallet address**.
3. Choose how many tickets to buy and confirm: **you pay the USDC**.

The recipient receives the ticket NFTs directly in their wallet. Best for one-off rewards or small, hand-picked giveaways where you don't need to wire anything into your product.

***

## In code: gift via the recipient param

Every purchase call takes a `_recipient` argument. To gift, set `_recipient` to **your user's wallet** while **you** remain the buyer and payer. You approve and spend the USDC, the tickets are minted to them.

Optionally, set `_referrers` to **your own wallet** so you also earn referral fees on the gifts you fund (10% of the ticket fee, plus 10% win-share if those tickets win). See [Referrals & attribution](/build-on-megapot/build/referrals-and-attribution) for the referrer arrays in detail.

Here is the minimal flow with `Jackpot.buyTickets`: approve USDC to the Jackpot contract, then buy tickets for your user:

```typescript
import { stringToHex } from "viem";

const JACKPOT = "0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2";

// Your user's wallet: the gift recipient (synthetic example)
const userWallet = "0x1111111111111111111111111111111111111111";
// Your wallet: earns referral fees on the gift (optional)
const yourWallet = "0x2222222222222222222222222222222222222222";

// 1. Read the live ticket price and ball ranges
const drawingId = await jackpot.currentDrawingId();
const state = await jackpot.getDrawingState(drawingId);
const ticketPrice = state.ticketPrice; // USDC, 6 decimals

// 2. Define the tickets you're gifting.
//    5 unique normals in [1, state.ballMax]; bonusball in [1, state.bonusballMax].
//    Do NOT hardcode the ranges: read ballMax / bonusballMax from getDrawingState().
const tickets = [{ normals: [7, 14, 21, 28, 30], bonusball: 12 }];

// 3. Approve USDC to the Jackpot contract (the contract that receives payment)
const totalCost = ticketPrice * BigInt(tickets.length);
await usdc.approve(JACKPOT, totalCost);

// 4. Buy: recipient is your user; referrer (optional) is you
const tx = await jackpot.buyTickets(
    tickets,
    userWallet,                       // _recipient: your user
    [yourWallet],                     // _referrers: you (or [] to skip)
    [1000000000000000000n],           // _referralSplit: 100% (1e18), or []
    stringToHex("my-giveaway", { size: 32 }) // _source: your analytics label
);
await tx.wait();
// Tickets are minted directly to userWallet
```

The trailing `_source` is a free-form `bytes32` label for **your own** analytics. It does not affect payments. If you skip the referrer, pass empty arrays (`[]`, `[]`) for `_referrers` and `_referralSplit`.

### Gifting more than 10, or recurring drops

Other purchase methods take a `_recipient` too, so you can gift at scale or on a schedule:

* `BatchPurchaseFacilitator.createBatchOrder`: gift more than 10 tickets in one drawing.
* `JackpotAutoSubscription.createSubscription`: drip gifted tickets across multiple drawings (e.g. a daily reward).
* `JackpotRandomTicketBuyer.buyTickets`: gift quick-pick tickets with numbers chosen on-chain.

For the full method menu and which one to pick, see [add-to-your-site.md](/build-on-megapot/add-to-your-site). For exact addresses and signatures, see [build/protocol-reference.md](/build-on-megapot/build/protocol-reference).

***

## What your users experience (and KYC)

Recipients receive standard ticket NFTs and can **claim any winnings into their wallet without KYC**; **cashing out / transferring out of that wallet requires KYC**.

***

## Track what you gave out

Because the buyer is you and the recipient is your user, query the gift from the recipient's side using the Data API wallet endpoints:

```
GET /v1/wallets/{recipient}/tickets
```

This returns the tickets now held by that wallet, including the ones you gifted. Pair it with `GET /v1/wallets/{recipient}/wins` to see if a gift paid off. See [pull-data.md](/build-on-megapot/pull-data) for auth, pagination, and the rest of the wallet endpoints.

{% hint style="info" %}
The `_source` label you set on a gift is **not** queryable through the Data API. Keep your own record if you need to attribute gifts to a specific campaign.
{% endhint %}

***

## Running a larger campaign

The patterns above cover one-off gifts and programmatic rewards you fund directly. Large, self-serve **free-ticket campaigns** (for example claim links your community redeems themselves) are **team-provisioned today**, not self-serve. [Contact the team](mailto:team@megapot.io) to set one up.


# Add the Jackpot to Your Site

You already have a product. This page shows how to drop Megapot buy and claim into it, and earn fees on every ticket your users buy, without rebuilding your app around it.

{% hint style="success" %}
**See it working first.** The full reference app is live at [**demo.megapot.io**](https://demo.megapot.io/) against Base mainnet. Click through buy, claim, and history before you write a line of code.
{% endhint %}

Pick the path that fits how much you want to build:

* [**Wire one flow**](#weight-a-wire-one-flow): keep your own UI, call the contracts directly. Best when you want buy or claim inside an existing screen.
* [**Fork the starter kit**](#weight-b-fork-the-starter-kit): a complete five-page React app you rebrand and ship. Fastest path to a full lottery experience.

***

## Earn on every purchase

{% hint style="warning" %}
**Whichever path you choose, set two things on every purchase:**

1. **Your referrer wallet** in `_referrers`: this is who gets paid (10% of ticket fees + 10% of winnings from referred play).
2. **A `_source` tag** in `_source`: a free-form `bytes32` label for your own analytics.

These are independent: the referrer wallet moves money, the source tag is telemetry only and never affects payments. Miss the referrer wallet and you earn nothing. See [Referrals & Attribution](/build-on-megapot/build/referrals-and-attribution) for the full model.
{% endhint %}

***

## Weight A: Wire one flow

Keep your own UI. Call the contract that matches your scenario:

| Scenario                       | Contract & method                            | Execution       |
| ------------------------------ | -------------------------------------------- | --------------- |
| Up to 10 custom-number tickets | `Jackpot.buyTickets`                         | Immediate       |
| Random / quick-pick            | `JackpotRandomTicketBuyer.buyTickets`        | Immediate       |
| More than 10 tickets           | `BatchPurchaseFacilitator.createBatchOrder`  | Keeper-executed |
| Recurring across drawings      | `JackpotAutoSubscription.createSubscription` | Keeper-executed |

Addresses and full signatures for all four are in the [Protocol Reference](/build-on-megapot/build/protocol-reference). Each carries a trailing `bytes32 _source` and the `_referrers` / `_referralSplit` pair.

### One representative flow: `Jackpot.buyTickets`

This is the common case: up to 10 custom tickets, minted immediately. The pattern (read price → approve USDC → call with referrer + source) is the same for the other three methods; only the contract and arguments change.

```typescript
import { createPublicClient, createWalletClient, http, stringToHex } from "viem";
import { base } from "viem/chains";

const JACKPOT = "0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2";
const USDC = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";

// Your attribution: the wallet that earns, and your analytics label.
const REFERRER = "0x1111111111111111111111111111111111111111"; // your wallet
const SOURCE = stringToHex("mysite", { size: 32 });            // bytes32 tag

// 1. Read live drawing state for the ticket price and number ranges.
//    ballMax / bonusballMax come from chain: do NOT hardcode them.
const state = await publicClient.readContract({
  address: JACKPOT,
  abi: jackpotAbi,
  functionName: "getDrawingState",
});
const ticketPrice = state.ticketPrice; // USDC, 6 decimals

// 2. Build tickets: 5 unique normals in [1, ballMax], bonusball in [1, bonusballMax].
const tickets = [
  { normals: [7, 14, 21, 28, 30], bonusball: 12 },
  { normals: [3, 11, 19, 27, 29], bonusball: 8 },
];

// 3. Approve USDC to the Jackpot contract (the one receiving payment).
const totalCost = ticketPrice * BigInt(tickets.length);
await walletClient.writeContract({
  address: USDC,
  abi: usdcAbi,
  functionName: "approve",
  args: [JACKPOT, totalCost],
});

// 4. Buy. referrerSplit weights must sum to exactly 1e18.
await walletClient.writeContract({
  address: JACKPOT,
  abi: jackpotAbi,
  functionName: "buyTickets",
  args: [
    tickets,
    userAddress,          // _recipient: owns the ticket NFTs
    [REFERRER],           // _referrers: who gets paid
    [1000000000000000000n], // _referralSplit: 100% (1e18) to the one referrer
    SOURCE,               // _source: your bytes32 analytics tag
  ],
});
// Tickets are minted immediately.
```

Confirm the exact signature and ABI at [`llms.megapot.io/abi/Jackpot.txt`](https://llms.megapot.io/abi/Jackpot.txt) before shipping.

### Showing prize info

Read live values rather than hardcoding anything:

* `Jackpot.getDrawingState()` → current prize pool, `ticketPrice`, `ballMax`, `bonusballMax`, plus the live `referralFee` and `referralWinShare` rates (1e18 precision).
* `GuaranteedMinimumPayoutCalculator` (the PayoutCalculator) → expected per-tier payouts for display.

Both addresses are in the [Protocol Reference](/build-on-megapot/build/protocol-reference).

### Claiming winnings

Surface a claim in your UI and call `Jackpot.claimWinnings(uint256[] _ticketIds)` with the user's winning ticket IDs. For win-detection, auto-compound, and claiming your own referral fees, see [Claim winnings & fees](/build-on-megapot/build/claiming).

{% hint style="info" %}
**Don't re-narrate the whole protocol here.** For batch orders, subscriptions, auto-compound, LP, and read-state multicalls, point your editor at [llms.megapot.io](https://llms.megapot.io) for AI-ready viem and wagmi recipes, and use the [Protocol Reference](/build-on-megapot/build/protocol-reference) for addresses and full signatures.
{% endhint %}

***

## Weight B: Fork the starter kit

Want a complete app, not a single flow? The **Megapot Starter Kit** is a five-page React + wagmi reference frontend (**Home, Play, Tickets, LP, History**) implementing every core flow. It's the exact app running at [demo.megapot.io](https://demo.megapot.io/). MIT licensed.

```bash
git clone https://github.com/coordinationlabs/megapot-starter-kit
cd megapot-starter-kit
pnpm bootstrap  # copies .env.example -> .env and installs deps
# Set VITE_REFERRER_ADDRESS to your wallet, and your source tag, in .env
pnpm dev      # http://localhost:5173
```

Set `VITE_REFERRER_ADDRESS` to your wallet and the source tag in config, rebrand, and ship. A dev-mode warning fires while the referrer or source tag is still the placeholder, so you can't accidentally deploy without attribution.

The kit ships three API-key deployment shapes: anonymous (no key), browser key (`VITE_MEGAPOT_API_KEY`), or server proxy (key stays server-side). Pick once per fork.

Everything else lives in the repo, don't look for it here:

* [**Repository + README**](https://github.com/coordinationlabs/megapot-starter-kit): quickstart and the three deploy shapes
* [**docs/CUSTOMIZE.md**](https://github.com/coordinationlabs/megapot-starter-kit/blob/main/docs/CUSTOMIZE.md): every rebrand seam in one checklist
* [**docs/ARCHITECTURE.md**](https://github.com/coordinationlabs/megapot-starter-kit/blob/main/docs/ARCHITECTURE.md): API/RPC split, polling cadence, decisions
* [**Live demo**](https://demo.megapot.io/): the running kit on Base mainnet

***

Building with an AI assistant? Point it at [llms.megapot.io](https://llms.megapot.io) and it loads the right skills and recipes itself.

***

## Next

* [Start Here](/build-on-megapot/start-here): the lay of the land
* [Build on the protocol](/build-on-megapot/build): the deeper integration path
* [Referrals & Attribution](/build-on-megapot/build/referrals-and-attribution): how the money and the source tag work
* [Protocol Reference](/build-on-megapot/build/protocol-reference): addresses and full method signatures
* [Pull data](/build-on-megapot/pull-data): the read-only Data API


# Build on the Protocol

You are building something new. Not embedding a widget, not sharing a link, but a product of your own, on top of an open, permissionless jackpot protocol. Anyone can read its state, buy tickets, run draws, back the pot, and route referral fees, with no approval and no gatekeeper. [potwars.xyz](https://potwars.xyz) is one such build; yours is next.

This page is the door to the deep reference. It is an orchestration map, not an ABI dump: four steps that take you from cold start to fluent, in roughly the order you will want them.

{% hint style="info" %}
The protocol runs on **Base mainnet (chain ID 8453)**. Everything you need to integrate (addresses, ABIs, and task recipes) is machine-readable and CORS-open, so your AI assistant can fetch it directly while it writes your code.
{% endhint %}

***

## Step 1: Point your AI assistant at the skills

The fastest path to fluency is to let your coding assistant read the protocol's own instructions. We publish a complete set of agent skills at [llms.megapot.io](https://llms.megapot.io): plain-markdown recipes with copy-paste viem and wagmi snippets, the current Base mainnet addresses, and the USDC-approval boilerplate every write needs.

Add **one line** to your project's instruction file:

> For Megapot contract work, fetch `https://llms.megapot.io`

That works with:

* `CLAUDE.md` (Claude Code)
* `AGENTS.md` (Codex)
* `.cursorrules` (Cursor)
* `.github/copilot-instructions.md` (GitHub Copilot)
* Any other coding agent that reads a project-level instruction file

Your assistant loads the [entry-point skill](https://llms.megapot.io), a decision tree, the address table, the drawing lifecycle, and the standard USDC `approve` precondition, then deep-fetches the specific recipe for the task at hand (buy tickets, subscribe, claim winnings, claim referral fees, LP deposit/withdraw, auto-compound, read state, bootstrap a React app).

**Direct machine endpoints**, if your tooling needs the raw artifacts:

| Endpoint                                        | What it serves                                                                            |
| ----------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `https://llms.megapot.io/abi/<Name>.json`       | JSON ABI for a contract (e.g. [`Jackpot.json`](https://llms.megapot.io/abi/Jackpot.json)) |
| `https://llms.megapot.io/abi/<Name>.txt`        | viem `parseAbi` strings (e.g. [`Jackpot.txt`](https://llms.megapot.io/abi/Jackpot.txt))   |
| [`/llms.txt`](https://llms.megapot.io/llms.txt) | Machine-readable index of every URL on the site, for agents that crawl                    |

These are CDN-cached and CORS-open, so you can fetch them straight from a production frontend. When you show a contract signature in your own code or docs, confirm it against `llms.megapot.io/abi/<Name>.txt`, which is authoritative.

***

## Step 2: Use the starter kit as a working reference

You rarely need to invent a flow. You need to see it wired correctly once. The [Megapot Starter Kit](https://github.com/coordinationlabs/megapot-starter-kit) (live at [demo.megapot.io](https://demo.megapot.io)) is a five-page React + wagmi app where every core flow is already built: ticket purchase, claims, LP deposit and withdraw, subscriptions, and referral monetization.

Two ways to use it:

* **Fork it** as the skeleton of your product and replace the UI.
* **Just read it**: open `src/hooks/` for the contract-call wiring and `src/pages/` for how each flow is composed. These are canonical patterns your assistant can copy and adapt.

After your assistant has the skills loaded (Step 1), point it at the kit for the implementation details:

> Reference frontend at `https://github.com/coordinationlabs/megapot-starter-kit`: open `src/hooks/` and `src/pages/` for working implementations. Live demo: `https://demo.megapot.io`.

{% hint style="success" %}
Want a complete project from a single paste? Ask your assistant (with the skills loaded) to bootstrap a fresh React + wagmi app. The [react-setup skill](https://llms.megapot.io/tasks/react-setup) scaffolds provider config and a working purchase component you can build on.
{% endhint %}

***

## Step 3: Get attribution right from day one

This is the step most novel builds get wrong, and it is much cheaper to fix on day one than after launch. Read [Referrals & Attribution](/build-on-megapot/build/referrals-and-attribution) before you write your first purchase call.

The protocol keeps **two concepts deliberately decoupled**:

* **Money**: the `_referrers` (wallet addresses) and `_referralSplit` (weights that must sum to exactly `1e18`) arguments. This is who actually gets paid: 10% of ticket fees plus a 10% win-share, split across up to 5 wallets. Read the live rates from `Jackpot.getDrawingState()`.
* **Telemetry**: the trailing `bytes32 _source` argument. A free-form channel or campaign label for your own analytics. It does **not** move money and is **not** returned by the Data API.

Two consequences fall out of this design, and both are on you:

1. **There is no on-chain self-referral guard.** A wallet can list itself as a referrer. The protocol will not stop it. Your product's attribution integrity is your responsibility.
2. **`_source` and `_referrers` are independent.** A label proves nothing about who got paid, and a payout carries no campaign label unless you set one. If your product needs to tie *who referred* to *which channel* to *which account*, you must bind account → source tag → wallet yourself at onboarding and carry it through every call.

A useful advanced pattern, illustrated in the starter kit's referral flow, is the **referrer chain**: passing several referrer wallets with explicit splits (the multi-party `_referrers` / `_referralSplit` arrays) while tagging the same purchase with a `_source` label. That lets you compensate a chain of parties and attribute the conversion to a channel in one transaction, the money model and the telemetry model working side by side. [Referrals & Attribution](/build-on-megapot/build/referrals-and-attribution) walks through it in full.

***

## Step 4: Go deep

When you are ready to write contracts, the [Protocol Reference](/build-on-megapot/build/protocol-reference) is the single source of truth. It collects:

* The **verified contract addresses** on Base mainnet: `Jackpot`, `JackpotTicketNFT`, `JackpotLPManager`, the purchase helpers, and the payout calculator.
* The **five purchase signatures**: `Jackpot.buyTickets`, `JackpotRandomTicketBuyer.buyTickets`, `BatchPurchaseFacilitator.createBatchOrder`, `JackpotAutoSubscription.createSubscription`, and `TicketAutoCompoundVault.depositAndCompound`, each now carrying the trailing `bytes32 _source` argument.
* The **modular architecture diagram**: how the core contracts (`Jackpot`, NFT, LP, payout calculator) relate to the user-facing helpers and the Pyth-backed entropy provider.
* The **independent security audits** (Zellic, Code4rena, and independent auditors) and how to report a vulnerability.

{% hint style="info" %}
Pick the right tool for reads. Use **RPC contract reads** for live on-chain state (current jackpot size, a user's tickets, LP position) and for all writes. Use the [**Data API**](/build-on-megapot/pull-data) for read-only off-chain analytics: round history, wallet aggregates, leaderboards, anything cross-drawing. The `bytes32 _source` tag is *not* queryable through the Data API; keep your own telemetry store if you need to report on it.
{% endhint %}

***

## A minimal mental model

Before you dive in, the shape of a purchase is worth holding in your head:

1. **Approve USDC** to the contract that will receive payment (the `Jackpot`, or whichever helper you are calling). Tickets are never free: there is no zero-price primitive.
2. **Build your `Ticket`s**: each is 5 unique normal numbers in `[1, ballMax]` plus 1 bonusball in `[1, bonusballMax]`. Read `ballMax` and `bonusballMax` from `Jackpot.getDrawingState()`; do not hardcode them.
3. **Call the right method** with `_referrers`, `_referralSplit`, and `_source` set per Step 3.
4. **Claim** later with `Jackpot.claimWinnings(_ticketIds)`, and pull accrued referral fees with `Jackpot.claimReferralFees()`.

Everything past this point (exact argument order, batch vs. subscription semantics, the entropy callback fee) lives in the [Protocol Reference](/build-on-megapot/build/protocol-reference) and at [llms.megapot.io](https://llms.megapot.io).

***

## Where to next

* [**Start Here**](/build-on-megapot/start-here): the developer landing page and a map of every integration path.
* [**Referrals & Attribution**](/build-on-megapot/build/referrals-and-attribution): the money model, the telemetry model, and how to bind them correctly.
* [**Protocol Reference**](/build-on-megapot/build/protocol-reference): addresses, the five purchase signatures, the architecture diagram, and audits.
* [**Add the jackpot to your site**](/build-on-megapot/add-to-your-site): if you do not need a fully custom build, the embeddable path is faster.

For dedicated integration support, DM **@megapot** on X or **@pl** on Warpcast.


# Referrals & Attribution

This is the canonical reference for how referral money and attribution work on Megapot's on-chain protocol (Base mainnet, chain `8453`).

The most important thing to understand up front: **referral money and attribution are two independent, decoupled concepts.** One pays people. The other labels traffic. They live in separate parameters, and one never affects the other.

| Concept       | Parameter(s)                    | What it does                                            | Affects payments? | In the Data API? |
| ------------- | ------------------------------- | ------------------------------------------------------- | ----------------- | ---------------- |
| **Money**     | `_referrers` + `_referralSplit` | Pays wallet addresses a cut of ticket fees and winnings | Yes               | No               |
| **Telemetry** | `_source` (`bytes32`)           | A free-form channel/campaign label for *your* analytics | No                | No               |

{% hint style="info" %}
**Just want a no-code share link that pays you?** See [Share a link & earn](/build-on-megapot/share-and-earn). For the earnings math (rates, levels, examples), see [Referral economics](/getting-started/how-to-refer/referral-economics-v2). For contract addresses and full signatures, see [Protocol reference](/build-on-megapot/build/protocol-reference).
{% endhint %}

***

## 1. Money: `_referrers` and `_referralSplit`

This is who gets **paid**. Two parallel arrays travel with the purchase:

| Parameter        | Type        | Description                                                                    |
| ---------------- | ----------- | ------------------------------------------------------------------------------ |
| `_referrers`     | `address[]` | Wallet addresses that receive the referral cut. Up to **5** referrers.         |
| `_referralSplit` | `uint256[]` | Weight for each referrer, at `1e18` precision. **Must sum to exactly `1e18`.** |

The two arrays are positional and must be the same length: `_referralSplit[i]` is the weight for `_referrers[i]`.

When you pass your own referrer scheme in a contract call, referrers earn from two sources:

| Source         | When                                 | Amount                  |
| -------------- | ------------------------------------ | ----------------------- |
| **Ticket fee** | When a referred user buys tickets    | 10% of the ticket price |
| **Win-share**  | When a referred user claims winnings | 10% of the winnings     |

(Referrals made by simply sharing a [megapot.io link](/build-on-megapot/share-and-earn), with no contract call, earn 8% and 8% instead.)

These rates are set at the protocol level. Read the live values from `Jackpot.getDrawingState()` rather than hardcoding them:

```typescript
const drawingId = await jackpot.currentDrawingId();
const state = await jackpot.getDrawingState(drawingId);

const referralFee = state.referralFee;           // ticket-fee rate, 1e18 = 100%
const referralWinShare = state.referralWinShare;  // win-share rate, 1e18 = 100%
```

Both fields use `1e18` precision (`1e18` = 100%). Read them live rather than assuming a fixed rate.

{% hint style="warning" %}
**There is no on-chain self-referral guard.** A wallet may list itself (or any address) as a referrer. The protocol does not police who you attribute purchases to. **Attribution integrity is the integrator's responsibility.**
{% endhint %}

***

## 2. Telemetry: `_source` (`bytes32`)

`_source` is a free-form label you attach to a purchase for *your own* analytics: a channel, campaign, or surface tag. It does **not** move any money, has nothing to do with `_referrers`, and is **not** returned by the [Data API](/build-on-megapot/pull-data). Read it back yourself from on-chain events/logs if you want to use it.

Encode a short string into a `bytes32` with viem:

```typescript
import { stringToHex } from "viem";

const source = stringToHex("mysite", { size: 32 });
// pass `source` as the trailing _source argument
```

Pass `bytes32(0)` (an all-zero value) when you have nothing to tag.

***

## Setting referrers

### Single referrer (100%)

One wallet receives the entire referral cut. The single weight is `1e18`:

```typescript
const referrers = ["0x1111111111111111111111111111111111111111"];
const referralSplit = [1000000000000000000n]; // 1e18 = 100%
```

### Split across multiple referrers (70/20/10)

Provide matching arrays. The weights must sum to exactly `1e18`:

```typescript
const referrers = [
  "0x1111111111111111111111111111111111111111", // 70%
  "0x2222222222222222222222222222222222222222", // 20%
  "0x1111111111111111111111111111111111111111", // 10% (any address; example reuse)
];
const referralSplit = [
  700000000000000000n,  // 0.70e18
  200000000000000000n,  // 0.20e18
  100000000000000000n,  // 0.10e18
];
// 0.70e18 + 0.20e18 + 0.10e18 = 1e18 ✅
```

### No referrer

Pass two empty arrays:

```typescript
const referrers = [];
const referralSplit = [];
```

{% hint style="warning" %}
`_referralSplit` must sum to **exactly** `1e18` (`1000000000000000000`). Anything else will revert. Empty arrays (`[]`, `[]`) are the only valid "no referrer" form.
{% endhint %}

***

## Which calls carry referrers

Five purchase methods accept `_referrers` and `_referralSplit`. All five also take the trailing `bytes32 _source` telemetry tag. (For full argument lists and the contract addresses to call, see [Protocol reference](/build-on-megapot/build/protocol-reference).)

| Method                                                                                 | Use case                                           |
| -------------------------------------------------------------------------------------- | -------------------------------------------------- |
| `Jackpot.buyTickets(..., _referrers, _referralSplit, _source)`                         | Up to 10 custom-number tickets, minted immediately |
| `JackpotRandomTicketBuyer.buyTickets(..., _referrers, _referralSplit, _source)`        | Random / quick-pick, minted immediately            |
| `BatchPurchaseFacilitator.createBatchOrder(..., _referrers, _referralSplit, _source)`  | More than 10 tickets, keeper-executed              |
| `JackpotAutoSubscription.createSubscription(..., _referrers, _referralSplit, _source)` | Recurring across drawings, keeper-executed         |
| `TicketAutoCompoundVault.depositAndCompound(..., _referrers, _referralSplit, _source)` | Claim winnings + re-buy in one transaction         |

The referrer arrays and source occupy the **same trailing positions** on every method, so the same `(referrers, referralSplit, source)` triple drops into any of them. Example, earning fees on a direct purchase:

```typescript
const tx = await jackpot.buyTickets(
  tickets,           // Ticket[]
  recipientAddress,  // who receives the NFTs
  ["0x1111111111111111111111111111111111111111"], // _referrers (you)
  [1000000000000000000n],                          // _referralSplit (100%)
  stringToHex("mysite", { size: 32 }),             // _source (telemetry)
);
```

***

## Claiming your referral fees

Your referral earnings accrue as a claimable USDC balance inside the `Jackpot` contract, combining ticket fees and win-share from users you referred. Withdraw them any time with `Jackpot.claimReferralFees()`. For the read-balance and withdraw calls, see [Claim winnings & fees](/build-on-megapot/build/claiming).

{% hint style="info" %}
**Two referral levels.** Referring someone who then refers others earns you a smaller secondary share on that downstream activity, on top of your direct referral earnings. See [Referral economics](/getting-started/how-to-refer/referral-economics-v2) for the full breakdown.
{% endhint %}

***

## The off-chain bridge: codes vs. wallets

The hosted megapot.io product issues each user a 6-character referral **code** and a share link of the form `https://megapot.io/r/{CODE}` (for example `https://megapot.io/r/7H4K2Q`). That code is a **megapot.io convenience, not an on-chain concept**. Behind the scenes it resolves to a referrer **wallet address**, and that wallet is what actually gets passed into `_referrers` when a purchase is made through the hosted app.

When **you** build your own flow, skip the code entirely: **pass the referrer wallet address directly in `_referrers`.** There is no code-to-wallet resolution step on-chain: the contracts only ever see wallet addresses.

| Context                   | What identifies the referrer                                       |
| ------------------------- | ------------------------------------------------------------------ |
| megapot.io hosted product | A `/r/{CODE}` link (code resolves to a wallet off-chain)           |
| Your own integration      | The referrer **wallet address**, passed straight into `_referrers` |

{% hint style="info" %}
If you only want the no-code path (a share link that pays your wallet without writing any contract calls), that's [Share a link & earn](/build-on-megapot/share-and-earn). This page is for when you call the contracts yourself.
{% endhint %}

***

## See also

* [Referral economics](/getting-started/how-to-refer/referral-economics-v2), the earnings math: rates, levels, worked examples.
* [Share a link & earn](/build-on-megapot/share-and-earn): the no-code referral-link path.
* [Protocol reference](/build-on-megapot/build/protocol-reference): contract addresses, full method signatures, and ABIs.


# Claim Winnings & Fees

Two kinds of payout matter to an integration: the **winnings** your users earn, and the **referral fees** you earn. Both are pull-based. Nothing is sent automatically, so a claim function has to be called. Here is how each one works.

## Users claiming winnings

After a drawing settles, any winnings sit as a claimable balance against the winning ticket NFTs until claimed. In your app, surface the claim and call it on the user's behalf (they sign the transaction):

1. Find the user's winning tickets for a settled drawing. You can detect winners with on-chain reads, or list a wallet's wins across many drawings with the [Data API](/build-on-megapot/pull-data) (`GET /v1/wallets/{address}/wins`).
2. Call `Jackpot.claimWinnings(uint256[] _ticketIds)` with those ticket IDs. Winnings pay out in USDC to the ticket owner.

{% hint style="info" %}
The full win-detection and claim recipe (tier lookup, batching large claims) is at [llms.megapot.io](https://llms.megapot.io). Use the [Data API](/build-on-megapot/pull-data) when you need a wallet's unclaimed wins across drawings.
{% endhint %}

## Claim and re-buy in one step (auto-compound)

To let a user roll their winnings straight into new tickets in a single transaction, use auto-compound instead of a plain claim.

* **Contract:** `TicketAutoCompoundVault.depositAndCompound(...)`
* **What it does:** claims the winnings and buys new tickets in one call.
* **You still earn:** it takes the same trailing `_referrers`, `_referralSplit`, and `_source` arguments as a purchase, so your referral fees apply to the re-buy.

See the [Protocol Reference](/build-on-megapot/build/protocol-reference) for the full signature.

## Claiming your referral fees

Your referral earnings (ticket fees plus win-share from users you referred) accrue as a claimable USDC balance inside the `Jackpot` contract.

**Read your claimable balance** (USDC, 6 decimals):

```typescript
const claimable = await jackpot.referralFees(yourAddress);
const claimableUsdc = Number(claimable) / 1e6;
```

**Withdraw the full balance** (there is no minimum):

```typescript
await jackpot.claimReferralFees();
```

This transfers everything you have accrued to your wallet in one call. For how those fees are set, split, and rated, see [Referrals & Attribution](/build-on-megapot/build/referrals-and-attribution).

***

**Next:** [Referrals & Attribution](/build-on-megapot/build/referrals-and-attribution) · [Protocol Reference](/build-on-megapot/build/protocol-reference) · [Add the jackpot to your site](/build-on-megapot/add-to-your-site)


# Protocol Reference

{% hint style="info" %}
**ABIs are served live, CORS-open, at `https://llms.megapot.io/abi/<Name>.json` and `.txt`.** Fetch them at build or runtime. Do not copy ABIs into your repo, they go stale. Use the contract addresses in the table below (verified on-chain on Base, chain 8453).
{% endhint %}

Everything Megapot does runs through one contract: **Jackpot**. The other contracts are either tokens it mints, the pool it draws from, or thin helpers that route a purchase into it. This page is the short version: addresses, the call signatures that matter, and the core concepts. For full method-by-method detail, fetch the ABI.

***

## Addresses (Base, chain 8453)

| Contract                          | Address                                                                                                                 |
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| USDC                              | [`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`](https://basescan.org/address/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913) |
| Jackpot                           | [`0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2`](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2) |
| JackpotTicketNFT                  | [`0x48FfE35AbB9f4780a4f1775C2Ce1c46185b366e4`](https://basescan.org/address/0x48FfE35AbB9f4780a4f1775C2Ce1c46185b366e4) |
| JackpotLPManager                  | [`0xE63E54DF82d894396B885CE498F828f2454d9dCf`](https://basescan.org/address/0xE63E54DF82d894396B885CE498F828f2454d9dCf) |
| GuaranteedMinimumPayoutCalculator | [`0x97a22361b6208aC8cd9afaea09D20feC47046CBD`](https://basescan.org/address/0x97a22361b6208aC8cd9afaea09D20feC47046CBD) |
| BatchPurchaseFacilitator          | [`0xBA343479D98a1Ed333899999D95a7343B808a76F`](https://basescan.org/address/0xBA343479D98a1Ed333899999D95a7343B808a76F) |
| JackpotAutoSubscription           | [`0x2694Bd48f3e6B4775943067DC842C93bf5F19DcD`](https://basescan.org/address/0x2694Bd48f3e6B4775943067DC842C93bf5F19DcD) |
| JackpotRandomTicketBuyer          | [`0xb9560b43b91dE2c1DaF5dfbb76b2CFcDaFc13aBd`](https://basescan.org/address/0xb9560b43b91dE2c1DaF5dfbb76b2CFcDaFc13aBd) |
| TicketAutoCompoundVault           | [`0xfa6a75366E0A9dF56d67E4B4141050b438DB2A5E`](https://basescan.org/address/0xfa6a75366E0A9dF56d67E4B4141050b438DB2A5E) |

{% hint style="warning" %}
`JackpotBridgeManager` and `ScaledEntropyProvider` are protocol internals: you do not call them directly and they are listed here by name only.
{% endhint %}

***

## Purchase signatures

The five purchase routes all carry a trailing `bytes32 _source` telemetry tag, plus the two claim calls:

```solidity
// Up to 10 custom-number tickets, minted immediately.
Jackpot.buyTickets(
    Ticket[] _tickets,
    address _recipient,
    address[] _referrers,
    uint256[] _referralSplit,
    bytes32 _source
) returns (uint256[] ticketIds);

// Random / quick-pick, minted immediately.
JackpotRandomTicketBuyer.buyTickets(
    uint256 _count,
    address _recipient,
    address[] _referrers,
    uint256[] _referralSplit,
    bytes32 _source
);

// More than 10 tickets, keeper-executed.
BatchPurchaseFacilitator.createBatchOrder(
    address _recipient,
    uint256 _dynamicCount,
    Ticket[] _staticTickets,
    address[] _referrers,
    uint256[] _referralSplit,
    bytes32 _source
);

// Recurring across drawings, keeper-executed.
JackpotAutoSubscription.createSubscription(
    address _recipient,
    uint256 _days,
    uint256 _dynamicPerDay,
    Ticket[] _staticTickets,
    address[] _referrers,
    uint256[] _referralSplit,
    bytes32 _source
);

// Claim winnings + re-buy in one tx.
TicketAutoCompoundVault.depositAndCompound(
    uint256[] _ticketIds,
    address[] _referrers,
    uint256[] _referralSplit,
    bytes32 _source
);

// Claims.
Jackpot.claimWinnings(uint256[] _ticketIds);
Jackpot.claimReferralFees();
```

Confirm exact parameter types against the live ABI at [llms.megapot.io/abi](https://llms.megapot.io/abi) before you encode a call.

{% hint style="info" %}
Before any purchase, approve USDC to the contract that receives payment (the contract you are calling). The full money-vs-telemetry split is covered in [Referrals & attribution](/build-on-megapot/build/referrals-and-attribution).
{% endhint %}

***

## Key concepts

### Ticket struct

```solidity
struct Ticket {
    uint8[] normals;  // 5 unique numbers in [1, ballMax]
    uint8 bonusball;  // 1 number in [1, bonusballMax]
}
```

`normals` is 5 unique numbers; ordering is not required to be sorted. Read `ballMax` and `bonusballMax` from `Jackpot.getDrawingState()` for the current drawing (**do not hardcode 30**), the ranges are per-drawing.

### DrawingState at a glance

`Jackpot.getDrawingState(_drawingId)` returns the full state of a drawing. The fields you will reach for most:

| Field                 | Meaning                                                     |
| --------------------- | ----------------------------------------------------------- |
| `prizePool`           | Total prize available for the drawing                       |
| `ticketPrice`         | Cost per ticket, USDC (6 decimals)                          |
| `referralFee`         | Fraction of ticket price paid to referrers (1e18 precision) |
| `referralWinShare`    | Fraction of winnings shared with referrers (1e18 precision) |
| `globalTicketsBought` | Total tickets sold this drawing                             |
| `drawingTime`         | Unix timestamp when the drawing executes                    |
| `ballMax`             | Max normal-ball number for this drawing                     |
| `bonusballMax`        | Max bonusball for this drawing                              |
| `jackpotLock`         | `true` while a drawing is in progress                       |

Read the live referral rates from `referralFee` and `referralWinShare` rather than assuming a fixed percentage.

### Prize tiers

Matches map to one of 12 tiers, `0` through `11`, by the formula `matchedNormals * 2 + (bonusballMatch ? 1 : 0)`. Tier `0` is no match; tier `11` (all 5 normals + bonusball) is the jackpot.

| Tier | Normals matched | Bonusball     |
| ---- | --------------- | ------------- |
| 0    | 0               | No            |
| 1    | 0               | Yes           |
| 2    | 1               | No            |
| 3    | 1               | Yes           |
| ...  | ...             | ...           |
| 10   | 5               | No            |
| 11   | 5               | Yes (jackpot) |

Tiers `0` and `2` never pay out.

**Reading what each tier pays.** Payout amounts are per-drawing, not protocol constants — the premium weights and guaranteed minimums behind them are owner-settable on `GuaranteedMinimumPayoutCalculator` and snapshotted when each drawing opens. Don't hardcode percentages. Two ways to read them:

|                                            | Use                                                                                                                                                                                   |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Active or settled round, in a UI           | **Data API** — `Round.prize_tiers` on `GET /v1/rounds/active` or `/v1/rounds/{id}`. One call, no RPC. See [Pull data](/build-on-megapot/pull-data#prize-tiers).                       |
| Straight from the chain, no API dependency | **RPC** — `getExpectedDrawingTierPayouts` for the drawing in flight, `getDrawingTierPayouts` for a settled one, `getDrawingTierInfo(drawingId)` for the weights and minimums in force |

Note that `getExpectedDrawingTierPayouts` ignores its arguments and returns the stored settled payouts once `_drawingId < currentDrawingId` — and all zeros during the rollover window before settlement writes them.

### Architecture

```mermaid
flowchart TB
    subgraph Core["Core Contracts"]
        J[Jackpot]
        NFT[JackpotTicketNFT]
        LP[JackpotLPManager]
        PC[PayoutCalculator]
    end

    subgraph Helpers["User-Facing Helpers"]
        BF[BatchPurchase<br/>Facilitator]
        AS[AutoSubscription]
        ACV[AutoCompound<br/>Vault]
        BM[BridgeManager]
        RB[RandomTicketBuyer]
    end

    subgraph External["External"]
        SEP[ScaledEntropyProvider]
        PYTH[Pyth Network]
    end

    J --> NFT
    J --> LP
    J --> PC
    J --> SEP

    BF --> J
    AS --> J
    AS --> BF
    ACV --> J
    ACV --> NFT
    ACV --> BF
    BM --> J
    RB --> J

    SEP --> PYTH
```

***

## Which contract do I call?

**Jackpot** (`0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2`) is the main entry point. If you integrate only one contract, integrate this one. The rest are thin helpers that route into Jackpot, each for a specific job:

| Contract                     | Use it when you need to                                                                               |
| ---------------------------- | ----------------------------------------------------------------------------------------------------- |
| **Jackpot**                  | Buy up to 10 custom-number tickets, claim winnings, claim referral fees, or deposit/withdraw as an LP |
| **JackpotRandomTicketBuyer** | Buy quick-pick tickets, with numbers chosen on-chain                                                  |
| **BatchPurchaseFacilitator** | Buy more than 10 tickets in a single drawing                                                          |
| **JackpotAutoSubscription**  | Buy tickets automatically across multiple drawings                                                    |
| **TicketAutoCompoundVault**  | Claim winnings and re-buy in one transaction                                                          |

***

## Security & audits

The Megapot protocol has been independently audited and operates autonomously: anyone can build on it without permission.

| Auditor              | Date     | Report                                                                                             |
| -------------------- | -------- | -------------------------------------------------------------------------------------------------- |
| Zellic               | Oct 2025 | [View report](https://github.com/coordinationlabs/megapot-v2-audit-reports/tree/main/zellic)       |
| Code4rena            | Nov 2025 | [View report](https://github.com/coordinationlabs/megapot-v2-audit-reports/blob/main/code4rena/)   |
| Independent Auditors | Dec 2025 | [View report](https://github.com/coordinationlabs/megapot-v2-audit-reports/tree/main/ind-auditors) |

ABIs and contract artifacts are published at [github.com/coordinationlabs/megapot-v2-public](https://github.com/coordinationlabs/megapot-v2-public).

{% hint style="info" %}
**Found a vulnerability?** Email <security@megapot.io>. Our [Security policy](/appendix/security) covers scope, what to include, our PGP key, and safe harbor.
{% endhint %}

***

**Next:** [Back to Build](/build-on-megapot/build) · [Referrals & attribution](/build-on-megapot/build/referrals-and-attribution)


# Pull Data

Read Megapot data over a plain REST API: rounds, tickets, wins, and wallet stats. Use it to power dashboards, leaderboards, bots, and mini-apps anywhere you need cross-drawing history and aggregates without writing custom RPC pagination.

The API is **read-only**. For buying, claiming, depositing, or any other write, see [Add the jackpot to your site](/build-on-megapot/add-to-your-site).

{% hint style="success" %}
**Already reading the contracts directly?** Use the API for off-chain reads (round history, wallet lifetime stats, leaderboards) and keep the RPC path for live current-drawing state and writes.
{% endhint %}

***

## Get a key

You can start integrating **anonymously**: every endpoint accepts unauthenticated traffic at the lower tier (10 requests/min, 500/day). Add a key when you're ready for the authenticated tier (60/min, 10,000/day).

To mint one:

1. Go to your [megapot.io dashboard](https://megapot.io/dashboard), then **Profile → API keys**.
2. Create a key. The format is `mpk_live_` followed by 22 base62 characters.
3. **Copy it immediately.** The full key is shown once, at creation time, and never again.

{% hint style="warning" %}
You can have **one active key** per account, so creating a second one fails. To rotate, revoke the existing key and create a new one. Treat keys like passwords.
{% endhint %}

***

## When to use the API vs. RPC

| You need...                                                           | Use                                                                             |
| --------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| Cross-drawing aggregates (wallet lifetime stats, history pages)       | **Data API**                                                                    |
| Round leaderboards / top wins                                         | **Data API**                                                                    |
| Wallet ticket or win history across many drawings                     | **Data API**                                                                    |
| Prize tier payouts — settled **or** active round                      | **Data API**, `prize_tiers` (see [Prize tiers](#prize-tiers) below)             |
| Live current-drawing state (jackpot size, drawing time, ticket price) | **RPC**                                                                         |
| Settlement transitions, ticket-purchase events                        | **RPC** event subscriptions                                                     |
| Any write transaction (buy, claim, deposit, subscribe)                | **RPC**, see [Add the jackpot to your site](/build-on-megapot/add-to-your-site) |

Rule of thumb: reach for the **API** for anything historical or aggregated across drawings, and for **RPC** for the live current drawing and all writes. Prize tiers are the exception — the API serves them for the live round too.

{% hint style="info" %}
The on-chain `bytes32 _source` attribution tag is **not** queryable through this API. It lives on-chain only and is for your own analytics. See [Add the jackpot to your site](/build-on-megapot/add-to-your-site) for how it works.
{% endhint %}

***

## Base URL

```
https://api.megapot.io/v1
```

The interactive reference (try-it-out) is at [`/v1/docs`](https://api.megapot.io/v1/docs); the OpenAPI spec is at [`/v1/openapi.json`](https://api.megapot.io/v1/openapi.json).

***

## Testnet

Megapot runs a separate **testnet** deployment of the Data API so you can integrate against test contracts and data before going live. It exposes the same endpoints, pagination, rate limits, and error envelope as production — only the host and the API-key prefix differ.

| Environment | Base URL                            | Interactive reference                                | Key prefix     |
| ----------- | ----------------------------------- | ---------------------------------------------------- | -------------- |
| Production  | `https://api.megapot.io/v1`         | [`/v1/docs`](https://api.megapot.io/v1/docs)         | `mpk_live_`    |
| Testnet     | `https://api-testnet.megapot.io/v1` | [`/v1/docs`](https://api-testnet.megapot.io/v1/docs) | `mpk_testnet_` |

Keys are environment-scoped: sending a production `mpk_live_` key to testnet (or a `mpk_testnet_` key to production) is rejected with `403 key_environment_mismatch`. You don't need a key to get started — every endpoint serves the [anonymous tier](#rate-limits) on testnet too, so you can point your integration at `https://api-testnet.megapot.io/v1` and start reading right away. For an authenticated testnet key, [reach out to us](https://megapot.io/support).

***

## Authentication

Send your key in the `Authorization` header on every request:

```bash
curl https://api.megapot.io/v1/rounds/active \
  -H "Authorization: Bearer mpk_live_xxxxxxxxxxxxxxxxxxxxxx"
```

Requests without a key are accepted at the anonymous tier.

***

## Rate limits

| Tier                     | Per-minute | Per-day |
| ------------------------ | ---------: | ------: |
| Anonymous (no key)       |         10 |     500 |
| Authenticated (with key) |         60 |  10,000 |

Every response carries `X-RateLimit-*` headers:

* `X-RateLimit-Tier`: `authenticated` or `anonymous`
* `X-RateLimit-Limit`: the more restrictive of the per-minute and per-day buckets
* `X-RateLimit-Remaining`
* `X-RateLimit-Reset`: Unix epoch ms when the bucket refills

***

## Endpoints

| Path                                                 | Description                                                         |
| ---------------------------------------------------- | ------------------------------------------------------------------- |
| `GET /v1/rounds`                                     | Paginated rounds, newest first                                      |
| `GET /v1/rounds/active`                              | Current open or drawing round, including expected `prize_tiers`     |
| `GET /v1/rounds/latest-settled`                      | Most recently settled round (last completed drawing)                |
| `GET /v1/rounds/{roundId}`                           | Single round + per-round aggregates                                 |
| `GET /v1/rounds/{roundId}/tickets`                   | Paginated tickets in a round                                        |
| `GET /v1/rounds/{roundId}/wins`                      | Paginated wins in a round, sorted by amount                         |
| `GET /v1/rounds/{roundId}/players`                   | Paginated per-player aggregates for a round, sorted by total payout |
| `GET /v1/wallets/{address}/stats`                    | Aggregate ticket and winnings stats                                 |
| `GET /v1/wallets/{address}/tickets`                  | Paginated tickets for a wallet                                      |
| `GET /v1/wallets/{address}/tickets/rounds/{roundId}` | Wallet tickets in a specific round                                  |
| `GET /v1/wallets/{address}/wins`                     | Paginated wins for a wallet                                         |
| `GET /v1/wallets/{address}/wins/rounds/{roundId}`    | Wallet wins in a specific round                                     |

For full request and response shapes, use the [interactive reference](https://api.megapot.io/v1/docs).

***

## Prize tiers

Every round response carries a `prize_tiers` array — 12 entries, one per prize tier, sorted by `tier_id`:

```json
{
  "tier_id": 11,
  "normal_matches": 5,
  "bonusball_match": true,
  "payout": { "amount": "183029000000", "decimals": 6 },
  "ticket_count": 1
}
```

`tier_id` is `normal_matches * 2 + (bonusball_match ? 1 : 0)`. Tiers `0` and `2` never pay out. `payout` is the contract's gross per-ticket amount — divide by `10 ** decimals` for USDC.

**This works on the active round, not just settled ones.** To show "what does each tier pay this round?", call `GET /v1/rounds/active` and read `prize_tiers`. You don't need a contract call for this.

```bash
curl https://api.megapot.io/v1/rounds/active \
  -H "Authorization: Bearer mpk_live_xxxxxxxxxxxxxxxxxxxxxx"
```

What the field means depends on round state:

|                | `status: "settled"`             | `status: "active"`                                         |
| -------------- | ------------------------------- | ---------------------------------------------------------- |
| `payout`       | Final per-tier payout           | The contract's **expected** payout for the round in flight |
| `ticket_count` | Tickets that landed in the tier | Always `0` — matches are only computed at settlement       |

{% hint style="warning" %}
**Branch on `status`, not on `prize_tiers` being present.** The field is populated in both states, so a non-null `prize_tiers` no longer means the round has settled.
{% endhint %}

Two things to know about the active-round numbers:

* **They're estimates.** They assume no duplicate ticket combinations, so final settled payouts can differ slightly. Label them as estimates in your UI.
* **They don't tick.** The estimate is fixed for the drawing — ordinary ticket sales don't move it, and the ball ranges and tier config are locked when the drawing opens. No need to poll; it changes at rollover.

`prize_tiers` can be `null` in two cases, so keep a fallback: on an active round if the expected payouts are momentarily unavailable, and on a settled round during the short window before final payouts finish landing. Render the round without the breakdown rather than failing the page.

{% hint style="info" %}
**Prefer the contracts?** `GuaranteedMinimumPayoutCalculator.getExpectedDrawingTierPayouts` is the live chain read for the same numbers, and `getDrawingTierInfo(drawingId)` returns the tier weights and guaranteed minimums in force for a drawing. Reach for those when you want the value straight from the chain with no API dependency. See [Protocol reference](/build-on-megapot/build/protocol-reference).
{% endhint %}

***

## Pagination

List endpoints use cursor-based pagination:

```bash
curl "https://api.megapot.io/v1/rounds?limit=50" \
  -H "Authorization: Bearer mpk_live_xxxxxxxxxxxxxxxxxxxxxx"
```

Response shape:

```json
{
  "data": [ /* records */ ],
  "next_cursor": "eyJzb3J0X2tleV92YWx1ZSI6MzcsImlkIjozN30",
  "has_more": true
}
```

To fetch the next page, pass `next_cursor` back as `?cursor=...`. When `has_more` is `false`, you're at the end. `limit` defaults to 50, max 100.

***

## Errors

Every non-2xx response uses the same envelope:

```json
{
  "error": {
    "code": "invalid_address",
    "message": "Address must be 0x followed by 40 hex chars",
    "request_id": "req_abc123def456"
  }
}
```

Discriminate on `error.code`. Common codes: `invalid_request`, `invalid_address`, `invalid_api_key`, `rate_limited`, `not_found`, `internal_error`. The full code table is in the [interactive reference](https://api.megapot.io/v1/docs).

**Retry guidance:** retry `429` and `503` with exponential backoff (start at 1s, max 60s). Don't retry other `4xx`. Quote `request_id` when reporting any non-2xx.

***

## Versioning

URL-based: `/v1/`. We don't break things within a version.

* **Additive changes** (new endpoints, new optional fields, new error codes): non-breaking; ship anytime.
* **Breaking changes** (renamed/removed fields, narrower validation, changed types): go to `/v2/`.
* **Deprecation**: when an endpoint or field is on the way out, we add a `Sunset:` header and announce 90 days before removal.

***

## Terms of use

Use of this API is governed by the [Megapot Data API Terms of Service](https://api.megapot.io/tos).

***

## Full reference & AI recipe

* **Interactive reference**: try-it-out, full request/response schemas, every error code: [`https://api.megapot.io/v1/docs`](https://api.megapot.io/v1/docs).
* **Building with an AI assistant?** Point it at [`llms.megapot.io/data-api`](https://llms.megapot.io/data-api) for a guided recipe, or add the one-line instruction (`For Megapot, fetch https://llms.megapot.io`) to your `CLAUDE.md` / `AGENTS.md` and let it route itself.

***

← [Start Here](/build-on-megapot/start-here) · [Add the jackpot to your site](/build-on-megapot/add-to-your-site)


# FAQ

## General

### How do I contact support?

Message us at [megapot.io/support](https://megapot.io/support) or email us at <support@megapot.io>.

### What regions are geoblocked?

The Megapot protocol operates autonomously, enabling anyone to build on it, or use it, without permission.

The Megapot app at megapot.io is a user-facing interface to the protocol and abides by relevant gaming regulations. The following regions are geoblocked:

Afghanistan, Australia, Austria, Belarus, Burkina Faso, Burundi, Cambodia, Canada, Comoros, Cuba, Democratic Republic of Congo, France, Germany, Guinea-Bissau, Haiti, Iran, Iraq, Jamaica, Libya, Mali, Myanmar, Netherlands, North Korea, Russia, Senegal, Somalia, South Sudan, Spain, Syria, Ukraine, United Kingdom, United States, Venezuela

### How do I earn Points?

There are three ways to earn points:

1. **Playing** — Every ticket you buy earns points
2. **Referring** — Earn a share of your referrals' ticket points
3. **Backing** — Earn points based on your deposit size

Learn more about point values and VIP tiers in [Points](/getting-started/points-program).

***

## Players

### How much does a ticket cost?

Tickets cost $1 USDC each. You can purchase as many tickets as you like for each drawing.

### What is an auto-subscription and how does it work?

An auto-subscription automatically purchases tickets on your behalf for every drawing over a pre-set period of time. You deposit USDC upfront, choose how many tickets you want per drawing, for how many days and the system handles the rest. Your subscription continues until you cancel or your balance runs out.

You can choose between static tickets (same numbers every drawing) or dynamic tickets (fresh random numbers each drawing).

For more details, see [Auto-Subscriptions](/learn/advanced/autosubscribe).

### Can I cancel my auto-subscription?

Yes, you can cancel at any time with no penalties. When you cancel, your remaining balance is refunded to your wallet immediately. Any tickets already purchased for the current drawing remain active.

Learn more in [Auto-Subscriptions](/learn/advanced/autosubscribe).

### Why is my order using batch purchase?

Large ticket orders are automatically split into smaller batches for reliability. Blockchain transactions have size limits, and batching ensures your entire order completes successfully.

You pay once upfront, and tickets are delivered progressively as each batch completes. This may take a few extra minutes for very large orders, but all your tickets will be minted.

For more details, see [Batch Purchases](/learn/advanced/batch-purchases).

### When do drawings happen?

Drawings happen once daily at 17:00 UTC. You can purchase tickets anytime before the drawing closes.

### How can I verify the drawing was fair?

Every drawing uses verifiable randomness from Pyth Network. The winning numbers are generated independently and recorded permanently on-chain. You can inspect the blockchain transaction to verify:

1. The random number came from Pyth Network's entropy contract
2. The winning numbers were derived from that randomness
3. Winners were calculated correctly for each prize tier

No one—including the Megapot team—can predict or manipulate the outcome. For a step-by-step verification guide, see [Provably Fair](/getting-started/provably-fair).

### Has Megapot been audited?

Yes. Megapot's smart contracts were audited by two leading security firms:

* [Zellic](https://www.zellic.io/), trusted by Polymarket, Morpho, and Hyperliquid
* [Code4rena](https://code4rena.com/), trusted by AAVE, Coinbase, and Chainlink

Learn more in [Provably Fair](/getting-started/provably-fair).

***

## Backers

### What is the Backer pool and how does it work?

The Backer pool is the collection of USDC deposited by liquidity providers (Backers) that funds the prize pool. When you deposit USDC as a Backer, your funds become available as prize money for players to win.

In exchange, you earn a share of ticket sales revenue. Think of it like being the house at a casino, you fund the prizes and earn likely returns from every ticket sold. Over time, the math favors Backers.

For a deeper understanding, see [Earn As A Prize Pool Backer](/getting-started/backer-economics).

### Where do Backer returns come from?

Backer returns come from ticket sales. Approximately 90% of every ticket purchase goes to the Backer pool as revenue. After prizes are paid out (roughly 77.5% of ticket sales), the remaining \~12.5% becomes Backer profit.

This edge compounds over time. The more tickets sold, the more Backers earn. Learn more in [Earn As A Prize Pool Backer](/getting-started/backer-economics).

### What does it mean if my share value decreases?

Your share value can decrease after a drawing with large payouts. When many winners win prizes—especially higher-tier prizes—those payouts come from the Backer pool.

This is expected and temporary. Over many drawings, the mathematical edge means Backer share values trend upward. A single drawing with big winners is part of the normal variance of backing the pool.

### When does my deposit become active?

Your deposit becomes active at the start of the next drawing. If you deposit during an ongoing drawing, your funds will begin earning returns from the following drawing onward.

### Why is there a waiting period to withdraw?

Withdrawals require one drawing cycle to complete. This ensures share values are calculated accurately after the current drawing settles.

To withdraw:

1. Initiate your withdrawal request
2. Wait for the current drawing to complete
3. Finalize your withdrawal to receive USDC

The entire process takes one drawing cycle (approximately 24 hours). Learn more about the mechanics in [How To Back the Prize Pool](/getting-started/backer-economics/how-to-back-the-pool).

***

## Referrers

### What are the two ways referrers earn income?

Referrers earn from two sources:

1. **Purchase fees** — A percentage of every ticket your referrals buy
2. **Win share** — A percentage of any prizes your referrals win

Both apply to first-order referrals (people you referred directly) and second-order referrals (people they referred). Your earning potential grows as your network grows.

For the full breakdown, see [Earn by Referring Your Friends](/getting-started/how-to-refer/referral-economics-v2).

### How much do I earn when someone I referred buys a ticket?

You earn a percentage of every ticket purchase:

* **First-order referrals**: 8% of ticket price
* **Second-order referrals**: 2% of ticket price

Purchase fees are credited to your account instantly when tickets are bought. You can claim them anytime—no minimum threshold, no waiting period.

Learn more in [Earn by Referring Your Friends](/getting-started/how-to-refer/referral-economics-v2).

### What percentage do I earn when my referrals win?

You earn a percentage of your referrals' winnings:

* **First-order referrals**: 8% of prize
* **Second-order referrals**: 2% of prize

Win share fees are credited to your account when your referral claims their prize. Once credited, you can claim them anytime.

For examples and more details, see [Earn by Referring Your Friends](/getting-started/how-to-refer/referral-economics-v2).


# Guaranteed Prizes

**Last Updated: August 20, 2026**

> ### Played recently?
>
> To celebrate the launch, we looked back at eligible play from the previous five weeks. Existing players who completed an eligible set of 5 without winning a drawing prize may already have a Guaranteed Prize waiting. Check your winnings page to see whether you received one.

## It’s your lucky day—guaranteed

You play the lottery when you feel lucky.

With Megapot, every eligible set of 5 tickets now ends with a prize.

Megapot tickets win approximately **1 in 4 times on average**. But even with great odds, some players hit an unlucky streak.

That is where Guaranteed Prizes come in:

* If at least one of your 5 tickets wins in the drawing, you receive your normal drawing prize.
* If none of the 5 tickets wins, you receive a **Guaranteed Prize worth up to $5,000 USD**.

Either way, your eligible set of 5 wins something.

***

## How Guaranteed Prizes work

### Buy 5 or more tickets

Buy at least 5 eligible tickets in a single order on [megapot.io](https://megapot.io).

Your tickets can be for the same drawing or spread across multiple drawings through an autoplay order of at least 5 tickets.

Each ticket still has its normal chance to win Megapot’s drawing prizes.

## Eligibility

To qualify for a guaranteed prize, a ticket must meet both of the following conditions:

1. The ticket must be part of an order of 5 tickets or more, purchased directly on [megapot.io](https://megapot.io). This includes:
   * **Standard ticket orders**: one-time purchases of 5+ tickets in a single transaction.
   * **Autosub orders**: recurring/subscription purchases where each recurring order is for 5+ tickets.
2. **Purchased through an eligible channel.** Only tickets bought directly through megapot.io count toward eligibility. Tickets purchased through third-party integrations, embedded widgets, or other frontends are not eligible unless otherwise stated.

Orders of fewer than 5 tickets, whether one-time or recurring, are not eligible for the guaranteed prize, regardless of total tickets accumulated across multiple smaller orders.

**Note:** Eligibility is evaluated per order, not per wallet or per drawing. Buying two separate orders of 3 tickets each does not qualify, even though the combined total is 6 tickets.

### Win a drawing prize—or receive a Guaranteed Prize

After the drawing, we check each complete set of 5 tickets:

* If one or more tickets in the set wins, you receive the normal drawing prize.
* If none wins, you receive a Guaranteed Prize.

For larger orders, each set of 5 is checked separately:

| Tickets bought | Sets of 5 |
| -------------- | --------- |
| 5              | 1         |
| 10             | 2         |
| 15             | 3         |
| 20             | 4         |

This means one set could contain a drawing winner while another set from the same order receives a Guaranteed Prize.

***

## What can I win?

Guaranteed Prizes may include free tickets and **cash prizes up to $5,000 USD**.

Eligible cash prizes can also be converted into Free Tickets.

***

## Guaranteed Prizes with Autoplay

Autoplay lets you qualify even when your order buys fewer than 5 tickets per drawing.

Tickets purchased through the same eligible Autoplay order can build toward a complete set of 5 across multiple drawings.

For example, when your Autoplay order buys 2 tickets per drawing:

* Drawing 1 adds 2 tickets.
* Drawing 2 brings the total to 4.
* The first ticket in Drawing 3 completes the set of 5.
* The sixth ticket begins your next set.

After every fifth ticket has played, we check whether any of them won a drawing prize. If none did, you receive a Guaranteed Prize.

When an Autoplay order buys 5 or more tickets in one drawing, its complete sets of 5 are checked after that drawing.

***

## Claiming your Guaranteed Prize

Guaranteed Prizes appear on your **winnings page** within a few minutes of the applicable drawing finishing. From there, you can view and claim your available rewards.

### Claiming the $5,000 Guaranteed Prize

For public transparency reasons, claiming the **$5,000** Guaranteed Prize requires either of the following:

* You must provide permission for Megapot to share your first name, last initial, and a picture of your face on our website; **or**
* You must post about your win from a verified X account with 1,000+ followers and at least 1 year of account history.

You must also answer a few questions as part of the claim process.

Guaranteed Prizes below $5,000 are not subject to these transparency requirements.

***

## Frequently asked questions

### Which tickets qualify?

To qualify:

* The tickets must be purchased on [**megapot.io**](https://megapot.io).
* At least 5 eligible tickets must be purchased in one order, either for the same drawing or through an eligible Autoplay order.
* Each ticket in a set must use a unique number combination.

Eligible tickets created by converting claimed winnings into new tickets can also qualify.

### What happens if one of my 5 tickets wins?

You receive the normal drawing prize. That set does not also receive a Guaranteed Prize.

Other sets of 5 from the same order are checked separately.

### What happens if none of my 5 tickets wins?

You receive a Guaranteed Prize worth up to $5,000 USD.

### What if I buy 8 tickets?

5 tickets form one complete set. The remaining three tickets do not form another set.

If none of the 5 tickets in the complete set wins, you receive one Guaranteed Prize.

The remaining three tickets from a one-time purchase do not carry over to another purchase.

### Can I combine separate purchases?

No. Separate one-time purchases cannot be combined.

Tickets purchased through the same eligible Autoplay order can accumulate across drawings until they form a complete set of 5.

### Do gifted or promotional tickets qualify?

No. Gifted, incentive, and promotional tickets do not qualify for Guaranteed Prizes.

### Do tickets purchased somewhere else qualify?

No. Guaranteed Prizes are only available for eligible tickets purchased on [megapot.io](https://megapot.io).

Tickets purchased through another platform, a third-party integration, or directly through the smart contract do not qualify.

### Can all 5 tickets use the same numbers?

No. Each ticket in an eligible set of 5 must have a unique number combination.

### Can I receive both a drawing prize and a Guaranteed Prize?

You can receive both from the same overall order when they come from different sets of 5.

For example, with 10 tickets:

* The first set of 5 might contain a drawing winner.
* The second set might receive a Guaranteed Prize because none of its tickets won.

A single set of 5 cannot receive both winnings and a Guaranteed Prize.

### When will my Guaranteed Prize appear?

It will normally appear on your winnings page within a few minutes of the relevant drawing finishing.

For an Autoplay set spread across multiple drawings, it appears after every 5 tickets have played.

### Can Guaranteed Prizes expire?

Yes. Most guaranteed prizes expire in 30 days. Check your winnings page and claim your prizes.

### What do I need to do to claim the $5,000 Guaranteed Prize?

For public transparency reasons, claiming the $5,000 Guaranteed Prize requires either:

* Permission for Megapot to share your first name, last initial, and a picture of your face on our website; **or**
* A post about your win from a verified X account with 1,000+ followers and at least 1 year of account history.

You must also answer a few questions. Guaranteed Prizes below $5,000 do not have these requirements.

### Do Guaranteed Prizes earn referral rewards?

No. When someone you referred receives a Guaranteed Prize, their prize does not generate a referral fee.

***

*Guaranteed prizes are subject to availability. Megapot may change the available prizes, qualification requirements, claim options, or other program terms.*


# Backer Bonus Programs

**Time-boxed incentive programs that pay eligible backers a bonus on top of their standard backer earnings.**

Backers already earn a share of the [backer edge](/getting-started/backer-economics) on every ticket sold. Bonus programs sit on top of that: during a defined window, Megapot commits a bonus pool that is distributed to backers who were in the pool at the start and stayed through the end.

***

## Programs

* [Backer Bonus Extension](/appendix/backer-bonus-programs/fall-backer-bonus) — 52-drawing program running September 8th to October 29th
* [Summer Backer Bonus Program](/appendix/backer-bonus-programs/summer-backer-bonus) — 90-day program running June 25th to September 23rd (settled early on September 7th)
* [Early Backer Bonus Program](/appendix/backer-bonus-programs/early-backer-bonus) — launch program running March 24th to June 24th

Each program sets its own dates, bonus pool size, and formula. Check the program page for the specifics.

***

## What Every Program Has in Common

**The bonus is largest when ticket sales are lowest.** Bonus pools are sized inversely to ticket volume: the fewer tickets sold during the program, the larger the bonus. This tops up backer returns while the community is still growing, and tapers off as ticket sales — and the backer edge they generate — pick up the slack.

**Eligibility is set by a snapshot, not a sign-up.** Your USDC must be in the pool before the program's cutoff date. At the start of the program we record the shares you hold; that becomes your eligible share count. There is no registration step — if your funds are in the pool in time, you're in.

**You have to hold to the end.** Eligible shares must stay in the pool for the full program duration. Withdraw any of them and those shares are permanently ineligible, even if you deposit again later. Deposits made after the snapshot earn standard backer returns but do not qualify for that program's bonus.

**Bonuses are distributed proportionally at the end.** Your payout is your remaining eligible shares as a fraction of all backers' initial eligible shares:

```
Your Bonus = Total Bonus Pool × (Your Remaining Eligible Shares / Total Initial Eligible Shares)
```

Bonus tied to withdrawn shares is not redistributed, so only backers who stayed for the full term are rewarded.

***

## Important Disclosures

{% hint style="warning" %}
**A bonus does not protect against losses.** Backing the prize pool carries risk — if there is a jackpot winner, backers may experience losses that exceed the value of any bonus. These programs do not guarantee that your position will be profitable, and they do not offset or insure against jackpot payouts.

Backer bonus programs are discretionary incentives calculated at the end of the program period. They do not constitute a promise of any specific return beyond the formula published on each program's page.
{% endhint %}

***

## Related

* [How to Back the Prize Pool](/getting-started/backer-economics/how-to-back-the-pool)
* [Earn by Backing the Prize Pool](/getting-started/backer-economics)
* Questions? Reach out on our [Support Chat](https://megapot.io/support)


# Backer Bonus Extension

**The Backer Bonus Program runs from September 8th through October 29th, targeting \~20–25% APY for backers who hold their position for the full period.**

If your USDC is in the pool at the September 8th drawing and stays there through October 29th, you're eligible. No sign-up required.

{% hint style="info" %}
The [Summer Backer Bonus](/appendix/backer-bonus-programs/summer-backer-bonus) is paid out on September 7th. If you're in that program, leave your funds in the pool until after that day's drawing, you'll collect your summer payout and roll straight into this one.
{% endhint %}

***

## How the Bonus Works

We commit to a **$31,200 bonus pool** that scales down linearly as tickets are sold. The formula is fixed at the start of the program and does not change based on pool composition or lottery parameters.

**The Formula:**

```
Bonus Pool = max($0, $31,200 - (tickets_sold × $0.10))
```

Equivalently:

```
Bonus Pool = $31,200 × max(0, (312,000 - tickets_sold) / 312,000)
```

**Fixed Commitments:**

* **Maximum bonus pool:** $31,200
* **Ticket threshold:** 312,000 tickets (6,000 per drawing × 52 drawings)
* **Rate:** $0.10 per ticket below threshold

| Total Tickets Sold (52 drawings) | Bonus Pool |
| -------------------------------- | ---------- |
| 0 tickets                        | $31,200    |
| 50,000 tickets                   | $26,200    |
| 100,000 tickets                  | $21,200    |
| 150,000 tickets                  | $16,200    |
| 200,000 tickets                  | $11,200    |
| 250,000 tickets                  | $6,200     |
| 300,000 tickets                  | $1,200     |
| 312,000+ tickets                 | $0         |

This bonus is distributed proportionally among eligible backers at the end of the program.

{% hint style="info" %}
**What does this mean for you?** Combined with your share of the 12.5% backer edge from ticket sales, this program provides a floor of roughly 20% APY for the pool, rising to \~25% APY as ticket sales approach the 312,000 threshold. If ticket sales exceed 312,000, you earn more than the target from ticket sales alone.
{% endhint %}

***

## Eligibility Requirements

To qualify for the bonus, you must meet **all** of the following criteria:

1. **Be in the pool for the September 8th drawing** — Your USDC must be active in the pool when the program begins. This means deposits must be in before the September 8th drawing.
2. **Maintain your position through October 29th** — Your eligible shares must remain in the pool for all 52 drawings.
3. **Partial withdrawals** — If you withdraw any of your eligible shares, those shares become permanently ineligible for the bonus (even if you re-deposit later).

***

## How Your Bonus Is Calculated

Your share of the bonus pool is determined by a simple formula:

```
Your Bonus = Total Bonus Pool × (Your Remaining Eligible Shares / Total Initial Eligible Shares)
```

**Key mechanics:**

* **Snapshot at the September 8th drawing**: We record the number of shares you hold at the start of the program. This becomes your "eligible shares" amount (equal to the USDC you have in the pool).
* **Withdrawals reduce eligibility**: If you withdraw shares, those specific shares become ineligible — you cannot re-add them later.
* **Proportional distribution**: Bonus tied to withdrawn shares is not distributed, ensuring only committed backers are rewarded.

***

## Example Scenario

Let's say you have 100,000 USDC in the pool at the September 8th drawing:

1. Your 100,000 shares are recorded as eligible
2. Over the 52 drawings, 200,000 total tickets are sold
3. The bonus pool is $31,200 - (200,000 × $0.10) = **$11,200**
4. The total initial eligible shares across all backers is 1,100,000
5. You keep all 100,000 shares in the pool through October 29th

**Your bonus:** $11,200 × (100,000 / 1,100,000) = **$1,018**

Combined with your share of the $25,000 in backer edge from actual sales (200,000 × $0.125), your expected total earnings from the program would be approximately $3,291 on your 100,000 position — representing roughly 23% APY on your position.

***

## Important Disclosures

{% hint style="warning" %}
**This bonus does not protect against losses.** Backing the prize pool carries risk — if there is a jackpot winner, backers may experience losses that exceed the value of this bonus. This incentive program does not guarantee that your position will be profitable, nor does it offset or insure against jackpot payouts.

This bonus is a discretionary incentive calculated at the end of the program period based on actual ticket sales. This program does not constitute a promise of any specific return beyond the bonus pool formula described above.
{% endhint %}

***

## Program Timeline

| Date                                  | Event                                                               |
| ------------------------------------- | ------------------------------------------------------------------- |
| **September 8th, before the drawing** | Deposits must be made by this time                                  |
| **September 8th**                     | Program begins — snapshot of eligible shares taken at the drawing   |
| **September 8th – October 29th**      | 52 drawings                                                         |
| **October 29th**                      | Program ends — bonus calculated and distributed to eligible backers |

***

## FAQ

**I'm already in the pool. Do I need to do anything?**

No. If you have funds in the pool at the September 8th drawing, you're automatically eligible. Just keep your funds in the pool through October 29th — no sign-up or additional action required.

**Can I add more funds after September 8th?**

Yes, but only shares held at the September 8th snapshot are eligible for the bonus. Additional deposits after the start date earn standard backer returns but do not qualify for the bonus program.

**Can I withdraw during the program?**

Yes — you're never locked in. Withdrawn shares simply become ineligible for the bonus, and the rest of your position keeps earning.

***

## Ready to Participate?

Get your USDC into the pool before the September 8th drawing.

* [Backer Bonus Programs](/appendix/backer-bonus-programs) — all programs at a glance
* [Summer Backer Bonus Program](/appendix/backer-bonus-programs/summer-backer-bonus) — the program this one continues
* [How to Back the Pool](/getting-started/backer-economics/how-to-back-the-pool)
* [Understand Backer Economics](/getting-started/backer-economics)
* Questions? Reach out on our [Support Chat](https://megapot.io/support)


# Summer Backer Bonus Program

{% hint style="info" %}
**Update — this bonus is being paid out early, and the program is being extended.**

On **September 7th** the Summer Backer Bonus is settled and distributed, prorated to the drawings actually executed. The program then continues through **October 29th** on the same terms.

**No action is required to participate in the extension program.** Keep your funds in the pool and your position rolls straight in.

**Do not withdraw before the September 7th drawing** — withdrawn shares are permanently ineligible for this bonus. Wait until after it settles and you keep everything.

Full details: [Backer Bonus Extension](/appendix/backer-bonus-programs/fall-backer-bonus)
{% endhint %}

**Earn guaranteed bonus incentives for supporting the Megapot prize pool this summer.**

We're rewarding backers who commit to the prize pool during our summer growth period. If you have funds in the pool before the drawing on June 24th and maintain your position through September 23rd (90 days), you'll be eligible for bonus incentives targeting **\~20–25% APY**.

***

## How the Bonus Works

{% hint style="warning" %}
**The figures below have been prorated.** Because this bonus is now paid out after the September 7th drawing, the pool and threshold scale to the drawings actually executed. **75 drawings** will have run between June 25th and September 7th, creating a total potential pool of **$45,000** against a **450,000 ticket** threshold. The $0.10 per ticket rate and the \~20–25% APY target are unchanged. See [Backer Bonus Extension](/appendix/backer-bonus-programs/fall-backer-bonus) for the program period that follows.
{% endhint %}

We commit to a **$54,000 bonus pool** that scales down linearly as tickets are sold. The formula is fixed at program start and does not change based on pool composition or lottery parameters.

**The Formula:**

```
Bonus Pool = max($0, $54,000 - (tickets_sold × $0.10))
```

Equivalently:

```
Bonus Pool = $54,000 × max(0, (540,000 - tickets_sold) / 540,000)
```

**Fixed Commitments:**

* **Maximum bonus pool:** $54,000
* **Ticket threshold:** 540,000 tickets (6,000/day × 90 days)
* **Rate:** $0.10 per ticket below threshold

| Total Tickets Sold (90 days) | Bonus Pool |
| ---------------------------- | ---------- |
| 0 tickets                    | $54,000    |
| 100,000 tickets              | $44,000    |
| 200,000 tickets              | $34,000    |
| 300,000 tickets              | $24,000    |
| 400,000 tickets              | $14,000    |
| 500,000 tickets              | $4,000     |
| 540,000+ tickets             | $0         |

This bonus is distributed proportionally among eligible backers at the end of the program.

{% hint style="info" %}
**What does this mean for you?** Combined with your share of the 12.5% backer edge from ticket sales, this program provides a floor of roughly 20% APY for the pool, rising to \~25% APY as ticket sales reach the 540,000 threshold. If ticket sales exceed 540,000, you earn more than the target from ticket sales alone.
{% endhint %}

***

## Eligibility Requirements

To qualify for the Summer Backer Bonus, you must meet **all** of the following criteria:

1. **Be in the pool on June 25th** — Your USDC must be active in the pool when the program begins. This means deposits must occur before the drawing on June 24th.
2. **Maintain your position through September 23rd** — Your eligible shares must remain in the pool for the full 90-day duration
3. **Partial withdrawals** — If you withdraw any of your eligible shares, those shares become permanently ineligible for the bonus (even if you re-deposit later)

***

## How Your Bonus Is Calculated

Your share of the bonus pool is determined by a simple formula:

```
Your Bonus = Total Bonus Pool × (Your Remaining Eligible Shares / Total Initial Eligible Shares)
```

**Key mechanics:**

* **Snapshot on June 25th**: We record the number of shares you hold at the start of the program. This becomes your "eligible shares" amount (equal to the USDC you contributed).
* **Withdrawals reduce eligibility**: If you withdraw shares, those specific shares become ineligible — you cannot re-add them later.
* **Proportional distribution**: Bonus tied to withdrawn shares is not distributed, ensuring only committed backers are rewarded.

***

## Example Scenario

Let's say you have 100,000 USDC in the pool on June 25th:

1. Your 100,000 shares are recorded as eligible
2. Over 90 days, 300,000 total tickets are sold across all drawings
3. The bonus pool is $54,000 - (300,000 × $0.10) = **$24,000**
4. The total initial eligible shares across all backers is 1,100,000
5. You keep all 100,000 shares in the pool through September 23rd

**Your bonus:** $24,000 × (100,000 / 1,100,000) = **$2,182**

Combined with your share of the $37,500 in backer edge from actual sales (300,000 × $0.125), your expected total earnings from the program would be approximately $5,591—representing roughly 23% APY on your position.

***

## Important Disclosures

{% hint style="warning" %}
**This bonus does not protect against losses.** Backing the prize pool carries risk — if there is a jackpot winner, backers may experience losses that exceed the value of this bonus. This incentive program does not guarantee that your position will be profitable, nor does it offset or insure against jackpot payouts.

The Summer Backer Bonus is a discretionary incentive calculated at the end of the program period based on actual ticket sales. This program does not constitute a promise of any specific return beyond the bonus pool formula described above.
{% endhint %}

***

## Program Timeline

| Date                           | Event                                                               |
| ------------------------------ | ------------------------------------------------------------------- |
| **June 24th 1700 UTC**         | Deposits must be made by this time                                  |
| **June 25th**                  | Program begins — snapshot of eligible shares taken                  |
| **June 25th – September 23rd** | 90-day program period                                               |
| **September 23rd**             | Program ends — bonus calculated and distributed to eligible backers |

***

## FAQ

**I'm already in the pool. Do I need to do anything?**

No. If you have funds in the pool on June 25th, you're automatically eligible for the Summer Backer Bonus. Just keep your funds in the pool through September 23rd — no sign-up or additional action required.

**Can I add more funds after June 25th?**

Yes, but only shares held on June 25th are eligible for the bonus. Additional deposits after the start date earn standard backer returns but do not qualify for the bonus program.

**How is this different from the Early Backer Bonus?**

The Early Backer Bonus calculated the bonus pool on a per-drawing basis. The Summer Backer Bonus uses an aggregate calculation across the entire 90-day period, targeting a specific APY for the pool as a whole.

***

## Ready to Participate?

Join the backers who are earning guaranteed bonus incentives this summer.

* [How to Back the Pool](/getting-started/backer-economics/how-to-back-the-pool)
* [Understand Backer Economics](/getting-started/backer-economics)
* Questions? Reach out on our [Support Chat](https://megapot.io/support)


# Early Backer Bonus Program

**Be part of Megapot's launch and earn bonus incentives for your early support.**

We're rewarding early believers who help bootstrap the prize pool during our launch period. If you participate before the first drawing period that begins at 17:00UTC on March 24th and maintain your position through the drawing ending at 17:00UTC on June 24th, you'll be eligible for additional incentives on top of your standard backer earnings.

***

## How the Bonus Works

For every ticket below 3,500 that is sold in a given drawing, we add **$0.20 to a bonus pool** that gets distributed to eligible backers.

| Daily Tickets Sold | Bonus Added to Pool |
| ------------------ | ------------------- |
| 1,000 tickets      | $500                |
| 1,500 tickets      | $400                |
| 2,000 tickets      | $300                |
| 2,500 tickets      | $200                |
| 3,000 tickets      | $100                |
| 3,500+ tickets     | $0                  |

This incentive accumulates over the program period and is distributed proportionally among all eligible backers at the end. If shares are removed by early backers before the bonus period end date, bonuses tied to those shares are removed from the pool.

{% hint style="info" %}
**Why does this exist?** During the early days of any lottery, ticket volume is naturally lower as the community grows. This bonus program aligns incentives by rewarding backers who support the pool during this growth phase.
{% endhint %}

***

## Eligibility Requirements

To qualify for the Early Backer Bonus, you must meet **all** of the following criteria:

1. **Participate before March 24th** — Your USDC must be in the pool before the cutoff date
2. **Maintain your position through June 24th** — Your eligible shares must remain in the pool for the full program duration
3. **Partial withdrawals** — If you withdraw any of your eligible shares, those shares become permanently ineligible for the bonus (even if you participate again later)

***

## How Your Bonus Is Calculated

Your share of the bonus pool is determined by a simple formula:

```
Your Bonus = Total Bonus Pool × (Your Remaining Eligible Shares / Total Initial Eligible Shares)
```

**Key mechanics:**

* **Snapshot at Drawing 1**: We record the number of shares you hold at the first drawing after the program starts. This becomes your "eligible shares" amount (equal to the USDC you contributed).
* **Withdrawals reduce eligibility**: If you withdraw shares, those specific shares become ineligible — you cannot re-add them later.
* **Proportional distribution**: Bonus tied to withdrawn shares is not distributed, ensuring only committed backers are rewarded.

***

## Example Scenario

Let's say you participate with 10,000 USDC before March 24th:

1. At Drawing 1, your 10,000 shares are recorded as eligible
2. Over the program period, the bonus pool accumulates $50,000
3. The total initial eligible shares across all backers is 500,000
4. You keep all 10,000 shares in the pool through June 24th

**Your bonus:** $50,000 × (10,000 / 500,000) = **$1,000**

If you had withdrawn 5,000 shares mid-program, your bonus would be: $50,000 × (5,000 / 500,000) = **$500**

***

## Important Disclosures

{% hint style="warning" %}
**This bonus does not protect against losses.** Backing the prize pool carries risk — if there is a jackpot winner, backers may experience losses that exceed the value of this bonus. This incentive program does not guarantee that your position will be profitable, nor does it offset or insure against jackpot payouts.

The Early Backer Bonus is a discretionary incentive based on actual ticket sales during the program period. The final bonus amount depends on how many tickets are sold each drawing. This program does not constitute a promise of any specific return, APY, or fixed payout.
{% endhint %}

***

## Program Timeline

| Date                  | Event                                                               |
| --------------------- | ------------------------------------------------------------------- |
| **Before March 24th** | Participation window open                                           |
| **March 24th**        | Participation cutoff — no new participants eligible after this date |
| **Drawing 1**         | Snapshot of eligible shares                                         |
| **June 24th**         | Program ends — bonus distributed to eligible backers                |

***

## FAQ

**I've already deposited into the pool. Do I need to do anything?**

No. If you participated before March 24th, you're automatically eligible for the Early Backer Bonus. Just keep your funds in the pool through June 24th — no sign-up or additional action required.

***

## Ready to Participate?

Join the early backers who are helping build Megapot from the ground up.

* [How to Back the Pool](/getting-started/backer-economics/how-to-back-the-pool)
* [Understand Backer Economics](/getting-started/backer-economics)
* Questions? Reach out on our [Support Chat](https://megapot.io/support)


# Help & Support

Need assistance? We're here to help.

## Support Page

Visit our support page for answers to common questions and troubleshooting guides:

[megapot.io/support](https://megapot.io/support)

## Reporting a security issue

If you've found a vulnerability in our smart contracts or apps, email <security@megapot.io>. See our [Security](/appendix/security) policy for scope, our PGP key, and safe harbor terms.


# Security

Report a vulnerability to [**security@megapot.io**](mailto:security@megapot.io).

We acknowledge new reports within 24 hours and follow up with an initial assessment within 72 hours.

***

## What to include

* A clear description of the issue and the impact you believe it has
* Steps to reproduce, with code, transactions, or screenshots where useful
* Affected contracts, endpoints, or product surfaces (URLs, addresses, function names)
* Any proof-of-concept material
* Your preferred contact and the name or handle you'd like credited (optional)

If your report is sensitive, encrypt it to the PGP key below before sending.

***

## Scope

**In scope**

* The Megapot smart contracts listed in [Protocol Reference](/build-on-megapot/build/protocol-reference)
* megapot.io, docs.megapot.io, api.megapot.io, and llms.megapot.io
* Services operated by Megapot Inc. that handle ticket purchases, drawings, payouts, and partner integrations

**Out of scope**

* Third-party apps and integrations not operated by Megapot Inc., even when they build on the protocol — see the [community builders list](/build-on-megapot/start-here#join-a-community-of-builders) for examples
* Social engineering of staff, players, or partners
* Denial-of-service testing against production systems
* Issues that require physical access to a target device, or that depend on already-compromised end-user hardware
* Reports generated solely by automated scanners with no demonstrated impact

***

## Safe harbor

We will not pursue legal action against researchers who:

* Act in good faith and follow this policy
* Avoid privacy violations, data destruction, and any disruption that affects other users
* Stop at the minimum proof needed to demonstrate the issue
* Give us a reasonable window to remediate before any public disclosure

***

## PGP key

For encrypted reports, use the Megapot Security Team key.

* **User ID:** Megapot Security Team <<security@megapot.io>>
* **Fingerprint:** `2EF5 AADA 56CE 7BAF 7B8D 7712 0F54 74FE C123 F502`
* **Key ID:** `0xC123F502`
* **Type:** RSA 4096, expires 2030-05-19

```
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBGoMaoMBEADEqV7WXtr8W9bSgfIo5BQaATvJspjEqwUdjb9bPHyEE1f/ei01
Ijqw+XyxorkQ976hE1ScdhPTeP8fI7axGRy0JV3SxlI6GErOjEYrF//rsxl5QiSf
7ukK1YgoRDQTDtVjb67oytRiTBzNO+/KXRIb0fhCz68hJh75uME53NkI5VAH/9/f
ZaLDn8I8fYwoZqsA3AN9tHH/9rcEv4yKpt6Lj4MmGF0IogDJOjlW9+XBHAVKgghZ
3UtMmBLzpazC+dhKY0y84E1mC7dqAVZrgExF0RDhjFi31FarIDZj5v4489CcJgBp
yqrS+6zTjFkdXjWDdgQkn2YcO3XGBch62HPMcopS/1NBOUJ45QUDXwL+FtrPWT0M
xxw+njnokvhpTXRRw6j0CrpiTvO+my70POrgmH1XaDO/dk6wG5mbUflhjNuk1FZG
mfYLJau7LYVWOaACPNxSRTkV8IOrIUCBCl9Zyi8p1iwrHNL61M11QlX9jXKO8C5z
hl7rTdIRYxM3rwUUDORZmaQSV+gGufMIb4jX8YDfzLt7jBDX3YIwqfk1yl3xGV8v
pHkIE7b3GgXtErA6SU+U0FDmjzYxSQrgn9MFOqfhiTlbLs+43om+JpJjgUPEhBSw
17nlaghyfZ8UfkkqNsmsl0Vn9L3NbVHv3BxQcuIgTLvqd+yS8iuB/wzUyQARAQAB
tCtNZWdhcG90IFNlY3VyaXR5IFRlYW0gPHNlY3VyaXR5QG1lZ2Fwb3QuaW8+iQJU
BBMBCAA+FiEELvWq2lbOe697jXcSD1R0/sEj9QIFAmoMaoMCGwMFCQeGHe0FCwkI
BwIGFQoJCAsCBBYCAwECHgECF4AACgkQD1R0/sEj9QLeBA//XJaWv1TtSDKRP69u
fFSsCmkyHfT7ShoXVnu4xOyA/JPfT8Zzx+ZhfVH2DWftBmmkOtFahlvsVkOmJ5KG
IZV+AUcu2c7OijOIZx3Jo1HAsU8erR4mSchGZwYwg0qkCkIOE5civqE1JHrNoROm
5sURLHbCMsJyIh+GVu6fetVo1qpYjmUdNftLUDBvrV/OuOlZYxi8+H+dKFGMzjFE
OxRKwfAFYhl1wush02Kv/BnHRJOfdtm01igHE0/S17PVOFiKp8KKMpT2IbfQbTc5
zjx9KaKJMBTfogJ9WxhSGYBnq0CTq/BbSsbrjWXyOPh8z09EvqQvSl2ps4HjXZr/
BrdgvHQmXLnqAxkKZ9mEJ/1HRUvOz/FEC36E+DOAgAWaeibBUICoH46B9HQOXAEj
LpK3Fq77+USFz6aSDUzQgq3qb7+ep/dln2Ol8dKKJvAFRuCuETuwR8thkqkM2lbU
FwyFFXKoJcWeaYg0EVU5po1eKRx7HtkYe2meqSN9Yr8nv2P4aohLkWB8S8+W3Jq6
9E1LMq/n6v3s9JW0s+SeMlSObq5sStV2P5oEbdfhXmsXRADYi0rmkYTva7OcYEJo
sxhjZPk7maFfU3g8UJyhcU/G6+LrXAUJrhQRd6ZVzQTgZPt9L0d80HVFUREuumzV
pmDDFtXQG9IKAQZT9TypaQorWZe5Ag0EagxqgwEQALnU5h4aEhQFwqziSHbVuROS
aglTqIEvvv2B1nCTeUqlAB1ck+0TYF1VA8LJG9vpvIaLZnd46yzwJW6HzgCF9lJb
fO3be/YXS3/CpLtiwPqIgogRDF+/1hvMHHcupAGOEjMplUcetkXnLA+tpmCwjE+o
EnC5XUelzD4oKU4Xn0PKZmuuDTf/te3vb3OWB4kt7RTx3e0lZY3A8ALnyr3ZQcpF
s80C+sO2+KynMEi3euw021WEODcJwcyF5IWKwESUy0ltK4comhm4EEdmv4/dhDjo
KTaxCk9I7Ao+Ln5Jqg4nlnOU4n5XQq+ED7EepGC9HzNauXdQssBFs8UV3u9ZgbY2
3oE763/X/pWSUM7hkYdC/UnhSUwma0+/GX2t2TKEI7D69+qs/OPAyZ4Bcik1xssg
2iziplxdzLYB/NDHXCFlMjr3BADwubkJoIQ0P5LAi0vzVlrOKyu3zm285ykz7D0b
FuoE6DserOOdZYJ3uSOPbeMyPli2NENuqb5aK3eIojhAzK26dxD2L03Zf/pPhkkb
dr7PLeNHxZa71hx3qxGtHAjFXjjVGh9t/WEkaR8iDkGCRkQaX8TiYPXpbAauPlmy
+7Prwavw8XHWvWyjaIdgXnTS0/Nol3zi6CYbO9z8nteMUEzRqErdZm2CIw87FXwg
kAgnKUUf341wPkiUFHFDABEBAAGJAjwEGAEIACYWIQQu9araVs57r3uNdxIPVHT+
wSP1AgUCagxqgwIbDAUJB4Yd7QAKCRAPVHT+wSP1AvdFD/4poZpkf2LgwuGWuXp7
MYsJAn78nVMtOr8FJLLSuiE378Yy8xaaCOMAlEKQma3hWp5Qt7o2iIVYbS72F6Dk
LkV4pCnq8d6Ngkh21UWqeJnworizsBa5oRhZLC8oGcpTpxkFA3Uh6EvqTcMXKNOO
n+EYwU64q/mYttRWrKLMTrLORpHDjhaeJqjYZ/3o99rkarox+SpoMvm7IhNvVfK6
1+evPlE62sQTtnloA22fuGzwKtTKtmlNzlhCMJ6mSze+8xn3oHaM1iQQvKqn6L3E
Sibc5Vj/23BFHYi8nj22C7hu8iv82zw4EabddhS8TWHYALvbyf9fP2X1dYWdzOeK
9TYeB9UDr4Ysh5PfoVMkzd27F/zdCjz6YW03y3FRKXQsJ0sl89kfdizZBZv1JbCW
tcmUkV/3N8yJ8g9LVuLSKzjLr98NqKPUqSHEZ6X7doHiyd0eyityQjTTSMYvocsq
I0zCev9Cl9BiumWJc7/16AfRD6qbNBDCqhXWVwLEctBXail9FooBx0q8ivH5W7xv
0lPieu5585o/JluuCcQYXvkDAXXA+paZ1hNPNYoWOwm83qnIx2wg5PwzMMf5ugxU
fpINbUTNOjcvovoz/qDxqwmJIw3Q0qzEKxIv7esH8gkmvkuLqN/FS2nNIzOsIY1m
n6I3U3+qqX+w7MjTs5CUtKnpgA==
=22J7
-----END PGP PUBLIC KEY BLOCK-----
```

***

## After your report

We'll keep you in the loop as we triage, reproduce, and patch. If you'd like credit, we'll list you in the release notes for the fix. Bounty eligibility and amounts are decided case by case.

For previously published audit work, see the [Audits](/learn/audits) page.


# Bug Bounty Program

Megapot is committed to the security of our protocol and the safety of user funds. We invite security researchers to help identify vulnerabilities in our smart contracts through our bug bounty program.

{% hint style="info" %}
Review our [Security policy](/appendix/security) for PGP key, safe harbor terms, and general reporting guidelines.
{% endhint %}

***

## Program Overview

| Detail                 | Value                                          |
| ---------------------- | ---------------------------------------------- |
| **Maximum Reward**     | $50,000 USDC                                   |
| **Reward Calculation** | 10% of funds at risk, capped per severity tier |
| **Platform**           | Self-administered (submit via email)           |
| **Scope**              | Smart contracts deployed on Base               |

***

## Rewards by Severity

Rewards are based on the [Immunefi Vulnerability Severity Classification System v2.3](https://immunefi.com/severity-system/), which prioritizes the impact of successful exploits.

| Severity     | Impact                                                                    | Reward Range      |
| ------------ | ------------------------------------------------------------------------- | ----------------- |
| **Critical** | Direct theft of funds, permanent freezing of funds, protocol insolvency   | $25,000 – $50,000 |
| **High**     | Theft of unclaimed yield, temporary freezing of funds                     | $2,500 – $25,000  |
| **Medium**   | Unbounded gas consumption, contract unable to operate due to logic errors | $100 – $2,500     |

### Critical Severity Examples

* Direct theft of LP deposits or player funds
* Manipulation of drawing outcomes or winning numbers
* Unauthorized minting or transfer of ticket NFTs
* Exploiting the entropy provider to predict or influence randomness

### High Severity Examples

* Theft of unclaimed referral fees or winnings
* Temporary freezing of LP withdrawals beyond the normal settlement period
* Manipulation of share calculations to extract excess value

### Medium Severity Examples

* Unbounded loops or storage operations that cause non-purchase transactions to exceed block gas limits
* Logic errors that prevent contract functionality without fund loss
* Theoretical governance parameterizations that could lead to protocol degradation

### Low Severity Examples

* Minor calculation errors that don't result in fund loss
* UI/contract state inconsistencies

***

## In-Scope Assets

All smart contracts deployed on **Base** (Chain ID: 8453) are in scope:

| Contract                          | Address                                                                                                                 | Category |
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -------- |
| Jackpot                           | [`0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2`](https://basescan.org/address/0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2) | Core     |
| JackpotLPManager                  | [`0xE63E54DF82d894396B885CE498F828f2454d9dCf`](https://basescan.org/address/0xE63E54DF82d894396B885CE498F828f2454d9dCf) | Core     |
| JackpotTicketNFT                  | [`0x48FfE35AbB9f4780a4f1775C2Ce1c46185b366e4`](https://basescan.org/address/0x48FfE35AbB9f4780a4f1775C2Ce1c46185b366e4) | Core     |
| JackpotAutoSubscription           | [`0x02A58B725116BA687D9356Eafe0fA771d58a37ac`](https://basescan.org/address/0x02A58B725116BA687D9356Eafe0fA771d58a37ac) | Helper   |
| BatchPurchaseFacilitator          | [`0x01774B531591b286b9f02C6Bc02ab3fD9526Aa76`](https://basescan.org/address/0x01774B531591b286b9f02C6Bc02ab3fD9526Aa76) | Helper   |
| TicketAutoCompoundVault           | [`0x3E22Ea60A1206A4BfEefBCff04D5E9d0A2D9B3Fc`](https://basescan.org/address/0x3E22Ea60A1206A4BfEefBCff04D5E9d0A2D9B3Fc) | Helper   |
| JackpotRandomTicketBuyer          | [`0xb9560b43b91dE2c1DaF5dfbb76b2CFcDaFc13aBd`](https://basescan.org/address/0xb9560b43b91dE2c1DaF5dfbb76b2CFcDaFc13aBd) | Helper   |
| GuaranteedMinimumPayoutCalculator | [`0x97a22361b6208aC8cd9afaea09D20feC47046CBD`](https://basescan.org/address/0x97a22361b6208aC8cd9afaea09D20feC47046CBD) | Internal |
| ScaledEntropyProvider             | [`0x5D030DEC2e0d38935e662C0d2feD44B050c8Ae51`](https://basescan.org/address/0x5D030DEC2e0d38935e662C0d2feD44B050c8Ae51) | Internal |

***

## Out of Scope

The following are **not eligible** for rewards:

* **Previously reported issues**: Vulnerabilities already submitted or identified in prior audits ([Zellic](https://github.com/coordinationlabs/megapot-v2-audit-reports/tree/main/zellic), [Code4rena](https://github.com/coordinationlabs/megapot-v2-audit-reports/blob/main/code4rena/))
* **Third-party dependencies**: Issues in external contracts (Pyth Network, USDC, etc.) not deployed by Megapot
* **Frontend/web application**: Vulnerabilities in megapot.io website or API
* **Theoretical vulnerabilities**: Issues without a working proof of concept
* **Best practices**: Gas optimizations, code style, or informational findings
* **Known limitations**: Documented protocol mechanics (e.g., LP withdrawal timing, drawing locks)
* **Social engineering**: Phishing, social engineering, or physical attacks
* **Griefing and denial of service**: Attacks requiring excessive capital or transactions with no economic benefit to the attacker, including known griefing vectors documented in prior audits

***

## Submission Requirements

### Required Information

All submissions must include:

1. **Description**: Clear explanation of the vulnerability
2. **Impact assessment**: What can an attacker achieve? What funds are at risk?
3. **Proof of Concept**: Working exploit code or detailed reproduction steps
4. **Affected contracts**: Specific contract addresses and functions
5. **Suggested fix** (optional): Recommended remediation approach

### Submission Process

1. **Email**: Send your report to **<security@megapot.io>**
2. **Encryption**: Use our [PGP key](/appendix/security#pgp-key) for sensitive reports
3. **Subject line**: `[BUG BOUNTY] Brief description of vulnerability`
4. **Response time**: We will acknowledge receipt within 24 hours

### Report Format

```
## Summary
[One paragraph describing the vulnerability]

## Severity
[Critical / High / Medium / Low]

## Affected Contracts
- Contract name: [address]
- Function(s): [function names]

## Impact
[Detailed description of what an attacker can achieve]

## Proof of Concept
[Code, transaction sequence, or detailed steps to reproduce]

## Recommended Fix
[Optional: your suggested remediation]
```

***

## Disclosure Policy

### Coordinated Disclosure

We practice coordinated disclosure to protect users:

| Phase                  | Timeline                                      |
| ---------------------- | --------------------------------------------- |
| **Acknowledgment**     | Within 24 hours of submission                 |
| **Initial assessment** | Within 5 business days                        |
| **Fix development**    | Up to 90 days, depending on severity          |
| **Reward decision**    | Within 14 days of fix deployment              |
| **Public disclosure**  | After fix is deployed and users are protected |

### Confidentiality

* **Do not** disclose the vulnerability publicly until we confirm the fix is deployed
* **Do not** share details with third parties without our written consent
* Premature disclosure will result in forfeiture of the bounty and potential legal action

### Researcher Recognition

With your permission, we will publicly acknowledge your contribution:

* Listed in our security acknowledgments
* Optional: credited in the fix commit or security advisory

***

## Safe Harbor

Megapot commits to the following for good-faith security research:

### Legal Protection

We will not initiate legal action against researchers who:

* Act in good faith to avoid privacy violations, destruction of data, and service interruption
* Only interact with accounts you own or with explicit permission of the account holder
* Do not exploit vulnerabilities beyond what is necessary to demonstrate the issue
* Report vulnerabilities promptly and provide reasonable time for remediation
* Do not engage in extortion or threats

### Authorized Testing

Good-faith security research under this policy is considered **authorized conduct**. We will not pursue civil or criminal action, or support prosecution by others, for accidental, good-faith violations of this policy.

### Testing Guidelines

**Allowed:**

* Testing on local forks or testnets
* Interacting with your own accounts on mainnet
* Reading public contract state

**Not Allowed:**

* Testing on mainnet with other users' funds
* Any action that could harm real users or their funds
* Interfering with live drawings or settlements
* Denial of service attacks against production infrastructure

***

## Eligibility

To be eligible for a reward, you must:

* Not be a current or former employee, contractor, or auditor of Megapot or Coordination, Inc.
* Not have previously reported the same vulnerability
* Comply with all testing and disclosure guidelines
* Complete KYC verification before payout (required for rewards over $1,000)
* Provide a valid wallet address for USDC payment on Base

***

## Reward Determination

### Factors Affecting Rewards

Rewards are determined by the Megapot security team based on:

| Factor                | Impact on Reward                                                             |
| --------------------- | ---------------------------------------------------------------------------- |
| **Severity**          | Primary factor; see severity tiers above                                     |
| **Funds at risk**     | 10% of realistically exploitable funds, capped by tier                       |
| **Quality of report** | Clear PoC and detailed writeup may increase reward                           |
| **Novelty**           | First reporter receives full reward; duplicates receive partial or no reward |
| **Fix complexity**    | Complex fixes requiring protocol changes may warrant higher rewards          |

### Reward Process

1. **Validation**: We verify the vulnerability is real and in scope
2. **Severity assessment**: We classify the severity based on impact
3. **Fix development**: We develop and test a fix
4. **Reward calculation**: We determine the reward based on the factors above
5. **Payout**: Reward paid in USDC on Base within 14 days of fix deployment

### Disputes

If you disagree with our severity assessment or reward decision, you may request a review. Send your appeal to **<security@megapot.io>** with additional context. Our decision after review is final.

***

## Contact

| Method            | Details                                           |
| ----------------- | ------------------------------------------------- |
| **Email**         | <security@megapot.io>                             |
| **Response time** | 24 hours for initial acknowledgment               |
| **PGP key**       | See [Security policy](/appendix/security#pgp-key) |

For general support or non-security issues, contact <team@megapot.io>.


# Terms of Service

**Effective: January 02, 2026**

Welcome!

Megapot Inc. (“Megapot,” “we,” “us,” “our”) provides the Megapot onchain jackpot service and related services (described below) to you (“you” or “User”) through its website located at <http://www.megapot.io/> (collectively, the “Megapot Service”), subject to the following Terms of Service (as amended from time to time, the “Terms”). By signing up for an account on the Megapot Service or otherwise using or accessing the Megapot Service, you acknowledge that you have read and agree to these Terms.

The Privacy Policy and all such additional terms, guidelines, and rules as set forth on the Megapot Service are hereby incorporated by reference into these Terms and expressly agreed to and acknowledged by the User.

***PLEASE READ THESE TERMS CAREFULLY, AS THEY CONTAIN AN AGREEMENT TO ARBITRATE AND OTHER IMPORTANT INFORMATION REGARDING YOUR LEGAL RIGHTS, REMEDIES, AND OBLIGATIONS. THE AGREEMENT TO ARBITRATE REQUIRES (WITH LIMITED EXCEPTION) THAT YOU SUBMIT CLAIMS YOU HAVE AGAINST US TO BINDING AND FINAL ARBITRATION, AND FURTHER (1) YOU WILL ONLY BE PERMITTED TO PURSUE CLAIMS AGAINST MEGAPOT ON AN INDIVIDUAL BASIS, NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY CLASS OR REPRESENTATIVE ACTION OR PROCEEDING, (2) YOU WILL ONLY BE PERMITTED TO SEEK RELIEF (INCLUDING MONETARY, INJUNCTIVE, AND DECLARATORY RELIEF) ON AN INDIVIDUAL BASIS, AND (3) YOU MAY NOT BE ABLE TO HAVE ANY CLAIMS YOU HAVE AGAINST US RESOLVED BY A JURY OR IN A COURT OF LAW.***

We reserve the right, at our sole discretion, to change or modify portions of these Terms at any time. If we do this, we will post the changes on this page and will indicate at the top of this page the date these Terms were last revised. We will also notify you, either through the Megapot Service user interface, in an email notification or through other reasonable means. Any such changes will become effective no earlier than fourteen (14) days after they are posted, except that changes addressing new functions of the Megapot Service will be effective immediately. Your continued use of the Megapot Service after the date any such changes become effective constitutes your acceptance of the new Terms of Service.

**1) What is the Megapot Service?**

**a) Megapot Explained**

The Megapot Service allows Users to participate in onchain jackpots. We operate an experience that enables liquidity providers (“LPs”) to fund each initial jackpot. Users who pay for chances to try their odds in the jackpot (“Players”) pay fees that accrue to the position and grow the jackpot. We refer to these jackpots as a “Jackpot”. LPs and Players are both Users. For further information regarding the Megapot Service and our fee and transactions structures, please visit the help page located at <http://docs.megapot.io/> (the “Megapot Help Page”).

**b) No Securities.**

The digital assets about which information may be provided on the Megapot Service and any information provided in connection with the Megapot Service provided to you are not viewed by the issuer or sponsor of any such digital assets, or those buying or selling the digital asset, as securities under U.S. laws or relevant applicable laws. As a result it is unlikely that fulsome disclosures from the issuer or sponsor, or any executive officer associated with the digital asset or related protocol have been provided, and others may have better or more information than the information made available to you via the Megapot Service or any information provided in connection with the Megapot Service provided to you, or to which you may independently have access.

**c) Prohibited Countries.**

The Megapot Service is not available globally, and you may only use the Megapot Service if you are not a resident of or located in a Prohibited Country. Megapot does not provide the Megapot Service (nor do we accept registration of Users) in the following countries: Afghanistan, Australia, Austria, Belarus, Canada, China (Mainland), Comoros, Cuba, France, Germany, Hong Kong (China), Indonesia, Iran, Myanmar, Netherlands, North Korea, Russia, Singapore, Spain, Sudan, Syria, Ukraine, United Kingdom, United States and Venezuela (each a “Prohibited Country”, and altogether referred to as “Prohibited Countries”). The Prohibited Countries list is non-exclusive and is subject to change, at any time and from time to time, by Megapot in its absolute sole discretion may decide, taking into account legal and compliance considerations. By using the Megapot Service, you accept and acknowledge that you are accessing the Service from a jurisdiction where it is lawful to do so. You further agree to not use the Megapot Service while located in any jurisdiction that prohibits online jackpots, or otherwise prohibits the Megapot Service.

You understand and acknowledge that if it is determined that you have given false representations of your location or place of residence, or that you are using prohibited techniques to evade geographic restrictions (such as the use of IP masking), we reserve the right to take any appropriate actions in compliance with applicable laws and regulations, including termination of your account immediately and invalidating your contributions as an LP or purchased tickets as a Player. You undertake to inform Megapot at the earliest possible opportunity if you have become resident in or are located in any of the foregoing Prohibited Countries while you are using the Megapot Service.

**2) How do I use Megapot?**

**a) Connecting your Wallet.**

In order to use the Megapot Service, you must connect your account to your digital wallet supported on or other wallet extensions or gateways as allowed on the Megapot Service (“Digital Wallet”). Such Digital Wallets allow you to purchase, store, and engage in transactions using the applicable supported cryptocurrency and/or supported fiat currency.

**b) Your Registration Obligations.**

You may be required to register with the Megapot Service by creating a user name and password, or by providing information about yourself (e.g., name and email address), in order to access and use certain features on the Megapot Service. You may also choose to register with the Megapot Service by linking third-party services, included embedded wallets to the Megapot Service and granting all necessary permissions for the Megapot Service to access data and information necessary to link the Megapot Service to your third-party service account. If you choose to register for the Megapot Service, you agree to provide and maintain true, accurate, current, and complete information about yourself as prompted by our registration form. Registration data and certain other information about you are governed by our Privacy Policy. You must be at least 18 years old to register for an account. You are responsible for anything that occurs when anyone is signed in to your account, as well as the security of the account.

**c) Member Account, Password, and Security.**

You are responsible for maintaining the confidentiality of your account and password, if any, and are fully responsible for any and all activities that occur under your password or account. You agree to (a) immediately notify Megapot of any unauthorized use of your password or account or any other breach of security, and (b) ensure that you exit from your account at the end of each session when accessing the Megapot Service. We will not be liable for any loss or damage arising from your failure to comply with this Section.

**d) Modifications to the Megapot Service.**

We reserve the right to modify or discontinue, temporarily or permanently, the Megapot Service (or any part thereof) with or without notice. You agree that we will not be liable to you or to any third party for any modification, suspension, or discontinuance of the Megapot Service.

**3) What are the rules for using Megapot?**

When using the Megapot Service, you will not directly or indirectly:

* engage in deceptive or manipulative or illegal activities in any way;
* use the Megapot Service as a User while located in a Prohibited Country;
* conceal or manipulate your location so as to evade the Prohibited Country restrictions set forth in section 1(c), through the use of VPN, proxy, or similar services;
* email, upload, or otherwise distribute any content, that (i) infringes any intellectual property or other proprietary rights of any party; (ii) you do not have a right to do so under any law or under contractual or fiduciary relationships; (iii) contains software viruses or any other computer code, files or programs designed to interrupt, destroy or limit the functionality of any computer software or hardware or telecommunications equipment; (iv) poses or creates a privacy or security risk to any person or entity; (v) constitutes unsolicited or unauthorized advertising, promotional materials, commercial activities and/or sales, “junk mail,” “spam,” “chain letters,” “pyramid schemes,” or any other form of solicitation; (vi) is unlawful, harmful, threatening, abusive, harassing, tortious, excessively violent, defamatory, vulgar, obscene, pornographic, libelous, invasive of another’s privacy, hateful racially, ethnically or otherwise objectionable (including any sexual depictions of minors); or (vii) in the sole judgment of Megapot, is objectionable or which restricts or inhibits any other person from using or enjoying the Megapot Service, or which may expose Megapot or its Users to any harm or liability of any type;
* interfere with or disrupt the Megapot Service or servers or networks connected to the Megapot Service in any manner that could negatively affect or inhibit other Users from fully enjoying the Megapot Service or that could damage, disable, overburden or impair the functioning of the Megapot Service in any manner;
* disobey any requirements, procedures, policies or regulations of networks connected to the Megapot Service;
* violate any applicable local, state, national or international law, or any regulations having the force of law, including but not limited to the U.S. Department of Treasury’s Office of Foreign Assets Control (“OFAC”), or which would involve proceeds of any unlawful activity;
* impersonate any person or entity, or falsely state or otherwise misrepresent your affiliation with a person or entity;
* solicit personal information from anyone under the age of 18;
* harvest or collect email addresses or other contact information of other Users from the Megapot Service by electronic or other means for the purposes of sending unsolicited emails or other unsolicited communications;
* advertise or offer to sell or buy any goods or services for any business purpose that is not specifically authorized;
* further or promote any criminal activity or enterprise or provide instructional information about illegal activities, including for the purpose of concealing economic activity, laundering money, or financing terrorism;
* obtain or attempt to access or otherwise obtain any materials or information through any means not intentionally made available or provided for through the Megapot Service;
* use any robot, spider, site search/retrieval application, or other device to retrieve or index any portion of the Megapot Service or the content posted on the Megapot Service, or to collect information about its Users for any unauthorized purpose;
* create user accounts by automated means or under false or fraudulent pretenses;
* access or use the Megapot Service to carry out financial activities subject to registration or licensing, including but not limited to creating, listing, or buying securities, commodities, options, real estate, or debt instruments;
* access or use the Megapot Service to participate in fundraising for a business, protocol, or platform, provided that the foregoing will not restrict the legal use of any proceeds resulting from your permitted use of the Platform; or
* access or use the Megapot Service for the purpose of creating a product or service that is competitive with any of our products or services.

**4) Megapot Service Content, Software, and Trademarks**

You acknowledge and agree that the Megapot Service may contain content or features (“Megapot Service Content”) that are protected by copyright, patent, trademark, trade secret or other proprietary rights and laws. Except as expressly authorized by Megapot, you agree not to modify, copy, frame, scrape, rent, lease, loan, sell, distribute or create derivative works based on the Megapot Service or the Megapot Service Content, in whole or in part. In connection with your use of the Megapot Service you will not engage in or use any data mining, robots, scraping or similar data gathering or extraction methods. If you are blocked by Megapot from accessing the Megapot Service (including by blocking your IP address), you agree not to implement any measures to circumvent such blocking (e.g., by masking your IP address or using a proxy IP address). Any use of the Megapot Service or the Megapot Service Content other than as specifically authorized herein is strictly prohibited. The technology and software underlying the Megapot Service or distributed in connection therewith are the property of Megapot, our Affiliates and our partners (the “Software”). You agree not to copy, modify, create a derivative work of, reverse engineer, reverse assemble or otherwise attempt to discover any source code, sell, assign, sublicense, or otherwise transfer any right in the Software. Any rights not expressly granted herein are reserved by Megapot.

The Megapot and Megapot Service names and logos are trademarks and service marks of Megapot Inc. (collectively the “Megapot Trademarks”). Other company, product, and service names and logos used and displayed via the Megapot Service may be trademarks or service marks of their respective owners who may or may not endorse or be affiliated with or connected to Megapot. Nothing in these Terms or the Megapot Service should be construed as granting, by implication, estoppel, or otherwise, any license or right to use any of Megapot Trademarks displayed on the Megapot Service, without our prior written permission in each instance. All goodwill generated from the use of Megapot Trademarks will inure to our exclusive benefit.

**5) What transactions does Megapot facilitate?**

**a) Fees.** Where a User is a Player, we charge fees for some or part of the services we make available to you on the Megapot Service, including fees charged to participate in the Jackpots on the Megapot Service. You can find more information about fees associated with the Megapot Service at the Megapot Help Page located at <http://docs.megapot.io/>. You acknowledge and agree that Megapot may change its fees. It is your responsibility to review the Help Page to understand what rules apply at the time of any particular Jackpot.

**b) Liquidity Providers.** Where a User is an LP, we do not charge fees and instead enable the LP to provide liquidity for the current Jackpot. You can find more information about how LPs fund Jackpots and the associated risks at the Megapot Help Page located at <http://docs.megapot.io/>. You acknowledge and agree that Megapot may change its transaction structures. It is your responsibility to review the Help Page to understand what rules apply at the time of any particular Jackpot.

**c) Taxes.** Users are responsible to pay any and all sales, use, value-added and other taxes, duties, and assessments now or hereafter claimed or imposed by any governmental authority, associated with **your use of the Megapot Service.**

**6) Other Legal Terms.**

**a) Indemnity and Release.**

To the extent permitted under applicable law, you agree to release, indemnify and hold Megapot and its Affiliates and their officers, employees, directors and agents (collectively, “Indemnitees”) harmless from any from any and all losses, damages, expenses, including reasonable attorneys’ fees, rights, claims, actions of any kind and injury (including death) arising out of or relating to your use of the Megapot Service (including but not limited to your conduct participating in any Jackpots or other activities on the Megapot Service), your connection to the Megapot Service, your violation of these Terms or your violation of any rights of another. You further agree that Megapot shall have control of the defense or settlement of any third party claims. To the extent permitted under applicable law, you hereby waive any statute or doctrine that would operate to limit any release with respect to unknown claims.

**b) Disclaimer of Warranties.**

Use of the Megapot Service involves operations that utilize experimental blockchain technologies. Users acknowledge and agree that such technologies are experimental, speculative, and inherently risky and may be subject to bugs, malfunctions, timing errors, hacking and theft, or changes to the protocol rules of the applicable blockchain (i.e., “forks”), which can adversely affect a User’s experience and may expose you to a risk of total loss, forfeiture of your digital or fiat currency. YOUR USE OF THE MEGAPOT SERVICE IS AT YOUR SOLE RISK. THE MEGAPOT SERVICE IS PROVIDED ON AN “AS IS” AND “AS AVAILABLE” BASIS. YOU AGREE THAT MEGAPOT AND ALL INDEMNITEES WILL HAVE NO RESPONSIBILITY OR LIABILITY TO YOU IF YOU ARE UNABLE TO LOCATE OR USE YOUR CREDENTIALS. MEGAPOT EXPRESSLY DISCLAIMS ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT.

MEGAPOT MAKES NO WARRANTY THAT (I) THE MEGAPOT SERVICE WILL MEET YOUR REQUIREMENTS, (II) THE MEGAPOT SERVICE WILL BE UNINTERRUPTED, TIMELY, SECURE, OR ERROR-FREE, (III) THE RESULTS THAT MAY BE OBTAINED FROM THE USE OF THE MEGAPOT SERVICE WILL BE ACCURATE OR RELIABLE, OR (IV) THE QUALITY OF ANY PRODUCTS, PLATFORMS, INFORMATION, OR OTHER MATERIAL PURCHASED OR OBTAINED BY YOU THROUGH THE MEGAPOT SERVICE WILL MEET YOUR EXPECTATIONS.

**c) Limitation of Liability.**

YOU EXPRESSLY UNDERSTAND AND AGREE THAT MEGAPOT WILL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY DAMAGES, OR DAMAGES FOR LOSS OF PROFITS INCLUDING BUT NOT LIMITED TO, DAMAGES FOR LOSS OF GOODWILL, USE, DATA OR OTHER INTANGIBLE LOSSES (EVEN IF MEGAPOT HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES), WHETHER BASED ON CONTRACT, TORT, NEGLIGENCE, STRICT LIABILITY OR OTHERWISE, RESULTING FROM: (I) THE USE OR THE INABILITY TO USE THE MEGAPOT SERVICE; (II) THE COST OF PROCUREMENT OF SUBSTITUTE GOODS AND PLATFORMS RESULTING FROM ANY GOODS, DATA, INFORMATION OR PLATFORMS OBTAINED OR MESSAGES RECEIVED; (III) UNAUTHORIZED ACCESS TO OR ALTERATION OF YOUR TRANSMISSIONS OR DATA; (IV) STATEMENTS OR CONDUCT OF ANY THIRD PARTY ON THE MEGAPOT SERVICE; OR (V) ANY OTHER MATTER RELATING TO THE MEGAPOT SERVICE. IN NO EVENT WILL MEGAPOT’S TOTAL LIABILITY TO YOU FOR ALL DAMAGES, LOSSES OR CAUSES OF ACTION EXCEED THE AMOUNT YOU HAVE PAID MEGAPOT IN THE LAST SIX (6) MONTHS, OR, IF GREATER, ONE HUNDRED DOLLARS ($100).

**d) Beta Services.**

Certain features on the Megapot Service may be offered while still in “beta” form (“Beta Services”). Megapot will utilize best efforts to identify the Beta Services by labeling them as such on the Megapot Service. By accepting these Terms or using the Beta Services, you understand and acknowledge that the Beta Services are being provided as a “beta” version and made available on an “as is” or “as available” basis. The Beta Services may contain bugs, errors, and other problems. YOU ASSUME ALL RISKS AND ALL COSTS ASSOCIATED WITH YOUR USE OF THE BETA SERVICES, INCLUDING, WITHOUT LIMITATION, ANY INTERNET ACCESS FEES, BACK-UP EXPENSES, COSTS INCURRED FOR THE USE OF YOUR DEVICE AND PERIPHERALS, AND ANY DAMAGE TO ANY EQUIPMENT, SOFTWARE, INFORMATION OR DATA. In addition, we are not obligated to provide any maintenance, technical, or other support for the Beta Services.

SOME JURISDICTIONS DO NOT ALLOW THE DISCLAIMER OR EXCLUSION OF CERTAIN WARRANTIES OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES. ACCORDINGLY, SOME OF THE ABOVE LIMITATIONS SET FORTH ABOVE MAY NOT APPLY TO YOU OR BE ENFORCEABLE WITH RESPECT TO YOU. IF YOU ARE DISSATISFIED WITH ANY PORTION OF THE MEGAPOT SERVICE OR WITH THESE TERMS OF PLATFORM, YOUR SOLE AND EXCLUSIVE REMEDY IS TO DISCONTINUE USE OF THE MEGAPOT SERVICE.

**7) Here are our termination rights.**

You agree that Megapot, in its sole discretion, may suspend or terminate your account (or any part thereof) or use of the Megapot Service for any reason, including, without limitation, for lack of use or if Megapot believes that you have violated or acted inconsistently with the letter or spirit of these Terms. Any suspected fraudulent, abusive or illegal activity that may be grounds for termination of your use of the Megapot Service may be referred to appropriate law enforcement authorities. Megapot may also in its sole discretion and at any time discontinue providing the Megapot Service, or any part thereof, with or without notice. You agree that any termination of your access to the Megapot Service under any provision of these Terms may be effected without prior notice, and acknowledge and agree that Megapot may immediately deactivate or delete your account and all related information and files in your account and/or bar any further access to such files or the Megapot Service. Further, you agree that Megapot will not be liable to you or any third party for any termination of your access to the Megapot Service.

**8) We do not get involved with User disputes.**

You agree that you are solely responsible for your interactions with any other Users in connection with the Megapot Service and Megapot will have no liability or responsibility with respect thereto.

**9) General Legal Terms.**

These Terms constitute the entire agreement between you and Megapot with respect to your use of the Megapot Service and govern your use of the Megapot Service, superseding any prior agreements between you and Megapot with respect to the Megapot Service. You also may be subject to additional terms and conditions that may apply when you use other Megapot, Affiliate, or third party services, third party content or third party software. These Terms will be governed by the laws of the State of California without regard to its conflict of law provisions. With respect to any disputes or claims not subject to arbitration, as set forth above, you and Megapot agree to submit to the personal and exclusive jurisdiction of the state and federal courts located within San Francisco County, California. The failure of Megapot to exercise or enforce any right or provision of these Terms will not constitute a waiver of such right or provision. If any provision of these Terms is found by a court of competent jurisdiction to be invalid, the parties nevertheless agree that the court should endeavor to give effect to the parties’ intentions as reflected in the provision, and the other provisions of these Terms remain in full force and effect. You agree that regardless of any statute or law to the contrary, any claim or cause of action arising out of or related to use of the Megapot Service or these Terms must be filed within one (1) year after such claim or cause of action arose or be forever barred. A printed version of this agreement and of any notice given in electronic form will be admissible in judicial or administrative proceedings based upon or relating to this agreement to the same extent and subject to the same conditions as other business documents and records originally generated and maintained in printed form. You may not assign the Terms without the prior written consent of Megapot, but Megapot may assign or transfer these Terms, in whole or in part, without restriction. The section titles in these Terms are for convenience only and have no legal or contractual effect. Notices to you may be made via either email or regular mail. Megapot may also provide notices to you of changes to these Terms or other matters by displaying notices or links to notices generally on the Megapot Service.

**10) Your Privacy.**

At Megapot, we respect the privacy of our Users. For details please see our Privacy Policy, which forms a part of these Terms and informs Users of our data collection practices. By using the Megapot Service, you consent to our collection and use of personal data as outlined therein.

**11) Dispute Resolution By Binding Arbitration.**

**PLEASE READ THIS SECTION CAREFULLY AS IT AFFECTS YOUR RIGHTS.**

* **Agreement to Arbitrate.** This Dispute Resolution by Binding Arbitration section is referred to in these Terms as the “Arbitration Agreement.” You agree that any and all disputes or claims that have arisen or may arise between you and Megapot, whether arising out of or relating to these Terms (including any alleged breach thereof), the Megapot Service, any advertising, any aspect of the relationship or transactions between us, shall be resolved exclusively through final and binding arbitration, rather than a court, in accordance with the terms of this Arbitration Agreement, except that you may assert individual claims in small claims court, if your claims qualify. Further, this Arbitration Agreement does not preclude you from bringing issues to the attention of federal, state, or local agencies, and such agencies can, if the law allows, seek relief against us on your behalf. You agree that, by entering into these Terms, you and Megapot are each waiving the right to a trial by jury or to participate in a class action. Your rights will be determined by a neutral arbitrator, not a judge or jury. The Federal Arbitration Act governs the interpretation and enforcement of this Arbitration Agreement.
* **Prohibition of Class and Representative Actions and Non-Individualized Relief. \_YOU AND MEGAPOT AGREE THAT EACH OF US MAY BRING CLAIMS AGAINST THE OTHER ONLY ON AN INDIVIDUAL BASIS AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE ACTION OR PROCEEDING. UNLESS BOTH YOU AND MEGAPOT AGREE OTHERWISE, THE ARBITRATOR MAY NOT CONSOLIDATE OR JOIN MORE THAN ONE PERSON’S OR PARTY’S CLAIMS AND MAY NOT OTHERWISE PRESIDE OVER ANY FORM OF A CONSOLIDATED, REPRESENTATIVE, OR CLASS PROCEEDING. ALSO, THE ARBITRATOR MAY AWARD RELIEF (INCLUDING MONETARY, INJUNCTIVE, AND DECLARATORY RELIEF) ONLY IN FAVOR OF THE INDIVIDUAL PARTY SEEKING RELIEF AND ONLY TO THE EXTENT NECESSARY TO PROVIDE RELIEF NECESSITATED BY THAT PARTY’S INDIVIDUAL CLAIM(S), EXCEPT THAT YOU MAY PURSUE A CLAIM FOR AND THE ARBITRATOR MAY AWARD PUBLIC INJUNCTIVE RELIEF UNDER APPLICABLE LAW TO THE EXTENT REQUIRED FOR THE ENFORCEABILITY OF THIS PROVISION.**\_
* **Pre-Arbitration Dispute Resolution.** Megapot is always interested in resolving disputes amicably and efficiently, and most customer concerns can be resolved quickly and to the customer’s satisfaction by emailing customer support at <team@megapot.io>. If such efforts prove unsuccessful, a party who intends to seek arbitration must first send to the other, by certified mail, a written Notice of Dispute (“Notice”). The Notice to Megapot should be sent to 2261 Market Street STE 10895 San Francisco, CA 94114 (“Notice Address”). The Notice must (i) describe the nature and basis of the claim or dispute and (ii) set forth the specific relief sought. If Megapot and you do not resolve the claim within sixty (60) calendar days after the Notice is received, you or Megapot may commence an arbitration proceeding. During the arbitration, the amount of any settlement offer made by Megapot or you shall not be disclosed to the arbitrator until after the arbitrator determines the amount, if any, to which you or Megapot is entitled.
* **Arbitration Procedures.** Arbitration will be conducted by a neutral arbitrator in accordance with the American Arbitration Association’s (“AAA”) rules and procedures, including the AAA’s Consumer Arbitration Rules (collectively, the “AAA Rules”), as modified by this Arbitration Agreement. For information on the AAA, please visit its website, <http://www.adr.org>. Information about the AAA Rules and fees for consumer disputes can be found at the AAA’s consumer arbitration page, <http://www.adr.org/> as may be updated from time to time. If there is any inconsistency between any term of the AAA Rules and any term of this Arbitration Agreement, the applicable terms of this Arbitration Agreement will control unless the arbitrator determines that the application of the inconsistent Arbitration Agreement terms would not result in a fundamentally fair arbitration. The arbitrator must also follow the provisions of these Terms as a court would. All issues are for the arbitrator to decide, including, but not limited to, issues relating to the scope, enforceability, and arbitrability of this Arbitration Agreement. Although arbitration proceedings are usually simpler and more streamlined than trials and other judicial proceedings, the arbitrator can award the same damages and relief on an individual basis that a court can award to an individual under these Terms and applicable law. Decisions by the arbitrator are enforceable in court and may be overturned by a court only for very limited reasons. Unless Megapot and you agree otherwise, any arbitration hearings will take place in a reasonably convenient location for both parties with due consideration of their ability to travel and other pertinent circumstances. If the parties are unable to agree on a location, the determination shall be made by AAA. If your claim is for $10,000 or less, Megapot agrees that you may choose whether the arbitration will be conducted solely on the basis of documents submitted to the arbitrator, through a telephonic hearing, or by an in-person hearing as established by the AAA Rules. If your claim exceeds $10,000, the right to a hearing will be determined by the AAA Rules. Regardless of the manner in which the arbitration is conducted, the arbitrator shall issue a reasoned written decision sufficient to explain the essential findings and conclusions on which the award is based.
* **Costs of Arbitration.** Payment of all filing, administration, and arbitrator fees (collectively, the “Arbitration Fees”) will be governed by the AAA Rules, unless otherwise provided in this Arbitration Agreement. If the value of the relief sought is $75,000 or less, at your request, Megapot will pay all Arbitration Fees. If the value of relief sought is more than $75,000 and you are able to demonstrate to the arbitrator that you are economically unable to pay your portion of the Arbitration Fees or if the arbitrator otherwise determines for any reason that you should not be required to pay your portion of the Arbitration Fees, Megapot will pay your portion of such fees. In addition, if you demonstrate to the arbitrator that the costs of arbitration will be prohibitive as compared to the costs of litigation, Megapot will pay as much of the Arbitration Fees as the arbitrator deems necessary to prevent the arbitration from being cost-prohibitive. Any payment of attorneys’ fees will be governed by the AAA Rules.
* **Confidentiality.** All aspects of the arbitration proceeding, and any ruling, decision, or award by the arbitrator, will be strictly confidential for the benefit of all parties.
* **Severability.** If a court or the arbitrator decides that any term or provision of this Arbitration Agreement (other than the subsection (b) titled “Prohibition of Class and Representative Actions and Non-Individualized Relief” above) is invalid or unenforceable, the parties agree to replace such term or provision with a term or provision that is valid and enforceable and that comes closest to expressing the intention of the invalid or unenforceable term or provision, and this Arbitration Agreement shall be enforceable as so modified. If a court or the arbitrator decides that any of the provisions of subsection (b) above titled “Prohibition of Class and Representative Actions and Non-Individualized Relief” are invalid or unenforceable, then the entirety of this Arbitration Agreement shall be null and void, unless such provisions are deemed to be invalid or unenforceable solely with respect to claims for public injunctive relief. The remainder of these Terms will continue to apply.
* **Future Changes to Arbitration Agreement.** Notwithstanding any provision in these Terms to the contrary, Megapot agrees that if it makes any future change to this Arbitration Agreement (other than a change to the Notice Address) while you are a User of the Megapot Service, you may reject any such change by sending Megapot written notice within thirty (30) calendar days of the change to the Notice Address provided above. By rejecting any future change, you are agreeing that you will arbitrate any dispute between us in accordance with the language of this Arbitration Agreement as of the date you first accepted these Terms (or accepted any subsequent changes to these Terms).


# Privacy Policy

**Last Updated: February 11, 2026**

This Privacy Policy describes the privacy practices of Megapot Inc. (“Megapot,” “we,” “us,” “our”) and how we handle personal information that we collect from you (“you” or “User”) in connection with our Megapot onchain jackpot service, as well as through our website located at <http://www.megapot.io/> and any other website or service that we own or control and that links to this Privacy Policy (collectively, the “Service” or “Services”). The Service applies to both liquidity providers (“LPs”), who fund jackpots, and players who pay to try to win jackpots (“Players”). LPs and Players are both Users for purposes of this Privacy Policy.

This Privacy Policy explains what personal information we collect, how we use, store, and disclose that information, and your choices concerning our information practices. Please review this Privacy Policy carefully before using the Service or submitting any personal information to Megapot and contact us if you have any questions.

**1. Your Acceptance of This Privacy Policy**

**Please read this policy carefully to understand our policies and practices for collecting, using, storing, and disclosing your personal information. If you do not agree with our policies and practices, do not use our Services. By accessing or using our Services, you indicate that you understand, accept, and consent to the practices described in this Privacy Policy. We may change this Privacy Policy from time to time (see Changes to the Privacy Policy). We recommend you check this Privacy Policy periodically for updates as your continued use of our Services after we make changes indicates that you accept and consent to those changes.**

**2. Blockchain Data and Transparency**

Because Megapot operates on blockchain technology, certain information related to your transactions, including your digital wallet address and transaction details, will be recorded on a public, immutable blockchain ledger. This information cannot be altered or deleted once recorded. As a result, you should be aware that:

* Information stored on the blockchain is publicly accessible and may be viewed by anyone.
* We cannot delete or modify information recorded on the blockchain.
* You are responsible for managing your digital wallet and the privacy of your wallet address.
* The nature of blockchain technology may limit our ability to fully comply with certain data deletion requests under data protection laws.

**3. Personal Information Collection**

Personal Information You Provide. We may collect the following categories of information from you, depending on how you interact with our Services and whether you connect to our Services via an embedded digital wallet or a third-party cryptocurrency wallet:

* Identification and Account Information.  We collect your username, email address, digital wallet address, and any other information you provide on or through the Services.
* Communications. We may collect information from you when you contact us with questions, feedback, or otherwise correspond with us.
* ​​​​Marketing Information. We may collect information such as your preferences for receiving communications about our Services, and details about how you engage with our communications, if you provided us an email address.
* Other Information. We may collect other information not specifically listed here, which we will use as described in this Privacy Policy or as otherwise disclosed at the time of collection.

Personal Information We Collect Automatically. We and our service providers may automatically log information about you or your mobile device, and your interactions over time with our Services, our communications and our other online services, such as:

* Device Information. Such as your mobile device’s operating system type and version, manufacturer and model, browser type, screen resolution, device type (e.g., phone, tablet), IP address, unique identifiers, language settings, and general location information such as country.
* Usage Information. Such as pages or screens you viewed, how long you spent on a page or screen, browsing history, navigation paths between pages or screens, information about your activity on a page or screen, access times, duration of access, and whether you have opened our marketing emails or clicked links within them.

We may use the following tools for automatic data collection:

* Cookies, which are text files stored on your device to uniquely identify your browser or to store information or settings in the browser to help you navigate between pages efficiently, remember your preferences, enable functionality, and help us understand user activity and patterns. For example, we use Google Analytics, a web analytics service provided by Google, Inc. (“Google”). Google Analytics uses cookies to help us analyze how users use our Service and enhance our user experience. For more information on how Google uses this data, go to <https://policies.google.com/technologies/partner-sites>. We also use Amplitude analytics services, provided by Amplitude, Inc. This tool collects technical information, such as the type of your device. In addition, Amplitude tracks location data (e.g. country) and internal data (e.g. language, server upload time, session ID) that occur when using our Services. Amplitude helps us understand how you use our Services so we can improve your user experience. For more information about Amplitude’s privacy practices, click [here](https://amplitude.com/privacy).
* Local storage technologies, like HTML5, that provide cookie-equivalent functionality but can store larger amounts of data, including on your device outside of your browser in connection with specific applications.
* Web beacons, also known as pixel tags or clear GIFs, which are used to demonstrate that a webpage or email was accessed or opened, or that certain content was viewed or clicked.

For more information on your choices regarding our use of these technologies, please see the section titled “Online Tracking Opt-out” below.

Personal Information We Obtain From Other Sources:

* Social Media Information. We may maintain pages on social media platforms, such as Facebook, Twitter and other third-party platforms. When you visit or interact with our pages on those platforms, the platform provider’s privacy policy will apply to your interactions and their collection, use and processing of your personal information. You or the platforms may provide us with information through the platform, and we will treat such information in accordance with this Privacy Policy.
* Personal Information We Collect from Publicly Available Sources. We may collect identification information about you from publicly available blockchain networks, such as the Base blockchain and other blockchains.
* Third-party Login Information. When you link, connect, or log in to our Services with a third-party service (e.g., Google, Discord, Twitter) or a third-party software cryptocurrency wallet, you may direct the service to send us information controlled by that service or as authorized by you via your privacy settings on the third-party service.
* Other Sources. We may obtain personal information (e.g., demographic information) from other third parties, such as marketing partners, and data providers.

Legal Basis for Processing Personal Data.

We process your personal information based on one or more of the following legal grounds, as applicable: your consent, performance of a contract with you, compliance with legal obligations, protection of your vital interests or those of another person, and our legitimate interests, provided such interests are not overridden by your rights and freedoms.

**4. Personal Information Use**

We use your personal information for the following purposes:

To Provide, Operate and Administer the Services, including to enable you to access our Services through third-party providers, to establish and maintain your user account, and to otherwise operate, maintain, and provide you with our Services.

To Communicate With You About the Services. We will use your personal information to respond to your requests, questions and feedback, and communicate with you about our Services, including by sending announcements, updates, security alerts and support and administrative messages.

To Improve, Monitor, Personalize Our Services, including by understanding your needs and interests, and personalizing your experience with the Services and our communications.

For Research and Development. We may use personal information for research and development purposes, including to analyze and improve the Services and our business. As part of these activities, we may create or use aggregated, de-identified, or anonymized data from personal information we collect. We may use this aggregated, de-identified, or other anonymized data and share it with third parties for our lawful business purposes, including to analyze and improve the Services.

For Direct Marketing. If you provided us an email address for use with an embedded digital wallet to connect to our Services, we may use your email address to send you marketing communications, including notifying you of special promotions, offers and events via email and other means. You may opt out of our marketing emails as described in the “Your Privacy Choices” section below.

For Compliance and Protection. We may use your personal information to:

* Comply with applicable laws, lawful requests, and legal process, such as to respond to subpoenas or requests from government authorities.
* Comply with regulatory reporting obligations required by the Anjouan Gaming Authority
* Protect our, your or others’ rights, privacy, safety or property (including by making and defending legal claims).
* Audit our internal processes for compliance with legal and contractual requirements and internal policies.
* Enforce the terms and conditions that govern our Services.
* Prevent, identify, investigate and deter fraudulent, harmful, unauthorized, unethical or illegal activity, including cyberattacks and identity theft.

We generally only use your personal information to perform our contractual obligations to you, or where it is necessary for our commercial interests, your interests or the interests of a third party and we have checked that this is not unfair to you. Where required by law, we will seek your consent to process your personal information. Where we seek your consent, you may withdraw your consent at any time.

We do not engage in automated decision-making or profiling that produces legal effects or similarly significant effects concerning you.

**5. Personal Information Disclosure**

Our Disclosures: We may disclose your personal information in the following ways:

* Service Providers. We may disclose your personal information to third party companies and individuals that provide services on our behalf or help us operate our Services (such as wallet providers, hosting, information technology, customer support, email delivery, KYC/AML providers, and website analytics services).
* Professional Advisors. We may disclose your personal information to professional advisors, such as lawyers, auditors, bankers, and insurers, where necessary in the course of the professional services that they render to us.
* Authorities and others. We may disclose your personal information to law enforcement, government authorities, and private parties, as we believe in good faith to be necessary or appropriate for the compliance and protection purposes described above.
* Business transferees. We may disclose your personal information to acquirers and other relevant participants in business transactions (or negotiations for such transactions) involving a corporate divestiture, merger, consolidation, acquisition, reorganization, sale or other disposition of all or any portion of the business or assets of, or equity interests in, our business (including, in connection with a bankruptcy or similar proceedings).
* With your instruction or permission. We may disclose your personal information to a relevant third party, where you give us permission to do so in the course of your relationship with us from time to time.

Your Disclosures: Your transactions through the Service, including any post that you create, will be recorded on the blockchain and associated with your digital wallet ID. Due to the nature of blockchain technologies, you will not be able to delete information stored on the blockchain or control who has access to it.

We may transfer your personal information to recipients located in countries outside your home country and/or the European Economic Area (“third countries”). Such transfers will only occur where we have ensured appropriate safeguards are in place to protect your personal data in accordance with applicable laws. We will take all reasonable steps to ensure that your personal information receives an equivalent level of protection as required under applicable data protection laws. You may contact us at any time to request further information about the specific safeguards we have implemented for transfers of your personal information to third countries.

**6.Your Privacy Choices**

Opt Out of Marketing Communications. You may opt out of marketing-related emails by following the opt-out or unsubscribe instructions at the bottom of the email. You may continue to receive Service-related and other non-marketing emails.

Personal Information Requests. Depending on the nature of your interactions with our Services and where required by applicable law, you may request the following in relation to your personal information:

* Access, to a copy of the personal information that we have collected about you. Where applicable, you can also ask us for portability of this personal information (i.e. to provide personal information in a portable, machine-readable, readily usable format to you or another third party you designate).
* Correction, of personal information that is inaccurate or out of date.
* Deletion, of personal information that we no longer need to provide our Services or for other lawful purposes.
* Additional rights, such as to object to the processing of your personal information, request that we restrict our use of your personal information, and where applicable, you may withdraw your consent to our processing of your personal information. This won’t affect anything we have used your personal information for before you withdraw your consent.

To make a request, please contact us as provided in the “Contact Us” section below. We may ask for specific information from you to help us confirm your identity. In some instances, your choices may be limited, such as where fulfilling your request would impair the rights of others, our ability to provide a service you have requested, or our ability to comply with our legal obligations and enforce our legal rights. Please note that, due to the nature of blockchain technology, we will not be able to delete information stored on the blockchain and cannot delete your accounts created with an embedded digital wallet.

Online Tracking Opt-out. There are a number of ways to limit online tracking, which we have summarized below:

* Blocking Cookies in Your Browser. Most browsers let you remove or reject cookies. To do this, follow the instructions in your browser settings. Many browsers accept cookies by default until you change your settings. For more information about cookies, including how to see what cookies have been set on your device and how to manage and delete them, visit <https://www.allaboutcookies.org/>
* Using privacy plug-ins or browsers. You can block our websites from setting cookies by using a browser with privacy features, like [Brave](https://brave.com/), or installing browser plugins like [Privacy Badger](https://privacybadger.org/), [Ghostery](https://www.ghostery.com/), or [uBlock Origin](https://ublock.org/en), and configuring them to block third party cookies/trackers. You can also opt out of Google Analytics by downloading and installing the browser plug-in available at: <https://tools.google.com/dlpage/gaoptout>.

Note that because these opt-out mechanisms are specific to the device on which they are exercised, you will need to opt out on every device that you use.

Do Not Track. Some browsers may be configured to send “Do Not Track” signals to the online services that you visit. We currently do not respond to “Do Not Track” or similar signals. To find out more about “Do Not Track,” please visit <http://www.allaboutdnt.com>.

We retain your personal information only for as long as necessary to provide our Services, comply with legal and licensing obligations, resolve disputes, and enforce our agreements. The criteria used to determine retention periods include the nature of the data, the purpose of processing, applicable legal requirements, and licensing obligations.

**7. Children’s Privacy**

Our Services are not intended for use by children under 18 years of age or under the age of majority in their jurisdiction. If we learn that we have collected personal information through our Services from a child under 18 or age of majority in their jurisdiction without the consent of the child’s parent or guardian, as required by law, we will delete it.

**8. Links to Other Websites**

The Service may contain links to other websites, applications or services not operated or controlled by Megapot, including social media services (“Third Party Sites”). The information that you share with Third Party Sites will be governed by the specific privacy policies and terms of service of the Third Party Sites and not by this Privacy Policy. By providing these links we do not imply that we endorse or have reviewed these sites. Please contact the Third Party Sites directly for information on their privacy practices and policies. 

**9. ​Security and Personal Information Storage**

We use commercially reasonable administrative, technical, and organizational safeguards designed to protect the personal information we collect. However, no security measures are failsafe, and we cannot guarantee the security of your personal information. Any documents used for KYC are processed, and stored securely, by our verification provider. We store minimal personal data necessary to maintain account functionality.

Where required by law, we have implemented appropriate safeguards for transfers of your personal information. You can contact us at any time to find out more about these safeguards as described in the “Contact Us” section below.

In the event of a personal data breach that poses a risk to your rights and freedoms, we will notify the relevant supervisory authority and, where required, affected individuals using the contact information available to us (including email, if you have provided one), as required by law.

**10. Links to Other Websites**

We reserve the right to modify this Privacy Policy at any time. If we make material changes to this Privacy Policy, we will notify you by updating the date of this Privacy Policy and providing an announcement on our Services. We may also contact you to notify you of these changes using the contact information you provide us. Your continued use of our Services after such changes constitutes your acceptance of the updated Privacy Policy. If you do not agree with the changes, you should discontinue use of the Services.

**11. Links to Other Websites**

If you have any questions about our Privacy Policy or information practices, please feel free to contact us at our designated request address: <support@megapot.io>


# KYC Policy

Last Updated: May 26, 2026

***

## 1. Purpose of the KYC Policy

Megapot is committed to allocating and using its resources to detect, report, and block any activity that may be considered as money laundering or the financing of any criminal or terrorist act within any jurisdiction in which we operate.

To facilitate this objective, Megapot has adopted and implemented designated processes and procedures, covering all activities performed by Megapot.

This **Know Your Customer (KYC) Policy** sets out procedures and standards that:

* Verify the identity of their players.
* Prevent fraudulent activities.
* Comply with Anti-Money Laundering (AML) and Counter-Terrorist Financing (CTF) regulations.
* Maintain a safe, transparent, and secure gaming environment.

The procedures outlined in this KYC Policy are all adopted so that Megapot achieves the above stated objectives. Megapot is committed to the highest standards of AML and CTF compliance. Megapot adheres to all applicable laws, including legal and regulatory requirements to obtain, verify, and record information that identifies each person connecting their digital Wallet and using Megapot Services.

***

## 2. Objectives of KYC

1. **Compliance with Regulations**: Ensure adherence to local and international AML/CTF laws and FATF recommendations.
2. **Player Integrity**: Verify the identity of players to prevent underage gambling, fraud, and financial crime.
3. **Risk Mitigation**: Minimize risks associated with high-risk jurisdictions, Politically Exposed Persons (PEPs), and suspicious transactions.
4. **Transparency**: Promote responsible gaming and safeguard player funds.

***

## 3. Scope

This policy applies to:

* All players connecting their digital Wallet for Services.
* Business relationships established with third-party service providers.
* Transactions exceeding designated thresholds or identified as high-risk.

***

## 4. Key KYC Principles

1. **Customer Identification**: Verify the identity of players when the total value of aggregate lifetime deposits reaches $10,000 USD or a withdrawal request of any amount, and refresh verification information for players at least every 12 months, or more frequently as determined by applicable law, regulatory guidance, or internal risk assessment.

> “Withdrawal” means any transaction in which a user transfers funds or assets from their embedded digital wallet on the platform to an external wallet, centralized exchange, or any destination outside the platform’s ecosystem, thereby removing the assets from the platform’s direct environment or control. Notwithstanding the above, due to the open and decentralized nature of blockchain technology and its other limitations, it may be technically possible for a miniscule number of very sophisticated users to access their embedded wallet outside the platform’s standard withdrawal process. The platform requires KYC for all withdrawals initiated through its interface, however, certain such external uses may not be fully detectable or subject to monitoring.

2. **Risk-Based Approach**: Apply varying levels of due diligence based on the player’s risk profile.
3. **Record Retention**: Maintain all KYC-related documents and transaction records for at least five (5) years.
4. **Ongoing Monitoring**: Monitor player behavior and transactions on an ongoing basis to identify suspicious activity.

***

## 5. Customer Identification and Verification Process

### 5.1 Information Collection

Collect from all players:

* Full legal name.
* Date of birth (to confirm minimum legal age).
* Nationality.
* Residential address.
* Contact information (email and phone number).
* Payment information (e.g., bank account or e-wallet details).

### 5.2 Document Verification

Obtain and verify the following documents:

1. **Proof of Identity**
   * Valid government-issued ID, such as:
     * Passport.
     * National ID card.
     * Driver’s license.
   * The ID must contain the player’s photo, name, and date of birth.
2. **Proof of Address**
   * Recent utility bill, bank statement, or government correspondence (not older than three months).

## 5.3 Enhanced Due Diligence (EDD)

Megapot does not permit users from high-risk jurisdictions to access its Services. Adverse media checks will be performed on all customers at the time of KYC and periodically thereafter. Enhanced Due Diligence (EDD) may be conducted if Megapot deems it necessary in compliance with applicable law or regulation.

***

## 6. Risk-Based Approach

Megapot’s risk-based approach focuses on identifying and flagging suspicious activity.

* Transactions of $3,000 USD or more, or activity that deviates from typical player transaction patterns, will be flagged for further review.
* Users from high-risk countries will be blocked from accessing Megapot’s services.
* Risk classification is based on the presence of suspicious activity or transactions exceeding the specified threshold.

***

## 7. Ongoing Monitoring

Monitoring transactions for unusual activity, such as:

1. Transactions of around USD 3,000.
2. Multiple small transactions in a 24 hour period designed to evade reporting thresholds.
3. Transaction monitoring for anti-money laundering (AML) and anti-terrorist financing (ATF) will be conducted using TRM Labs or a similar third-party provider.

***

## 8. Politically Exposed Persons (PEPs)

### 8.1 Identification

PEPs include individuals who hold or have held prominent public functions, as well as their family members or close associates.

### 8.2 Enhanced Measures

* Conduct comprehensive checks using third-party databases.
* Obtain approval from senior management before establishing a business relationship.

***

## 9. Record Keeping and Confidentiality

1. **Retention Period**
   * Retain all KYC documents, transaction records, and communication logs for a minimum of five (5) years after the business relationship ends.
2. **Data Protection**
   * Securely store player data in compliance with applicable laws and international privacy laws.
   * Ensure player data is used solely for verification and compliance purposes.
3. **Accessibility**
   * Ensure that KYC records are accessible to regulatory authorities upon request.

***

## 10. Reporting Obligations

1. **Suspicious Activity Reporting (SARs)**
   * Report suspicious activities within 7 calendar days of detection.
   * Include detailed information on the player, transaction, and reasons for suspicion.
2. **Threshold Reporting**
   * Report all transactions exceeding $10,000 USD, even if no suspicion arises.

***

## 11. Compliance Oversight

1. **Appointment of a Compliance Officer**
   * Appoint a **Compliance Officer** responsible for:
     * Overseeing KYC implementation.
     * Liaising with regulatory authorities.
     * Ensuring the submission of SARs and transaction reports.
     * Developing, implementing, and updating compliance policies and procedures.
2. **Internal Audits**
   * Conduct periodic internal audits to evaluate the effectiveness of KYC measures.
3. **Training Programs**
   * Train employees on KYC procedures, including:
     * Identifying fraudulent documentation.
     * Recognizing red flags for ML/TF activities.
     * Reporting obligations under Anjouan’s regulatory framework.

***

## 12. Continuous Improvement

Megapot continuously improves its KYC processes and procedures, and does the following:

* Regularly review and update KYC policies to align with changes in AML/CTF regulations.
* Adopt advanced technologies, such as AI and blockchain, to enhance verification processes and reduce fraud.

***

## 13. Contact Information

For assistance or inquiries regarding its KYC compliance, contact Megapot at\
**Email:** <support@megapot.io>


# Refund Policy

Because Megapot is onchain, refunds are limited. However, we will assist with payment issues when a ticket purchase does not complete successfully.

## Eligible for refunds or assistance

We can help complete purchases or issue refunds for failed payment attempts, including:

* Overpayments or underpayments
* Bridging or swapping issues
* Token conversion failures
* Transactions that did not result in ticket purchases

## Not eligible for refunds

* Successfully purchased tickets (all sales are final)
* Deposits or wallet top-ups
* Completed swaps or bridges
* Purchases or withdrawals blocked or rejected due to KYC or provider compliance decisions

## Processing

Refunds may take up to 3 business days to process. All refunds are issued in USDC on Base. Refunds or purchase assistance will only be sent from [**megapot-refunds.eth**](https://basescan.org/address/0x9B40b91DF44ee34C918D10EDF6388B703731476b) (0x9B40b91DF44ee34C918D10EDF6388B703731476b).

**Megapot will never ask you to send funds to receive a refund.**

## Contact

Please contact us at <https://megapot.io/support> or <support@megapot.io>. Include your wallet address and transaction hash (if available) so we can investigate quickly.


# Responsible Gaming

**Last Updated: January 02, 2026**

**Megapot Inc. (“we”, “our”, and “Megapot”) is here to provide an excellent and enjoyable gaming experience and recognize our responsibility in promoting responsible gaming and protecting vulnerable players.**

We are committed to:

* Minimizing potential harm and promoting a responsible gaming environment.
* Integrating responsible gambling controls into all aspects of our operations.
* Ensuring all advertising, marketing, and communications are conducted responsibly.
* Providing players with the tools, information, and support necessary to make informed decisions and encourage safer play.

**Responsible Gambling and Mitigating Player Harms**

Gambling winnings are based on luck. We are committed to safer play and offer our players Services built on responsible gaming practices, with tools available to help mitigate risks by allowing a player to manage their account activity better. For more information on gaming rules, odds, and potential risks, please see [our docs](https://docs.megapot.io/overview/how-to-play).

One of the best ways to ensure that gambling remains a safe form of entertainment is to develop strategies to manage your play.

We advise all players to take into account the following, and not game irresponsibly:

* Play for entertainment, not to make money.
* Avoid chasing losses.
* Establish limits for yourself and stick to them.
* Do not let gambling interfere with your daily responsibilities.
* Never gamble unless you can cover losses.
* Take regular breaks.

**Compulsive Gambling Behaviours**

Indications that a player may be involved in dangerous, harmful or addictive behaviours encompass various factors, such as, but not limited to:

* an inability to cease gambling;
* borrowing money for gambling purposes;
* noticeable personality changes; or
* jeopardizing employment and family due to gambling.

If you or someone you know may be exhibiting these signs, we encourage you to reach out to our team or utilize one of our support networks. We are here to support you in addressing problematic gambling behaviours. Our team is ready to provide information about a variety of help resources and are equipped to provide you adequate assistance.

Remember: If you or someone you know is experiencing problems with gaming, help is available. You are not alone.

**See the below questions.**

If your answer to the majority of them is “YES”, we advise you take action to prevent gambling from negatively impacting your life:

* Does gambling affect your work?
* Has gambling caused arguments with family/friends?
* Do you always return to win back your losses?
* Have you borrowed money to gamble?
* Do you see gambling as a source of income?
* Do you find it difficult to limit your gambling?

**What to do?**

Listed below are reputed organizations committed to helping those who struggle with gambling problems, and can be contacted at any time:

* [Gamblers Anonymous](https://gamblersanonymous.org/)
* [Gambling Therapy](https://www.gamblingtherapy.org/)
* [GamCare](https://www.gamcare.org.uk/)

**Reporting Mechanisms, Self Exclusion, and Indefinite Wallet Disconnection**

We advise all players who are concerned about their gambling behavior to take a break by excluding themselves from their gaming account. Self-exclusion will lock your account for a minimum of 1 week or more and no promotional material will be sent. Any request to relax or remove a limit or self exclusion will only take effect after a 24-hour cooling-off period.

We also make it easy to stop gaming at Megapot indefinitely through permanent self-exclusion, i.e. indefinite Wallet disconnection, from the Megapot Services.

Contact our Customer Support at <support@megapot.io> anytime to request self-exclusion and/or indefinite Wallet disconnection and they will kindly assist you. We recommend that you contact all other gambling sites where you have an account and request self-exclusion there also.

If you become aware of irresponsible or illegal gaming activities, please report these activities by contacting our Customer Support at <support@megapot.io> anytime.

**Underage Gambling**

Players must be of legal gambling age in their jurisdiction and be at least 18+ years old in order to play at Megapot. It is their responsibility to be aware of the age restriction where they reside and play, and to confirm their legitimacy when creating an account at Megapot.

We also advise parents to do the following:

* Password protect your computer, mobile, and/or tablet.
* Do not leave your device unattended when logged into your account.
* Make sure all account details and credit cards are inaccessible to children.
* Do not save passwords on your computer, write them down and keep somewhere out of reach.
* Download filtering software (e.g. [Net Nanny](https://www.netnanny.com/)) to prevent minors from accessing inappropriate sites.

**Responsible Marketing and Advertising**

We do not target minors, self-excluded, or high-risk individuals with advertising or marketing materials. We endeavour to ensure that all advertising is truthful, not misleading, and does not promote excessive or irresponsible play. You may opt in or out of receiving direct marketing at any time.

This Policy is effective as of January 02, 2026. It is provided to inform all players of our commitment to responsible gaming and the measures in place to help you play safely. We review this policy at least annually, or whenever required to reflect changes in law or


# Gaming License

## Gaming License

* License number: ALSI-202510018-FI1
* Company name: Megapot Inc
* Country of Incorporation: Belize
* Company registration number: 000048473
* Period of validity: October 16, 2025 to October 15, 2026
* [Verify on the Anjouan License Register](https://anjouangaming.com/license-register/?search=Megapot)
* You can also verify by scrolling to the bottom of [megapot.io](https://megapot.io) and clicking the shield icon

<figure><img src="https://4144610446-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0Qe5CBrrfDdDUHNLiJQ9%2Fuploads%2Fgit-blob-401ff9185e2b0318c5a4368bee023f5376d8b9c4%2FCertified_Megapot_License_Certificate.png?alt=media" alt="Certified Megapot License Certificate"><figcaption><p>Certified Megapot License Certificate</p></figcaption></figure>

## RNG Certificate

* Megapot randomness certified by Risk Cherry

{% file src="/files/SgkmE0U72jfeRGvDzl2y" %}
RNG Certificate
{% endfile %}


# Infrastructure Participant Acknowledgement

**Last Updated: March 19, 2026**

***

I am an Infrastructure Participant providing market-making liquidity to the protocol's decentralized operations. I accept that my participating assets are subject to the outcomes of Megapot's daily draw, and that this activity may result in the loss of my participating assets.

I am not a "player" and am not "wagering." I understand that my participation is an economic activity providing capital for protocol incentives, not a recreational bet or gamble.


