Skills qrcoin
Interact with QR Coin auctions on Base. Use when the user wants to participate in qrcoin.fun QR code auctions — check auction status, view current bids, create new bids, or contribute to existing bids. QR Coin lets you bid to display URLs on QR codes; the highest bidder's URL gets encoded.
git clone https://github.com/BankrBot/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/BankrBot/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/qrcoin" ~/.claude/skills/bankrbot-skills-qrcoin && rm -rf "$T"
qrcoin/SKILL.mdQR Coin Auction
Participate in QR Coin auctions on Base blockchain. QR Coin lets you bid to display URLs on QR codes — the highest bidder's URL gets encoded when the auction ends.
Contracts (Base Mainnet)
| Contract | Address |
|---|---|
| QR Auction | |
| USDC | |
How It Works
- Each auction runs for a fixed period (~24h)
- Bidders submit URLs with USDC (6 decimals — 1 USDC = 1000000 units)
- Creating a new bid costs ~11.11 USDC (createBidReserve)
- Contributing to an existing bid costs ~1.00 USDC (contributeReserve)
- Highest bid wins; winner's URL is encoded in the QR code
- Losers get refunded; winners receive QR tokens
Auction Status Queries
Note: The examples below use
(public RPC). You can substitute your own RPC endpoint if preferred.https://mainnet.base.org
Get Current Token ID
Always query this first to get the active auction ID before bidding.
curl -s -X POST https://mainnet.base.org \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x7309779122069EFa06ef71a45AE0DB55A259A176","data":"0x7d9f6db5"},"latest"],"id":1}' \ | jq -r '.result' | xargs printf "%d\n"
Get Auction End Time
# First get the current token ID, then use it here TOKEN_ID=329 # Replace with result from currentTokenId() TOKEN_ID_HEX=$(printf '%064x' $TOKEN_ID) curl -s -X POST https://mainnet.base.org \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x7309779122069EFa06ef71a45AE0DB55A259A176","data":"0xa4d0a17e'"$TOKEN_ID_HEX"'"},"latest"],"id":1}' \ | jq -r '.result' | xargs printf "%d\n"
Get Reserve Prices
# Create bid reserve (~11.11 USDC) curl -s -X POST https://mainnet.base.org \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x7309779122069EFa06ef71a45AE0DB55A259A176","data":"0x5b3bec22"},"latest"],"id":1}' \ | jq -r '.result' | xargs printf "%d\n" | awk '{print $1/1000000 " USDC"}' # Contribute reserve (~1.00 USDC) curl -s -X POST https://mainnet.base.org \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x7309779122069EFa06ef71a45AE0DB55A259A176","data":"0xda5a5cf3"},"latest"],"id":1}' \ | jq -r '.result' | xargs printf "%d\n" | awk '{print $1/1000000 " USDC"}'
Transactions via Bankr
QR Coin auctions require USDC transactions on Base. Use Bankr to execute these — Bankr handles:
- Function signature parsing and parameter encoding
- Gas estimation
- Transaction signing and submission
- Confirmation monitoring
Step 1: Approve USDC (One-Time)
Before bidding, approve the auction contract to spend USDC:
Approve 50 USDC to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base
Step 2: Create a New Bid
To start a new bid for your URL:
Function:
createBid(uint256 tokenId, string url, string name)
Contract: 0x7309779122069EFa06ef71a45AE0DB55A259A176
Cost: ~11.11 USDC
Important: Always query
first to get the active auction ID.currentTokenId()
Example prompt for Bankr:
Send transaction to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base calling createBid(329, "https://example.com", "MyName")
Step 3: Contribute to Existing Bid
To add funds to an existing URL's bid:
Function:
contributeToBid(uint256 tokenId, string url, string name)
Contract: 0x7309779122069EFa06ef71a45AE0DB55A259A176
Cost: ~1.00 USDC per contribution
Example prompt for Bankr:
Send transaction to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base calling contributeToBid(329, "https://grokipedia.com/page/debtreliefbot", "MerkleMoltBot")
Function Selectors
| Function | Selector | Parameters |
|---|---|---|
| | — |
| | tokenId |
| | — |
| | — |
| | tokenId, url, name |
| | tokenId, url, name |
| | spender, amount |
Error Codes
| Error | Meaning | Solution |
|---|---|---|
| Bid amount below minimum | Check reserve prices |
| URL already has a bid | Use instead |
| URL doesn't have existing bid | Use instead |
| Current auction has ended | Wait for next auction |
| Auction hasn't begun | Wait for auction to start |
| USDC not approved | Approve USDC first |
Typical Workflow
- Query
— Get the active auction IDcurrentTokenId() - Check auction status — Verify time remaining
- Approve USDC — One-time approval for the auction contract
- Decide action:
- New URL: Use
(~11.11 USDC)createBid - Support existing URL: Use
(~1.00 USDC)contributeToBid
- New URL: Use
- Monitor — Watch for outbids and contribute more if needed
- Claim — Winners receive QR tokens; losers get refunds
Links
- Platform: https://qrcoin.fun
- Auction Contract: BaseScan
- USDC on Base: BaseScan
Tips
- Start small: Contribute to existing bids (~1 USDC) to learn the flow
- Check timing: Auctions have fixed end times; plan accordingly
- Monitor bids: Others can outbid you; watch the auction
- Use Bankr: Let Bankr handle transaction signing and execution
- Specify Base: Always include "on Base" when using Bankr
💡 Pro Tip: Contributing to an existing bid is cheaper than creating a new one. Check if someone already bid for your URL before creating a new bid.