2018 年 10 月 31 日,我們迎接了一個重要日子:這是中本聰(Satoshi Nakamoto)的論文,《Bitcoin: A Peer-to-Peer Electronic Cash System》(《比特幣:一個點對點的電子現金系統》)公諸於世 10 週年的日子。10 年過去,比特幣的每件大小事,一切都已成歷史。
論文除了照亮比特幣,也讓人構思到「區塊鏈」:它已經成為現今科技的其中一個重要關鍵字。不少人早已久聞其名,但到底甚麼是區塊鏈?
在探究區塊鏈是甚麼之前,首先想跟大家釐清一點:中本聰並沒有在他的論文提及過「區塊鏈」(”Blockchain”)一詞,這個詞語其實是外界在日後創出。當然,這仍無損中本聰在世人心目中的地位:大家始終認定他就是區塊鏈的實質創始人。既然如此,論文其實談及了甚麼,讓大家建立出區塊鏈的概念?
在這篇新手專題的文章,你將能了解:
(1)中本聰論文引用的密碼學技術; (2)交易產生流程;
(3)區塊鏈運作流程; (4)區塊鏈的特點。
中本聰引用的技術:時間戮、雜湊現金、公開廣播
在講述區塊鏈如何運作前,首先要講述中本聰的論文提及過,以至日後區塊鏈牽涉的技術,這對於理解區塊鏈是相當重要。以下先分享 3 個:
早在 1991 年,密碼學(Cryptography)研究者 Stuart Haber 和 W. Scott Stornetta 已經運用他們的知識,研究如何將「時間戮」(”time-stamp”)加到數碼文件之中,並且寫成學術文章,這被視為讓文件能夠從時間線裡正確排序的重要技術。
到了 1997 年,密碼學家 Adam Back 提出了「雜湊現金」(”Hashcash”)的概念,並在 5 年後發表關於 Hashcash 的學術文章。Hashcash 是其中一種工作量證明(Proof of Work, PoW)的方法,對於抵抗阻斷服務(Denial of Service, DoS)的惡意行為是相當有效。Back 研究雜湊現金本來只是為了用來阻擋垃圾電郵,但最後亦啟發了中本聰在區塊鏈應用類似的做法。
翌年,戴偉(Wei DAI, 音譯)在提出 “b-money” 的構思時,就提出要將交易資訊全面公開廣播,讓系統內所有參與者都承認交易,這就不需要單一個別中介機構作證。中本聰在他的論文亦有引用到這個概念。
前人的研究和貢獻,對於中本聰完成他的論文有莫大幫助。因為中本聰所想的點對點電子現金系統,以至其中的區塊鏈,都是應用了不同學者的技術而成。而根據後來收集的資料顯示,中本聰曾經在論文發表之前發過電郵給 Adam Back 和戴偉,跟他們交流意見。
交易的產生方法
在了解和應用技術後,理論上中本聰已經可以建立出一個可供交易的系統。關於產生一宗交易的方法,中本聰的論文如此說:
首先,一宗交易將會產生一條隨機散列(hash),這個隨機散列是由以下兩個單位組合而成。他們分別是:(1)上一宗交易本身,(2)下一位交易接收者(receiver)的公鑰(Public key)。
中本聰表示,隨機散列將會依附在電子幣的末端。
在屬於接收者的交易當中,亦會包含交易傳送者(sender)的數碼簽署(signature),這個簽署是透過傳送者的私鑰(private key)產生。最後,傳送者的公鑰將會核實傳送者的數碼簽署,以確認電子幣的傳送量,以及接收者是正確無誤。
來到這裡,一宗交易才正式生成。
雖然這個流程並無解決到雙重消費(Double Spending)的問題,而中本聰最終都想到以「廣播」方式解決,但下圖都可以作為一個初步的簡單理解。
區塊鏈的運作流程
在中本聰眼中,一宗交易只有其交易資訊是不夠的,還需要有時間戮,因為這才能夠證明在指定的時間當中,真實存在著一條指定的交易,以及排列次序。而區塊(”Block”)可以說是為了記錄交易而有的,而一個區塊當中可以包含多宗交易。
來到這裡,我們就可以了解到底區塊鏈如何運作。根據中本聰的講法,交易鏈條的運作流程是:
(1)新交易產生後,隨即廣播至所有節點(node)。
(2)每個節點都收集新的交易至區塊當中。
(3)每個節點都在它自己的區塊當中,找出一個足夠困難的工作量證明。
(4)當一個節點找到上述的工作量證明,該節點就向全網所有節點發出廣播。
(5)眾多節點只會接受下列條件的區塊:區塊當中所有交易都是正確有效,而且尚未被消費。
(6)眾多節點皆表達他們接受符合條件的區塊,方法是一同為鏈條產生下一個區塊,而這個區塊將會包含上一個區塊的隨機散列(”previous hash”)。
中本聰假設了比特幣的交易鏈條當中,是每 10 分鐘產生出一個區塊。到了 2009 年 1 月 3 日(UTC 時間)比特幣正式上線之後,雖然時有出現小幅度的偏差,但區塊基本上都是按著「每 10 分鐘產生一個」的速率增長,持續至今。
因應上述的運作流程,比特幣的交易鏈條也因為交易,和區塊的持續出現,而變得愈來愈長。這條不斷變長的「區塊的鏈條」(chain of blocks)也漸漸讓人們心中,種下了「區塊鏈」的概念:區塊鏈可以說是一本以區塊砌成的帳簿。
區塊鏈的特點
以往大家或許已經聽過一些區塊鏈的特點,甚至是優點,在此也因應上面的內容,再把這些要點重新講述。
首先,以中本聰最初的想法 - 電子現金系統去評價區塊鏈,區塊鏈其實是一個非常理性的系統。傳統現金制度是基於「信用」(”credit”)去建立,人們建立了權力機構,而機構會發鈔、賦予鈔票價值,社會各方是基於信任權力機構,才會接受鈔票,承認鈔票可以兌換商品和服務。假如權力機構失信,這個現金制度就會步向崩潰,鈔票也許會跟「公仔紙」無異。簡單而言,這是「中心化」(Centralized)金融制度的重要缺點。
然而,正如中本聰在論文所言,交易的鏈條不是基於「信用」建立,而是基於密碼學原理去建立的。交易雙方只要達成協議,就可以透過密碼學理論下的機制和協定促成交易。他們要做的,就是對外把這宗交易「廣播」,要求各方作證。同樣地,由於每一個節點都有份為交易作證,換言之也不需要個別「權力機構」維持公正。故此對比傳統現金制度,區塊鏈除了是理性的,也是「去中心化」(Decentralized)的。
另外,區塊鏈也具備加密(encrypted)、以及幾乎不可篡改(nearly immutable)的特點。加密的特點,相信在此也不必多談,但為何區塊鏈是幾乎不可篡改呢?
假如大家還對上述區塊鏈運作流程有印象的話,都會記得節點有一個責任,就是檢視和選出「區塊當中所有交易都是正確有效,而且尚未被消費」的區塊。在這裡大家也許會想到,一些節點的控制人可能會嘗試篡改資料,包括改變接收者和電子幣數量等,並且意圖影響選出正確區塊的結果,這其實是牽涉了不誠實行為。
幸好,選出正確區塊的投票制度,是採取簡單多數制。也即是說,只要誠實節點們的計算能力,大於攻擊者節點群體的計算能力,這條區塊鏈就能夠維持安全。
另外中本聰在論文也提到,攻擊者節點如果要修改從前的區塊,這些節點除了要完成該區塊的工作外,還要把該區塊往後所有區塊的工作重做一次,並且要趕上和超越誠實節點的工作進度,這個攻擊才會有效 - 大家也可以想想這件事能夠真正實現的機會有多微小了。
總結
區塊鏈經過 10 年發展,至今已經變得相當多元化:區塊鏈不只有採用 PoW 的共識機制(Consensus),還有權益證明(Proof of Stake, PoS)、權益委託證明(Delegated Proof of Stake, DPoS)類區塊鏈。另外,區塊鏈還能夠分公鏈與私鏈。還有更多的革新,其實都是支持區塊鏈,與對區塊鏈抱有熱情的人同心協力的結果。
雖然對照現時的發展,中本聰的理論以及他對區塊鏈的想像,或許因科技進步已經變得平庸,但他的貢獻始終是劃時代。假如仍想詳細了解區塊鏈,中本聰的論文仍然是毋用置疑的選擇。
希望各位在往後的日子,也能夠與區塊鏈同行。
以上內容由《幣訊》與 9up.io 共同協作撰寫。
【若你喜歡幣訊的內容,請輕按以下拍手鍵(可以按幾次)支持我們。】