开发者文档

技术文档

深入了解 Atomicals 协议、ARC-20 标准和 Quark 代币的技术架构

系统架构

Atomicals 协议的核心组件和数据流

ARC-20 代币生命周期

部署

定义代币参数

铸造

创建代币 UTXO

转移

UTXO 交易

验证

链上确认

UTXO 模型

比特币使用 UTXO (Unspent Transaction Output) 模型管理资产。 每个 UTXO 代表一定数量的比特币,只能被完整消费。

// UTXO 结构示例 { "txid": "abc123...", "vout": 0, "value": 10000, // 聪 "scriptPubKey": "..." }

染色币原理

ARC-20 通过"染色"特定聪来创建代币。被染色的聪携带额外的元数据, 定义了代币的属性和数量。

// 染色币示例 { "satoshi": 1, "atomical_id": "9125f03...", "ticker": "QUARK", "amount": 1000 }

Atomicals 协议细节

核心协议规范和数据结构

Atomical ID 生成

每个 Atomical 都有唯一的标识符,由铸造交易的 txid 和输出索引组成:

// Atomical ID 格式 atomical_id = txid + "i" + vout_index // 示例 "9125f03bcf9325f6071762b9aee00b461a0b43ed157c336e2e89e07f47ea6f66i0"

这种格式确保了全球唯一性,因为比特币交易 ID 本身就是唯一的。

代币部署参数

ARC-20 代币部署需要定义以下参数:

{ "$ticker": "QUARK", // 代币符号 "$max_supply": 10000000000, // 最大供应量 "$mint_amount": 1000, // 每次铸造数量 "$mint_height": 809080, // 开始区块高度 "$max_mints": 10000000, // 最大铸造次数 "$bitwork": "abc" // 可选 PoW 前缀 }
转移交易结构

ARC-20 代币转移遵循比特币 UTXO 模型:

// 转移交易 { "inputs": [ { "txid": "prev_tx...", "vout": 0, "atomical": { "ticker": "QUARK", "amount": 1000 } } ], "outputs": [ { "address": "bc1q...", "value": 600, // 转移 600 QUARK }, { "address": "bc1q...", // 找零 "value": 400 } ] }

关键规则:第一个输出接收第一个输入的 Atomical, 依此类推(先进先出原则)。

Bitwork (工作量证明)

Bitwork 是 Atomicals 协议的可选 PoW 机制,用于公平分发代币:

// Bitwork 要求示例 { "bitwork": "7777" // 交易 ID 必须以 "7777" 开头 } // 有效交易 ID 示例 "7777abc123..." // ✓ 有效 "1234abc123..." // ✗ 无效

Bitwork 字符越多,难度越高。这模拟了比特币的挖矿机制, 确保代币公平分发给愿意投入计算资源的参与者。

Realm 命名系统

Realm 是 Atomicals 的去中心化域名系统,类似 DNS:

// Realm 注册 { "$realm": "quark", "$subrealm": "wallet" } // 完整 Realm 地址 +quark.wallet

Realm 可用于人类可读的比特币地址、网站托管、 数字身份等应用。

API 接口

如何与 Atomicals 协议交互

Atomicals CLI

官方命令行工具,用于铸造、查询和管理 Atomicals

# 安装 npm install -g atomicals-js # 查询代币信息 atomicals get-ticker QUARK # 铸造代币 atomicals mint-dft QUARK --satsbyte 10
GitHub 仓库

Atomicals Market API

第三方市场 API,用于获取代币数据和市场信息

// API 端点 GET /api/v1/arc20/ticker/{ticker} GET /api/v1/arc20/holders/{ticker} GET /api/v1/arc20/market/listings // 响应示例 { "ticker": "QUARK", "total_supply": 10000000000, "holders": 5000 }
API 文档

集成示例:查询 QUARK 余额

const getQuarkBalance = async (address) => { const response = await fetch( `https://api.atomicalmarket.com/v1/address/${address}/arc20` ); const data = await response.json(); const quark = data.find(t => t.ticker === 'QUARK'); return quark ? quark.balance : 0; }; // 使用 const balance = await getQuarkBalance('bc1q...'); console.log(`QUARK 余额: ${balance}`);

安全最佳实践

使用 ARC-20 代币时的重要注意事项

⚠️

UTXO 选择

必须使用支持 UTXO 选择的钱包。 普通比特币钱包可能会将 ARC-20 代币作为手续费发送。

  • ✓ Wizz Wallet
  • ✓ Sparrow Wallet
  • ✗ 普通交易所钱包
🔐

私钥安全

ARC-20 代币的安全性与比特币私钥直接相关。 失去私钥 = 永久失去代币。

  • 离线存储助记词
  • 使用硬件钱包
  • 定期备份

验证交易

发送前务必确认 UTXO 内容。 检查输入和输出,确保代币流向正确。

  • 核对接收地址
  • 确认代币数量
  • 检查手续费设置

更多文档

深入学习 Atomicals 协议