用資料視角看看區塊鏈是啥?

qing_yun 發表於 2022-07-19
區塊鏈

彭友們好,我是老彭啊。最近小表妹又轉行了,去了一家區塊鏈公司。區塊鏈太複雜了,表妹的小腦袋瓜感覺有點轉不過來了。

用資料視角看看區塊鏈是啥?

唉...關鍵時刻,還得老彭出馬

01、區塊鏈是個啥?

表妹在找我之前,其實找過很多人問。但是問了一圈,也查了一堆資料,都沒明白區塊鏈到底是啥意思。

很多資料裡都說區塊鏈具有兩大核心特點:一是資料難以篡改、二是去中心化。

還有一個解釋:區塊鏈就是賬本,每個人都記錄交易資料,還有一堆的加密演算法保證資料不會被破解。

另外還有一個機制,保證計算出來結果的人獲得獎勵,以保證整個機制良性迴圈。

然後小表妹就生出了一堆的小問號:

用資料視角看看區塊鏈是啥?

用資料視角看看區塊鏈是啥?

有些時候,一些技術文件的確不太容易讓人明白。就像是各種法律條款一樣,為了保證嚴謹性,必須要寫得足夠“拗口”,但是這樣就喪失了可讀性。

如果只是瞭解區塊鏈的特性,就很容易理解偏了。比如資料難以篡改,以及去中心化。

區塊鏈在特殊情況下會分叉(比特幣就分叉過),也曾經出現過被篡改的情況(51%攻擊)。

而且現在很多區塊鏈應用並不是去中心化的(優先的節點掌握在權威機構手中),那是不是就不叫區塊鏈了?

所以,我們得從根上理解,知其然,知其所以然。這樣才會明白啥叫區塊,啥叫鏈,為啥又能防止篡改,為啥又能去中心化。

02、區塊鏈的資料結構

其實表妹的這些問題,用資料視角一看,就全解決了。區塊鏈,有兩個片語成:1、區塊;2、鏈。

區塊是什麼?

鏈又是什麼?

區塊鏈是由區塊相互連線形成的鏈式儲存結構,區塊就是鏈式儲存結構中的資料元素,其中第一個區塊被稱為創始區塊。

區塊鏈的資料結構由兩部分組成:區塊頭和區塊體。

區塊頭又包含幾個核心的部分:

1、父區塊雜湊值,就是上一個區塊的雜湊地址。

2、各種引數(挖礦難度、時間戳和隨機數),用來設定遊戲規則的。時間戳其實就是給區塊蓋個章,它記錄的是本區塊被建立的精確的時間

3、默克爾根, 由區塊主體中所有交易的雜湊值逐級兩兩雜湊計算,用來確定全域性唯一的。

至於區塊體, 具體要記錄的內容。如果上鍊的是證書,那麼區塊體裡就存證書。如果上鍊是交易,那麼區塊體就是一個區塊中所有的交易記錄。

比如比特幣系統的每一個區塊主體大概是2500筆交易記錄,交易記錄就是轉賬資訊。

這些就是全部的資料結構了。區塊,就是一個資料結構的標準。這個資料結構是一個半結構化的。其中區塊體裡的內容是開放的,寫啥都行。

總結一下,就是下圖所示:

用資料視角看看區塊鏈是啥?

03、防篡改和去中心化

資料結構明白了,但是怎麼形成鏈呢?又怎麼保證資料無法篡改呢?又是如何做到去中心化的呢?

很簡單。

上面這個結構,是所有人都需要遵從的一個資料標準。利用這個標準,每一個節點在發生一個業務的時候,都同時做一個相同的動作:

把這條資訊在自己的區塊鏈小本本上記錄下來。

就像是老師在講臺上講課,小朋友在記筆記一樣。老師說1+1=2,所有小朋友都在筆記本上寫一句“老師說了,1+1=2"。

老師說的內容是實際發生的業務,小朋友記錄的內容就是在各自的小本本上記錄的“賬本”。

如果我們想知道老師上課講了什麼內容,應該怎麼做?最好的辦法就是裝一個監控,回去看視訊就好了。但是裝監控是學校行為,必須要有一個權威進行背書。

當然,我們還有另外一個辦法:看看小朋友們記錄的是什麼。因為所有人的內容都是一樣的,所以想知道老師說的是什麼,只需要隨便拿小朋友的筆記出來看看就行了。

如果有一個小朋友記錯了,就再看看其他小朋友記錄的是什麼就行了。我們只需要保證一半以上的小朋友記錄的是正確的,就能證明老師上課講的內容真實的被記錄下來了。這時候不需要一個權威機構(比如學校)背書。

這就是防篡改,以及去中心化。防篡改是區塊鏈的一大應用場景,比如證書的驗真。所以現在很多證照、發票等需要驗真的場景都用區塊鏈實現了。

但是,到這裡還沒說清楚什麼是“鏈”

04、鏈

其實鏈很簡單,資料結構裡已經說清楚了。區塊頭裡有一個“父區塊雜湊值”,這就是連結上一個鏈的資訊。

我們按照區塊鏈的資料結構寫一個簡單的例子:

用資料視角看看區塊鏈是啥?

第一個區塊就是創世區塊。假設第一個區塊裡的資訊是"老彭存了10000塊錢到區塊鏈銀行"。

然後又開了第二個區塊:

用資料視角看看區塊鏈是啥?

這時候,區塊頭裡的父區塊雜湊值就是創世區塊的雜湊值。這樣,第二個區塊和第一個區塊就“鏈”上了。

在第二個區塊裡,記錄的是“老彭又存了10000塊錢到區塊鏈銀行”。

然後我們繼續開第三個區塊:

用資料視角看看區塊鏈是啥?

第三個區塊的父區塊雜湊值則是第二個區塊的雜湊值。這時候第三個區塊和第二個區塊又“鏈”上了。這就形成了一個環環相扣的“區塊鏈”。

在這個塊上,記錄的是“老彭從區塊鏈銀行取走了10000塊錢”。

這樣,我們就能從第三個區塊一直向上追溯,看看老彭我到底在區塊鏈銀行裡幹了些啥。因為鏈一直可以向上追溯,所以我乾的事情都能全部挖出來。

這就是區塊鏈的另一個應用場景:溯源。比如疫情期間,北京所有冷鏈食品都上鍊了,能找到該產品的供應鏈鏈條。

用資料視角看看區塊鏈是啥?

北京冷鏈用的是長安鏈。我們不用管啥是長安鏈,反正就是一種區塊鏈就完事了。

來自 “ 大資料架構師 ”, 原文作者:彭文華;原文連結:https://mp.weixin.qq.com/s/uT3ZsXp8O6jIKPvV_KwVoA,如有侵權,請聯絡管理員刪除。