當前位置:
首頁 > 最新 > 組成區塊鏈的基本要素

組成區塊鏈的基本要素

今天給他家分享的是當下炙手可熱的技術—區塊鏈。只要大家在百度輸入區塊鏈,就能獲得成千上萬條有關的消息。想必大家或多或少對區塊鏈有所了解。我也在通過不斷的學習,來不斷刷新自己對區塊鏈的認識。作為一名程序員,自然而然地也想探究一下區塊鏈背後的技術。雖然個人能力有限。今天目標是帶大家了解一下組成區塊鏈的五個基本元素,內容可能因為自己的知識結構和能力限制,可能有有誤的地方,希望大家指正。

有人說你研究他—區塊鏈有啥用,其實我也不知道他對我的工作會有啥幫助和用處。但是我知道,如果我都知道他的好處,那他就不會給我帶來驚喜和更多價值,現在唯一可以確定他能給我帶來的好處就是,帶來了一些新思想,開闊了我的編程思路。這是我現在唯一知道他能給我帶來的好處。

我們這裡定義狀態機,這裡狀態機只是為了說明區塊鏈,所以設計很簡單,初始化狀態為整型 0 更新狀態的是將消息(數字)添加到初始狀態(0),如圖 這裡狀態q1 7 = 0 + 7,這是狀態機(下圖)

區塊鏈技術是基於狀態機的,不斷更新狀態,q1 = q0 + 7(message) q2 = q1 + (-5) = 2 …

這裡我們為消息添加一個校驗函數,這個函數接受當先狀態和消息做為參數,按一定規則進行校驗,返回真或假。這裡我們定義一個簡單的校驗規則就是,加入 message 值(7) 需要大於當前狀態(0) 也就是 7 > 0 。

我們看一下圖,在 q1 接受 -5 進行校驗 –5 是否合法,由於我們規則是 message (-5)需要大於原有狀態值 7,所以 -5 > 7 為 false 沒有通過校驗。繼續向下顯然 16 > 7 通過校驗狀態更新為 7 + 16 為 23。(如下圖)

我們創建 4 個節點可以代表人或組織,每兩個節點可以雙向傳遞消息,這樣就形成一個分散式網路,確保了信息可以傳遞給每個節點。(如下圖)

在這個分散式網路,每個節點都有一個狀態機。

當 message (-5)從一個節點進入分散式網路,以這個節點為路口來更新整個網路上每個節點的狀態機。

當 message (-5)流入到每個節點時,每個節點都會獲取消息進行校驗來更新自己狀態機。

這樣問題也來了,當不同 message 從兩個不同或多個節點進入分散式網路,來更新每個節點的狀態機。這樣就會帶來一致性的問題。這樣就有可能有兩種情況,第一種情況是先接受 29 然後接受 72 ,還有一種是與之相反。

這樣就有可能有兩種情況,第一種情況是先接受 72 然後接受 29 ,還有一種是與之相反。

第一種情況,先接受 72 由於 72 > 23 所以會通過校驗更新狀態為 95, 然後由於 29

這樣就有可能有兩種情況,第二種情況是先接受 29 然後接受 72 ,還有一種是與之相反。

第二種情況,先接受 29 由於 29 > 23 所以會通過校驗更新狀態為 52, 然後由於 29

這樣對帶來問題,每個節點會按哪種情況來更新自己的狀態呢?哪種 message 順序是正確的呢?

通過一定的演算法來為每個節點分配彩票,然後進行搖獎,勝出的節點可以決定分歧的對與錯。有關具體如何實現,由於個人也在對其內部實現機制了解中,無法給出詳細的解答。

這種方式適合內部區塊鏈,而非公網區塊鏈。假設一個人進行提議,大家投標來決定這種情況是否為正確來解決一致性的問題。這部分內容以後給大家更詳細地解釋。

在處理一致性問題上,我們勢必要花費一定時間,這樣就可能帶來瓶頸的的問題,尤其是大量的信息接連而至的情況下。

為了解決瓶頸問題,我們將一定數量的消息組合為一組消息塊,然後通過演算法來排序,然後將一組消息添塊加到節點上的狀態機來更新狀態。

依賴一組由公鑰/私鑰(Public Key /Private Key)組成的密鑰對,所以採用非對稱加密又被稱為公鑰加密(Public Key Cryptography)。具體來說,公鑰和私鑰均可以用於加密。如果密鑰對中的其中一個用於加密,另一個則用於解密。公鑰公諸於眾,不具有隱私性,任何人均可以獲取;而私鑰專屬於擁有該密鑰對的實體,屬於絕對隱私。

這裡給大家來圖解—非對稱加密

總結


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 小馬學編程 的精彩文章:

TAG:小馬學編程 |