近年來,區塊鏈這個名詞越來越頻繁地進入公眾視野,各行各業都在討論它將怎樣改變這個社會。
區塊鏈最初發源于金融業,作為金融從業者,很有必要了解一下有關區塊鏈的常識。如此,才能結合各自的業務實際去探索區塊鏈的應用落地,也避免自己被技術的發展所淘汰。
本文試圖從金融從業者的角度來介紹一下什么是區塊鏈,區塊鏈在金融業能發揮怎樣的用途,盡可能回避技術細節。區塊鏈的基本概念
區塊鏈(BlockChain)是一種IT技術,由中本聰(化名)在2008年作為比特幣的底層技術而發明出來。比特幣是區塊鏈技術第一個應用,也是目前為止最成功的應用。除比特幣外,目前比較流行的區塊鏈還有以太坊、超級賬本等。
區塊鏈這個詞有兩層含義:
狹義的區塊鏈是一種數據結構,按照時間順序將數據區塊先后鏈接起來,并以密碼學算法保證以這種方式存儲的數據不可篡改和不可偽造,且可以方便地進行驗證;
廣義的區塊鏈技術則是指包括這種數據結構以及點對點(P2P)網絡、共識機制、智能合約等一系列技術所構成的技術體系的總稱,有時也被稱為分布式賬本,雖然這二者之間還有一些細微的差別。通常我們所稱的區塊鏈指的是廣義的概念。
那么,P2P網絡、共識機制、智能合約這些又是什么呢?
P2P網絡
P2P網絡是一種計算機網絡的組成方式,與常見的web網絡不同,它是分散的、去中心化的。
Web網絡是中心化的,每一個網站形成一個中心,我們普通人的電腦(手機)互相之間并不直接連接,而都是連到網站的服務器上。例如我們向朋友發一條微信消息,消息數據首先被發往騰訊的服務器,在服務器上存儲之后再發給朋友的手機。如果騰訊的服務器出現故障或者被黑客攻擊,那我們就沒法使用微信相互發消息了。
而P2P網絡則不同,所有的電腦都是平等的,不需要中心服務器,互相之間都可以直接建立連接并發送數據。這樣做的好處就是不用擔心某個中心服務器出現故障,整個網絡幾乎是堅不可摧的。P2P網絡還有一個優勢就是使用的人越多,網絡越通暢,這一點是web網絡做不到的。
P2P網絡最早的應用是1999年由美國人Shawn Fanning發明的Napster,用于分享音樂;最著名也是使用最廣泛的應用是BitTorrent(BT),用于在網上下載文件。
共識機制
由于P2P網絡上所有人都是平等的,沒有權威,這就帶來一個困擾——怎么判斷我收到的信息真實沒有被偽造或篡改呢?
在傳統的中心化網絡里,是以中心權威發布的數據為準,比如銀行跨行轉賬系統,一律以人民銀行提供的數據為準,各行對賬如果不符,只能自己調賬。這樣做簡便易行,但前提是所有參與者必須信任中心權威方,中心也不能出錯,如果中心數據出錯則所有參與者的數據全都錯了。
在P2P網絡里,沒有這樣的權威、受信賴的中心,但可以利用共識機制和區塊鏈數據結構來確保所有參與者收到的數據都是完全一致的。
共識機制本質上是一種可編程的協議,如果所有參與者都嚴格按照同樣的協議在區塊鏈上生成數據,則每個人生成的區塊鏈都是完全一樣的;如果有少數人違反共識協議,故意生成錯誤的數據,其他人可以立即發現,拒絕接受他的數據進入區塊鏈,這樣的結果就是錯誤的數據被整個網絡拋棄,剩下的都是大家一致認同的、正確的數據。
從這里可以看出,共識機制有一個很重要的前提,就是大多數人必須是誠實的。關于這一點不用過于擔心,區塊鏈通過激勵機制和博弈論可以保證這個前提是成立的。
這樣的協議也稱為共識算法,最著名的共識算法就是比特幣采用的工作量證明算法(PoW),可以在數學上證明,當超過一半的參與者遵守共識機制時,區塊鏈是安全可靠的。
還有一些其他的共識機制,比如權益證明算法(PoS)、實用拜占庭容錯算法(PBFT)等。這些共識機制各有利弊,比如工作量證明算法需要浪費大量的算力,權益證明算法會導致貧富差距拉大,拜占庭容錯算法不支持太多的參與者且要求2/3以上的參與者是誠實的。
智能合約
智能合約的概念由尼克·薩博(Nick Szabo)在1995年首次提出。他指出,一個智能合約是一套以數字形式定義的承諾,包括合約參與方可以在上面執行這些承諾的協議。
通俗地說,智能合約是一段計算機程序代碼,代碼事先規定好了兩個或多個參與者之間的權利義務,這樣的權利和義務往往不是立即執行、而是在將來滿足一系列條件時才執行,智能合約一旦開始執行就無法單方面退出。
智能合約與現實生活中的合同文本類似,只是智能合約是一個程序,是自動執行的,不需要律師和法官的介入。這是一個偉大的構想,但是以當時的技術水平還無法實現,直到2008年才由中本聰在比特幣區塊鏈中實現了一個基本的智能合約形式。
在比特幣區塊鏈中進行轉賬,實際上就是執行了一個非常簡單的智能合約,轉賬不是立即執行的,需要由礦工在一定時間(平均10分鐘左右)內執行這個智能合約,當執行成功時才會記錄進比特幣區塊鏈,在這之前轉賬是不可撤銷的。
一個簡單的智能合約是這樣的:“如果我提供了正確的簽名,則將X個比特幣轉到某某地址。”更復雜一些的智能合約可能會是這樣:“請在3天后將X個比特幣轉到某某地址,如果在這之前我提供了某個特殊的簽名,則不進行轉賬,將這X個比特幣退還給我。”在以太坊等區塊鏈中,還可以支持業務邏輯非常復雜的智能合約,比如期權交易、資產多方托管等等。
總之,可以把區塊鏈比作一個由許多會計師同時記賬的賬本,每個會計都以同樣的會計準則、按時間順序將他收到的所有交易憑證記錄到各自的賬本上。而這些會計之間互不隸屬、相互監督,每隔一定時間(比如10分鐘)就相互查賬,如果發現有人違反會計準則就辭退掉,然后按照事先定好的規則,從剩下的會計中選擇一個做為最終結果(稱為一個區塊),其他人根據這個結果調整自己的賬本,再繼續記賬,這個時點之前的賬不允許再做調整。這樣就產生了一個“區塊”,將區塊按先后順序排列起來形成一個完整的賬本,就是區塊鏈了。