官术网_书友最值得收藏!

1.1 理解區塊鏈

區塊鏈通常被定義為去中心的分布式記賬系統,該系統中的節點無需互相信任,通過統一的共識機制共同維護一份賬本。比特幣可以說是第一個區塊鏈應用。在金融危機爆發的2008年,一位名叫中本聰(Satoshi Nakamoto)的神秘人物在《比特幣:一個點對點電子現金系統》Satoshi Nakamoto, Bitcoin: A peer-to-peer electronic cash system, http://bitcoin.org/bitcoin.pdf, 2009。中首次提出了“比特幣”這一概念。比特幣的底層記賬系統就是現在我們說的區塊鏈技術,而中本聰身份之謎也為比特幣和區塊鏈技術帶來了更加神秘的色彩。在前幾年,大家會關注比特幣而不會單獨談論區塊鏈這個技術。直到2015年,區塊鏈這一概念才被單獨提出來為更多人所了解,且向著更廣泛的應用場景發展。發生在這個時間點的主要原因之一是以太坊的出現和日益成熟。

區塊鏈是一種分布式、去中心化的計算與存儲架構。在詳細了解區塊鏈每個技術組成部分之前,先來理解為什么需要這種架構。

區塊鏈要解決的是如何用一種可信的方式記錄數據,使得用戶可以信任區塊鏈系統記錄的數據,而無須假設記賬節點的可信性。怎么實現呢?“無須信任”技術上的解決辦法就是假設互相不信任。因此,每個節點都存有一份完整的數據記錄,每條新的交易都要被重新驗證。當一個節點重新加入網絡并需要同步數據的時候,也是從其他節點同步交易歷史,然后重新計算驗證——這就決定了其第一個特點,即分布式存儲(不能完全信任他人的存儲)。也正是為了高效可靠的驗證需要,才有了區塊鏈現在的數據結構:區塊鏈由成塊的交易通過密碼學算法連接在一起,使得整個賬本公開透明、可追蹤、不可篡改(數據被篡改時很容易被驗證發現)這里“去中心化”是打造一個可靠的全球賬本的一個手段,而不是目的。因此,我們看到具體實施的區塊鏈解決方案中也有多中心的設計。。這么多記賬節點為什么愿意按照一致性協議記賬呢?依靠的就是巧妙的記賬激勵機制——誠實的記賬節點會得到相應的獎賞,且誠實的記錄比惡意篡改記錄的收益更大——這就是一致性協議設計中的要點。下面就對區塊鏈的數據結構、分布式存儲和一致性協議進行詳細介紹。

首先從數據結構來理解區塊鏈,圖1-2展示了比特幣區塊鏈的數據結構。系統中的交易(Transaction)被打包成一個個區塊(Block)。在區塊鏈系統運行過程中,區塊鏈每次只能添加一個區塊,并且每個區塊均包含了用于驗證其有效鏈接于上一個區塊之后的數學憑證。正如它的名稱“區塊鏈”(Blockchain),一個個區塊按照密碼學算法鏈接在一起。這樣的組織設計可以很容易地驗證數據是否篡改、追蹤歷史以及保證安全。

圖1-2 比特幣區塊鏈的數據結構

其次,區塊鏈的架構是分布式、去中心化的。系統中各個節點組成一個P2P網絡,每個節點均分別執行、驗證和記錄相同的交易,每個節點都可以在本地存儲完整的區塊鏈數據。沒有一個中心機構能夠干預交易的執行順序和結果。因此,該架構具有很強的魯棒性。這里要說明一點,我們看到的公有鏈的平臺是去中心的,因為其設計假設以沒有任何信任作為前提,即都不可信。在實際的應用中,如果有一些可信的元素,是完全可以利用的。因此我們也看到很多系統設計是多中心或者弱中心的模式。“去中心”在這里不是目的,而是一種達到可信的手段。

最后,為了保證各節點狀態的一致性,還需要共識機制,即一致性協議(如PoW、PoS、PoA等)。以PoW為例,為了使得各個節點記錄的結果是一致的,在每一時刻系統要選擇一個記賬節點來計算下一個區塊。其他節點對該記賬節點的區塊結果進行驗證,通過后則接受這個區塊。為了激勵大家高效正確地記賬,系統對記賬節點有相應的獎賞,這樣一來大家會貢獻計算和存儲資源來爭奪記賬權。由于可以互相驗證,也保證了記賬的可靠性。接下來,我們要解決的問題就是:如何公平地選取這個記賬節點,以及如何設計激勵機制。PoW中采用的是“猜散列值”這個公平的、依靠消耗算力的方式,也被稱作“挖礦”。誰先算出給定要求的散列值,誰就以大概率爭奪到這個記賬權。為什么說是概率呢,因為在分布式網絡中,由于延遲,消息傳遞到其他各個節點的時間是不一樣的。比如,我看到的是Bob先算出來的,而你可能看到的是Alice先“挖”出來。在不同節點上對下一區塊的認可在短時間內可能是不同的。最終,以系統中最長的鏈條作為共識結果,即大家認可的賬本內容。因此在使用中,當我們在本地看到某個交易被打包在區塊鏈后,還需要等待若干后繼塊產生,等待若干塊又稱為等待確認(confirmation)。這樣做的目的是防止由于延遲帶來的賬本不一致,具體細節將在第2章介紹。可見一致性協議的設計既要安全,以保證全網中各個節點存儲的數據能夠達成共識;還需要有效的激勵機制,給予一定的經濟獎勵(即虛擬貨幣機制)來維持并且驗證網絡運行的節點,從而保證架構的穩定健康運行。

圖1-3展示了比特幣一類的數字貨幣的交易示例。Bob要給Alice進行轉賬,他需要創建一條交易,聲明轉賬的付款人、收款人以及轉賬金額。之后Bob在這條交易上添加自己的數字簽名,并將交易發布到區塊鏈網絡上。這條交易被記賬節點驗證后打包廣播,并通過共識(一致性)協議達成全網一致。Alice在確認看到交易被記錄,且該交易后面還有若干區塊陸續被記錄后(通常6~12個塊)就可以認為自己已經收到了Bob的轉賬。

圖1-3 區塊鏈的網絡結構

對于比特幣的原理和使用我們有了一定的了解,接下來的問題是區塊鏈是不是只能支持數字貨幣這一種應用呢?在其他業務場景中,當邏輯復雜、資產多樣化的時候,又該如何利用區塊鏈呢?

主站蜘蛛池模板: 衡水市| 濮阳县| 正阳县| 堆龙德庆县| 健康| 葵青区| 嘉禾县| 葫芦岛市| 贺兰县| 公安县| 扎鲁特旗| 额尔古纳市| 全南县| 清涧县| 青铜峡市| 台南市| 重庆市| 海宁市| 集贤县| 从江县| 新密市| 丰宁| 永昌县| 锡林浩特市| 正定县| 清新县| 济阳县| 定安县| 乌兰县| 饶河县| 兴隆县| 莲花县| 普格县| 呼和浩特市| 芒康县| 余江县| 壤塘县| 且末县| 任丘市| 前郭尔| 汾阳市|