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

QELT Blockchain

by @prqelt

Query and interact with the QELT blockchain (Chain ID 770) via JSON-RPC. Use when asked about blocks, transactions, wallet balances, smart contract calls, ga...

Versionv0.1.0
Downloads942
TERMINAL
clawhub install qelt-blockchain

πŸ“– About This Skill


name: QELT Blockchain description: Query and interact with the QELT blockchain (Chain ID 770) via JSON-RPC. Use when asked about blocks, transactions, wallet balances, smart contract calls, gas estimation, event logs, nonces, or raw transaction submission. Covers QELT Mainnet (770) and Testnet (771). read_when: - Querying QELT blocks or transactions - Checking wallet balances on QELT - Estimating gas for a QELT transaction - Fetching event logs from QELT contracts - Submitting a pre-signed raw transaction to QELT - Looking up nonce or contract code on QELT homepage: https://docs.qelt.ai metadata: {"clawdbot":{"emoji":"⛓️","requires":{"bins":["curl"]}}} allowed-tools: Bash(qelt-blockchain:*)

QELT Blockchain Skill

QELT is an enterprise-grade EVM-compatible Layer-1 built on Hyperledger Besu 25.12.0 with QBFT consensus. Immediate finality in 5-second blocks. Zero base fee (~$0.002/tx).

Mainnet: Chain ID 770 Β· RPC https://mainnet.qelt.ai Testnet: Chain ID 771 Β· RPC https://testnet.qelt.ai Archive (historical + TRACE): https://archivem.qelt.ai

Safety

  • Never request, store, print, or transmit private keys or mnemonics.
  • Write operations accept pre-signed raw transactions only (hex starting with 0x).
  • For historical/TRACE queries, use https://archivem.qelt.ai.
  • Confirm mainnet vs testnet with the user before submitting transactions.
  • Do not invent block numbers, hashes, or balances β€” always fetch live data.
  • Endpoints

    | Purpose | URL | |---------|-----| | Primary RPC (Mainnet) | https://mainnet.qelt.ai | | Archive + TRACE (Mainnet) | https://archivem.qelt.ai | | Testnet RPC | https://testnet.qelt.ai | | Testnet Archive | https://archive.qelt.ai | | Block Explorer | https://qeltscan.ai | | Indexer API | https://mnindexer.qelt.ai |

    JSON-RPC Calls

    All calls are standard Ethereum JSON-RPC 2.0 POST requests.

    Get Latest Block Number

    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
    

    Parse result hex β†’ printf '%d\n' .

    Get Block

    # By number (hex): block 1000 = 0x3e8
    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x3e8",true],"id":1}'

    By hash

    curl -fsSL -X POST https://mainnet.qelt.ai \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xHASH",true],"id":1}'

    Get Balance

    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xADDRESS","latest"],"id":1}'
    

    Divide result (wei, hex) by 10^18 for QELT.

    Get Transaction

    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0xTX_HASH"],"id":1}'
    

    Get Transaction Receipt

    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xTX_HASH"],"id":1}'
    

    status: "0x1" = success Β· status: "0x0" = reverted.

    Call Smart Contract (Read-Only)

    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0xCONTRACT","data":"0xCALLDATA"},"latest"],"id":1}'
    

    Estimate Gas

    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{"from":"0xFROM","to":"0xTO","data":"0xDATA","value":"0x0"}],"id":1}'
    

    Get Event Logs

    Always bound the block range β€” querying from genesis ("0x0") scans the entire chain and is commonly rate-limited or timed out. Use a recent window (e.g., last 1,000 blocks) and page forward if you need more history.

    # First get the current block number
    LATEST=$(curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' | python3 -c "import sys,json; print(json.load(sys.stdin)['result'])")

    Then query a bounded recent range (last ~1000 blocks β‰ˆ 83 minutes on QELT)

    Clamp at 0 so the start block is never negative on a low-height chain (e.g. fresh testnet).

    FROM_HEX=$(python3 -c "latest=int('$LATEST',16); print(hex(max(0, latest - 1000)))")

    curl -fsSL -X POST https://mainnet.qelt.ai \ -H "Content-Type: application/json" \ -d "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getLogs\",\"params\":[{\"fromBlock\":\"$FROM_HEX\",\"toBlock\":\"latest\",\"address\":\"0xCONTRACT\",\"topics\":[\"0xTOPIC\"]}],\"id\":1}"

    For full historical log scans, use https://archivem.qelt.ai and page in chunks of ≀10,000 blocks to avoid timeouts.

    Get Contract Code

    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xCONTRACT","latest"],"id":1}'
    

    "0x" = EOA Β· anything longer = deployed contract.

    Get Nonce

    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0xADDRESS","latest"],"id":1}'
    

    Send Pre-Signed Transaction

    ⚠️ Write operation β€” confirm with user before executing.

    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xSIGNED_TX_HEX"],"id":1}'
    

    Returns the transaction hash on success.

    Chain Info

    # Chain ID
    curl -fsSL -X POST https://mainnet.qelt.ai \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'

    Gas price

    curl -fsSL -X POST https://mainnet.qelt.ai \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}'

    Network Reference

    | Parameter | Mainnet | Testnet | |-----------|---------|---------| | Chain ID | 770 (0x302) | 771 (0x303) | | RPC | https://mainnet.qelt.ai | https://testnet.qelt.ai | | Archive | https://archivem.qelt.ai | https://archive.qelt.ai | | Indexer | https://mnindexer.qelt.ai | https://tnindexer.qelt.ai | | Block Time | 5 seconds | 5 seconds | | Gas Limit | 50,000,000 | 50,000,000 | | Base Fee | 0 | 0 | | EVM | Cancun | Cancun | | Testnet Faucet | β€” | https://testnet.qeltscan.ai/faucet |

    MetaMask Config (Mainnet)

    {
      "chainId": "0x302",
      "chainName": "QELT Mainnet",
      "nativeCurrency": { "name": "QELT", "symbol": "QELT", "decimals": 18 },
      "rpcUrls": ["https://mainnet.qelt.ai"],
      "blockExplorerUrls": ["https://qeltscan.ai"]
    }
    

    Common Errors

    | Error | Cause | Fix | |-------|-------|-----| | execution reverted | Contract call failed | Check ABI encoding | | nonce too low | Stale nonce | Fetch fresh nonce with eth_getTransactionCount | | insufficient funds | No QELT for gas | Fund wallet or use testnet faucet | | unknown block | Archive query on validator | Use https://archivem.qelt.ai | | HTTP 429/503 | Rate limited | Exponential backoff |