V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shooter
V2EX  ›  Bitcoin

bitcoin: 何为燃烧地址

  •  
  •   shooter · 2019-02-22 22:14:36 +08:00 · 688 次点击
    这是一个创建于 2125 天前的主题,其中的信息可能已经有所发展或是发生改变。

    来自简书

    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 是对人更友好的一种表现方式, 就像语法糖一样.

    image

    执行输出脚本, 是私钥转化为 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 哦.

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5327 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:11 · PVG 17:11 · LAX 01:11 · JFK 04:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.