{
  "schemaVersion": "1.0",
  "item": {
    "slug": "qrcoin",
    "name": "Qrcoin",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/ktaesthetix/qrcoin",
    "canonicalUrl": "https://clawhub.ai/ktaesthetix/qrcoin",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/qrcoin",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=qrcoin",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/qrcoin"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/qrcoin",
    "agentPageUrl": "https://openagent3.xyz/skills/qrcoin/agent",
    "manifestUrl": "https://openagent3.xyz/skills/qrcoin/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/qrcoin/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "QR Coin Auction",
        "body": "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."
      },
      {
        "title": "Contracts (Base Mainnet)",
        "body": "ContractAddressQR Auction0x7309779122069EFa06ef71a45AE0DB55A259A176USDC0x833589fCD6eDb6E08f4c7c32D4f71b54bdA02913"
      },
      {
        "title": "How It Works",
        "body": "Each auction runs for a fixed period (~24h)\nBidders submit URLs with USDC (6 decimals — 1 USDC = 1000000 units)\nCreating a new bid costs ~11.11 USDC (createBidReserve)\nContributing to an existing bid costs ~1.00 USDC (contributeReserve)\nHighest bid wins; winner's URL is encoded in the QR code\nLosers get refunded; winners receive QR tokens"
      },
      {
        "title": "Auction Status Queries",
        "body": "Note: The examples below use https://mainnet.base.org (public RPC). You can substitute your own RPC endpoint if preferred."
      },
      {
        "title": "Get Current Token ID",
        "body": "Always query this first to get the active auction ID before bidding.\n\ncurl -s -X POST https://mainnet.base.org \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7309779122069EFa06ef71a45AE0DB55A259A176\",\"data\":\"0x7d9f6db5\"},\"latest\"],\"id\":1}' \\\n  | jq -r '.result' | xargs printf \"%d\\n\""
      },
      {
        "title": "Get Auction End Time",
        "body": "# First get the current token ID, then use it here\nTOKEN_ID=329  # Replace with result from currentTokenId()\nTOKEN_ID_HEX=$(printf '%064x' $TOKEN_ID)\n\ncurl -s -X POST https://mainnet.base.org \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7309779122069EFa06ef71a45AE0DB55A259A176\",\"data\":\"0xa4d0a17e'\"$TOKEN_ID_HEX\"'\"},\"latest\"],\"id\":1}' \\\n  | jq -r '.result' | xargs printf \"%d\\n\""
      },
      {
        "title": "Get Reserve Prices",
        "body": "# Create bid reserve (~11.11 USDC)\ncurl -s -X POST https://mainnet.base.org \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7309779122069EFa06ef71a45AE0DB55A259A176\",\"data\":\"0x5b3bec22\"},\"latest\"],\"id\":1}' \\\n  | jq -r '.result' | xargs printf \"%d\\n\" | awk '{print $1/1000000 \" USDC\"}'\n\n# Contribute reserve (~1.00 USDC)\ncurl -s -X POST https://mainnet.base.org \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7309779122069EFa06ef71a45AE0DB55A259A176\",\"data\":\"0xda5a5cf3\"},\"latest\"],\"id\":1}' \\\n  | jq -r '.result' | xargs printf \"%d\\n\" | awk '{print $1/1000000 \" USDC\"}'"
      },
      {
        "title": "Transactions via Bankr",
        "body": "QR Coin auctions require USDC transactions on Base. Use Bankr to execute these — Bankr handles:\n\nFunction signature parsing and parameter encoding\nGas estimation\nTransaction signing and submission\nConfirmation monitoring"
      },
      {
        "title": "Step 1: Approve USDC (One-Time)",
        "body": "Before bidding, approve the auction contract to spend USDC:\n\nApprove 50 USDC to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base"
      },
      {
        "title": "Step 2: Create a New Bid",
        "body": "To start a new bid for your URL:\n\nFunction: createBid(uint256 tokenId, string url, string name)\nContract: 0x7309779122069EFa06ef71a45AE0DB55A259A176\nCost: ~11.11 USDC\n\nImportant: Always query currentTokenId() first to get the active auction ID.\n\nExample prompt for Bankr:\n\nSend transaction to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base\ncalling createBid(329, \"https://example.com\", \"MyName\")"
      },
      {
        "title": "Step 3: Contribute to Existing Bid",
        "body": "To add funds to an existing URL's bid:\n\nFunction: contributeToBid(uint256 tokenId, string url, string name)\nContract: 0x7309779122069EFa06ef71a45AE0DB55A259A176\nCost: ~1.00 USDC per contribution\n\nExample prompt for Bankr:\n\nSend transaction to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base\ncalling contributeToBid(329, \"https://grokipedia.com/page/debtreliefbot\", \"MerkleMoltBot\")"
      },
      {
        "title": "Function Selectors",
        "body": "FunctionSelectorParameterscurrentTokenId()0x7d9f6db5—auctionEndTime(uint256)0xa4d0a17etokenIdcreateBidReserve()0x5b3bec22—contributeReserve()0xda5a5cf3—createBid(uint256,string,string)0xf7842286tokenId, url, namecontributeToBid(uint256,string,string)0x7ce28d02tokenId, url, nameapprove(address,uint256)0x095ea7b3spender, amount"
      },
      {
        "title": "Error Codes",
        "body": "ErrorMeaningSolutionRESERVE_PRICE_NOT_METBid amount below minimumCheck reserve pricesURL_ALREADY_HAS_BIDURL already has a bidUse contributeToBid insteadBID_NOT_FOUNDURL doesn't have existing bidUse createBid insteadAUCTION_OVERCurrent auction has endedWait for next auctionAUCTION_NOT_STARTEDAuction hasn't begunWait for auction to startINSUFFICIENT_ALLOWANCEUSDC not approvedApprove USDC first"
      },
      {
        "title": "Typical Workflow",
        "body": "Query currentTokenId() — Get the active auction ID\nCheck auction status — Verify time remaining\nApprove USDC — One-time approval for the auction contract\nDecide action:\n\nNew URL: Use createBid (~11.11 USDC)\nSupport existing URL: Use contributeToBid (~1.00 USDC)\n\n\nMonitor — Watch for outbids and contribute more if needed\nClaim — Winners receive QR tokens; losers get refunds"
      },
      {
        "title": "Links",
        "body": "Platform: https://qrcoin.fun\nAuction Contract: BaseScan\nUSDC on Base: BaseScan"
      },
      {
        "title": "Tips",
        "body": "Start small: Contribute to existing bids (~1 USDC) to learn the flow\nCheck timing: Auctions have fixed end times; plan accordingly\nMonitor bids: Others can outbid you; watch the auction\nUse Bankr: Let Bankr handle transaction signing and execution\nSpecify Base: Always include \"on Base\" when using Bankr\n\n💡 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."
      }
    ],
    "body": "QR Coin Auction\n\nParticipate 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.\n\nContracts (Base Mainnet)\nContract\tAddress\nQR Auction\t0x7309779122069EFa06ef71a45AE0DB55A259A176\nUSDC\t0x833589fCD6eDb6E08f4c7c32D4f71b54bdA02913\nHow It Works\nEach auction runs for a fixed period (~24h)\nBidders submit URLs with USDC (6 decimals — 1 USDC = 1000000 units)\nCreating a new bid costs ~11.11 USDC (createBidReserve)\nContributing to an existing bid costs ~1.00 USDC (contributeReserve)\nHighest bid wins; winner's URL is encoded in the QR code\nLosers get refunded; winners receive QR tokens\nAuction Status Queries\n\nNote: The examples below use https://mainnet.base.org (public RPC). You can substitute your own RPC endpoint if preferred.\n\nGet Current Token ID\n\nAlways query this first to get the active auction ID before bidding.\n\ncurl -s -X POST https://mainnet.base.org \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7309779122069EFa06ef71a45AE0DB55A259A176\",\"data\":\"0x7d9f6db5\"},\"latest\"],\"id\":1}' \\\n  | jq -r '.result' | xargs printf \"%d\\n\"\n\nGet Auction End Time\n# First get the current token ID, then use it here\nTOKEN_ID=329  # Replace with result from currentTokenId()\nTOKEN_ID_HEX=$(printf '%064x' $TOKEN_ID)\n\ncurl -s -X POST https://mainnet.base.org \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7309779122069EFa06ef71a45AE0DB55A259A176\",\"data\":\"0xa4d0a17e'\"$TOKEN_ID_HEX\"'\"},\"latest\"],\"id\":1}' \\\n  | jq -r '.result' | xargs printf \"%d\\n\"\n\nGet Reserve Prices\n# Create bid reserve (~11.11 USDC)\ncurl -s -X POST https://mainnet.base.org \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7309779122069EFa06ef71a45AE0DB55A259A176\",\"data\":\"0x5b3bec22\"},\"latest\"],\"id\":1}' \\\n  | jq -r '.result' | xargs printf \"%d\\n\" | awk '{print $1/1000000 \" USDC\"}'\n\n# Contribute reserve (~1.00 USDC)\ncurl -s -X POST https://mainnet.base.org \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x7309779122069EFa06ef71a45AE0DB55A259A176\",\"data\":\"0xda5a5cf3\"},\"latest\"],\"id\":1}' \\\n  | jq -r '.result' | xargs printf \"%d\\n\" | awk '{print $1/1000000 \" USDC\"}'\n\nTransactions via Bankr\n\nQR Coin auctions require USDC transactions on Base. Use Bankr to execute these — Bankr handles:\n\nFunction signature parsing and parameter encoding\nGas estimation\nTransaction signing and submission\nConfirmation monitoring\nStep 1: Approve USDC (One-Time)\n\nBefore bidding, approve the auction contract to spend USDC:\n\nApprove 50 USDC to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base\n\nStep 2: Create a New Bid\n\nTo start a new bid for your URL:\n\nFunction: createBid(uint256 tokenId, string url, string name) Contract: 0x7309779122069EFa06ef71a45AE0DB55A259A176 Cost: ~11.11 USDC\n\nImportant: Always query currentTokenId() first to get the active auction ID.\n\nExample prompt for Bankr:\n\nSend transaction to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base\ncalling createBid(329, \"https://example.com\", \"MyName\")\n\nStep 3: Contribute to Existing Bid\n\nTo add funds to an existing URL's bid:\n\nFunction: contributeToBid(uint256 tokenId, string url, string name) Contract: 0x7309779122069EFa06ef71a45AE0DB55A259A176 Cost: ~1.00 USDC per contribution\n\nExample prompt for Bankr:\n\nSend transaction to 0x7309779122069EFa06ef71a45AE0DB55A259A176 on Base\ncalling contributeToBid(329, \"https://grokipedia.com/page/debtreliefbot\", \"MerkleMoltBot\")\n\nFunction Selectors\nFunction\tSelector\tParameters\ncurrentTokenId()\t0x7d9f6db5\t—\nauctionEndTime(uint256)\t0xa4d0a17e\ttokenId\ncreateBidReserve()\t0x5b3bec22\t—\ncontributeReserve()\t0xda5a5cf3\t—\ncreateBid(uint256,string,string)\t0xf7842286\ttokenId, url, name\ncontributeToBid(uint256,string,string)\t0x7ce28d02\ttokenId, url, name\napprove(address,uint256)\t0x095ea7b3\tspender, amount\nError Codes\nError\tMeaning\tSolution\nRESERVE_PRICE_NOT_MET\tBid amount below minimum\tCheck reserve prices\nURL_ALREADY_HAS_BID\tURL already has a bid\tUse contributeToBid instead\nBID_NOT_FOUND\tURL doesn't have existing bid\tUse createBid instead\nAUCTION_OVER\tCurrent auction has ended\tWait for next auction\nAUCTION_NOT_STARTED\tAuction hasn't begun\tWait for auction to start\nINSUFFICIENT_ALLOWANCE\tUSDC not approved\tApprove USDC first\nTypical Workflow\nQuery currentTokenId() — Get the active auction ID\nCheck auction status — Verify time remaining\nApprove USDC — One-time approval for the auction contract\nDecide action:\nNew URL: Use createBid (~11.11 USDC)\nSupport existing URL: Use contributeToBid (~1.00 USDC)\nMonitor — Watch for outbids and contribute more if needed\nClaim — Winners receive QR tokens; losers get refunds\nLinks\nPlatform: https://qrcoin.fun\nAuction Contract: BaseScan\nUSDC on Base: BaseScan\nTips\nStart small: Contribute to existing bids (~1 USDC) to learn the flow\nCheck timing: Auctions have fixed end times; plan accordingly\nMonitor bids: Others can outbid you; watch the auction\nUse Bankr: Let Bankr handle transaction signing and execution\nSpecify Base: Always include \"on Base\" when using Bankr\n\n💡 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."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ktaesthetix/qrcoin",
    "publisherUrl": "https://clawhub.ai/ktaesthetix/qrcoin",
    "owner": "ktaesthetix",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/qrcoin",
    "downloadUrl": "https://openagent3.xyz/downloads/qrcoin",
    "agentUrl": "https://openagent3.xyz/skills/qrcoin/agent",
    "manifestUrl": "https://openagent3.xyz/skills/qrcoin/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/qrcoin/agent.md"
  }
}