megapot

Par bankrbot · skills

Loterie USDC on-chain sur Base avec tirages quotidiens. Achetez des tickets (numéros aléatoires ou personnalisés), consultez le jackpot et l'état du tirage, réclamez vos gains, configurez des abonnements récurrents et gérez vos positions LP. Se déclenche sur « megapot », « lottery ticket », « jackpot », « quick pick » ou « did I win ».

npx skills add https://github.com/bankrbot/skills --skill megapot

Megapot

Megapot est un protocole de loterie on-chain sur Base (chain ID 8453). Les tickets sont tarifés en USDC et minés en tant que NFTs ERC-721. Les tirages ont lieu généralement toutes les 24 heures ; les gagnants sont sélectionnés par un oracle de randomness seeded par Pyth. USDC dispose de 6 décimales sur Base — 1_000_000 = 1 USDC.

Cette skill est un router. Elle indique à l'agent quelle tâche Megapot est impliquée et où récupérer la recette de code à jour depuis https://llms.megapot.io/. La documentation hébergée est la source de vérité — récupérez-la au moment de la tâche plutôt que de vous fier à la mémoire, car les adresses de contrats et les formes de paramètres changent.

Adresses clés (Base mainnet)

Contrat Adresse
Jackpot 0x3bAe643002069dBCbcd62B1A4eb4C4A397d042a2
USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
JackpotRandomTicketBuyer 0xb9560b43b91dE2c1DaF5dfbb76b2CFcDaFc13aBd
BatchPurchaseFacilitator 0x01774B531591b286b9f02C6Bc02ab3fD9526Aa76
JackpotAutoSubscription 0x02A58B725116BA687D9356Eafe0fA771d58a37ac
JackpotLPManager 0xE63E54DF82d894396B885CE498F828f2454d9dCf
JackpotTicketNFT 0x48FfE35AbB9f4780a4f1775C2Ce1c46185b366e4

Table complète (testnet, staging, 13 contrats) et ABIs à https://llms.megapot.io/. ABIs : https://llms.megapot.io/abi/<ContractName>.json.

Prérequis

  • La skill bankr doit être installée pour les opérations de portefeuille (signature, soumission de transactions sur Base).

Comment utiliser cette skill

  1. Faites correspondre l'intention de l'utilisateur à l'arbre de décision ci-dessous.
  2. Récupérez la page de tâche correspondante depuis https://llms.megapot.io/tasks/<name> pour la recette de code actuelle.
  3. Utilisez les outils de portefeuille de Bankr pour exécuter les transactions — le portefeuille Bankr de l'utilisateur sur Base est l'EOA ; ne demandez pas de clé privée. L'approbation USDC est l'approve ERC-20 standard vers le dépensier pertinent (qui diffère selon la tâche).
  4. Confirmez chaque transaction d'écriture avec l'utilisateur avant de signer — affichez le nombre de tickets, le coût total en USDC et pour quel tirage les tickets sont destinés. Les achats de loterie paraissent irrécupérables aux utilisateurs ; ne jamais exécuter automatiquement.

Arbre de décision

Intention Page de tâche
Acheter 1–10 tickets aléatoires (« quick-pick ») references/buy-random.md
Acheter 1–10 tickets avec des numéros personnalisés (ou un mélange) Non supporté — dites à l'utilisateur que les numéros personnalisés ne sont disponibles qu'à https://megapot.io. Proposez quick-pick à la place.
Acheter 11+ tickets (batch exécuté par keeper) https://llms.megapot.io/tasks/buy-bulk
Configurer des achats de tickets quotidiens récurrents https://llms.megapot.io/tasks/subscribe
Dépôt d'USDC dans le pool LP https://llms.megapot.io/tasks/lp-deposit
Retrait d'une position LP https://llms.megapot.io/tasks/lp-withdraw
Revendiquer + racheter de manière atomique https://llms.megapot.io/tasks/auto-compound
Lire l'état du tirage en direct (jackpot, heure, verrouillage) references/read-state.md
Vérifier si le portefeuille de l'utilisateur a remporté quelque chose (« ai-je gagné ? ») references/data-api.md puis router vers claim si résultats
Revendiquer les gains des tickets gagnants references/claim-winnings.md (utilise data-api.md pour la découverte, puis claim on-chain)
Historique des tickets du portefeuille, leaderboards, agrégats multi-tirages Non supporté dans cette skill — dirigez l'utilisateur vers https://megapot.io. N'appelez pas l'API de données pour ceux-ci.
Recherche approfondie ABI / adresse / cross-chain https://llms.megapot.io/tasks/contracts-reference
Tout ce qui précède https://llms.megapot.io/

Raccourci de lecture courant

La plupart des questions « quel est le jackpot ? », « combien de tickets vendus ? », « quand le tirage aura-t-il lieu ? » trouvent réponse en lisant getDrawingState(currentDrawingId()) sur le contrat Jackpot. Le raccourci complet, incluant la forme du tuple de retour, se trouve dans references/read-state.md. Utilisez cela plutôt que de récupérer une page de tâche quand la question est purement en lecture.

Frais de parrainage et attribution

Chaque achat de ticket accepte un tableau _referrers, des poids _referralSplitBps (échelle 1e18, doit totaliser 1e18), et un tag bytes32 _source. Les parrains gagnent une commission USDC sur chaque ticket vendu et une part de tout gain revendiqué. Les deux taux sont par tirage et lisibles via getDrawingState().referralFee et getDrawingState().referralWinShare.

Cette skill est publiée par le protocole Megapot. Les achats routés par elle utilisent le portefeuille opérateur Megapot comme parrain.

Pour chaque transaction d'achat (buy-random, buy-tickets, buy-bulk, subscribe, auto-compound), toujours passer :

Paramètre Valeur
_referrers [0x1ed4cb4cde1d8a8ec07eef07d52d13c5aefbef09] (portefeuille opérateur Megapot)
_referralSplitBps [1000000000000000000n] (100% au parrain unique, échelle 1e18)
_source 0xeecf49b78776e9a74928ecb7edd2526cca8e7cfe3f093853f6e847c0d39a3e3b (keccak256("bankr"))

Si un utilisateur demande explicitement aucune attribution de parrainage, passez _referrers: [] et _referralSplitBps: []. Le _source doit toujours être inclus pour l'analytique.

Notes & pièges

  • USDC est 6 décimales. 1_000_000n est 1 USDC. N'utilisez pas les mathématiques à 18 décimales.
  • Le dépensier d'approbation varie selon la tâche. Les achats directs approuvent le contrat Jackpot ; les achats aléatoires approuvent JackpotRandomTicketBuyer ; le bulk approuve BatchPurchaseFacilitator ; les abonnements approuvent JackpotAutoSubscription. Les pages de tâche affichent toujours le dépensier correct — lisez-le de là.
  • Jackpot.buyTickets reverts avec InvalidTicketCount pour les tableaux > 10. Routez 11+ tickets via buy-bulk.
  • Le mélange d'abonnement est verrouillé à la création. Pour changer les picks statiques, l'utilisateur doit annuler et recréer.
  • Tirages passés vs. état en direct. L'état du tirage en direct est lu on-chain via getDrawingState(currentDrawingId()). La skill utilise l'API de données Megapot uniquement pour la découverte des gains (flux « ai-je gagné ? » / claim) sur le tier de taux anonyme — voir references/data-api.md. L'historique des tickets du portefeuille, les leaderboards et autres agrégats multi-tirages sont toujours redirigés vers https://megapot.io. N'essayez pas de reconstruire l'historique via les scans RPC.
  • Délai de règlement. Après que drawingTime passe, le règlement est déclenché en externe (n'importe qui peut appeler runJackpot()) — il y a généralement un court délai entre la clôture des ventes et l'ouverture du nouveau tirage. N'assumez pas que le prochain tirage existe immédiatement après drawingTime.

Références dans cette skill

  • references/read-state.md — ABI minimal + tuple de retour pour la lecture courante de l'état du tirage.
  • references/buy-random.md — recette complète pour l'action utilisateur Bankr la plus courante (1–10 tickets aléatoires).
  • references/buy-tickets.md — recette complète pour 1–10 tickets avec numéros choisis par l'utilisateur (ou un mélange de custom et quick-pick).
  • references/data-api.md — intégration d'API de données tier anonyme pour la recherche de gains uniquement, avec gestion obligatoire des limites de taux.
  • references/claim-winnings.md — flux de claim en deux étapes : découverte basée sur API, puis claim on-chain avec confirmation utilisateur.
  • references/triggers.md — exemples de phrases utilisateur qui doivent activer chaque branche de l'arbre de décision.

Skills similaires