Install
openclaw skills install qfcQFC blockchain interaction — wallet, faucet, chain queries, staking, epoch & finality, AI inference
openclaw skills install qfcAI agent skill for full QFC blockchain interaction
~/.openclaw/qfc-wallets/) using industry-standard keystore format (scrypt KDF, compatible with MetaMask/Geth)mintable: true for a token with mint/burn/owner support. Auto-verifies source code on QFC explorer after deployment.!help, !faucet, !balance, !portfolio, !tx, !block, !price, !info!)scripts/discord-bot-example.mjs for discord.js integration patterndryRun: true)safeFundAgent() — preflight + fund in one callsafeExecute() — preflight + arbitrary callback, blocks if policy deniedscripts/demo-*.mjsRun {baseDir}/scripts/setup.sh before first use. This installs dependencies and compiles TypeScript modules to {baseDir}/dist/.
Testnet RPC: https://rpc.testnet.qfc.network (chain ID: 9000)
Mainnet RPC: https://rpc.qfc.network (chain ID: 9001)
QFC_NETWORK — "testnet" (default) or "mainnet"QFC_RPC_URL — Override RPC endpoint| Module | Class | Description |
|---|---|---|
contract | QFCContract | Read/write/deploy smart contracts |
token | QFCToken | ERC-20 token operations + airdrop contract |
nft | QFCNFT | ERC-721 NFT operations |
swap | QFCSwap | AMM token swap / DEX + WQFC wrapper |
marketplace | QFCMarketplace | NFT marketplace (list/buy/sell) |
multicall | QFCMulticall | Batch contract reads in single RPC |
events | QFCEvents | Event subscriptions via polling |
agent | QFCAgent | AI agent registry — register, fund, revoke, session keys |
agent-wallet | AgentWalletClient | High-level agent wallet — session-key inference, lifecycle, safe execution |
inference | QFCInference | AI inference task submission & results |
provider | — | Shared provider creation & RPC helper |
All modules are compiled to {baseDir}/dist/.
| wallet | QFCWallet | Wallet create/import/balance/send/sign/save/load |
| keystore | QFCKeystore | Encrypted wallet persistence (scrypt keystore) |
| security | SecurityPolicy | Pre-transaction safety checks |
| faucet | QFCFaucet | Testnet token requests |
| chain | QFCChain | Block, transaction, receipt queries |
| network | QFCNetwork | Node info & network status |
| staking | QFCStaking | Validator & staking info |
| epoch | QFCEpoch | Epoch & finality info |
| discord | QFCDiscordBot | Discord bot command processor (no discord.js dependency) |
Create a new QFC wallet on testnet, save it with password "mypass", then request 10 QFC from the faucet
List my saved QFC wallets and load the first one with password "mypass"
What's the current QFC testnet status? Show me node info and latest block.
List all QFC validators and their contribution scores
Look up transaction 0xabc... on QFC testnet — show me the receipt
Create a new token called "My Token" with symbol MTK and 1 million supply on QFC testnet
Deploy an ERC-20 token named "QFC Rewards" (symbol: QREW) with 10 million supply
Create a mintable token called "Game Gold" with symbol GOLD and 0 initial supply
Mint 5000 GOLD tokens to address 0x1234...
Burn 100 of my GOLD tokens
What is the token at 0xabcd...? Show me name, symbol, and total supply.
Check my token balance for 0xabcd... token
Transfer 50 tokens (0xabcd...) to 0x5678...
Show me all token balances for address 0xfe913E97238B28abac7a55173f5878fD29147210
What tokens does my wallet hold on QFC testnet?
Show transfer history for token 0x603f0c43966f68dfb0737314cde8c4a46a0cc1f9
Show my recent transfers for the XHT token
Airdrop 100 XHT tokens to these addresses: 0x1111..., 0x2222..., 0x3333...
Send 10 QFC to each of these addresses: 0xaaaa..., 0xbbbb...
Deploy an airdrop contract on QFC testnet
Airdrop 100 XHT to 0x1111..., 200 XHT to 0x2222..., and 50 XHT to 0x3333... using airdrop contract 0xabcd...
Airdrop 500 GOLD tokens equally to these 10 addresses using the airdrop contract
Deploy an NFT collection called "QFC Punks" with symbol QPUNK
Mint an NFT to 0x1234... with metadata URI https://api.example.com/metadata/1
Who owns token #0 in NFT contract 0xabcd...?
Get the metadata URI for token #3 in the NFT collection at 0xabcd...
Transfer NFT #2 from my wallet to 0x5678... on contract 0xabcd...
Create a swap pool for tokens 0xAAA... and 0xBBB... on QFC testnet
Add liquidity: 1000 of token A and 500 of token B to pool 0xPOOL...
Swap 100 of token 0xAAA... for token B on pool 0xPOOL...
Get a quote: how much token B would I get for 50 of token A on pool 0xPOOL...?
Show pool info for 0xPOOL... — reserves, price, and LP supply
Remove all my liquidity from pool 0xPOOL...
Deploy WQFC contract on QFC testnet
Wrap 100 QFC into WQFC using contract 0xWQFC...
Swap 50 native QFC for token 0xAAA... via WQFC pool 0xPOOL...
Launch a new token called "Moon Coin" (MOON) with 1M supply, add 100k tokens and 500 QFC as initial liquidity
Deploy an NFT marketplace on QFC testnet with 2% platform fee
Deploy a marketplace with 5% fee sent to 0xFEE...
List NFT #3 from collection 0xNFT... for 10 QFC on marketplace 0xMKT...
Buy listing #0 on marketplace 0xMKT...
Show all active NFT listings on marketplace 0xMKT...
Check the platform fee on marketplace 0xMKT...
Deploy a Multicall3 contract on QFC testnet
Batch check balances of 5 tokens for my wallet using multicall 0xMC...
Is 0x1234...abcd a contract address on QFC testnet?
Read the name() and symbol() of ERC-20 contract 0xabcd...
Call the balanceOf method on contract 0xabcd... for address 0x1234...
Verify the source code for contract 0xabcd... on the QFC explorer
What AI models are available on QFC?
How much does it cost to run a text embedding on QFC?
Submit an inference task using qfc-embed-small with input "Hello world" and max fee 0.1 QFC
Check the status of inference task 0xdef456...
Show me QFC inference network statistics
Register an AI agent called "my-agent" with Transfer permission, 100 QFC daily limit, 10 QFC max per tx, and 5 QFC deposit
Fund agent "my-agent" with 50 QFC
Issue a session key for agent "my-agent" to address 0x1234... valid for 1 hour
Rotate the session key for agent "my-agent" from 0xOLD... to 0xNEW... with 2 hour validity
Revoke the session key at 0x1234... for agent "my-agent"
Is session key 0x1234... still valid?
Show info for agent "my-agent"
List all agents owned by 0xfe913E97238B28abac7a55173f5878fD29147210
Check if agent "my-agent" can spend 50 QFC (dry run, don't submit)
Safely fund agent "my-agent" with 20 QFC — check policy first, then submit if allowed
Run preflight check for agent "my-agent" with Transfer permission and 5 QFC amount
Create an autonomous trader agent: register "trader-1" with InferenceSubmit and Transfer permissions, 100 QFC daily limit, issue a session key, then submit a sentiment analysis inference using only the session key
Set up a content generator agent with InferenceSubmit-only permission and a 7-day session key
Run an AI oracle: register agent, estimate inference fee, run preflight check, then submit a query — all using the session key
Submit an inference task as agent "my-agent" using session key — model qfc-embed-small, input "Hello world"
Set up a QFC Discord bot using scripts/discord-bot-example.mjs as a template
Integrate QFCDiscordBot into my existing Discord bot to handle !balance and !faucet commands
| Error | Meaning | Action |
|---|---|---|
| INSUFFICIENT_FUNDS | Not enough QFC | Check balance, fund wallet |
| INVALID_ADDRESS | Bad recipient format | Verify 0x + 40 hex chars |
| NETWORK_ERROR | RPC connection failed | Check RPC URL, retry |
| NONCE_TOO_LOW | Transaction already sent | Wait for confirmation, retry |
| FAUCET_TESTNET_ONLY | Faucet used on mainnet | Switch to testnet |
| CALL_EXCEPTION | Contract call reverted | Check method name, args, and ABI |
| UNPREDICTABLE_GAS | Gas estimation failed | Contract may revert, check args |
| MODEL_NOT_FOUND | Unknown model ID | List models with getModels() |
| TASK_EXPIRED | Inference task timed out | Resubmit with higher fee |
| FEE_TOO_LOW | Max fee below minimum | Use estimateFee() to get base price |
| AGENT_NOT_FOUND | Unknown agent ID | Check agentId, list agents with listAgents() |
| SESSION_KEY_EXPIRED | Session key past expiry | Issue or rotate to a new session key |
| PREFLIGHT_DENIED | Policy check failed | Inspect preflight.reasons[] for details |
| DAILY_LIMIT_EXCEEDED | Amount exceeds remaining daily budget | Wait for daily reset or increase limit |
| PER_TX_LIMIT_EXCEEDED | Amount exceeds per-transaction cap | Split into smaller transactions |
| DEPOSIT_INSUFFICIENT | Agent deposit too low | Fund agent with fundAgent() |
| PERMISSION_DENIED | Agent lacks required permission | Re-register with correct permissions |