随着 区块链可扩展性 与 智能合约 的快速发展,Qtum 将比特币的 UTXO 模型与以太坊虚拟机的灵活性无缝整合,推出了更符合开发者需求的 QRC20 与 QRC721 代币标准。本文用通俗的语言拆解两者的技术细节、使用场景,并手把手教你如何在 Qtum 主网或测试网上创建属于自己的代币。
在开始之前,快速给出一组核心关键词,方便你迅速抓住要点:
QRC20、QRC721、Qtum 代币标准、智能合约、NFT、代币开发、区块链开发、UTXO+EVM 混合架构、代币转账、部署指南。它们会在下文反复出现,但绝不会“堆”得让人头疼。
为什么以太坊需要统一标准?Qtum 也是如此
想象一座只有一条商业街的小镇,却流通着 5 种互相不能兑换的货币。顾客和商家都会崩溃。2016 年以前,以太坊生态就处于这种“处处私币”的尴尬境地。开发者猛然发现,每个 DApp 都自立门户,“代币互操作性”成为燃眉之急。于是 ERC20、ERC721 等标准应运而生。
Qtum 借镜以太坊,把问题提前一步解决:与其重复造轮子,不如直接移植经过实战考验的 ERC 标准,同时在底层改用 UTXO 结算,保证安全与并发性能。最终诞生 QRC20(对应 ERC20)、QRC721(对应 ERC721)及后续 QRC1155。今天先聊 QRC20 和 QRC721。
QRC20:Qtum 上的同质化代币全权文档
标准定义
QRC20 ≈ ERC20,100% 代码级兼容。以下九个函数与三个可选字段构成了代币的 DNA:
- 函数:
totalSupply、balanceOf、transfer、transferFrom、approve、allowance - 字段:Token Name(可选)、Symbol(可选)、Decimals(0–18,可选)
三步完成一次转账
查询余额:
qtum-cli callcontract \ "${TOKEN_CONTRACT_ADDRESS}" \ 70a08231$(to32bytesArg ${userAddress})在返回 JSON 的
executionResult.output行即可看到余额。发起提币:
qtum-cli sendtocontract \ "${TOKEN_CONTRACT_ADDRESS}" \ a9059cbb$(to32bytesArg ${userAddress})$(to32bytesArg ${amount}) \ 0 \ ${DEFAULT_GAS_LIMIT} ${DEFAULT_GAS_PRICE} ${MAIN_QRC_ADDRESS}该命令直接返回交易哈希 txid。
监听充值/提现事件:
qtum-cli searchlogs \ ${STARTING_BLOCK} 999999999 \ '["${TOKEN_CONTRACT_ADDRESS}"]' \ '{"topics":["ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]}'通过
event Transfer(address _from, address _to, uint256 _value)实时追踪链上流水。
👉 如何最快 3 分钟读完官方文档并跑通整套流程?
一键生成充值地址
与普通 Qtum 地址复用,无需新私钥:
qtum-cli getnewaddress案例演练:用五分钟发一个 STUDY 测试币
- 切换到 Qtum 测试网
安装依赖:
git clone https://github.com/qtumproject/qrc20-token-template && cd qrc20-token-template npm install- 编辑
contracts/STUDY.sol,把名字和符号改成STUDY,精度 18,总量 100 万。 - 用 Solar 部署:
solar deploy contracts/STUDY.sol '["STUDY","STUDY"]' --qtum_rpc=http://user:[email protected]:13889 - 拿到合约地址,立即呼叫
transfer给自己钱包地址。恭喜,你拥有了 Qtum 生态的第一枚学习纪念币!
QRC721:NFT 一样能在 UTXO 上“随心铸造”
核心函数拆解
QRC721 本质是 ERC721 的 Qtum 翻译版。它用非同质化属性赋予每个 Token ID 唯一意义:
ownerOf(tokenId):一查便知道 NFT 持有者。approve(address,uint256):授权指定地址代为管理。transfer(to,tokenId)&takeOwnership(tokenId):链上所有权交割。- (可选)
tokenOfOwnerByIndex(owner,index):批量列举某位用户的所有 NFT,便于前端渲染头像墙。
部署步骤
启动测试网节点
Qtum-Qt -testnet -server -rpcuser=user -rpcpassword=pass -rpcport=13889安装依赖
git clone https://github.com/qtumproject/QRC721Token && cd QRC721Token npm install用 Solar 发射
solar deploy contracts/QRC721.sol '["MyArt","ART"]' \ --qtum_rpc=http://user:[email protected]:13889成功后在
solar.development.json里记下address与txid。
👉 想用海量 NFT 做一场链上艺术展?先在这把合约调通再说!
轻松避坑的 6 个高频问答
Q1:QRC20 代币转账成功却没到账?
A:最常见是 gasPrice 设得太低。测试网建议 40 UTXO/kB,主网则参考实时 Qtum Gas 站数据,宁可多给一点,别卡在排队池。
Q2:如何在浏览器监测转账状态?
A:把 txid 直接粘到 Qtum 公开浏览器(Qtum Explorer 或 Q검等)查询确认数,当确认数 ≥1 即可视为到账。
Q3:QRC721 的 Token ID 可以重复吗?
A:不能。如果合约允许重复铸造,那就违背了 唯一性 核心原则,前端市场也无法识别正确藏品。
Q4:有没有一键图形化工具?
A:Qtum Qt 钱包提供 UI 合约交互;更复杂的批量管理可用 Solar CLI + 自定义脚本,灵活度更高。
Q5:主网真钱操作时该注意哪些坑?
A:
- 预先准备 1~2 个 Qtum 主网测试地址,内部互转磨合流程。
- 做好私钥冷备份,不截图、不放网盘,最好手抄两份。
- gasLimit 别省,留 250000~400000。值越大越省心,多余会自动退回。
Q6:能在同一笔交易里同时调 QRC20 transfer 和 QRC721 transfer 吗?
A:这两个标准互不干扰。你可以写一个自定义路由合约,把用户输入转给两个子合约,实现 原子化交换。但需自行审计多签风险。
小洞察:UTXO vs 账户模型混合带来的三重优势
- 并行执行:UTXO 让每一笔代币转账天然并行,区块吞吐更高。
- 黑客门槛:批量双花极难实现;除非掌握过半算力,否则无法同时破坏大量交易。
- Gas 计费透明:主链采用比特币式 手续费竞标,与 EVM Gas 单位分离,开发者可以更好地预测发行成本。
写在下一篇之前的伏笔
了解了 QRC20 同质化代币 与 QRC721 非同质化代币 之后,Part 2 将聚焦 QRC1155——一个能让你单合约同时管理多发币 + 多 NFT 的“瑞士军刀”。它会进一步降低开发门槛,尤其在游戏、票务、链游道具批量空投等高频场景内大放异彩。
抓紧把今天学的流程在测试网跑通吧,等到 QRC1155 上台,你就能无缝 升级合约模版、共享底层数据,并把过去 QRC20/QRC721 的宝贵经验原封不动迁移过去。
无论你是创业者、艺术家还是开发者,Qtum 都给你铺好了一条平滑的通道。现在,轮到你上场“铸”造未来了!