bitcoin: 何为燃烧地址

2019-02-22 22:14:36 +08:00
 shooter

来自简书

btc address: 1FmWXNJT3jVKaHBQs2gAs6PLGVWx1zPPHf

如果你观察过很多的 btc 地址, 隐隐会发现有些规律: 长度很多是34位,好多是1 3 开头的, 字母排列杂乱无章.

如下都是合法的 btc 地址, 这些地址都有币的,而且数量都不少, 就已当前的(2018/08/21)btc 价格计算, 绝对是富得流油了.

3MWqbpfzxgojEAah6PMZoZPdUPUTuyTpan
1EdBvVAVP98zUsz2n8Pereop29y9fUFk2i
3Cbq7aT1tY8kMxWLbitaG7yT6bPbKChq64
3Nxwenay9Z8Lc9JBiywExpnEFiLp6Afp8v
18tTLso5jaa4XqyTQzo9S6mqhfCsgcufdh
1FeexV6bAHb8ybZjqQMjJrcCrHGW9sb6uF
1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx
1PnMfRF2enSZnR6JSexxBHuQnxG8Vo5FVK
3Kzh9qAqVWQhEsfQz7zEQL1EuSx5tyNLNS
1EBHA1ckUWzNKN7BMfDwGTx6GKEbADUozX
1LdRcdxfbSnmCYYNdeYpUnztiYzVfBEQeC
...

34位的长度是绝对的么,有特例么? 还真找到一个地址 1111111111111111111114oLvT2,长度只有27位, 而且这么多的111..., 感觉很优美. 一般 btc 地址的长度是34位, 也有33位, 最短的应该是26位.

燃烧地址

1111111111111111111114oLvT2 还有特殊的地方. 如果看 ta 的交易, 只有输入, 没有输出,什么意思呢? 只有别人给 ta 发币, ta 一分钱没花,只进不出,咋这抠门呢, 这是个貔貅啊.

我们看看 ta 的第一笔交易 id 2c637592a4b4a95cf4b19260730c66de540d7d3b14d8d352de591c5ee6eac0fc, 交易时间是 2010 年 8 月 10 号, 输出脚本是 OP_DUP OP_HASH160 0000000000000000000000000000000000000000 OP_EQUALVERIFY OP_CHECKSIG

输出脚本是个啥呢? 我们经常说, 谁有 btc 地址的私钥谁就能花费这些币, 私钥相当于钥匙, 输出脚本相当于锁, 你把私钥放入输出脚本中, 组成一个完整的脚本, 执行这个完整的脚本, 如果最后输出的是 True, 那么恭喜你, 你可以花费这些币.

我们把0000000000000000000000000000000000000000 叫做 hash160, 1111111111111111111114oLvT2就是 addr, hash160 可以转换为 addr.

你可以认为: addr 就是 hash160 的简化, addr 是对人更友好的一种表现方式, 就像语法糖一样.

执行输出脚本, 是私钥转化为 Hash160 的过程. 你提供的私钥转化成 Hash160_me, 如果与脚本里提前写好的 Hash160 一致, 你就可以动用这个地址的币了.

btc 地址的正常推导过程是: 私钥 ==>公钥 ==> Hash160 <==> 地址.

Hash160 就是没有规则的字符串,我们可以随便提供个 Hash160 值, 从半截腰上推导地址: Hash160 <==> 地址.

1111111111111111111114oLvT2很明显就是这种情况, 从半截腰上推导出来的地址, ta 的 hash160 是 000...000, 都是0,这是特意拼凑的,既然是从半截腰推导出来的,自然没人知道私钥. 由于 hash 运算的不可逆性, 此刻还无法推算出这个地址的私钥, 既然不知道私钥,就无法动用币,只能进不能出,成了一个"废地址",这样的地址叫燃烧地址, 即 burn address, 像燃料一样烧没了, 非常形象.

为什么还要往这种地址发送交易呢

1 减少币的流通量 2 土豪的心思不要猜

我们生成个 burn address

设定 hash160 = 1111111111111111111111111111111111111111, 最终得到地址12ZEw5Hcv1hTb6YUQJ69y1V7uhcoDz92PH. 这个地址好没个性啊,但是也有人打过币了, https://btc.com/12ZEw5Hcv1hTb6YUQJ69y1V7uhcoDz92PH

有没有可能找到私钥

存在这种可能, 不过需要巨大的算力来完成这个工作,这个可能太微小了. 如果有人找到了私钥, 燃烧地址就变成普通地址了.

如何手动生成 btc 地址

请看 https://www.jianshu.com/p/954e143e97d2, step3 是得到hash160_val, 如果你想通过 hash160_val 得到地址, 从 step4 开始计算就可以.

安全提示

虽然这些步骤经过了验证并没有发现问题, 但也仅供参考.

强烈建议不要自己生成 btc addres
强烈建议不要自己生成 btc addres
强烈建议不要自己生成 btc addres

请用信赖的工具来干这事
如果地址计算错误, 这个私钥并不能解开你的地址, 相当于你的 btc 丢了.

mastering bitcoin 已经给了我们教训. 同理 ethereum 也有 burn address 哦.

526 次点击
所在节点    Bitcoin
0 条回复

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

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

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

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

© 2021 V2EX