1. 程式人生 > >區塊鏈思想的誕生與概念

區塊鏈思想的誕生與概念

概況

任何事物的發展,從來不是一蹴而就的。 商貿合作中籤訂的合同,怎麼確保對方能遵守和執行? 餐廳宣稱剛從海里打撈上來的三文魚,怎麼證明捕撈時間和運輸中的衛生?數字世界裡,怎麼證明你對資產的所有? 囚徒困境中的兩個人,怎樣能達成利益的最大化? 宇宙不同文明之間的猜疑鏈,有沒有可能打破? 這些看似很難解決的問題,在區塊鏈的世界裡已經有了初步的答案。

本章將簡要介紹區塊鏈相關的背景知識,包括其起源、定位、涉及到的關鍵技術點以及潛在的商業價值。並對區塊鏈的發展進行展望。

從數字貨幣說起

貨幣是人類文明發展過程中的一大發明,最重要的職能包括價值尺度、流通手段、貯藏手段。很難想象離開了貨幣,現代社會龐大而複雜的經濟和金融體系還能否持續運轉。

 歷史上,貨幣的形態經歷了多個階段的演化,包括實物貨幣、金屬貨幣、代用貨幣、信用貨 幣、電子貨幣、數字貨幣等。貨幣自身的價值依託也從實物價值、發行方信用價值,到今天出現的對資訊系統(包括演算法、數學、密碼學、軟體等)的信任價值。

注:中國最早的關於貨幣的確切記載夏後以玄幣出現在恆寬《鹽鐵論·錯幣》。

需求

一般等價物都可以作為貨幣使用。然而平時最常見的還是紙幣本位制,既方便攜帶、不易仿 制、又相對容易辯偽。

注意,嚴格來講,貨幣(money)不等於現金或通貨(cashcurrency),貨幣的範圍更 廣。

或許有人認為信用卡相對紙幣形式更方便。相對於信用卡這樣的集中式支付體系來說,貨幣 提供了更好的匿名性。另外,一旦碰到系統故障、斷網、沒有刷卡機器等情況,信用卡就不可用了。

無論是貨幣,還是信用卡模式,都需要額外的系統(例如銀行)來完成生產、分發、管理等 操作,帶來很大的額外成本和使用風險。諸如偽造、信用卡詐騙、盜刷、轉賬等安全事件屢見不鮮。

很自然的,如果能實現一種數字貨幣,保持既有貨幣的這些特性,消除紙質貨幣的缺陷,無 疑將帶來巨大的社會變革,極大提高經濟活動的運作效率。

比較

讓我們來對比現在的數字貨幣和現實生活中的紙幣:

屬 性

分析

勝 出 方

便 攜

這點上應該沒有爭議,顯然數字形式的貨幣勝出。

數 字 貨 幣

防 偽

這點上應該說兩者各有千秋,但數字貨幣可能略勝一籌。紙幣依靠的是各種 設計(紙張、油墨、暗紋、夾層等)上的精巧,數字貨幣依靠的則是密碼學 上的保障。事實上,紙幣的偽造時有發生,但數字貨幣的偽造明面上還沒能 實現。

數 字 貨 幣

辯 偽

紙幣即使依託驗鈔機仍會有誤判情況,數字貨幣依靠密碼學基本不可能出 錯。數字貨幣勝出。

數 字 貨 幣

匿 名

通常情況下,兩者都能提供很好的匿名性。但都無法防禦有意的追蹤。

平 局

交 易

對紙幣來說,誰持有紙幣誰就是合法擁有者,交易通過紙幣自身的轉移即可 完成。對數字貨幣來說則複雜的多,因為任何數字物品都是可以被複制的, 因此需要額外的機制。為此,比特幣發明了區塊鏈技術來確保可靠不可篡改 的交易。

紙 幣

資 源

100 美元鈔票的生產成本是 0.1 美元左右。100 面額人民幣的生產成本說法 眾多,但估計應該在幾毛到幾塊範圍內。數字貨幣消耗的資源則複雜的多, 以最壞情況估計,算出來多少就要消耗多少電(往往要更多)。

紙 幣

發 行

紙幣的發行需要第三方機構的參與,數字貨幣則通過分散式演算法來完成發 行。在人類歷史上,通脹和通縮往往是不合理地發行貨幣造成的;數字貨幣 尚無機會被驗證,在這方面的表現還有待觀察。

平 局

可見,數字貨幣並非在所有領域都優於已有的貨幣形式。不帶前提的在所有領域都鼓吹數字 貨幣並不是一種嚴謹的態度,應該針對具體情況具體分析。實際上,仔細觀察目前支援數字貨幣的交易機構就會發現端倪,當前還沒有一種數字貨幣能完整起到貨幣的職能。

最後,雖然當前的數字貨幣“實驗”已經取得了巨大成功,但可見的侷限也很明顯:其依賴的分散式賬本技術還缺乏大規模場景下考驗;效能和安全性還有待提升;資源的消耗還過高等 等。這些問題還有待於相關技術的進一步發展。

實現挑戰

設計和實現一個數字貨幣並非易事。 在現實生活中,因為紙幣具備可轉移性,相對容易地完成價值的交割。但是因為電子內容天

然具備零複製成本,無法通過傳送電子內容來完成價值的轉移。持有人可以試圖將同一份電子貨幣發給多個人,這種被稱為“雙重支付攻擊(Double-Spent)”。

也許有人會講,當前銀行中的貨幣都是電子化的,因為通過賬號裡面的數字記錄了資產。說 的沒錯,這種電子貨幣模式有人稱為“數字貨幣 1.0”,它實際上是假定存在一個安全可靠的第 三方記賬機構來實現,這個機構利用信用作為抵押,來完成交易。

這種中心化控制下的數字貨幣實現相對簡單,但需要一箇中心管控系統。但是,很多時候並 不存在一個安全可靠的第三方記賬機構來充當這個中心管控的角色。

例如,貿易兩國可能缺乏足夠的外匯儲備;網路上的匿名雙方進行直接買賣;交易的兩個機 構彼此互不信任,找不到雙方都認可的第三方擔保;匯率的變化;可能無法連線到第三方的系統;第三方的系統可能會出現故障……

總結一下,在去中心化的場景下,存在幾個難題:

貨幣的防偽:誰來負責驗證貨幣; 貨幣交易:如何確定貨幣從一方轉移到另外一方; 避免雙重支付:如何避免出現雙重支付。

好吧,這事其實不太容易。

1983 年,David Chaum最早提出ecash,並於 1989年建立了 Digicash 公司。ecash 系統是 首個匿名化的數字加密貨幣(anonymous cryptographicelectronic money, orelectronic cash system),基於 DavidChaum 發明的盲簽名技術,曾被應用於銀行小額支付中。ecash 依賴 於一箇中心化的中介機構,導致它最終失敗。

1997 年,Adam Back 發明了 Hashcash,來解決郵件系統中 DoS 攻擊問題。Hashcash 首次 提出用工作量證明(Proof of WorkPoW)機制來獲取額度,該機制後來被後續數字貨幣技 術所採用。

1998 年,WeiDai 提出了 B-money,將 PoW 引入數字貨幣生成過程中。B-money 同時是首 個面向去中心化設計的數字貨幣。從概念上看已經比較完善,但是很遺憾的是,其未能提出 具體的設計實現。

上面這些數字貨幣都或多或少的依賴於一個第三方系統的信用擔保。直到比特幣的出現,將PoW 與共識機制結合在一起,首次從實踐意義上實現了一套去中心化的數字貨幣系統。

比特幣網路無需任何管理機構,自身通過數學和密碼學原理來確保了所有交易的成功進行,比特幣自身的價值是通過背後的計算力為背書。這也促使人們開始思考在未來的數字世界 中,該如何衡量價值,如何發行貨幣。

目前看來,數字貨幣比較有影響力的模式有兩種,一種是類似 paypal 這樣的選擇跟已有的系 統合作,成為代理;一種是以比特幣這樣的完全丟棄已有體系的分散式技術。

現在還很難講哪種模式將成為未來的主流,甚至未來還可能出現更先進的技術。但對比特幣這一類數字貨幣的設計進行探索,將是一件十分有趣的事情。

什麼是比特幣

歷史

2008 年 10 月 31 日,化名 Satoshi Nakamoto (中本聰)的人提出了比特幣的設計白皮書(最早見於 metzdowd 郵件列表),並在 2009 年公開了最初的實現程式碼,第一個比特幣是 2009 年 1 月 3 日 18:15:05 生成。但真正流行起來還是在 2010 年後的事情。其官方網站是 bitcoin

發明人(傳言代號為中本聰的澳大利亞人)到目前為止尚無法確認身份,據推測,背後也可能是一個團隊。

儘管充滿了爭議,但從技術角度看,比特幣仍然是數字貨幣歷史上一次了不起的創新。位元 幣網路在 2009 年上線以來已經在全球範圍內   7*24   小時執行接近 8 年時間,支援過單筆 1.5 億美金的交易。比特幣網路由數千個核心節點參與構成,沒有任何中心的運維參與,支援了穩定上升的交易量。

比特幣之所以受到無數金融從業者的熱捧,在於它首次真正意義上實現了足夠安全可靠的去中心化數字貨幣機制。

作為一種概念金融貨幣,比特幣主要是希望解決已有金融貨幣系統的幾個問題:

被掌控在發行機構手中; 自身的價值無法保證; 無法匿名化交易。

搞金融的人都能想到,實際上,要設計這麼一套系統,最關鍵的還是一套強大的交易記錄系 統和中立的貨幣發行機制。

首先,這個系統要能中立、公正、無法被篡改地記錄發生過的每一筆交易。對比已有的銀行 系統,可以看出,現在的銀行機制作為第三方,是有代價的提供了這樣的服務,即如果交易雙方都相信銀行的資料庫,那麼就沒問題了。可是如果是世界範圍內流通的貨幣呢?有哪個 銀行能讓大家完全信任它?於是,需要有一套分散式的資料庫,在世界範圍內都可以訪問,而且都無法去控制。這也就是區塊鏈設計的目的。

貨幣的發行則是通過比特幣的協議來規定的,總量必須控制,發行速度會自動調整。既然總 量一定,那麼單個比特幣的價值肯定會隨著承認比特幣的實體經濟的加入而水漲船高。發行速度的調整則避免了通脹或者滯漲的出現。

比特幣到區塊鏈

2014 年開始,比特幣背後的區塊鏈(Blockchain)技術受到大家關注,並正式引發了分散式記賬本(DistributedLedger)技術的革新浪潮。

人們開始意識到,記賬本相關的技術,對於資產(包括有形資產和無形資產)的管理(包括 所有權和流通)十分關鍵;而去中心化的分散式記賬本技術,對於當前開放多維化的商業網路意義重大。區塊鏈,正是實現去中心化記賬本系統的一種極具潛力的可行技術。

目前,區塊鏈技術已經脫離開比特幣,在包括金融、貿易、徵信、物聯網、共享經濟等諸多 領域嶄露頭角。現在當人們提到“區塊鏈”時,往往已經與比特幣網路沒有直接聯絡了,除非特別指出是承載比特幣交易系統的“比特幣區塊鏈”。

什麼是區塊鏈

定義 區塊鏈(Blockchain)技術自身仍然在飛速發展中,目前還缺乏統一的規範和標準。wikipedia 給出的定義為:

A blockchain —originally, block chain —is a distributed databasethat maintains a continuously-growing listof data records hardened againsttampering and revision. It consists ofdata structureblocks—which holdexclusively datain initial blockchainimplementations, and both dataand programs in some of the more recentimplementations—with each blockholding batches of individual transactions andthe results of any blockchain executables. Each blockcontains a timestamp and informationlinking it to a previous block.

最早區塊鏈技術雛形出現在比特幣專案中。作為比特幣背後的分散式記賬平臺,在無集中式 管理的情況下,比特幣網路穩定運行了近八年時間,支援了海量的交易記錄,並未出現嚴重的漏洞。

注:比特幣歷史上唯一已知的漏洞事件曾導致比特幣的惡意增發,但問題很快被發現並修正,相關非法交易被撤銷。

記賬技術歷史悠久,現代複式記賬系統Double Entry Bookkeeping)是由義大利數學家盧卡·帕西奧利,1494 年在《Summa de arithmetica, geometrica, proportioni et proportionalità》 一書中最早制定。複式記賬法對每一筆賬目同時記錄來源和去向,首次將對賬驗證功能引入 記賬過程,提升了記賬的可靠性。從這個角度來看,區塊鏈是首個自帶對賬功能的數字記賬技術實現。更廣泛意義地看,區塊鏈屬於一種去中心化的記錄技術。參與到系統上的節點,可能不屬於 同一組織、彼此無需信任;區塊鏈資料由所有節點共同維護,每個參與維護節點都能複製獲得一份完整記錄的拷貝。

 傳統的記賬技術相比,其特點應該包括:

維護一條不斷增長的鏈,只可能新增記錄,而發生過的記錄都不可篡改; 去中心化,或者說多中心化,無需集中的控制而能達成共識,實現上儘量分散式;通過密碼學的機制來確保交易無法抵賴和破壞,並儘量保護使用者資訊和記錄的隱私性。

更進一步的,還可以將智慧合約跟區塊鏈結合到一起,讓其提供除了交易(比特幣區塊鏈已 經支援簡單的指令碼計算)功能外更靈活的合約功能,執行更為複雜的操作。這樣擴充套件之後的區塊鏈,已經超越了單純資料記錄的功能了,實際上帶有點“普適計算”的意味了。

從技術特點上,可以看到現在區塊鏈技術的三種典型應用場景:

定位

功能

智慧合約

一致性

權 限

類 型

性 能

代表

公信的數 字貨幣

記賬 功能

不帶有或較 弱

PoW

公 有 鏈

較 低

比特幣

公信的交 易處理

智慧 合約

圖靈完備

PoW、 PoS

公 有 鏈

受 限

以太坊

帶許可權的 交易處理

商業 處理

多種語言, 圖靈完備

多種,可 插拔

支 持

聯 盟 鏈

可 擴 展

Hyperledger

基本原理

區塊鏈的基本原理理解起來並不難。基本概念包括:

交易(Transaction):一次操作,導致賬本狀態的一次改變,如新增一條記錄; 區塊(Block):記錄一段時間內發生的交易和狀態結果,是對當前賬本狀態的一次共 識; 鏈(Chain):由一個個區塊按照發生順序串聯而成,是整個狀態變化的日誌記錄。

如果把區塊鏈作為一個狀態機,則每次交易就是試圖改變一次狀態,而每次共識生成的區塊,就是參與者對於區塊中所有交易內容導致狀態改變的結果進行確認。

在實現上,首先假設存在一個分散式的資料記錄本(這方面的技術相對成熟),這個記錄本 只允許新增、不允許刪除。其結構是一個線性的連結串列,由一個個“區塊”串聯組成,這也是其名字“區塊鏈”的來源。新的資料要加入,必須放到一個新的區塊中。而這個塊(以及塊裡的交易)是否合法,可以通過一些手段快速檢驗出來。維護節點都可以提議一個新的區塊,然而 必須經過一定的共識機制來對最終選擇的區塊達成一致。

具體以比特幣為例來看如何使用了區塊鏈技術?客戶端發起一項交易後,會廣播到網路中並 等待確認。網路中的節點會將一些等待確認的交易記錄打包在一起(此外還要包括此前區塊的雜湊值等資訊),組成一個候選區塊。然後,試圖找到一個 nonce 串放到區塊裡,使得候 選區塊的 hash 結果滿足一定條件(比如小於某個值)。一旦算出來這個區塊在格式上就合法 了,就可以進行全網廣播。大家拿到提案區塊,進行驗證,發現確實符合約定條件了,就承認這個區塊是一個合法的新區塊,被新增到鏈上。當然,在實現上還會有很多的細節。

比特幣的這種基於算力的共識機制被稱為 Proof of Work(PoW)。目前,要讓 hash 結果滿 足一定條件並無已知的啟發式演算法,只能進行暴力嘗試。嘗試的次數越多,算出來的概率越大。通過調節對 hash 結果的限制,比特幣網路控制約 10 分鐘平均算出來一個合法區塊。算 出來的節點將得到區塊中所有交易的管理費和協議固定發放的獎勵費(目前是 12.5 比特幣, 每四年減半)。也即俗稱的挖礦。

很自然會有人問,能否進行惡意操作來破壞整個區塊鏈系統或者獲取非法利益。比如不承認 別人的結果,拒絕別人的交易等。實際上,因為系統中存在大量的使用者,而且使用者預設都只承認他看到的最長的鏈。只要不超過一半(概率意義上越少肯定越難)的使用者協商,最終最 長的鏈將很大概率上是合法的鏈,而且隨著時間增加,這個概率會越大。例如,經過 6 個塊 後,即便有一半的節點聯合起來想顛覆被確認的結果,其概率將為 0,即低於0的可能 性。

注:熟悉 Git 的人,應該會讚歎兩者在設計上的異曲同工之妙。

分類

根據參與者的不同,可以分為公開(Public)鏈、聯盟(Consortium)鏈和私有(Private) 鏈。公開鏈,顧名思義,任何人都可以參與使用和維護,典型的如比特幣區塊鏈,資訊是完全公開的。

如果引入許可機制,包括私有鏈和聯盟鏈兩種。 私有鏈,則是集中管理者進行限制,只能得到內部少數人可以使用,資訊不公開。聯盟鏈則介於兩者之間,由若干組織一起合作維護一條區塊鏈,該區塊鏈的使用必須是有權的管理,相關資訊會得到保護,典型如銀聯組織。

目前來看,公開鏈將會更多的吸引社群和媒體的眼球,但更多的商業價值應該在聯盟鏈和私有鏈上。

根據使用目的和場景的不同,又可以分為以數字貨幣為目的的貨幣鏈,以記錄產權為目的的產權鏈,以眾籌為目的的眾籌鏈等

誤區

目前,對區塊鏈的認識還存在不少誤區。 首先,區塊鏈不是資料庫。雖然區塊鏈也可以用來儲存資料,但它要解決的問題是多方的互信問題。單純從儲存資料角度,它的效率可能不高,筆者也不推薦把大量的原始資料放到區 塊鏈上。

其次,區塊鏈不是要顛覆現有技術。作為基於多項已有技術而出現的新事物,區塊鏈跟現有 技術的關係是一脈相承的,在解決多方合作和可信處理上多走了一步,但並不意味著它將徹底顛覆已有的商業模式。很長一段時間裡,區塊鏈的適用場景仍需摸索,跟已有系統必然是 合作共存的關係。

小結

區塊鏈是第一個試圖自帶信任化和防止篡改的分散式記錄系統。它的出現,讓大家意識到, 除了網際網路這樣的盡力而為的基礎設施外,我們還能打造一個彼此信任的基礎設施。

類似比特幣這樣的大規模長時間自治執行的系統,也為區塊鏈技術的應用開啟了更多遐想的 空間。如果人與人之間的交易無法偽造,合同都能確保可靠執行,世界是不是更美好一些了呢?這是技術進步再次給人類發展帶來福利。

不提這種去中心化的金融系統是否能在現實中普及,在跨國交易、跨組織合作日益頻繁的今 天,已經有了不少有意義的嘗試和參考。

更進一步,比特幣只是基於區塊鏈技術的一種金融應用(而且是直接嵌入區塊鏈中),區塊鏈技術還能帶來更通用的計算能力。HyperledgerEthereum 就試圖做類似的事情,基於區 塊鏈再做一層平臺層,讓別人基於平臺開發應用變得更簡單。

另外,區塊鏈本身可以作為分散式儲存,也自然可以作為分散式計算引擎。可以想象,整個 加入叢集的裝置都是計算引擎,大家通過付費來使用計算力,是不是就有點普適計算的意味了?

有理由相信,隨著更多商業應用場景的出現,區塊鏈技術將在未來金融和資訊科技領域佔據 一席之地。