比特币一个私钥可以生成几个地址?

2021-04-21 03:45:52 +08:00
 ling516

请问下比特币一个私钥可以生成几个地址?我看到有 1 开头和 3 开头的

如果同时向一个私钥的 2 个地址各发送 1 个比特币,那 2 个地址是各自都能查到 2 个比特币,还是 2 个地址各自只能查到 1 个比特币

621 次点击
所在节点    Bitcoin
8 条回复
frienmo
2021-04-21 20:29:30 +08:00
其实你看到的地址 内涵了(公约+包公约定格式)
所以一个私钥可以生产多个地址(基于不同格式)
所以 2 地址各自查到一个比特币
acess
2021-04-22 01:34:52 +08:00
一个私钥可以控制很多很多种地址。

一般来讲,不同的地址就是不同的地址。
acess
2021-04-22 01:39:41 +08:00
按理说,A 地址有币就是 A 地址有币,不会用 B 地址去查,结果却查到了 A 地址上的币。

(不过很显然,不同地址上的币是可以一起花出去的,毕竟比特币从一开始就推荐地址用一次就换一个,尤其是后来有了 HD 钱包,换地址后不需要重新备份私钥,只要备份好一个助记词种子就一劳永逸)

但是因为历史遗留问题,在极少见的情况下(比如中本聪的币,用了 P2PK 裸公钥输出)在这方面会存在一些混淆。
acess
2021-04-22 02:42:11 +08:00
中本聪那个时代我没经历过,不过从当时的官网软件截图来看,1 开头的地址(公钥哈希)只是考虑收款方不在线的时候才要用到的。如果收款方在线,就直接用 IP 地址从对方下载一个公钥回来,然后支付给这个公钥(而不是公钥哈希)。这个“付款给 IP 地址”的功能后来被删掉了。

不仅如此,那个时候挖矿得到的币,也大多放到这种“裸公钥输出”( P2PK )上,而不是现在常用的公钥哈希输出( P2PKH )上。

就比如 9 号区块,没记错的话这个区块挖到的币公认是中本聪的,中本聪后来用这些币发起第一笔比特币转账给 Hal Finney 。

你去不同的区块浏览器查 9 号区块,显示出来的样子是就不一样的,虽然表示的内容实际上是一样的。
blockchair . com 会显示 12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S 这个地址;
而 blockstream . info 和 btc . com 就不显示这个 1 开头的地址。

9 号区块的 coinbase 输出用的就是这种 P2PK 裸公钥输出,而不是现在通用的 P2PKH 公钥哈希输出。

如果继续查 12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S 这个地址的交易记录,不同区块浏览器显示的结果也不一样。不出意外的话,就是因为有的区块浏览器把 P2PK 和 P2PKH 都统计在内;而有的区块浏览器就只统计 P2PKH,不包括 P2PK 。

很多开发者都觉得,1 开头的地址就是 P2PKH 地址,只应该用来表示 P2PKH 输出,把它借用过来表示其他的东西是不对的,造成了混淆。但是毕竟这个“混淆”多年以前就一直这么干,现在要“纠正”反而还有点难受。毕竟,如果你一开始只知道 1 开头的 P2PKH 地址,它编码表示的是公钥哈希,从公钥哈希是无法逆推计算得到公钥的,只能扫描区·块·链账本才能找到哈希值匹配的公钥。
acess
2021-04-22 04:25:04 +08:00
P2PK 这个中本聪时代的梗其实相对不太重要……

楼主的问题,确实说来话长,我一写就刹不住车,新开了一个帖子:
/t/772332
acess
2021-04-22 05:08:21 +08:00
在 BTC 里面,一般而言(不去想 P2PK 这个历史包袱),不同的地址就是不同的地址。


考虑其他币种的话……

莱特币还有 M 开头的地址,表示的意思和 3 开头的地址一样,就是因为 3 开头的地址和比特币混淆了(),所以才改成 M 开头。这两种只是地址格式不一样,表示的内容是完全一模一样的,就是换了个编码方式,所以甚至还可以互相转换。不过很显然,这个转变有阵痛,而且也许很长很长时间都不能覆盖到所有人。

BCH 的 CashAddr 也是类似的情况。
acess
2021-04-22 05:18:06 +08:00
莱特币的 M 开头地址表示的是 P2SH,和比特币这边 3 开头的地址一样。原先两个币种 P2SH 都是 3 开头的地址,所以偶尔会出现 BTC 打到 LTC 地址(或反之)之类的错误……嗯,(据我所知)按理说出现这个情况,其实币没丢,只要私钥倒腾一下,从 LTC 钱包倒腾到 BTC 钱包(或反之)即可;不过像交易所充错地址之类情况,可能交易所就以各种理由拒绝找回了。

BCH 因为去掉了隔离见证(当初从 BTC 分叉出去就是为了抵制隔离见证),貌似还新加了脚本操作码,所以情况会更复杂,打错币种可能出现币被锁死或者“任何人都可以花”的情况。
ling516
2021-04-23 01:46:57 +08:00
@acess 谢谢大佬的讲解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX