bitcoin: 何為燃燒地址

shooter發表於2019-01-31

來自 簡書

如果你觀察過很多的btc地址, 隱隱會發現有些規律:
長度是34位,好多是1 3 開頭的, 字母排列雜亂無章.

如下都是合法的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/12ZEw5Hcv1hTb6YUQJ69y1V7uh...

有沒有可能找到私鑰

存在這種可能, 不過需要巨大的算力來完成這個工作,這個可能太微小了. 如果有人找到了私鑰, 燃燒地址就變成普通地址了.

如何手動生成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哦.

本作品採用《CC 協議》,轉載必須註明作者和本文連結
www.jianshu.com/c/dd87e0b9cd3c

相關文章