1 2 區塊鏈技術棧

2021-09-16 19:42:34 字數 4591 閱讀 3676

區塊鏈本身只是一種資料的記錄格式,就像我們平常使用的excel**、word文件一樣,按照一定的格式將我們的數 據儲存在電腦上。與傳統的記錄格式不同的是,區塊鏈是將產生的資料按照一定的時間間隔,分成乙個個的資料塊記錄,然後再根據資料塊的先後關係串聯起來,也 就是所謂的區塊鏈了。按照這種規則,沿著時間線不斷增加新的區塊,就好像是時光記錄儀一樣,記錄下發生的每一筆操作。

這種資料記錄的方式很新穎,在這種記錄方式下,資料很難被篡改或者刪除。有朋友可能會有說,這有什麼不好修改、刪 除的!比如我在自己電腦上儲存了乙份excel資料,再怎麼複雜的格式,我也能隨便改呀!如果區塊鏈的資料格式只是應用在單機環境或者乙個中心化的伺服器 上,那確實是的,畢竟自己對自己的資料擁有完全的支配權力。然而,一切才剛剛開始,我們接著看。

如果說區塊鏈代表的僅僅只是乙個記錄格式的話,那麼也實在算不上是偉大的發明,也看不出有什麼特別的能力,比如難 以篡改之類。事實上,區塊鏈是一整套技術組合的代表,在這一組技術的配合下,才能煥發出驚人的能力和耀眼的光芒。區塊鏈系統有很多種,就像聊天軟體有很多 種,電子郵箱有很多種一樣,而無論是什麼樣的區塊鏈系統,其技術部件的組合都是類似的。就像汽車基本都是由發動機、底盤、車身、電器四大部件組成的,計算 機都是由cpu、儲存器、輸入/輸出裝置組成的,不管是位元幣、萊特幣、以太坊還是其他,核心結構和工作原理都是共同的。我們就來看看最基本的技術組合都 有哪些:

如圖所示,這是區塊鏈系統結構的基本組成,各種系統本質上都是在這個經典結構之上直接實現或者擴充套件實現。這些零部件裝 配在一起,組成了乙個區塊鏈軟體,執行起來後就稱之為乙個節點,多個這樣的節點在不同的計算機裝置上執行起來,就組成了乙個網路。在這個網路中每個節點都 是平等的,大家互相為對方提供服務,這種網路被稱為點對點的「對等網路」。為了讓大家對這些組成模組的名詞有更具體的感受和理解,我們一一來解釋一下。

1.區塊鏈賬本

如上所述,它表示一種特有的資料記錄格式。區塊鏈,就是「區塊+鏈」,所謂的區塊就是指資料塊的意思,每乙個資料塊之間通過某個標誌連線起來,從而形成一條鏈,我們看下示意圖:

如圖所示,乙個區塊乙個區塊地銜接。大家可以發現在生活中有很多相似的記錄方式,比如企業的會計賬簿,每個月會計將記賬憑證彙總為賬簿並且月結,這樣一段 時間下來,就按月形成了乙個連續賬簿,每個月的資料就相當於區塊,區塊與區塊之間通過年月串聯起來。以位元幣來說,大約是每10分鐘產生乙個區塊,區塊中 主要包含了交易事務資料以及區塊的摘要資訊。我們看下位元幣中區塊鏈資料的組成示意圖:

這種格式還有個巧妙的地方,如果這個資料總是由乙個人來記錄的,那自然也沒什麼,但是如果放到網路中,大家共同來 記錄這個資料,那就有點意思了,每個區塊資料由誰來記錄或者說打包,可以有乙個規則。比如擲骰子,大家約定誰能連續3次擲出6,那就讓他來記錄下乙個區塊 的資料,為了補償他的勞動投入,獎勵給他一些收益。位元幣正是使用了這樣的原理來不斷發行新的位元幣出來,獎勵給打包記錄區塊資料的那個人的位元幣就是新 發行的位元幣。

2.共識機制

所謂共識,就是指大家都達成一致的意思。在生活中也有很多需要達成共識的場景,比如開會討論,雙方或多方簽訂乙份 合作協議等。在區塊鏈系統中,每個節點必須要做的事情就是讓自己的賬本跟其他節點的賬本保持一致。如果是在傳統的軟體結構中,這幾乎就不是問題,因為有一 個中心伺服器存在,也就是所謂的主庫,其他的從庫向主庫看齊就行了。在實際生活中,很多事情人們也都是按照這種思路來的,比如企業老闆發布了乙個通知,員 工照著做。但是區塊鏈是乙個分布式的對等網路結構,在這個結構中沒有哪個節點是「老大」,一切都要商量著來。在區塊鏈系統中,如何讓每個節點通過乙個規則 將各自的資料保持一致是乙個很核心的問題,這個問題的解決方案就是制定一套共識演算法。

共識演算法其實就是乙個規則,每個節點都按照這個規則去確認各自的資料。我們暫且拋開演算法的原理,先來想一想在生活 中我們會如何解決這樣乙個問題:假設一群人開會,這群人中並沒有乙個領導或者說老大,大家各抒己見,那麼最後如何統一出乙個決定出來呢?實際處理的時候, 我們一般會在某乙個時間段中選出乙個人來發表意見,那個人負責彙總大家的內容,然後發布完整的意見,其他人投票表決,每個人都有機會來做彙總發表,最後誰 的支持者多就以誰的最終意見為準。這種思路其實就算是一種共識演算法了。然而在實際過程中,如果人數不多並且數量是確定的,那還好處理些,如果人數很多而且 數量也不固定,那我們就很難讓每個人都去發表意見然後再來投票決定了,這樣效率就太低了。我們需要通過一種機制篩選出最有代表性的人,在共識演算法中就是篩 選出具有代表性的節點。

如何篩選呢?其實就是設定一組條件,就像我們篩選運動員,篩選尖子生一樣,給一組指標讓大家來完成,誰能更好地完 成指標,誰就能有機會被選上。在區塊鏈系統中,存在著多種這樣的篩選方案,比如pow(proof of work,工作量證明)、pos(proof of stake,權益證明)、dpos(delegate proof of stake,委託權益證明)、pbft(practical byzantine fault tolerance,實用拜占庭容錯演算法)等,各種不同的演算法,其實就是不同的遊戲玩法,限於篇幅,這裡暫不進行演算法過程的詳述,大家只要知道這些都是一 種篩選演算法就行了。區塊鏈系統就是通過這種篩選演算法或者說共識演算法來使得網路中各個節點的賬本資料達成一致的。

3.密碼演算法

密碼演算法的應用在區塊鏈系統中是很巧妙的,應用的點也很多,我們在這裡不詳細介紹密碼演算法的原理,就從幾個很關鍵的應用來介紹一下。

首先我們回顧下區塊鏈賬本格式。通過上述講解我們已經知道,區塊鏈賬本就是連線起來的乙個個區塊。那麼到底是通過 什麼來連線的呢?學過資料結構的朋友都知道,在資料結構中,有一種變數叫指標,它是可以用來指向某個資料的位址的。那麼區塊的連線是不是通過這樣的資料地 址呢?生活中的位址連線例子很多,比如路牌、門牌等。然而,區塊之間的連線,往往都不是靠資料位址來關聯的,而是靠一種叫作雜湊值的資料來關聯的。什麼叫 雜湊值?這是通過密碼演算法中的雜湊演算法計算得出的。雜湊演算法可以通過對一段資料計算後得出一段摘要字串,這種摘要字串與原始資料是唯一對應的。什麼意 思呢?如果對原始資料進行修改,哪怕只是一點點修改,那麼計算出來的雜湊值都會發生完全的變化。區塊鏈賬本對每個區塊都會計算出乙個雜湊值,稱為區塊哈 希,通過區塊雜湊來串聯區塊。這有乙個很好的作用就是,如果有人篡改了中間的某乙個區塊資料,那麼後面的區塊就都要進行修改,這個時候並不是簡單地修改一 下後面區塊的位址指向就能結束的,由於後面的區塊是通過區塊雜湊來指向的,只要前面的區塊發生變動,這個區塊雜湊就無效了,就指不到正確的區塊了。

另外乙個對密碼演算法的應用就是梅克爾樹結構,梅克爾樹結構在3.1.3節中有詳細介紹,我們這裡先初步認識下。通 過上述解釋我們知道,每個區塊會被計算出乙個雜湊值。實際上,除了整個區塊會被計算雜湊值外,區塊中包含的每一筆事務資料也會被計算出乙個雜湊值,稱為 「事務雜湊」,每乙個事務雜湊都可以唯一地表示乙個事務。對乙個區塊中所有的事務進行雜湊計算後,可以得出一組事務雜湊,再通過對這些事務雜湊進行加工處 理,最終會得出一棵雜湊樹的資料結構。雜湊樹的頂部就是樹根,稱為「梅克爾根」。通過這個梅克爾根就可以將整個區塊中的事務約束起來,只要區塊中的事務有 任何改變,梅克爾根就會發生變化,利用這一點,可以確保區塊資料的完整性。

當然,密碼演算法在區塊鏈系統中的應用還遠不止這些,比如通過密碼演算法來建立賬戶位址、簽名交易事務等,這些應用在後續章節中會逐步介紹。

4.指令碼系統

指令碼系統在區塊鏈中是乙個相對抽象的概念,也是極其重要的乙個功能,可以說區塊鏈系統之所以能形成乙個有價值的網 絡,依靠的就是指令碼系統,它就像是發動機一樣,驅動著區塊鏈系統不斷進行著各種資料的收發。所謂指令碼,就是指一組程式規則。在區塊鏈系統中,有些系統中的 程式規則是固定的,比如在位元幣系統中,只能進行位元幣的傳送與接收,這個傳送與接收的過程就是通過實現在位元幣中的一組指令碼程式來完成的;而有些系統是 允許使用者自行編寫一組程式規則的,編寫好後可以部署到區塊鏈賬本中,這樣就可以擴充套件區塊鏈系統的功能,比如以太坊就是通過實現一套可以自定義功能的指令碼系 統,進而實現了智慧型合約的功能。

指令碼系統使得在區塊鏈中可以實現各種各樣的業務功能。本來大家只是通過區塊鏈來記財務賬的,通過指令碼系統,大家可 以使用區塊鏈來記錄各種各樣的資料,比如訂單、眾籌賬戶、物流資訊、**鏈資訊等,這些資料一旦可以記錄到區塊鏈上,那麼區塊鏈的優點就能夠被充分地發揮 出來。有關指令碼系統的具體使用和開發,大家可以通過後續的第6~8章來理解。

5.網路路由

這個功能模組比較簡單。區塊鏈系統是乙個分布式的網路,這些網路中的節點如何來彼此進行連線通訊呢?依靠的就是網 絡路由功能。前面我們說到,張

三、李四、王

五、趙六是通過彼此介紹來認識的,這個其實就是網路路由的雛形了。在分布式的網路結構中,不存在乙個指定的服務 器,大家沒法通過乙個伺服器來直接交換彼此的身份資訊,就只能依靠彼此聯絡並傳播資訊。在區塊鏈系統中,這個功能一般會定義成一種協議,稱為「節點發現協 議」。

網路路由可以說是區塊鏈系統中的觸角,通過大量的觸角將每個節點連入網路,從而形成乙個功能強大的區塊鏈共識網路。

[1] 梅克爾根也稱為「梅克爾根雜湊值」,具體概念後續有詳細介紹,暫且可以認為就是乙個區塊中所有交易事務的集體身份證號。

'); (window.slotbydup = window.slotbydup || ).push(); })();

'); (window.slotbydup = window.slotbydup || ).push(); })();

5區塊鏈技術最簡單入門之五區塊鏈4 0推測

關注我的人將送專業分析軟體 區塊鏈技術最簡單入門之五區塊鏈4.0推測 依舊為兩個還沒發布的軟體做一下說明。一共會有2個軟體出來 連線各大交易平台的軟體大約3月份出demo,智慧型分析 漲跌的軟體大約5月份出demo,測試版的軟體都是免費的,正式版的軟體現在還不清楚銷售策略,不過提出好建議的人會免費得...

區塊鏈系列1 區塊鏈科普

區塊鏈本質上是乙個賬本,當乙個商品 乙個行為 乙個交易開始的時候,可以產生乙個區塊,它的整個流動的生命週期被詳細的記錄下來,形成乙個鏈。這個賬本會存在網際網路上,理論上無法被任何人拿走 篡改或者銷毀。優點 1.分布式,去中心化 拿位元幣來講,去中心化的好處就是不需要有乙個類似銀行的機構來為雙方交易提...

區塊鏈技術棧

區塊鏈本身是一種資料的記錄方式,就像我們平常使用的excel word等,按照一定的格式儲存到電腦上。與傳統的記錄格式不同的是,區塊鏈將產生的資料按照一定的時間間隔,分成乙個個的資料庫記錄,然後再根據資料塊的先後關係串聯起來,也就是所謂的區塊鏈了。按照這種規則,沿著時間線不斷增加新的區塊就好像是時光...