猎聪
寻找稀有序数是困难但有回报的。拥有一个钱包,里面装满了散发着稀有和奇特聪的香气的 UTXO,这种感觉无与伦比。
序数是为聪(satoshi)编号的数字。每个聪都有一个序数,每个序数都对应一个聪。如果你想成为稀有聪的猎人,你应该认真阅读本章节的内容
准备工作
在开始之前,你应该需要做的一些事情
-
首先,你需要一个已同步的带有交易索引的 Bitcoin Core 节点。要开启交易索引,在命令行里使用
-txindex
:bitcoind -txindex
或者将以下内容放入你的 比特币配置文件:
txindex=1
启动它并等待其同步到链尖,此时以下命令应打印出当前的区块高度:
bitcoin-cli getblockcount
-
其次,你需要一个已同步的
ord
索引。-
从 ord 仓库 获取
ord
的副本。 -
运行
ord --index-sats server
。它应该会连接到你的比特币核心节点并开始索引。 -
一旦索引完成,保持服务器运行,并在一个单独的终端会话中提交新的
ord
命令。
-
-
第三,你需要一个包含你想要搜索的 UTXO 的钱包。
搜索稀有的序数
在一个Bitcoin Core的钱包里搜索稀有的序数
命令 ord wallet
只是比特币核心 RPC API 的一个封装,所以在比特币核心钱包中搜索稀有序数很容易。假设你的钱包名为 foo
:
-
加载你的钱包
bitcoin-cli loadwallet foo
-
显示钱包
foo
的 UTXO 中的任何稀有序数:ord --index-sats wallet --name foo sats
在非Bitcoin Core钱包里搜索稀有的序数Ordinals
命令 ord wallet
只是比特币核心 RPC API 的一个封装,所以要在非比特币核心钱包中搜索稀有序数,你需要将钱包的描述符导入到比特币核心中。
描述符 描述了钱包生成私钥和公钥的方式。
你应该只将钱包公钥的描述符导入到比特币核心中,而不是私钥。
如果你的钱包公钥描述符被泄露,攻击者将能够看到你的钱包地址,但你的资金将是安全的。
如果你的钱包私钥描述符被泄露,攻击者可以耗尽你钱包中的资金。
-
从你想要搜索稀有序数的 UTXO 所在的钱包中获取钱包描述符。它看起来会像这样:
wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)#csvefu29
-
创建一个名为 foo-watch-only 的仅观察钱包:
bitcoin-cli createwallet foo-watch-only true true
你可以给它起一个比 foo-watch-only 更好的名字!
-
加载
foo-watch-only
钱包:bitcoin-cli loadwallet foo-watch-only
-
将你的钱包描述符descriptors导入到 foo-watch-only 中:
bitcoin-cli importdescriptors \ '[{ "desc": "wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)#tpnxnxax", "timestamp":0 }]'
如果你知道你的钱包首次开始接收交易的 Unix 时间戳,你可以使用它来替代 "timestamp" 的值 0。这将减少比特币核心搜索你钱包 UTXO 所需的时间。
-
检查一切是否正常
bitcoin-cli getwalletinfo
-
显示你钱包里的稀有序数Ordinals
ord wallet sats
在导出多路径描述符的钱包里搜索稀有的序数Ordinals
一些描述符使用尖括号(例如 <0;1>
)在一个描述符中描述多个路径。比特币核心目前还不支持多路径描述符,所以你需要先将它们转换为多个描述符,然后将这些多个描述符导入到比特币核心中。
-
首先从你的钱包获取多路径描述符。它看起来会像这样:
wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/<0;1>/*)#fw76ulgt
-
创建接收地址路径的描述符:
wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)
以及找零地址路径的描述符:
wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/1/*)
-
获取并记下接收地址描述符的校验和,在这个例子中是
tpnxnxax
:bitcoin-cli getdescriptorinfo \ 'wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)'
{ "descriptor": "wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)#csvefu29", "checksum": "tpnxnxax", "isrange": true, "issolvable": true, "hasprivatekeys": false }
以及找零地址描述符的校验和,在这个例子中是
64k8wnd7
7:bitcoin-cli getdescriptorinfo \ 'wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/1/*)'
{ "descriptor": "wpkh([bf1dd55e/84'/0'/0']xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/1/*)#fyfc5f6a", "checksum": "64k8wnd7", "isrange": true, "issolvable": true, "hasprivatekeys": false }
-
加载你要导入描述符的钱包:
bitcoin-cli loadwallet foo-watch-only
-
现在将带有正确校验和的描述符导入到比特币核心中:
bitcoin-cli \ importdescriptors \ '[ { "desc": "wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/0/*)#tpnxnxax" "timestamp":0 }, { "desc": "wpkh([bf1dd55e/84h/0h/0h]xpub6CcJtWcvFQaMo39ANFi1MyXkEXM8T8ZhnxMtSjQAdPmVSTHYnc8Hwoc11VpuP8cb8JUTboZB5A7YYGDonYySij4XTawL6iNZvmZwdnSEEep/1/*)#64k8wnd7", "timestamp":0 } ]'
如果你知道你的钱包首次开始接收交易的 Unix 时间戳,你可以使用它来替代
"timestamp"
字段中的0
。这将减少比特币核心搜索你钱包 UTXO 所需的时间。 -
检查一切是否正常
bitcoin-cli getwalletinfo
-
显示你钱包里的稀有序数Ordinals
ord wallet sats
输出描述符
麻雀钱包
导航到 设置
标签,然后到 脚本策略
,按下编辑按钮以显示描述符。
转移Ordinals
ord
钱包支持通过使用 satoshi 的名称来转移特定的 satoshi。要发送名为 zonefruits
的 satoshi,可以执行以下操作:
ord wallet send <RECEIVING_ADDRESS> zonefruits --fee-rate 21
你也可以使用 bitcoin-cli
命令 createrawtransaction
、signrawtransactionwithwallet
和 sendrawtransaction
,但这种方法可能比较复杂,超出了本指南的范围。