引言
比特币长期以来被视为“数字黄金”,其区块链主要记录简单的转账交易。然而,随着Ordinals协议的诞生,这一格局被彻底改变。2023年初,由Casey Rodarmor提出的Ordinals协议让每一枚聪(satoshi,比特币的最小单位)都有了唯一的身份标识,从此开发者可以在比特币网络上创建真正的原生数字资产。
这篇文章将作为你的Ordinals开发入门指南。我们会从基础概念讲起,搭建完整的开发环境,然后深入实战环节,手把手教你创建第一个比特币铭文并探索Runes代币协议。整个教程注重实操性,代码示例涵盖Windows、macOS和Linux三大平台。

第一部分:理解Ordinals协议的核心概念
1.1 什么是Ordinals?
Ordinals本质上是一套为比特币最小单位“聪”(简称sat)赋予唯一序号的方案。比特币总量为2100万个,每个比特币包含1亿聪,因此全网共有2100万亿聪。Ordinals协议按照“先进先出”的原则,根据聪被挖出的顺序为它们分配序号——最早挖出的聪获得最小序号,之后每挖出一个新区块,新产出的聪就按顺序获得下一个序号。
这个序号系统最巧妙的地方在于:它完全基于比特币原有的区块结构,不需要任何软分叉或硬分叉。只要矿工按规则打包交易,序号就自动被确定。更重要的是,当聪在钱包之间转移时,其序号不会改变,就像人民币上的冠字号码一样,具有永久性和可追溯性。
1.2 铭文(Inscription)的工作原理
“铭文”是Ordinals协议的核心功能。它允许用户将任意内容(文本、图片、音频、视频甚至HTML页面)嵌入到比特币交易中,并绑定到特定的聪上。这些内容存储在交易的见证数据(Witness Data)里,利用了比特币SegWit升级引入的见证折扣机制——存储在见证区的数据只按四分之一计算权重,这大大降低了铭刻大型内容的成本。
技术实现上,铭文采用了Taproot升级带来的灵活性。当创建铭文时,钱包会执行一个“提交-揭示”(Commit-Reveal)两阶段流程:第一步创建包含铭文内容哈希的Taproot输出;第二步在揭示交易中消费这个输出,将铭文内容公开上链。整个过程完全依赖比特币原生的脚本能力,不需要任何侧链或二层网络。
1.3 铭文与聪的关系
理解铭文与聪的关系至关重要。在Ordinals的世界里,每个铭文都绑定到一枚特定的聪上,但这枚聪不仅仅是铭文的载体——它本身就是铭文的一部分。当你想转移一个铭文时,实际上是在转移绑定该铭文的那枚聪。和普通比特币转账一样,你需要支付矿工手续费,但铭文内容会永久保存在区块链上,任何人都可以通过序号查询它的完整历史。
这种设计让Ordinals铭文具有了与以太坊NFT截然不同的特性:以太坊NFT依赖智能合约,合约故障或项目方跑路可能导致NFT消失;而比特币铭文共享比特币本身的安全性,只要比特币网络继续运行,铭文就永远存在。
第二部分:搭建Ordinals开发环境
2.1 环境要求
运行ord工具和比特币全节点对硬件有一定要求。建议准备至少150GB的可用磁盘空间(完整索引数据会随时间增长),以及8GB以上内存。固态硬盘能显著加快同步速度。ord工具本身使用Rust编写,需要Rust 1.79.0或更高版本编译,但通过预编译安装包安装则无需担心这个问题。
网络方面,比特币全节点需要持续连接网络以便同步新区块和广播交易。如果你位于网络受限地区,可能需要配置代理或使用VPN。
2.2 安装Bitcoin Core
Bitcoin Core是比特币网络的官方全节点实现,ord工具依赖它管理私钥和广播交易。
Windows平台安装步骤:
- 访问Bitcoin Core官方网站(bitcoincore.org)下载最新版本的Windows安装包
- 运行安装程序,选择安装路径(建议使用默认路径避免权限问题)
- 安装完成后,在比特币数据目录(通常位于
%APPDATA%\Bitcoin\)创建bitcoin.conf文件
macOS平台安装步骤:
bash
# 使用Homebrew安装
brew install bitcoin
安装完成后,在用户主目录创建配置文件:
bash
mkdir -p ~/.bitcoin
cat > ~/.bitcoin/bitcoin.conf << 'EOF'
server=1
txindex=1
rpcuser=bitcoinrpc
rpcpassword=your_secure_password_here
rpcport=8332
zmqpubhashtx=tcp://127.0.0.1:28332
zmqpubhashblock=tcp://127.0.0.1:28332
EOF
Linux平台安装步骤:
bash
# Ubuntu/Debian系统
sudo apt update
sudo apt install bitcoind
# 或从源码编译以获得最新版本
git clone https://github.com/bitcoin/bitcoin.git
cd bitcoin
./autogen.sh
./configure
make -j$(nproc)
sudo make install
配置文件位于~/.bitcoin/bitcoin.conf,添加相同的内容。
2.3 启动Bitcoin Core并同步区块
完成配置后,启动bitcoind并等待区块链同步。这个过程可能需要数小时到数天不等,取决于你的网络带宽和磁盘性能:
bash
# 后台启动bitcoind(带交易索引)
bitcoind -txindex -daemon
# 查看同步进度
bitcoin-cli getblockchaininfo
# 等待,直到blocks数量接近最新区块高度
bitcoin-cli getblockcount
同步期间可以继续安装ord工具,但ord的部分功能需要等待同步完成才能使用。
2.4 安装ord工具
ord是Ordinals协议的官方命令行工具,集成了索引器、区块浏览器和钱包功能。
通用安装方式(推荐):
bash
curl --proto '=https' --tlsv1.2 -fsLS https://ordinals.com/install.sh | bash
macOS Homebrew安装:
bash
brew install ord
从源码编译安装:
bash
# 确保已安装Rust工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
git clone https://github.com/ordinals/ord.git
cd ord
cargo build --release
cargo install --path . --locked
安装完成后验证版本:
bash
ord --version
2.5 启动ord服务
ord需要启动ord server作为后台服务,同时bitcoind也需要运行:
bash
# 终端1:确保bitcoind运行中
bitcoind -txindex -daemon
# 终端2:启动ord server
ord server
服务默认监听80端口,你可以通过浏览器访问本地区块浏览器。指定其他端口:
bash
ord server --http-port 8080
首次运行ord时会扫描比特币区块链构建索引,这个过程可能需要数小时。之后的启动会快很多,因为索引数据已被保存。
第三部分:创建和管理钱包
3.1 创建ord钱包
ord工具本身不管理私钥,而是与Bitcoin Core的钱包功能集成。创建钱包非常简单:
bash
ord wallet create
命令会输出助记词(Mnemonic),这是恢复钱包的唯一途径。务必将其安全保存,不要截图或存储在联网设备上:
json
{
"mnemonic": "dignity buddy actor toast talk crisp city annual tourist orient similar federal",
"passphrase": ""
}
3.2 使用多钱包和自定义配置
如果你需要管理多个钱包,或者ord server运行在不同端口,可以指定钱包名称和服务器地址:
bash
# 创建自定义名称的钱包
ord wallet --name my_wallet create
# 连接非默认的ord server
ord wallet --name my_wallet --server-url http://127.0.0.1:8080 receive
3.3 恢复钱包
ord钱包使用BIP39助记词标准,可以通过助记词恢复:
bash
ord wallet restore --from mnemonic
按照提示输入助记词,钱包将自动重建所有关联的聪和铭文。
3.4 获取收款地址
要接收聪(用于支付铭文手续费),使用接收命令生成地址:
bash
ord wallet receive
返回的地址用于接收比特币主网资产。如果是测试网环境,会自动使用相应的地址格式。
查看钱包交易历史:
bash
ord wallet transactions
列出所有铭文:
bash
ord wallet inscriptions
第四部分:创建你的第一个铭文
4.1 准备铭文内容
ord支持多种内容类型:图片(PNG、GIF、JPEG、WEBP)、文本、HTML、CSS、JavaScript,甚至视频(但需考虑链上存储成本)。内容越小,手续费越低。
创建简单的文本铭文:
bash
# 创建文本文件
echo "Hello, Bitcoin!" > inscription.txt
创建图片铭文(以PNG为例):
bash
# 确保图片格式为PNG/JPEG/GIF/WEBP
# 图片文件大小建议控制在100KB以内以节省手续费
cp /path/to/your/image.png ./inscription.png
4.2 理解手续费费率
铭文手续费由你设置的费率(fee rate)决定,单位是sats/vB(聪每虚拟字节)。费率越高,交易越快被矿工确认。在网络繁忙时,建议设置较高费率。
bash
# 查看当前推荐费率
bitcoin-cli estimatesmartfee 6
一般文本铭文设置1-5 sats/vB即可,图片铭文建议5-20 sats/vB。
4.3 铭刻内容
使用inscribe命令创建铭文:
bash
ord wallet inscribe --fee-rate 10 --file inscription.txt
ord会输出两笔交易的ID:commit交易(提交阶段)和reveal交易(揭示阶段),以及最终的铭文ID。格式为TXIDiN,其中TXID是揭示交易的哈希,N是铭文在该交易输出中的索引。
4.4 铭文创建的底层流程
理解铭文创建的技术细节有助于调试问题。整个过程分为两个交易:
Commit交易阶段:
- 钱包创建一个包含铭文内容哈希的Taproot脚本(P2TR类型)
- 将一定数量的聪(至少546 satoshi)发送到这个Taproot地址作为输入
- 这笔交易固定了铭文内容,但内容本身尚未公开
Reveal交易阶段:
- 钱包花费Commit交易的输出
- 在见证数据中包含完整的铭文内容
- 揭示交易被广播到比特币网络,内容正式上链
这种两阶段设计确保了铭文内容的隐私性——在Commit和Reveal之间,他人无法提前获知铭文内容。
4.5 查看和管理铭文
铭刻完成后,查看钱包中的所有铭文:
bash
ord wallet inscriptions
输出会显示每个铭文的ID、内容类型和当前所在位置。
发送铭文给其他人:
bash
ord wallet send --fee-rate 5 <接收方地址> <铭文ID>
ord wallet send会自动处理聪控制,确保铭文对应的聪被正确转移。
第五部分:深入理解Runes协议
5.1 Runes是什么?
Runes(符文协议)是Casey Rodarmor在Ordinals之后推出的另一个创新协议,专门用于在比特币上发行同质化代币(Fungible Tokens)。与BRC-20协议依赖链下索引器计算余额不同,Runes将代币余额直接记录在比特币的UTXO模型中,实现了真正的链上自治。
Runes于2024年4月比特币减半时正式上线,上线首日就占据了比特币网络68%的交易量,充分说明了社区对它的关注度。
5.2 Runes与BRC-20的关键区别
理解这两种协议的区别对于选择合适的方案至关重要:
| 特性 | BRC-20 | Runes |
|---|---|---|
| 数据存储 | 铭文(Witness) | OP_RETURN |
| 余额记录 | 链下索引器 | 链上UTXO |
| UTXO影响 | 大量垃圾UTXO | 最小化UTXO |
| 索引依赖 | 必须依赖第三方 | 可独立验证 |
| 发行复杂度 | 较高 | 较低 |
BRC-20将代币操作写成铭文,依赖外部索引器解析这些铭文并计算用户余额。这导致不同平台可能出现余额不一致的问题。而Runes直接利用比特币的UTXO模型——每个UTXO可以包含任意数量、任意种类的符文代币,花费UTXO时按照协议规则自动分配代币。
5.3 Runes的代币命名规则
Runes代币使用点分隔的大写字母命名,例如DOG•GO•TO•THE•MOON。为防止短名称被抢注,Runes设定了渐进式开放规则:
- 上线初期:仅允许13字符以上的名称
- 之后每约四个月:允许的最小长度减少1个字符
- 下一个减半周期:允许单字符名称
这种设计平衡了公平性和趣味性,让热门短名称需要等待一段时间才能被注册。
5.4 Runes的开发工具
目前主流的Runes开发工具包括:
UniSat Wallet
UniSat是Ordinals生态中最流行的钱包之一,已全面支持Runes。其铭刻工具支持新版链上合集,API能力也扩展到了Runes铸造和零手续费交易。
Magic Eden
作为NFT交易市场,Magic Eden最早支持Runes交易。其界面简洁、交易费用低廉,是目前最大的Runes交易市场。
GeniiData
专注于Ordinals生态的数据平台,提供Runes铸造和实时监控功能,适合关注铸造动态的开发者。
命令行工具
对于开发者而言,使用ord钱包也能进行基础的Runes操作:
bash
# 查看钱包中的符文余额
ord wallet runes
# 发送符文
ord wallet send --fee-rate 10 <地址> <符文数量>:<符文名称>
5.5 Runes的典型使用场景
Runes协议适合以下场景:
资产发行
想在比特币上发行自己的代币?Runes是比BRC-20更优的选择。它不依赖链下索引器,代币余额完全可通过比特币全节点独立验证。
Meme币发行
Runes的长名称规则天然适合Meme币文化。许多知名符文如DOG•GO•TO•THE•MOON、RSIC•GENESIS•RUNE都是基于Meme叙事的成功案例。
社区治理代币
项目方可以用符文代币作为治理凭证,持有者投票等链上操作完全在比特币主网完成,无需信任任何第三方索引服务。
第六部分:高级开发技巧
6.1 批量铭文创建
如果你需要创建系列NFT(如收藏卡牌),ord支持父子铭文(Parent-Child Inscription)功能。先创建父铭文获取其铭文ID,再创建子铭文时指定父铭文:
bash
# 1. 先创建父铭文
ord wallet inscribe --fee-rate 10 --file parent.json
# 2. 获取父铭文ID
ord wallet inscriptions
# 3. 创建子铭文,关联父铭文
ord wallet inscribe --fee-rate 10 --parent <PARENT_INSCRIPTION_ID> --file child.json
父子关系创建后不可修改,这保证了收藏关系的永久性。
6.2 自定义手续费策略
在网络拥堵时期,合理设置手续费可以节省大量成本:
bash
# 低优先级(适合时间不敏感的场景)
ord wallet inscribe --fee-rate 1 --file large_content.png
# 高优先级(网络繁忙时确保快速确认)
ord wallet inscribe --fee-rate 50 --file quick_inscription.txt
对于频繁操作,可以编写脚本批量处理:
bash
#!/bin/bash
# batch_inscribe.sh - 批量铭刻脚本
CONTENT_DIR="./images"
FEE_RATE=10
for file in "$CONTENT_DIR"/*; do
if [ -f "$file" ]; then
echo "铭刻: $file"
ord wallet inscribe --fee-rate $FEE_RATE --file "$file"
sleep 5 # 避免交易冲突
fi
done
6.3 铭文内容的最佳实践
文件大小控制
链上存储成本高,建议图片使用WebP格式压缩到50KB以下。如果需要高清素材,可以采用链上存缩略图、链下存原图的分层方案。
MIME类型设置
ord会自动检测常见文件类型,但也可以手动指定:
bash
ord wallet inscribe --fee-rate 10 --file "image.webp"
支持的类型包括image/png、image/gif、image/jpeg、image/webp、text/plain、text/html等。
HTML/CSS/JS组合
ord支持铭刻完整的HTML页面。你可以在单文件中包含CSS和JavaScript:
html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
body { background: #1a1a2e; color: #fff; }
</style>
</head>
<body>
<h1>我的比特币铭文</h1>
<script>
console.log("Hello from Bitcoin!");
</script>
</body>
</html>
6.4 调试和故障排除
铭文未显示
如果ord wallet inscriptions没有显示新创建的铭文,先检查交易是否确认:
bash
bitcoin-cli gettransaction <txid>
确认数≥1后,等待ord索引器同步完成。
钱包余额显示异常
确保ord server和bitcoind都正常运行。重启服务有时能解决同步问题:
bash
# 重启ord server
pkill ord
ord server
# 重启bitcoind
bitcoin-cli stop
bitcoind -txindex -daemon
手续费估算错误
如果实际手续费远高于预期,可能是铭文内容较大。检查内容大小:
bash
ls -lh inscription.png
铭文交易的手续费≈(内容大小÷4)×费率,了解这个公式有助于准确预估成本。
结语
Ordinals协议为比特币开发者打开了一扇新的大门。通过本教程,你已经掌握了从环境搭建到铭文创建的全流程,也了解了Runes代币协议的核心概念。这些工具和知识是进入比特币原生应用开发世界的起点。
值得强调的是,Ordinals和Runes都处于快速发展阶段,工具和协议规范可能会随着社区反馈而演进。建议持续关注官方文档和社区动态,及时更新你的开发环境。
比特币的稀缺性、安全性和去中心化特性为数字资产领域带来了独特的价值主张。当这些特性与Ordinals协议的创新结合,我们正在见证比特币从“数字黄金”向“数字资产平台”的演进。作为开发者,你有机会参与这场变革,创造真正永久存在、永不消失的数字作品。
现在开始行动吧——用ord创建你的第一个比特币铭文,开启这段令人兴奋的旅程。
免责声明:本文仅供技术教育和信息分享目的,不构成任何投资建议。加密货币市场波动剧烈,请谨慎决策。

发表回复