为什么你的btc铭文导入其他钱包会“丢失”?

前言

许多朋友在接触ordinal之后,想利用助记词直接将自己的铭文导入到不同的btc钱包中。然而实际情况并不像eth上可以在不同的钱包之间查看自己的资产,导入助记词之后,往往会发现自己的铭文“丢失”了,今天我就来和大家揭示一下这背后的原理。

Btc钱包的分类

我们都知道掌握一个钱包的私钥就可以控制钱包的资产,数字钱包本质上是一个管理私钥(生成,存储和签名)的工具,钱包里并不保存资产,资产是存在在链上的。

根据包含的密钥是否彼此相关划分为两类钱包:非确定钱包和确定性钱包。

非确定钱包中的每个密钥都是从随机数中独立生成的,互相不关联。这种类型的钱包也被称为JBOK钱包(Just a Bunch Of keys)。此类钱包备份私钥会特别麻烦。

确定性钱包中,所有的密钥都来自单个主密钥,称为"种子(seed)",这种钱包中的所有密钥都是相互关联的。确定性钱包中使用了许多密钥派生的方法。最常用的派生方法使用的是树状结构,并称为分层确定性钱包或者HD钱包

 BIP-32

BIP-32用一句话来概括就是:避免管理一堆私钥而提出的分层确定性推导方案

确定性钱包的最高级形式是由BIP-32(Bitcoin Improvement Proposal,比特币改进协议)标准定义的HD钱包。HD钱包包含以树结构导出的密钥,父密钥可以导出一系列子密钥,每个子密钥可以导出一系列子孙密钥等等。如下图所示:

HD钱包除了便于用户管理钱包私钥之外,还有另外一个优势。比如可以使用子密钥的特定分支来接收传入的支付,使用另一个分支来接收支付时的零钱,我们可以从sparrow钱包中观察到这一点

BIP-44

BIP-44协议用一句话来概括:给BIP-32的分层路径定义规范

上述所讲的通过树状结构推导出来的密钥,通常用路径来表示,每个级别之间用“/”来表示,总计包含5个预设的树状层级的结构:

m / purpose' / coin_type' / account' / change / address_index

由主私钥衍生出来的私钥起始以“m”开头,由主公钥衍生的公钥起始以“M”开头。

purpose也是固定的,总是被设置成44。

**coin_type:**代表币种,0代表比特币,1代表比特币测试链,60代表以太坊。完整的代币列表地址:https://github.com/satoshilabs/slips/blob/master/slip-0044.md

**account:**代表当前账号的索引,从0开始

**change:**常量0用于表示收款地址,常量1表示找零地址

address_index: 地址的索引,从0开始,代表生成的第几个地址

我们以sparrow钱包中的任何一个钱包为例,与BIP-44稍有不同的是purpose被设定为86,表示的是“专门针对P2TR地址的派生密钥的定义"。

所以下面的派生路径表示的意思是"第二个钱包账户下的第4个P2TR收款地址"

BIP-39

BIP-39用一句话来概括就是:使随机数的种子备份更加友好

BIP-32可以让我们只保留一个随机数种子(通常是16进制),省去了备份一堆私钥的烦恼。但十六进制的种子看起来还是不够友好,于是BIP39提出了以助记词的方式来代替种子,用户只需要记住12或24个单词,然后通过算法将助记词推导回随机数种子。

所以该提案主要包括两个部分:生成助记词和将其转换为二进制种子

总结

综上所述,如果在不同钱包中导入助记词却找不到自己的铭文可能有以下两种情况:

1.各钱包之间密钥派生方法不同

2.派生路径设置的不对,需要切换到保存自己铭文的地址

在下一篇文章中,我将会在当前几款主流的ordinal钱包之间进行演示,欢迎添加下方微信,备注"btc铭文"进入免费交流群。

Subscribe to 熊猫撸白.nft
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.