我聽到比特幣的時候,它的價格大概是500美金。而我正式去看它的理論時,它已經漲到1000美金。這在當時已是驚人的數字,因為比特幣從沒沒無名接近垃圾的0元成長到破1000實在太不真實。但是比起現在的42,000美金以及曾經衝上的64,400美金,那時的價格真的太過便宜了。甚至前幾年時不時就有一類新聞寫說比特幣持有者忘了密碼,導致數千枚比特幣無法取出。許多人嘲笑著那位持有者,但事實上比特幣當年可是免費四處大放送,收到幣的人可能都嫌麻煩。許多人拿到就是束之高閣,真的有貨真價實的垃圾感。密碼忘了是合情合理的。你最多只能說持有者當時沒有遠見。
比特幣的傳奇故事太多了,不在本文的討論之中,網路上很多,各位可以去查看看。
本文的重點放在對最初版的比特幣的技術討論。網路上的炒家老王賣瓜,把數位貨幣說的玄乎玄乎。而不懂技術看熱鬧的鄉民也吐不出什麼象牙。因此小弟想分享技術人的看法。讓大家了解區塊鍊繼承了哪些技術,又真正突破了什麼。
我之後也會分享一些個人對資訊技術解讀。說一些大家可能沒有注意到的事項。有些事項可能和各位聽到的不一樣,甚至可能有人覺得我在貶低資訊技術,因此我把這個系列稱為『科技背骨仔』。我覺得事物幾乎沒有全然的好,對於資訊技術太過隱惡揚善不是一件好事,所以希望這個系列能讓大家對資訊技術的好與壞有更多認識。
改變世界的論文
要看比特幣最初的論文可以下「bitcoin」、「nakamoto」、「white paper」這幾個關鍵字去找。「Bitcoin」就是比特幣。「Nakamoto」是寫下這篇論文的神祕人物 -- Satoshi Nakamoto(也有人認為這就是中本聰的意思)。「White Paper」中文翻「白皮書」。因為許多政府官方文件經常用白底或白色書皮包裏的關係,逐漸讓這一用語有正式發表的意思。
Nakamoto的論文標題叫《Bitcoin: A Peer-to-Peer Electronic Cash System》。這個命名在我的觀點很平淡,算是感覺就像一個普通的研究論文,沒有刻意大作文章。標題直譯是《比特幣:點對點的電子貨幣系統》。這個標題就說到了點對點(Peer-to-Peer),這個請各位記在心底,它在接下來的介紹會顯得越來越重要。
論文的結構也很普通。相信有做研究的讀者都不陌生。開頭先用一個摘要(Abstract)說明讀者會在這篇論文看到什麼,也就是全文概念的濃縮,比如:這篇主題是什麼?在主題上解決什麼問題?大概想用什麼方式去解決問題?
學者都很忙的,前面就必須先說清楚,大家才會決定要不要看下去。
背骨仔讀論文
開場的第一章是簡介(Introduction)。這是論文基本結構。可以說是摘要的擴充版。但是主題的背景會描述的更深入些。由於摘要和簡介的內容會在後面章節提到,這裡小弟就不著墨太深了。
第二章到第五章說明了比特幣的主要機制。首先說明的是交易的執行方式。一個數位貨幣的交易要怎麼做,想法可以有很多種。中本聰提出的做法是用公開金鑰加密法加上雜湊鍊來做到交易的不可否認,以及延續性。看到這裡,我想還沒有密碼學家對此感到驚奇,因為雜湊鍊不是什麼新概念,所以這裡我看到的只是很單純的在運用密碼學相關技術。還看不出作者有什麼特別的見解。文中提到上述機制無法解決貨幣重用(double-spent)的問題,也就是一個數位貨幣被用了兩次或甚至多次,以貨幣來說這是不合理也不能被接受的事情。
中本聰:要在不使用公信單位的架構下正常運作就必須將交易公佈給大家看
「不使用公信單位」這點很重要。意思就是希望沒有類似中央銀行的角色也要能讓這個數位貨幣正常運作下去。這是比特幣帶來的一個重大觀念。
對一般貨幣來說,「公信單位」的責任不只是讓貨幣正常流通。更重要的是它有監管的功能。比特幣不需要「公信單位」,便被當成了一種洗錢的工具。這也是各國政府抵制它的最大原因。因為政府就不容易追蹤金流,不能限制交易。比如,往公眾利益的角度想,不能封鎖黑幫或毒梟的銀行帳戶。又比如,往政治集團的利益想,不能阻止現金流向他們的政敵。然而政府畢盡資源豐富,過了這麼多年,其實已經對比特幣的監管有一定程度的能力了。這個比特幣的重要特性受到了重大的挑戰。比如最近俄烏戰爭,虛擬貨幣交易所就被要求不能接受來自俄國的交易。(交易所不能,但個體戶理論上還是可以。應該吧XD)
第三章主要是提出雜湊鍊裡面要押時戳(timestamp)。這也是常見的技巧,最常用來反制重送攻擊(replay attack)。雖然不確定比特幣的系統是否也有重送攻擊的隱憂,但至少能在時序驗證上有一些保護。比如確認目前的交易是否「夠新」,如果使用者送上來一組三個小時前的交易,服務器可以以時戳太老舊為理由回絕。不過時戳也有一個小問題,那就是可能被預測。比如2100年1月1日的時戳,你不需要等到2100年1月1日才知道。攻擊者可以鎖定那個時間點,預先做攻擊準備。扯太多了。本章作者本身沒有太深討論,是所有章節中最短的,先談到這裡就好。
第四章寫到工作量證明(Proof-of-work),是比特幣用來驗證交易、追蹤交易的核心設計。其作法是在交易裡加入一個亂數再做做雜湊(hash),並且要求雜湊結果的前面必須存在特定數量的「0x0」(zero bits)。比如要求3個zero bits時,一個交易就必須生出一個亂數,產生出的結果要是「0x000.........」(總共 256bits)。由於雜湊的結果是不可預測的,為了要找出一個能讓結果符合條件的亂數,計算交易時必須要花一定的時間去 try-and-error。這個特點迫使攻擊者需要浪費自己的算力(電力)。這點概念符合現代密碼學的策略,也就是雖然機制可能被破解,但前提是攻擊者需要付出巨大的成本;若成本大於破解後的好處,則我們可以稱機制相對安全。
此外,比特幣還引用了雜湊鍊(hashchain)的概念,讓當次交易裡押入前次交易裡的資訊(前一次符合條件的雜湊值),然後計算符合當次交易的雜湊值。這使得比特幣系統發展愈來愈大時,透過雜湊鍊所帶來的可信度變得更堅不可催。攻擊者想要偽造交易時,需要浪費自己的算力去把每個雜湊鍊上的雜湊值都重算一次。這個技術的效果在單一交易或線性/接續的交易上,感覺不出威力。但是放到大量/網狀的交易時,其威力可以預期是指數倍增。至此,我開始覺得比特幣有點搞頭。不過作者在文章提到這是參考其他論文的,所以這招不算中本聰發明的。
中場休息
前面的內容已經看了半篇比特幣。雖然已經談到了工作量證明,但是這點還不算比特幣成功的重要因素。其問題在於單機的演算法做得再好,虛擬貨幣想要避免的貨幣重用問題仍然不能有效解決。這點中本聰想到了一個簡單卻在當時沒有人提到的想法。我們下期再繼續討論。