skills$openclaw/qr-auction-bidder
ss2517.0k

by ss251

qr-auction-bidder – OpenClaw Skill

qr-auction-bidder is an OpenClaw Skills integration for devops workflows. Bid on $QR auctions at qrcoin.fun. Place bids on Base mainnet using USDC. Uses Bankr for transaction execution — no wallet management needed.

7.0k stars3.1k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026devops

Skill Snapshot

nameqr-auction-bidder
descriptionBid on $QR auctions at qrcoin.fun. Place bids on Base mainnet using USDC. Uses Bankr for transaction execution — no wallet management needed. OpenClaw Skills integration.
ownerss251
repositoryss251/qr-auction-bidder
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @ss251/qr-auction-bidder
last updatedFeb 7, 2026

Maintainer

ss251

ss251

Maintains qr-auction-bidder in the OpenClaw Skills directory.

View GitHub profile
File Explorer
5 files
.
references
contract-addresses.md
742 B
QRAuctionV5.abi.json
29.8 KB
_meta.json
463 B
SKILL.md
8.5 KB
SKILL.md

name: qr-auction-bidder description: Bid on $QR auctions at qrcoin.fun. Place bids on Base mainnet using USDC. Uses Bankr for transaction execution — no wallet management needed. metadata: openclaw: emoji: "🎯" requires: []

QR Auction Bidder

Bid on $QR daily auctions. Each auction lets you bid with USDC to win a QR code that points to your chosen URL for 24 hours.

Overview

$QR runs continuous 24-hour auctions on Base mainnet. The highest bid wins, and the winning URL is displayed on a real QR code. Losing bidders are refunded automatically.

Contract Addresses

ContractAddress
QRAuctionV50x7309779122069EFa06ef71a45AE0DB55A259A176
USDC (Base)0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Minimum Bids

ActionMinimum
Create new bid (createBid)11.11 USDC
Contribute to existing bid (contributeToBid)1.00 USDC

How Auctions Work

  1. A new auction starts automatically after the previous one settles
  2. Each auction has a tokenId, startTime, and endTime (typically 24 hours)
  3. Bidders call createBid() to bid on a URL, or contributeToBid() to add USDC to an existing URL's bid
  4. The highest total bid when time expires wins
  5. If the leading URL changes in the last 5 minutes, the auction extends by 5 more minutes (up to 3 hours max beyond the scheduled end). Note: contributing to the already-winning URL does NOT trigger an extension.
  6. After the auction ends, it's settled and losing bidders are refunded

Prerequisites

This skill uses Bankr for on-chain transaction execution. Install the bankr skill first:

https://github.com/BankrBot/moltbot-skills

Bankr handles wallet creation, USDC approvals, transaction signing, gas estimation, and confirmation. No private keys or wallet setup needed.

Check Auction Status

Query the current auction state via RPC:

# Get current auction state (tokenId, highestBid, startTime, endTime, settled)
curl -s -X POST https://mainnet.base.org \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x7309779122069EFa06ef71a45AE0DB55A259A176","data":"0xe4b8f0de"},"latest"],"id":1}' \
  | jq -r '.result'

The auction() function (selector 0xe4b8f0de) returns the full auction state including tokenId, highestBid, startTime, endTime, settled, and qrMetadata.

# Get number of bids in current auction
curl -s -X POST https://mainnet.base.org \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x7309779122069EFa06ef71a45AE0DB55A259A176","data":"0x91a3823f"},"latest"],"id":1}' \
  | jq -r '.result' | xargs printf "%d\n"
# Get create bid reserve price (should return 11110000 = 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":"0x4b6014f6"},"latest"],"id":1}' \
  | jq -r '.result' | xargs printf "%d\n"

Bidding with Bankr

Step 1: Approve USDC

Before bidding, approve the auction contract to spend your USDC. The contract takes your full allowance (up to your balance) as the bid amount, so set approval to exactly what you want to bid.

Approve 15 USDC to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base

Or via Bankr script:

scripts/bankr.sh "Approve 15 USDC to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base"

Step 2: Create a New Bid

Use createBid when no bid exists yet for your URL. Always query the current tokenId from auction() first.

Function: createBid(uint256 _tokenId, string _urlString, string _name)

Send transaction to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base calling createBid(329, "https://your-url.com", "YourName")

Or via Bankr script:

scripts/bankr.sh 'Send transaction to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base calling createBid(329, "https://your-url.com", "YourName")'

Important: Replace 329 with the actual current tokenId. Using a wrong token ID reverts with INVALID_TOKEN_ID.

Step 3: Contribute to an Existing Bid

Use contributeToBid to add USDC to a URL that already has a bid:

Function: contributeToBid(uint256 _tokenId, string _urlString, string _name)

Send transaction to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base calling contributeToBid(329, "https://existing-url.com", "YourName")

Or via Bankr script:

scripts/bankr.sh 'Send transaction to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base calling contributeToBid(329, "https://existing-url.com", "YourName")'

Decide: createBid vs contributeToBid

  • If your URL has no existing bid → use createBid (minimum 11.11 USDC)
  • If your URL already has a bid → use contributeToBid (minimum 1.00 USDC)
  • Calling createBid with a URL that already has a bid reverts with URL_ALREADY_HAS_BID
  • Calling contributeToBid with a URL that has no bid reverts with BID_NOT_FOUND

Auction Timing

ParameterValue
Duration24 hours
Time buffer5 minutes (a new leading URL in the last 5 min extends the auction)
Max extension3 hours beyond scheduled end

Important Notes

  • USDC is real money. Bids use real USDC on Base mainnet. Only bid what you can afford to lose.
  • Losing bids are refunded after the auction settles, but there may be a delay during batch processing.
  • The contract takes your full allowance (up to your balance). Set your USDC approval to exactly your intended bid amount.
  • URL must be unique per auction. If someone already bid on your URL, use contributeToBid. Calling createBid with a taken URL will revert with URL_ALREADY_HAS_BID.
  • Token ID must match. Always read the current tokenId from auction() before bidding. Using a wrong token ID reverts with INVALID_TOKEN_ID.

Error Codes

ErrorMeaningSolution
INVALID_TOKEN_IDWrong auction token IDQuery auction() for current tokenId
AUCTION_OVERAuction has endedWait for next auction
RESERVE_PRICE_NOT_METBid below minimumApprove at least 11.11 USDC (create) or 1.00 USDC (contribute)
URL_ALREADY_HAS_BIDURL already bid onUse contributeToBid instead
BID_NOT_FOUNDNo existing bid for URLUse createBid instead
AUCTION_SETTLEDAuction already settledWait for next auction

ABI Reference

The full QRAuctionV5 ABI is available at references/QRAuctionV5.abi.json in this skill package.

Key functions:

FunctionDescription
auction()Get current auction state (tokenId, highestBid, startTime, endTime, settled)
getAllBids()Get all bids for current auction
getBid(url)Get bid for a specific URL
getBidCount()Number of bids in current auction
createBid(tokenId, url, name)Place a new bid for a URL
contributeToBid(tokenId, url, name)Add to an existing URL's bid
createBidReservePrice()Get minimum for new bids
contributeBidReservePrice()Get minimum for contributions

Key events:

EventDescription
AuctionBidNew bid created
BidContributionMadeContribution added to existing bid
AuctionSettledAuction ended, winner determined
AuctionCreatedNew auction started
  1. Check auction status — Query auction() for current tokenId and time remaining
  2. Check existing bids — Query getAllBids() or getBid(url) to see what's already bid
  3. Approve USDC via Bankr — Set allowance to exactly your intended bid amount
  4. Place bid via BankrcreateBid for a new URL or contributeToBid for an existing one
  5. Monitor — Watch for outbids and contribute more if needed
  6. Settlement — Losing bids are refunded automatically after the auction settles
README.md

No README available.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

This skill uses **Bankr** for on-chain transaction execution. Install the bankr skill first: ``` https://github.com/BankrBot/moltbot-skills ``` Bankr handles wallet creation, USDC approvals, transaction signing, gas estimation, and confirmation. No private keys or wallet setup needed.

FAQ

How do I install qr-auction-bidder?

Run openclaw add @ss251/qr-auction-bidder in your terminal. This installs qr-auction-bidder into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/ss251/qr-auction-bidder. Review commits and README documentation before installing.