天天看點

區塊鍊概況:什麼是區塊鍊

定義

區塊鍊技術自身仍然在飛速發展中,目前還缺乏統一的規範和标準。

wikipedia 給出的定義為:

A blockchain —originally, block chain —is a distributed database that maintains a continuously-growing list of data records hardened against tampering and revision. It consists of data structure blocks—which hold exclusively data in initial blockchain implementations, and both data and programs in some of the more recent implementations—with each block holding batches of individual transactions and the results of any blockchain executables. Each block contains a timestamp and information linking it to a previous block.

最早區塊鍊技術出現在比特币項目。作為比特币背後的分布式記賬平台,區塊鍊在無集中式監管的情況下,穩定運作了近八年時間,支援了海量的交易記錄,并未出現嚴重的漏洞。

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

公認的最早關于區塊鍊的描述性文獻是中本聰所撰寫的 比特币:一種點對點的電子現金系統,但該文獻重點在于讨論比特币系統,實際上并沒有明确提出區塊鍊的定義和概念。在其中,區塊鍊被描述為用于記錄比特币交易的賬目曆史。

圖 1.2.3.1 - 古老的賬本

記賬技術曆史悠久,現代複式記賬系統(Double Entry Bookkeeping)是由意大利數學家盧卡·帕西奧利,1494 年在《Summa de arithmetica, geometrica, proportioni et proportionalità》一書中最早制定。複式記賬法将對賬驗證功能引入記賬過程,提升了記賬的可靠性。從這個角度來看,區塊鍊是首個自帶對賬功能的數字記賬技術實作。

更廣泛意義地看,區塊鍊屬于一種去中心化的記錄技術。參與到系統上的節點,可能不屬于同一組織,彼此互不信任;區塊鍊資料由所有節點共同維護,每個參與維護節點都能複制獲得一份完整記錄的拷貝。

跟傳統的資料庫技術相比,其特點應該包括:

  • 維護一條不斷增長的鍊,隻可能添加記錄,而發生過的記錄都不可篡改;
  • 去中心化,或者說多中心化,無集中的控制,實作上盡量分布式;
  • 可以通過密碼學的機制來確定交易無法抵賴和破壞,并盡量保護使用者資訊和記錄的隐私性。

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

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

定位 功能 智能合約 一緻性 權限 類型 性能 代表
公信的數字貨币 記賬功能 不帶有或較弱 PoW 公有鍊 較低 比特币
公信的交易處理 圖靈完備 PoW、PoS 受限 以太坊
帶權限的交易處理 商業處理 多種語言,圖靈完備 多種,可插拔 支援 聯盟鍊 可擴充 Hyperledger

基本原理

區塊鍊的基本原理了解起來并不難。基本概念包括:

  • 交易:對賬本狀态的改變,如添加一條記錄;
  • 區塊:記錄一段時間内發生的交易和狀态,是對目前賬本狀态的一次共識;
  • 鍊:由一個個區塊按照發生順序串聯而成,是狀态變化的日志記錄。

如果把區塊鍊作為一個狀态機,則每次交易就是試圖改變一次狀态,每次生成區塊就是參與者對于其中包括的所有交易改變狀态的結果确認。

圖 1.2.3.2 - 區塊鍊示例

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

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

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

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

的可能性。

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

分類

根據參與者的不同,可以分為公開(Public)鍊、聯盟(Consortium)鍊和私有(Private)鍊。

公開鍊,顧名思義,任何人都可以參與使用和維護,典型的如比特币區塊鍊,資訊是完全公開的。

如果引入許可機制,包括私有鍊和聯盟鍊兩種。

私有鍊,則是集中管理者進行限制,隻能得到内部少數人可以使用,資訊不公開。

聯盟鍊則介于兩者之間,由若幹組織一起合作維護一條區塊鍊,該區塊鍊的使用必須是有權限的管理,相關資訊會得到保護,典型如銀聯組織。

+

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

根據使用目的和場景的不同,又可以分為以數字貨币為目的的貨币鍊,以記錄産權為目的的産權鍊,以衆籌為目的的衆籌鍊等。

原文釋出時間為:2016-10-09

本文作者:智能計算時代

本文來源:

騰訊雲 雲+社群

,如需轉載請聯系原作者。

繼續閱讀