每個加密貨幣交易者都曾經歷過從一個錢包地址向另一個地址發送資金的焦慮。首先你要複製一長串包含字母和數字的字符,然後至少反覆檢查5次以防止發錯地址。
相信很多人都因此產生疑問,這麼長又這麼複雜的地址真的有必要嗎?
這個對於大多數比特幣愛好者來說非常熟悉的地址格式問題正在面臨挑戰,即一個更加簡單的方案:可讀地址。
科技公司IOV推出了一個區塊鏈命名服務,用戶可以通過輸入公鑰來註冊一個可讀地址。舉個例子:
將地址1Afh17fvY9Co2kja9fl24DbFX57j803gw5轉變為john*iov.value
該公司認為這類新地址更短,而且方便非技術人員管理,因為這看起來更像是郵箱地址。該公司CTO表示:
加密貨幣實現大規模普及的主要問題之一就在於發送交易的困難。對於真正的終端用戶來說,區塊鏈平臺並沒有解決用戶體驗問題,尤其是錢包地址。
在比特幣誕生早期,你可以通過類似104.25.248.32 這樣的IP地址發送交易。這種方法很方便,省去了公鑰和地址的處理過程。不久之後,比特幣開發者就意識到這種交易發送方式很可能遭到嚴重的中間人攻擊(MITM)[1],因此他們決定棄用這種方法。
這件比特幣軼事現在看來很有歷史價值,同時還說明了地址的意義:這不是一個非常特殊的東西,也不會一成不變。它是一種收發區塊鏈交易所需用到的字符,就像SWIFT地址一樣。
然而,SWIFT地址是由銀行等中央機構分配的,但區塊鏈地址是真實存在的。每個區塊鏈地址可能在錢包找到它之前就已經存在,因為區塊鏈地址是數學運算產生的結果。
比特幣禁用Pay to IP的方法之後,P2PKH就成了比特幣地址的新標準。比特幣地址通常都是這樣的:
1K31KZXjcochXpRhjH9g5MxFFTHPi2zEXb
一個標準的P2PKH地址由34個字符組成,並且是1開頭的。P2PKH的全稱是“Pay To Public Key Hash”,這就意味著你是“支付給公鑰的哈希”。對於初學者來說,這聽起來似乎非常複雜,那麼我們就從構建區塊鏈地址開始說起。
每個錢包軟件都可以創建一個P2PKH地址,或者說你想要多少地址都可以。這不是什麼複雜的事,只是一些隨機字符的組合。
首先,你的錢包會通過收集熵來生成一個ECDSA私鑰。ECDSA是比特幣地址所需的核心加密算法。這是一種非對稱簽名算法,即你可以用私鑰對信息進行簽名,然後用公鑰驗證簽名的真實性。通過ECDSA你可以證明你——只有你才是某一信息的發送者。就跟在一封信上籤了名一樣。
私鑰創建完畢之後,錢包就會通過私鑰來生成公鑰。整個過程就是在特定的橢圓曲線上進行一些運算來選取隨機座標。公鑰是用於發送和收集交易的關鍵。在比特幣誕生早期,公鑰甚至能夠用來接收資金。
而現在公鑰不僅僅非常長也很不方便(由65個字符組成),而且可能出現輸入錯誤的情況。另外,一旦ECDSA出錯,暴露公鑰也會帶來一定的風險,量子計算就是最好的例子。這就是比特幣開發者堅持通過公鑰生成地址的原因。
由於現有比特幣地址不具備特定規律,同時字符數較多,人們很難記住這些地址。因此,也有人抱怨這類地址格式影響了用戶體驗。
然而,前文中提到的方法將比特幣地址簡化成與郵箱類似的地址,雖然方便記憶,但對安全方面的考慮則有所欠缺。
首先,比特幣地址不是憑空出現的,是通過公鑰生成的,同時還要保證不會出現重複使用的情況,因此需要經過大量的運算。當前我們收發交易都是直接複製地址,以確保不會出錯,一旦地址被簡化,一定有人會選擇手動輸入地址,誰都不能保證不會出錯。眾所周知,區塊鏈由於其去中心化和不可更改性,就算交易出錯,也沒有銀行這樣的中間機構幫你找回資金。
另外,比特幣地址實際上是會發生改變的,每次收發交易時,用戶使用的都是不同的地址,以此來確保交易的安全。在區塊鏈網絡中,安全是不可忽視的一環。
對於簡化比特幣地址,你是怎麼看的?歡迎在評論區發表你的看法。
本文來自比特幣,本文觀點不代表三點鐘財經立場,轉載請聯繫原作者。