来自简书
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 哦.
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于