建議收藏,輕鬆搞懂區塊鏈!

菜農曰發表於2023-02-20

未來已來,只是不均衡地分佈在當下

大家好,我是菜農,歡迎來到我的頻道。

本文共 5844字,預計閱讀 30 分鐘

區塊鏈是近些年來最熱門的前沿技術,被認為是未來十幾年對金融、物聯網、醫療等諸多領域產生最大影響的"黑科技"之一。

在本篇中我們將掌握區塊鏈的基本概念技術構成邏輯結構

一、基本概念

“區塊鏈” 這個概念是由一個網名為中本聰的人在2008年發表的《比特幣:一種點對點的電子現金系統》中提出的。隨後他實現了一個比特幣系統,併發布了加密數字貨幣—比特幣。接下來出現了以太坊和超級賬本這樣的大型區塊鏈專案。

那麼在你的認知中,區塊鏈是什麼樣的?下面整理了幾種選項,看下是否有符合你認知的選項。

  1. 區塊鏈是比特幣,比特幣就是區塊鏈
  2. 區塊鏈很值錢
  3. 區塊鏈可以運用在任何領域
  4. 區塊鏈是免費的
  5. 區塊鏈是非常安全的

通常來說,選項1是大多傾向的結果。但比特幣和區塊鏈兩者不能等同,實際上,區塊鏈是比特幣的底層技術,如果要舉例比喻的話,就好比用麵粉可以做包子,但不能說麵粉等於包子,包子等於麵粉。而這裡的麵粉就相當於是包子。當然了作為底層技術的存在,不僅僅應用於比特幣的實現中,還有很多其他基於區塊鏈技術的應用。

那麼區塊鏈究竟是什麼?從比較專業的維度上看,可以從以下三點來解釋

  1. 區塊鏈是底層技術

作為一個底層技術,它是包含了 P2P動態組網基於密碼學的共享賬本共識機制智慧合約 等關鍵技術

  1. 區塊鏈是一個數字貨幣和賬本系統

從貨幣學的角度看,區塊鏈是數字貨幣系統的分散式共享賬本系統,這是一個去中心化的、網內使用者共同維護的賬本系統。

  1. 區塊鏈是網際網路的基礎設施

它提供了分散式去中心化的價值網際網路,為更多大規模的共享、協作應用創造可能。

作為解釋依據,這裡提取了來自中本聰在2008年發表的《比特幣:一種點對點的電子現金系統》中的一段描述:

時間戳伺服器對以區塊(Block)形式存在的一組資料是實施隨機雜湊並加上時間戳,然後將該隨機雜湊進行廣播,就像在新聞後世界性新聞組網路(Usenet)的發帖一樣。顯然,該時間戳能夠證實特定資料於某特定時間是的確存在的,因為只有在該時刻存在了才能獲取相應的隨機雜湊值。每個時間戳應當將前一個時間戳納入其隨機雜湊值中,每一個隨後的時間戳都對之前的一個時間戳進行增強(Reinforcing),這樣就形成了一個(Chain),即區塊鏈,如下圖所示:

文字較為蒼白,我們看圖可以很清晰的看出 區塊鏈就是由 區塊 構成的

1)區塊

區塊是區塊鏈的組成單元,就像金字塔是由一塊塊石頭組成的一樣,區塊鏈就是一個個區塊組成的。

區塊是由一系列特徵值和一段時間內的交易記錄組成的一個資料結構。區塊的資料結構是由 區塊頭區塊體 組成。其中區塊頭包含了當前區塊的特徵值,區塊體中包含的是實際的交易記錄資料。

1、資料結構

1️⃣ 區塊頭

區塊頭是由 80 個位元組組成,主要由版本號、前一個區塊的雜湊值、Merkle根、時間戳、bits、Nonce 這幾項區塊的特徵值組成。

  • ver: 版本號,表示本區塊遵守的驗證規則
  • prev_block: 父區塊雜湊值,指的是這個區塊連線的上一個區塊的雜湊值
  • mrkl_root: mrkl_root 根,是該區塊鏈交易的 Merkle 樹根的雜湊值(Merkle 是一種雜湊樹的資料結構)
  • time: 時間戳,區塊生成的時間
  • bits: 區塊的難度值,該區塊工作量證明演算法的難度目標,使用特定的演算法編碼
  • Nonce: 是一個隨機數,為了找到滿足難度目標所設定的
2️⃣ 區塊體

區塊體主要包括了 交易數量(n_tx)、區塊大小(size)和長度不定的交易記錄(tx 欄位包含的交易列表) 等資訊。但這只是比特幣中的區塊體結構,實際上區塊體重可以包括任何內容,比如以太坊的區塊體中除了交易資料還包含智慧合約。

2)區塊特點

區塊是由計算機透過加密演算法生成的。如果成功地生成一個有效的區塊,該計算機(節點)就能獲得一定的獎勵,這個獎勵就是加密數字貨幣,也就是所謂的 挖礦

加密演算法並不是容易生成結果的,而是該區塊的雜湊值必須滿足一定的條件。這個條件就是能夠使得區塊頭中特徵值相加生成的雜湊值需要符合一定格式,比如難度值為 000,由於雜湊值隨著輸入的不同而不同,因此計算機要不斷嘗試改變區塊頭的 Nonce 值直至最終生成的雜湊值滿足條件才算生成了一個有效的區塊。

我們可以藉助 Blockchain Demo 工具來嘗試生成一個區塊。

從圖中可以看出在 HASH 一欄中的資料是紅色的,說明該雜湊值是無效的。因為未滿足 000 開頭的資料。那麼我們需要再次計算後檢視結果

可以看出這次的結果為綠色,是有效的,因為該資料滿足 000 開頭。我們將上面的區塊結果進行解讀,可以分為以下幾部分:

  • 索引: 表示區塊在區塊鏈中的位置,其中第一個區塊為 創世區塊(索引為 0) ,第二個區塊的索引為1,第三個區塊的索引為2,以此類推。
  • 時間戳: 表示該區塊的生成時間,根據時間戳可以判斷區塊鏈中各個區塊生成的先後順序。
  • 雜湊值: 表示每個區塊的唯一標識,也可稱為區塊的 數字指紋。雜湊值的長度是固定的,而且和區塊的內容緊密關聯,一旦區塊內容發生改變,該區塊的雜湊值也會發生改變。而且,區塊中的雜湊值還有 有效無效 之分,滿足特定條件的雜湊值是有效的,否則就是無效的。這個特定條件一般稱稱為 困難度(Difficulty)。父區塊雜湊值就是區塊中特定區塊前一個區塊的雜湊值。
  • 資料:區塊中的資料可以是任何內容,比特幣區塊鏈的區塊中的資料為一串串交易記錄。
  • Nonce: 是一個隨機數,用來生成一個有效的雜湊值。Nonce 會根據區塊資料的不同而不同,每個區塊都需要經過大量計算才能找到對應的 Nonce 值。
  • 創世區塊: 區塊鏈中的第一個區塊,它沒有父區塊,故創世區塊的父區塊雜湊值為空或者為 0。

2)執行原理

綜上所述,區塊鏈就是一個連結串列,而這個連結串列就是由一個個區塊組成的,這些區塊依次連線,形成一個不可篡改的鏈條,那麼其中的執行過程我們也可以由此推出:

  1. 首先構成區塊鏈的去中心化網路中的第一個節點,生成一個 創世區塊
  2. 然後透過 挖礦 生成新的區塊新增到區塊鏈中
  3. 新的節點加入到去中心化網路中會先生成一個最新的區塊鏈資料
  4. 隨後每個節點生成的區塊都會向網路中的其他節點進行廣播
  5. 其他節點收到廣播後會判斷自己是否已經收到該區塊,是的話就忽略,否的話會先校驗該區塊是否有效,如果是有效的區塊則會新增到自己的區塊鏈中

3)小結

  1. 區塊鏈中的節點始終都講最長的鏈條作為正確的鏈,並持續延長和維護這條鏈。當節點發現有更長的鏈條並且本身的鏈條不是最新時,就會使用最長的鏈條提花你當前節點的鏈條。若一個節點判斷出本身的區塊鏈是最新的,再收到新的區塊資訊時,節點就會把新的區塊新增到自身鏈條的最後。
  2. 當一個區塊鏈的節點掌握了整個區塊鏈中 51% 以上的計算能力時,它就可以重寫整個區塊鏈。基於這個原因,區塊鏈中的計算能力過度集中會很危險。只有一個龐大且均勻分佈的區塊鏈才比較安全。

二、技術構成

區塊鏈主要由三個核心技術構成,分別是 共識機制、智慧合約、去中心化網路

1)共識機制

共識機制是區塊鏈中的重要機制,不同的區塊鏈專案可能使用不同的共識機制。網路中的各個節點根據共識機制達成共識,共同維護整個區塊鏈網路。

1、PoW 機制

工作量證明機制(Proof of Work,PoW),工作量證明就是一份證明,它用來確定完成了一定量的工作並可以因此獲得一定的獎勵。

工作量證明是一種對應服務與資源濫用,或是阻斷服務供給的對策。一般要求發起者進行一些耗時的複雜運算,並且結果能被快速驗算。在計算過程中耗用的時間和資源作為成本,據此來確定建立或懲罰,以此來維護系統的一致性。

工作量證明機制最常用的技術原理是雜湊函式,工作量證明機制如下:

  1. 取得一些公開的資料,並加上一個隨機數(Nonce)
  2. 以資料和隨機數作為輸入值計算雜湊值
  3. 檢查生成的雜湊值是否符合一定的條件。若符合就幾下這個隨機數的值並退出。若不符合則改變隨機數的值再重新計算。

由於工作量證明機制需要消耗巨大的算力,如果有人嘗試惡意破壞,需要付出巨大的經濟成本,這就防止了惡意的資料修改。

缺點: 只有第一個獲取有效雜湊值的節點能得到獎勵,其他節點的計算會被浪費掉。

2、PoS機制

權益證明機制(Proof of Stake,PoS)試圖解決在 PoW 機制中大量資源被浪費的問題。不同於 PoW 機制要求進行一定量的計算,PoS 機制要求提供的是保證金,或者說是一定數量數字貨幣的擁有權。

PoS 機制的工作原理是透過保證金來確認一個合法的塊成為新的區塊,收益為保證金的利息和交易服務費。提供證明的保證金越多,則獲得記賬權的機率越大。

比如系統中有A、B、C、D4個人,A有40個幣,B有30個幣,C有20個幣,D有10個幣,那麼A獲得記賬權的機率就是D的4倍

PoS 機制的好處是在一定程度上縮短了共識達成的時間,不再需要大量消耗能源挖礦,其與 PoW 機制的區別如下:

3、DPoS 機制

股份授權證明機制(Delegated Proof of Stake,DPoS),與 PoS 機制基本原理相同,只是選舉了若干代理人,由代理人執行驗證和記賬功能,工作原理如下:

在 DPoS 機制下,每個節點按其持幣比例擁有影響力,51%節點投票的結果將是不可逆切有約束力的。其過程為:

每個節點可以將其投票權授予一名代表,獲票數最多的前 100 位代表按既定時間表輪流產生區塊。每名代表分配到一個時間段來生產區塊。所有的代表將收到等同於一個平均水平的區塊所含交易費的 10% 作為報酬。如果一個平均水平的區塊含有 100 股作為交易費,每個節點將獲得 1 股作為報酬

DPoS 的好處是大幅縮小了參與驗證和記賬節點的數量,可以達到秒級的共識驗證

4、DAG 機制

有向無環圖(Direct Acyclic Graph,DAG),DAG 是一個沒有有向迴圈的、有限的有向圖。它由有限個頂點和有向邊組成,每條有向邊都從一個頂點指向另一個頂點;從任意一個頂點出發都不能透過這些有向邊回到原來的頂點

傳統的區塊鏈只有一條單鏈,而在一條單鏈上無法併發打包區塊。而DAG 是一種拓撲結構,在區塊打包時間不變的情況下,可以並行打包N個區塊,那麼區塊鏈的交易容納能力就可以變成原來單鏈情況下的N倍。

2)智慧合約

智慧合約不是區塊鏈的必要組成,它是區塊鏈 2.0 之後出現的技術。如果把區塊鏈比作一個公司,智慧合約相當於公司中的規章制度,員工工作的時候會依據規章制度形式,而在有智慧合約的區塊鏈中,鏈上的節點會依據智慧合約進行工作。

智慧合約不只是一個可以自動執行的計算機程度,它還是一個基於區塊鏈的參與者。它對接收到的資訊進行回應,它可以接收和儲存價值,也可以向外傳送資訊和價值。

智慧合約具體是指執行在可複製、共享的賬本上的計算機程式,可以處理資訊,接收、儲存和傳送價值的指令碼

特點

  • 不可篡改
  • 分散式
  • 自動觸發
  • 不依賴第三方

3)去中心化網路

去中心化網路不同於中心化網路。在中心化網路中,需要中心伺服器,是一種星型的輻射結構。

  • 中心化網路

中心化網路

  • 去中心化網路

我們演化成區塊鏈的形式:

三、邏輯結構

從架構上來說,區塊鏈大致可以分為4層,從下到上依次為 資料層網路層合約層應用層

1)資料層

資料層是區塊鏈的邏輯架構中最基礎的一層,功能主要包括區塊資料的儲存、雜湊值和 Merkle 樹的計算以及鏈式結構的生成,其中進行資料的儲存時需要重點考慮資料儲存的效能和穩定性。在比特幣和以太坊中的儲存功能選擇的是 LevelDB資料庫。

資料層的功能是把交易資料儲存到區塊中並將區塊加入到區塊鏈中。當節點之間發生交易後會將交易資料廣播到區塊鏈的去中心化網路上,網路中其他節點負責校驗這些交易。交易被確認有效後會儲存到區塊中,並加入到區塊鏈。

2)網路層

網路層主要包括 P2P 網路共識演算法 兩個組成部分。P2P (Peer to Peer)網路也稱為點對點網路對等網路,根據去中心化程度的不同可以將其分為以下三種:

  • 純P2P網路

    • 節點同時作為客戶端和伺服器
    • 沒有中心伺服器
    • 沒有中心路由器
  • 雜P2P網路

    • 有一箇中心伺服器儲存節點的資訊並對請求這些資訊的客戶端作出響應
    • 節點負責釋出資訊(因為中心伺服器並不儲存檔案),讓中心伺服器知道哪些檔案被共享,讓需要的節點下載其可下載其可使用的資源
    • 路由重點使用地址,透過被一組索引引用來獲取絕對地址
  • 混合P2P網路

同時含有純P2P網路和雜P2P網路的特點

在 P2P 網路中,各個節點需要對區塊鏈中的各個區塊達成共識才能共同維護同一分散式賬本。這個共識的機制就是共識演算法,比較最為常用的共識演算法有工作量證明機制(Proof of Work,PoW)、權益證明機制(Proof of Stake,PoS)、股份授權證明機制(Delegated Proof of Stake,DPoS)

3)合約層

合約層的功能使得區塊鏈中的區塊具有可程式設計的特性,並且賦予了區塊鏈智慧的特性,在區塊鏈中智慧合約的作用如同一個智慧助理,對區塊鏈中的資料和事件按照預先設定的邏輯進行處理。

4)應用層

應用層泛指基於區塊鏈技術並結合具體業務場景開發的應用,包括加密數字貨幣錢包、交易所、去中心化應用等。

四、分類

隨著區塊鏈的快速發展、區塊鏈的應用範圍越來越廣,不同的區塊鏈應用之間也有了比較大的差異

1)公有鏈

公有鏈是對外公開、任何人都可以參與的區塊鏈。公有鏈是真正意義上的完全無中心化的區塊鏈。它透過加密技術保證交易不可篡改,在不可信的網路環境中建立共識,從而形成去中心化的信用機制。公有鏈使用於數字貨幣、電子商務、網際網路金融、智慧財產權等應用場景。

2)聯盟鏈

聯盟鏈僅限於聯盟成員使用,因其只針對成員開放全部或部分功能,所以聯盟鏈上的讀寫許可權、以及記賬規則都按聯盟鏈規則來控制。聯盟鏈適用於機構間的交易、結算、清算等B2B場景。超級賬本專案即屬於聯盟鏈。

3)私有鏈

私有鏈對單獨的個人或實體開放,僅供在私有組織,比如公司內部使用,私有鏈上的讀寫許可權,參與記賬的許可權都由私有組織來決定。私有鏈適用於企業、組織內部。

4)特點比較

5)側鏈

側鏈的概念最早產生於比特幣的應用過程中,側鏈實質上是指遵守側鏈協議的所有區塊鏈。側鏈協議是一種可以讓比特幣安全地從比特幣主鏈轉移到其他區塊鏈,又可以從其他區塊鏈安全地比特幣主鏈的協議。

側鏈本質上是一種跨區塊鏈解決方案。透過這種解決方案,可以實現數字資產從第一個區塊鏈到第二個區塊鏈的轉移,又可以在稍後的時間點從第二個區塊鏈安全返回到第一個區塊鏈。

6)閃電網路

在比特幣交易網路中,最為人詬病的問題便是交易效能:全網約每秒7筆左右的交易速度遠低於傳統金融交易系統。同時,等待6個區塊的可信確認將導致約1個小時的最終確認時間。

為了提升效能,比特幣社群提出了閃電網路等創新的設計。閃電網路的主要思路十分簡單—將大量交易放到比特幣區塊鏈之外進行,只把關鍵環節放到鏈上進行確認。閃電網路的工作原理是用比特幣擁有權的承諾來替代擁有權

五、總結

區塊鏈的主要特點包括去中心化、去信任、集體維護、匿名性、可靠的資料庫。

  • 去中心化: 區塊鏈技術基於P2P去中心化網路,區塊鏈網路上的節點都是平等的,沒有中心伺服器,故區塊鏈是去中心化的。
  • 去信任: 區塊鏈中的資料都是公開透明的,交易資料透過加密技術進行驗證和記錄,無須第三方信任機構的參與,故有去信任的特點。
  • 集體維護: 區塊鏈由全網節點共同參與維護,某一節點上資料的更新需要其他節點進行計算和驗證,不會受少數節點控制。
  • 可靠的資料庫: 區塊鏈中的每一個節點上的資料都是全網資料,單個節點的退出或癱瘓不會影響整個系統。

好了,以上便是本篇的所有內容,如果覺得對你有幫助的小夥伴不妨點個關注做個伴,便是對小菜最大的支援。不要空談,不要貪懶,和小菜一起做個吹著牛X做架構的程式猿吧~ 我們們下文再見!

今天的你多努力一點,明天的你就能少說一句求人的話!

我是小菜,一個和你一起變強的男人。 ?

微信公眾號已開啟,菜農曰,沒關注的同學們記得關注哦!

相關文章