首頁 > 讀享生活文摘 > 新知探索

比特幣技術解密

作者:李鈞;長鋏;李耀東;喻峰;蔡卓斯;宋歡平;袁維

比特幣的本質

在網路上瀏覽比特幣相關的網頁時,總是可以看到各種印著「B」符號的硬幣,彷彿那就是比特幣。實際上,那只是愛好者自己鑄造的玩具,和比特幣沒有絲毫關係。比特幣並不是任何有形的硬幣,也不是大家想像的一段資料,同樣也沒辦法把某些比特幣從整個系統中分離出來。比特幣的本質是一個互相驗證的公開記賬系統,其工作就是記錄所有帳戶發生的交易。每個帳號的每一筆資金流動都被記錄在帳本裡。而且,每個人手上都有一份完整的帳本,每個人都可以獨立統計出比特幣有史以來每個帳號的每一筆流動,當然,也能算出任意帳號當前的餘額是多少。

這裡最關鍵的一點在於:每人手上都有完整的帳本,這個系統裡沒有任何人擁有唯一決定權。這意味著沒有人可以決定向這個系統增加貨幣或改變規則,因為個體的修改會被整個網路否決。除非有人可以修改百分之五十以上的人手上的帳本,這就是比特幣系統裡所謂的五一%攻擊。

比特幣用戶端Bitcoin-QT啟動時會進行大量的資料同步,Bitcoin-QT只告訴我們說這是在進行資料同步,但我們並不知道這是什麼資料以及為什麼要這麼做。實際上,同步的是比特幣世界的所有交易記錄,這部分資料保障了整個體系的去中心化和每個用戶端的一切知情權。而不需要下載交易資料的輕用戶端,如Electrum則是去幾個提供交易資料查詢功能的伺服器查詢特定帳號的記錄,由於這些資料全部是公開的且帶有嚴密的校驗,任何查詢伺服器都沒有必要也不可能偽造資料。所以,即使輕用戶端帶來了部分中心化效果,實際上對全局的去中心化並沒有什麼影響。

比特幣還有幾個令人十分困惑的問題,就是我的地址裡擁有的那些幣究竟在哪裡?備份錢包是把裡面的幣備份了嗎?在現實中,我們知道錢是什麼,因為可以直接掏出來看;我們也知道自己的錢在哪裡,要麼是現金,要麼存在銀行,要麼在諸如證券交易所一類的機構。而比特幣系統只是所有交易的記錄,這裡只關心某個帳號裡是否有幣、有多少幣,而幣本身是抽象的,大家並不知道它具體是個什麼東西。某個位址擁有的比特幣數額存在每個人的用戶端資料裡,大家都知道你有幣就可以了。所以當我們備份錢包時,其實只是在備份對自己比特幣地址的所有權。

位址是什麼?

在現實生活中,如果需要一個銀行帳戶,就需要去銀行排隊開戶,然後拿到銀行分配的一串數位帳號,之後才能使用銀行功能。而在比特幣體系裡,我們的帳戶似乎並不需要誰來開設,本地用戶端自動生成即可;我們不需要向任何第三方公佈,對方就可以直接向我們的帳戶轉賬;帳戶的形式也非常奇特,比如 1H4AG73nXz5to9zWkH4GUZEH1Nuey8EVjJ。

剛接觸比特幣的用戶印象最深的大概就是這一長串亂碼般的位址,它給人的第一感覺是「不明覺厲」(網路用語,意思是「雖然不明白是什麼,但好像很厲害的樣子」),第二反應就是特別容易輸入錯誤。幸運的是,絕大部分時候並不需要手動輸入比特幣位址,通常是通過複製粘貼或二維碼掃描的方式。即便萬一需要手工輸入,比特幣位址的校驗機制也會提醒你帳號不正常,以免出錯。

可是,這一串位址到底是什麼?會不會和別人的重複?

這裡先回憶一下前面講過的非對稱加密技術。簡單來說就是通過一套數學辦法,產生一對密鑰A和B,若使用A加密一份資料,必須使用B來解密;而使用B來加密資料,則必須用A才能解開;而且根據A可以很輕易計算出B,反過來則不行。A就叫私鑰,B叫公鑰。顧名思義,A是保密的,B是公開的。

所以,比特幣位址其實就是一套非對稱技術的公鑰,這套技術就是橢圓曲線演算法,而和公鑰對應的私鑰實際上就在錢包檔裡藏著。因為公鑰和私鑰需要使用特殊的演算法成對生成,所以比特幣位址不能像普通密碼一樣人為設置,而且看起來也沒有什麼規律。按照私鑰保密、公鑰公開的原理,比特幣位址可以告知任何人,但錢包檔則必須妥善保管,一旦丟失,錢包就不安全了,而且由於整套體系的去中心化和匿名性,沒有任何人有權力或能力找回丟失的比特幣。

至於地址有多少,會不會和別人的重合?可以這麼形容:如果每粒沙子裡面都有一個地球,那麼位址數大概等於地球上所有沙子裡面的地球的沙子數的總和。如果你生成了一個有餘額的其他人的位址,那你真的是太幸運了,這筆比特幣就歸你!

支付的背後

由於比特幣不存在現金交易的概念,一切交易都依靠帳戶間的轉移,所以比特幣的支付概念類似於銀行轉賬。先看一下銀行的轉賬過程:我們首先需要填寫對方的帳號和轉賬金額,本地一般會先檢查一下餘額是否充足,如果充足就把這個轉賬請求發送到銀行資料中心,銀行確認密碼、對方帳號等資訊正確後,就把保存在銀行資料庫中的本地帳號減去一個金額,同時給對方帳號加上一個金額,然後返回成功或失敗的資訊。

當存在銀行這一官方機構時,上面的操作過程安全可靠,但比特幣體系中並不存在任何類似於銀行的這種可信機構,這裡每個人都是平等的,同時每個人都不一定是可信的。事實上,比特幣的轉賬機制也很簡單。

假設甲有一百個比特幣,他要轉賬給乙。那麼甲寫一條資訊:從甲的地址轉賬一百個比特幣到乙的地址,然後用自己錢包裡的私鑰加密並將其傳播到整個比特幣網路上,網路上的人都用甲的位址(公鑰)解密驗證這條資訊確實是由甲發出,而透過歷史交易資料計算出甲的位址確實擁有一百個比特幣,於是整個網路公認此次轉賬操作,甲錢包中存款減少一百個比特幣,乙錢包中存款增加一百個比特幣。

非對稱加密技術可以使這個轉賬過程順利實現,一切看起來都非常完美,但是其中有四個隱藏的問題:

一,整個網路這麼大,什麼時候才算轉賬成功?

二,上面說的是轉賬體系,那麼貨幣創造體系是怎樣的?沒有央行負責統一發行,甲的一百個比特幣最初是從哪裡來的?

三,甲如果作弊怎麼辦?方法一:甲如果沒有一百個比特幣而發出轉賬資訊,整個網路則不理會他,因為大家都擁有網路中所有的交易資訊,一計算就會發現甲根本沒有那麼多錢,因此轉賬無效。方法二:甲確實有一百個比特幣,但他同時向網路發出兩個轉賬資訊,一個是轉賬一百個比特幣給乙,另一個是轉賬一百個比特幣給丙。由於網路上電腦非常多,網路傳遞也有隨機性,所以有的電腦是先收到轉賬給乙的資訊,有的電腦是先收到轉賬給丙的資訊,那麼最終這個網路以哪條資訊為準?

四,所有帳戶餘額都是基於歷史記錄算出來的,那麼如何確保歷史記錄安全而完整?假如有人要攻擊比特幣體系,他沒有辦法偽造他人轉賬資訊,但作為比特幣體系中的一員,他如果惡意刪除自己的部分歷史轉賬記錄會怎樣?

比特幣系統發明了「挖礦」的概念,一舉解決了上述四個問題。

什麼是挖礦?

挖礦是比特幣體系裡讓新人特別費解的事情,居然可以從網路上挖出比特幣,從哪裡挖?拿什麼挖?挖礦的本質是什麼?

比特幣的本質就是一個互相驗證的公開記賬系統,而挖礦的本質就是爭奪記賬權!從工作內容來看,挖礦就是將過去一段時間內發生的、尚未經過網路公認的交易資訊蒐集、檢驗、確認,最後打包加密成為一個無法被篡改的交易記錄塊,從而成為這個比特幣網路上公認的已經完成的交易記錄,永久保存。

在比特幣的世界裡,大約每十分鐘就會在公開帳本上記錄一個資料塊,這個資料塊裡包含了這十分鐘內全球被驗證的交易。所有的挖礦電腦都在嘗試打包這個資料塊並提交,但以誰提交的為最終結果則是需要爭奪的。

爭奪記賬權有什麼好處?最終成功生成那個交易記錄塊的人,可以獲得伴隨這些交易而生成的交易費用外加一筆額外的報酬。交易費用一般都是轉出資金方自願提供給挖礦者的,因此不是系統新增的貨幣;額外的報酬是新生成的比特幣,這就是比特幣系統新增貨幣的方式。

比特幣的有限性就由額外報酬的數量控制。依據比特幣系統的設置,大約每十分鐘可以生產一個交易記錄塊,最初每生產一個交易記錄塊可以獲得五十個比特幣的額外報酬,但是該報酬每隔四年就會減半,因此最終整個系統中最多只能有兩千一百萬個比特幣。目前已經經歷了第一次減半,當前每個記錄塊的收益是二十五個比特幣。截至二○一三年十二月三十一日,生產出來的比特幣一共約為一千兩百一十五萬六千個。

隨著整個網路計算能力越來越強,截至二○一三年年底,整個比特幣網路的算力已經超過世界前五百位超級電腦總和的兩百倍以上,而且這個算力還在飛速上漲。普通電腦的算力幾乎沒有任何機會搶到記賬權。於是,「礦工」(參與者)就自己構建礦池模式,和遊戲組隊打BOSS(難度較大、獎勵較高且出現在最後的關鍵時刻的人物或怪物)一樣,如果礦池搶到了記賬權,那麼就按照計算貢獻來分配這次獲得的收益。

那麼,電腦是靠什麼機制爭奪記賬權?在算力急速上升的情況下,它們又是如何使整個網路的交易記錄塊生成速度,保持在十分鐘左右一個?事實上,電腦是在玩一個叫哈希的密碼遊戲,說得更具體,就是SHA-256演算法。大家比的就是在十分鐘內誰能找到一個值和上一個資料塊的哈希值以及十分鐘內驗證過的新交易記錄合起來可以算出最小的哈希值。算出最小哈希值的人就搶到記賬權。同樣,至少要小於某個值才有轉發權,這個值越小,對應的就是比特幣網路的難度係數越高。由於哈希值的結果相當隨機,無法預知大小,所以只能不斷苦算,純粹是拼算力。

之所以計算時要加上上一個資料塊的哈希值,是因為這樣一來,所有的資料塊就被組成了一條可以從前到後不斷驗證的資料鏈條。修改中間任何一個資料塊的任何交易記錄,都會導致之後的所有資料塊的哈希值驗證失敗;如果企圖在修改記錄後重新找一個合理值算出符合條件的哈希值並重新打包,那也意味著之後所有的資料塊都需要重新尋找那個值來重算哈希值,其計算速度還必須比整個比特幣網路更快,只有這樣才能讓網路接受你的結果,這就意味著攻擊者要擁有超過整個比特幣網路正義部分的算力,換句話說,要使用超過整個網路百分之五十以上的算力才能保證攻擊有效。當找到一個有效的哈希值時,就要迅速把生成的資料塊轉發出去,其他礦工收到後,認為這個資料塊更優秀,就會以這個塊為基礎進行下一輪的計算。如果期間收到更小哈希值的資料塊,首先考慮資料鏈長度,其次是哈希值更小,拋棄之前的結果,在新的基礎上繼續開展下一輪計算。

比特幣有價值嗎?

這個問題大概是目前爭議最大的問題,黃金派、信用派和比特派各執一詞,不相上下。黃金派的觀點是,貨幣就應該是商品貨幣,沒有價值支撐的貨幣都不是好貨幣。信用派的觀點是,貨幣只要有政府強權來支撐並強制使用就可以,它是用國家信用做擔保的。比特派的觀點是,比特幣幾乎符合貨幣理論裡對貨幣的所有定義,同時還優於黃金和信用貨幣。

既然如此,那麼使比特幣良好運行的內在機制又是什麼呢?那就是:

一,P2P分散式結構使其無比頑強,除非網路被關,否則它會一直存在;
二,數學演算法設定的發行上限使其天然具有保值功能;
三,寫入演算法裡的天然防偽功能;
四,基於網路的支付往往匿名、自由、安全;
五,造幣成本為零且無磨損;
六,可無限分割。

比特幣合理的內在機制使其無需外力也可運行。甚至更進一步,良好的系統與參與者的道德水準、精神面貌關係不大,這是由其內在機制決定的。實際上,比特幣系統是如此強大、獨立、自信,根本不需要信任、理解甚至熱愛這些溫情的玩意兒來粉飾自己。

回顧歷史,之前無數信用貨幣都因其所依靠的政權垮臺而灰飛煙滅。而作為非信用貨幣,黃金在發展之初也曾遭受過質疑和拒絕,在亂世還遭受過唾棄,甚至在幾十年前還曾被法律禁止過,但最終它歷經數千年而屹立不倒。良好的貨幣系統是有其頑強的內在生命力的,它不會隨人的意志而轉移。所以,不要去看這個貨幣背後的支撐力量有多強大,而應該關注這個貨幣自身是否強大。

出處:遠流出版《比特幣:過去.現在與未來》

 

回到讀享生活文摘首頁

 

上一篇 下一篇
工業運河,新威尼斯 全世界最早、也最神秘的國際金融組織——國際清算銀行
書人觀點
健康醫療
職場求生
世界瞭望
精采人物
品味生活
歷史解碼
新知探索
自我成長
文藝漫遊
親子教養
商業理財