🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Qelt Contracts

by @prqelt

Verify, inspect, and retrieve verified Solidity smart contracts, ABIs, and compiler/EVM versions on the QELT blockchain using the Mainnet Indexer API.

Versionv0.1.0
Downloads886
TERMINAL
clawhub install qelt-contracts

πŸ“– About This Skill


name: QELT Contracts description: Verify and inspect smart contracts on the QELT blockchain using the Mainnet Indexer verification API. Use when asked to verify Solidity source code, check if a contract is verified, retrieve ABIs, list compiler versions, poll a verification job, or submit multi-file contracts (with OpenZeppelin imports). Rate limit: 10 submissions/hour. read_when: - Verifying a Solidity smart contract on QELT - Checking if a QELT contract address is already verified - Retrieving ABI or source code for a verified QELT contract - Listing supported Solidity compiler versions on QELT - Polling a contract verification job status homepage: https://mnindexer.qelt.ai metadata: {"clawdbot":{"emoji":"πŸ“‹","requires":{"bins":["curl"]}}} allowed-tools: Bash(qelt-contracts:*)

QELT Smart Contract Verification Skill

The QELT Mainnet Indexer provides production-grade contract verification via REST API. Supports 500+ Solidity versions, constructor arguments, library linking, multi-file contracts (75+ files), viaIR compilation, and automatic EVM version detection.

API Base: https://mnindexer.qelt.ai Rate Limit: 10 verification submissions per hour per IP Timeout per job: 600 seconds (10 minutes) Status polling: Unlimited β€” poll every 3–5 seconds freely

Safety

  • Do not submit source code containing private keys or secrets.
  • Verification is permanent β€” source becomes public once verified.
  • Always check if already verified before submitting (saves rate limit quota).
  • status: "completed" does NOT mean verified β€” always check result.verified === true.
  • Status polling is unlimited β€” do not re-submit while a job is still processing.
  • Procedure

    1. Check if Already Verified (Do This First)

    curl -fsSL "https://mnindexer.qelt.ai/api/v2/contracts/0xCONTRACT/verification"
    

    If "verified": true β†’ return existing source/ABI to user, no submission needed.

    2. Submit Single-File Contract

    curl -fsSL -X POST "https://mnindexer.qelt.ai/api/v1/verification/submit" \
      -H "Content-Type: application/json" \
      -d '{
        "address": "0xCONTRACT",
        "sourceCode": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n...",
        "compilerVersion": "0.8.20",
        "contractName": "MyContract",
        "optimizationUsed": true,
        "runs": 200,
        "evmVersion": "shanghai",
        "constructorArguments": "0x000...",
        "libraries": {}
      }'
    

    Response: { "success": true, "jobId": "uuid", "statusUrl": "/api/v1/verification/status/uuid" }

    3. Submit Multi-File Contract (with imports)

    For contracts using OpenZeppelin or any import statements:

    curl -fsSL -X POST "https://mnindexer.qelt.ai/api/v1/verification/submit-multi" \
      -H "Content-Type: application/json" \
      -d '{
        "address": "0xCONTRACT",
        "compilerVersion": "v0.8.17+commit.8df45f5f",
        "contractName": "MyToken",
        "optimizationUsed": true,
        "runs": 200,
        "viaIR": true,
        "evmVersion": "london",
        "mainFile": "contracts/MyToken.sol",
        "sourceFiles": {
          "contracts/MyToken.sol": "pragma solidity ^0.8.17; ...",
          "@openzeppelin/contracts/token/ERC20/ERC20.sol": "..."
        }
      }'
    

    4. Poll Status (Unlimited)

    curl -fsSL "https://mnindexer.qelt.ai/api/v1/verification/status/JOB_ID"
    

    States: pending β†’ processing β†’ completed / failed

    ⚠️ After "completed", always verify result.verified === true:

    {
      "status": "completed",
      "result": { "verified": true, "abi": [...] }
    }
    

    verified: false with status: "completed" = bytecode mismatch.

    5. Get Compiler Versions

    curl -fsSL "https://mnindexer.qelt.ai/api/v2/verification/compiler-versions"
    

    6. Get EVM Versions

    curl -fsSL "https://mnindexer.qelt.ai/api/v2/verification/evm-versions"
    

    EVM Version Selection

    | Solidity Range | EVM Version | |---------------|-------------| | 0.5.14 – 0.8.4 | istanbul | | 0.8.5 | berlin | | 0.8.6 – 0.8.17 | london | | 0.8.18 – 0.8.19 | paris | | 0.8.20 – 0.8.23 | shanghai | | 0.8.24+ | cancun |

    QELT Mainnet runs EVM Cancun β€” use cancun for Solidity 0.8.24+.

    Rate Limits

    | Endpoint | Limit | |----------|-------| | POST /api/v1/verification/submit | 10 req/hour per IP | | POST /api/v1/verification/submit-multi | 10 req/hour per IP | | GET /api/v1/verification/status/:jobId | Unlimited | | All other GET endpoints | Not rate limited |

    Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Retry-After.

    Common Errors

    | Symptom | Likely Cause | Fix | |---------|-------------|-----| | verified: false (completed) | Wrong compiler/optimization/args | Match exact deployment settings | | HTTP 429 | Rate limited | Wait Retry-After seconds (usually 3600) | | status: "failed" | Compilation error | Check message field | | Timeout at 600s | Large contract + viaIR | Normal; job still finishes |

    Best Practices

    1. Check before submit β€” use GET /api/v2/contracts/:address/verification first 2. Use /submit-multi for any contract with import statements 3. Include "viaIR": true if compiled with viaIR: true in hardhat config 4. Poll every 3–5 seconds β€” do not re-submit a pending job

    Developer Tools

    Hardhat Plugin: npm install --save-dev @qelt/hardhat-verify@latest

    npx hardhat qelt:verify --network qelt 0xCONTRACT_ADDRESS
    

    CLI Tool: npm install -g qelt-verify β†’ qelt-verify verify 0x... ./Contract.sol --compiler-version 0.8.20 --optimize

    πŸ“‹ Tips & Best Practices

    1. Check before submit β€” use GET /api/v2/contracts/:address/verification first 2. Use /submit-multi for any contract with import statements 3. Include "viaIR": true if compiled with viaIR: true in hardhat config 4. Poll every 3–5 seconds β€” do not re-submit a pending job