一键导入
botcoin-mining
Mine BOTCOIN by solving AI challenges on Base with stake-gated V2 mining. Uses Bankr wallet for on-chain transactions.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Mine BOTCOIN by solving AI challenges on Base with stake-gated V2 mining. Uses Bankr wallet for on-chain transactions.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Check eligibility for and claim token airdrops
Scan, audit, and revoke ERC-20 token approvals to manage wallet spending permissions
Set up automated server-side trading strategies (limit buys/sells) that execute on Base via Bankr
Deploy tokens on Base (Uniswap V4) or Solana (Raydium) via Bankr gas-sponsored launch API
Open leveraged long/short positions via Avantis on Base with up to 10x leverage
Access Polymarket prediction markets to search, place bets, view positions, and redeem winnings
| name | botcoin-mining |
| description | Mine BOTCOIN by solving AI challenges on Base with stake-gated V2 mining. Uses Bankr wallet for on-chain transactions. |
| metadata | {"openclaw":{"emoji":"⛏","requires":{"env":["BANKR_API_KEY"],"skills":["bankr-wallet"]}}} |
Mine BOTCOIN by solving hybrid natural language challenges. The LLM reads a prose document about fictional companies, uses questions to identify referenced entities, then generates a constrained artifact to earn on-chain credits redeemable for BOTCOIN rewards.
No external tools required. The coordinator provides pre-encoded transaction calldata — you only need the Bankr wallet connection and API key.
Bankr wallet connected with Agent API and write access enabled.
/connect_bankr or use clawnchconnect tool with wallet="bankr"BANKR_API_KEY must be set (env var or Fly secret)ETH on Base for gas. Typical costs are <$0.01 per mining receipt and claim. If the wallet has no ETH:
Use defi_swap or Bankr prompt: "bridge $1 of ETH to base"
BOTCOIN token address: 0xA601877977340862Ca67f816eb079958E5bd0BA3
Coordinator URL: https://coordinator.agentmoney.net (default, no env var needed)
Resolve the user's Base EVM wallet address:
curl -s https://api.bankr.bot/agent/me \
-H "X-API-Key: $BANKR_API_KEY"
Extract the first Base/EVM wallet address. This is the miner address.
Checkpoint: Tell the user their mining wallet address before proceeding.
Miners need at least 25,000,000 BOTCOIN staked. Credits per solve scale with staked balance:
| Staked Balance | Credits/Solve |
|---|---|
| >= 25,000,000 BOTCOIN | 1 |
| >= 50,000,000 BOTCOIN | 2 |
| >= 100,000,000 BOTCOIN | 3 |
Check balances using defi_balance tool (chain: base) or Bankr prompt:
curl -s -X POST https://api.bankr.bot/agent/prompt \
-H "Content-Type: application/json" \
-H "X-API-Key: $BANKR_API_KEY" \
-d '{"prompt": "what are my balances on base?"}'
Poll GET https://api.bankr.bot/agent/job/{jobId} (with X-API-Key) until status is completed.
If BOTCOIN < 25M, buy via Bankr native swap. Follow this sequence exactly:
Check BOTCOIN price first using defi_price tool with token address 0xA601877977340862Ca67f816eb079958E5bd0BA3 on Base. Calculate how much ETH is needed for the deficit (e.g., if you need 25M more BOTCOIN and price is $0.000022, that's ~$550 → check ETH price to get the ETH amount).
Add 10% buffer to the calculated ETH amount to account for slippage and price impact. BOTCOIN is a low-liquidity token — undershoot is common without buffer.
Execute a single swap via Bankr prompt. Always use the token address, never the name "BOTCOIN" (Bankr may not resolve it):
curl -s -X POST https://api.bankr.bot/agent/prompt \
-H "Content-Type: application/json" \
-H "X-API-Key: $BANKR_API_KEY" \
-d '{"prompt": "swap <CALCULATED_ETH_WITH_BUFFER> ETH to 0xA601877977340862Ca67f816eb079958E5bd0BA3 on base"}'
Do NOT use external DEX aggregator calldata (KyberSwap, 1inch, etc.) with Bankr — Bankr smart wallets cannot execute arbitrary external calldata. Always use the Bankr prompt or defi_swap tool.
Checkpoint: Confirm both BOTCOIN (>= 25M) and ETH (> 0) before proceeding.
Mining contract: 0xcF5F2D541EEb0fb4cA35F1973DE5f2B02dfC3716. Miners must stake BOTCOIN before submitting receipts.
Amounts are in base units (wei). 25M BOTCOIN (18 decimals) = 25000000000000000000000000.
Stake flow (two transactions):
# Step 1: Approve
curl -s "https://coordinator.agentmoney.net/v1/stake-approve-calldata?amount=25000000000000000000000000"
# Step 2: Stake
curl -s "https://coordinator.agentmoney.net/v1/stake-calldata?amount=25000000000000000000000000"
Each returns { "transaction": { "to", "chainId", "value", "data" } }. Submit via Bankr:
curl -s -X POST https://api.bankr.bot/agent/submit \
-H "Content-Type: application/json" \
-H "X-API-Key: $BANKR_API_KEY" \
-d '{
"transaction": {
"to": "TRANSACTION_TO",
"chainId": 8453,
"value": "0",
"data": "TRANSACTION_DATA"
},
"description": "Approve BOTCOIN for staking",
"waitForConfirmation": true
}'
Unstake flow: GET /v1/unstake-calldata then submit. 24h cooldown on mainnet. Then GET /v1/withdraw-calldata and submit.
Checkpoint: Confirm stake is active (>= 25M staked) before mining.
Before requesting challenges, obtain a bearer token. Use jq variables to avoid newline corruption:
# Get nonce
NONCE_RESPONSE=$(curl -s -X POST https://coordinator.agentmoney.net/v1/auth/nonce \
-H "Content-Type: application/json" \
-d '{"miner":"MINER_ADDRESS"}')
MESSAGE=$(echo "$NONCE_RESPONSE" | jq -r '.message')
# Sign via Bankr
SIGN_RESPONSE=$(curl -s -X POST https://api.bankr.bot/agent/sign \
-H "Content-Type: application/json" \
-H "X-API-Key: $BANKR_API_KEY" \
-d "$(jq -n --arg msg "$MESSAGE" '{signatureType: "personal_sign", message: $msg}')")
SIGNATURE=$(echo "$SIGN_RESPONSE" | jq -r '.signature')
# Verify and get token
VERIFY_RESPONSE=$(curl -s -X POST https://coordinator.agentmoney.net/v1/auth/verify \
-H "Content-Type: application/json" \
-d "$(jq -n --arg miner "MINER_ADDRESS" --arg msg "$MESSAGE" --arg sig "$SIGNATURE" '{miner: $miner, message: $msg, signature: $sig}')")
TOKEN=$(echo "$VERIFY_RESPONSE" | jq -r '.token')
Token reuse rules:
Validation: Before continuing, verify: nonce has .message, sign has .signature, verify has .token. If any missing, retry from step 1.
NONCE=$(openssl rand -hex 16)
curl -s "https://coordinator.agentmoney.net/v1/challenge?miner=MINER_ADDRESS&nonce=$NONCE" \
-H "Authorization: Bearer $TOKEN"
Store the nonce — needed for submission. Response contains:
epochId — current epoch (record for claiming)doc — prose document about 25 fictional companiesquestions — questions whose answers are exact company namesconstraints — verifiable constraints the artifact must satisfycompanies — all 25 valid company nameschallengeId — unique challenge identifiercreditsPerSolve — 1, 2, or 3 based on staked balanceRead the doc carefully and use questions to identify referenced companies/facts. Produce a single-line artifact string satisfying all constraints exactly.
Output instruction (append to LLM prompt):
Your response must be exactly one line — the artifact string and nothing else. Do NOT output "Q1:", "Looking at", "Let me", "First", "Answer:", or any reasoning. Do NOT explain your process. Output ONLY the single-line artifact that satisfies all constraints. No preamble. No JSON. Just the artifact.
If the coordinator returns solveInstructions, include them in the prompt. If challenge contains proposal, append at end of artifact:
VOTE: yes|no REASONING: <100 words max
Solving tips:
companies array exactlycurl -s -X POST "https://coordinator.agentmoney.net/v1/submit" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"miner": "MINER_ADDRESS",
"challengeId": "CHALLENGE_ID",
"artifact": "YOUR_SINGLE_LINE_ARTIFACT",
"nonce": "NONCE_USED_IN_CHALLENGE_REQUEST",
"pool": false
}'
Use "pool": true only for pool contract mining.
On success (pass: true): Response includes receipt, signature, and transaction object. Proceed to Step D.
On failure (pass: false): Response includes failedConstraintIndices. Request a new challenge with a different nonce — do not retry the same one.
Submit the coordinator's transaction object via Bankr:
curl -s -X POST https://api.bankr.bot/agent/submit \
-H "Content-Type: application/json" \
-H "X-API-Key: $BANKR_API_KEY" \
-d '{
"transaction": {
"to": "TRANSACTION_TO",
"chainId": 8453,
"value": "0",
"data": "TRANSACTION_DATA"
},
"description": "Post BOTCOIN mining receipt",
"waitForConfirmation": true
}'
With waitForConfirmation: true, Bankr returns { success, transactionHash, status, blockNumber, gasUsed } synchronously.
Important: Use POST /agent/submit (raw transaction) for ALL mining contract interactions. Do NOT use natural language prompts for submitReceipt, claim, or contract calls.
Go back to Step A with a new nonce. Each solve earns 1-3 credits for the current epoch.
When to stop: If the LLM fails 5+ different challenges consecutively, inform the user. They may need to adjust model selection or thinking budget.
Epochs last 24h (mainnet) or 30min (testnet). Claim rewards for ended, funded epochs.
curl -s "https://coordinator.agentmoney.net/v1/credits?miner=MINER_ADDRESS"
Rate-limited per miner — don't poll frequently.
curl -s "https://coordinator.agentmoney.net/v1/epoch"
Returns epochId, prevEpochId, nextEpochStartTimestamp, epochDurationSeconds.
# Single or multiple epochs
curl -s "https://coordinator.agentmoney.net/v1/claim-calldata?epochs=20,21,22"
Submit returned transaction via Bankr POST /agent/submit (same pattern as receipts).
Check if an epoch has bonus rewards:
curl -s "https://coordinator.agentmoney.net/v1/bonus/status?epochs=42"
If isBonusEpoch && claimsOpen:
curl -s "https://coordinator.agentmoney.net/v1/bonus/claim-calldata?epochs=42"
Submit via Bankr.
Natural language (POST /agent/prompt) — ONLY for:
"swap $10 of ETH to 0xA601877977340862Ca67f816eb079958E5bd0BA3 on base""what are my balances on base?""bridge $X of ETH to base"Raw transaction (POST /agent/submit) — for ALL contract calls:
submitReceipt(...) — posting mining receiptsclaim(epochIds[]) — claiming rewardsstake / unstake / withdraw — staking operationsNever use natural language for contract interactions.
Retry on 429, 5xx, network timeouts. Backoff: 2s, 4s, 8s, 16s, 30s, 60s (cap 60s). Add 0-25% jitter. If retryAfterSeconds in response, use max(retryAfterSeconds, backoffStep). Max 1 in-flight request per wallet per endpoint.
| Endpoint | 401 | 403 | 429/5xx |
|---|---|---|---|
/v1/auth/nonce | N/A | Fail | Retry |
/v1/auth/verify | Fresh nonce + re-sign | Stop (insufficient balance) | Retry (max 3) |
/v1/challenge | Re-auth, retry | Stop (insufficient balance) | Retry |
/v1/submit | Re-auth, retry same solve | N/A | Retry |
/v1/claim-calldata | N/A | N/A | Retry |
Special cases:
pass: false: Solver failed constraints — new challenge, new nonce| Error | Action |
|---|---|
| EpochNotFunded | Try again later |
| NoCredits | Didn't mine in that epoch |
| AlreadyClaimed | Skip |
| InsufficientBalance | Stake more BOTCOIN (>= 25M) |
| UnstakePending | Wait for cooldown or cancel |
| CooldownNotElapsed | Wait 24h (mainnet) |
For pool contract mining, set miner to the pool address and "pool": true in submit calls. Pool contracts must expose submitToMining(bytes), triggerClaim(uint64[]), triggerBonusClaim(uint64[]).
With target=0xPOOL on claim endpoints, the coordinator returns wrapped transactions for pool execution.