簡單理解鍊錶與區塊鏈 blockchain

2021-08-15 20:28:05 字數 1748 閱讀 6795

「區塊鏈」類似於c語言裡的鍊錶,其中「區塊」相當於鍊錶中的node節點,node節點之間相互串聯形成「鏈」。

鍊錶的概念(如圖)

換一種「實現」方式,每個石柱儲存下乙個石柱的經緯座標,進而可以準確找到下乙個節點。

現實中的「鍊錶」是用鐵鍊拴住的一根一根的石柱,而在c語言中,石柱被替換成了乙個struct結構體,兩個石柱之間的鐵鍊被替換成了記憶體指標。

每個node的節點包含乙個儲存下乙個node節點的指標域(即乙個指標變數,假設為next),next儲存下乙個node節點在記憶體中的位址,這樣,電腦程式可以從第乙個節點開始,依次找到後面所有處於鍊錶中的節點,並訪問每個節點中儲存的資料(data段)內容。

區塊鏈中,除了創世區塊(區塊即node節點,創世區塊是整個區塊鏈上的第乙個區塊)外,每個區塊都是根據其所在鏈中的上乙個區塊的頭部hash值生成的。 隱含的意思是說,我是上乙個區塊的孩子,我必須遺傳來自父母的一部分基因,沒有上一區塊就沒有我(不然我就會無家可歸,掛載不到整條鏈上)。這個血緣關係就是上下區塊之間的紐帶,無須懷疑其真實性(可以通過hash值進行驗證),且子區塊可以根據自身遺傳基因(父區塊的hash值)向前遍歷。 簡單地將,就是用hash值代替了記憶體指標。

一條區塊鏈一般可以由世界各地的計算機裝置共同維護,每台裝置可以有完整的拷貝,但正常情況下,每台裝置所擁有的最新的區塊鏈拷貝應該是相同的。就像天上有乙隻月亮,每台計算機都採集顯示它的縮影,月亮是唯一的,所以每台計算機看到的月亮縮影應該都是相同的。

區塊鏈是去中心化的,它由很多同等地位的運維工程師(客戶端)共同維護運轉。每當有乙個新區塊(新孩子出生)被孵化出來,且即將要加入到區塊鏈中時,孵化師(客戶端)會向其他人發布廣播,讓大家一起見證新生命的誕生。所有人會親自驗證新生嬰兒的血脈,如果新生兒確實是上一區塊的孩子(hash驗證),那麼便承認它的身份,讓它加入到區塊鏈中。這樣,大家對結果達成共識,那麼區塊鏈資料便能達到唯一性。當然,技術實現中,共識機制並不是這麼簡單實現的。

另外,每個區塊生成並掛載到區塊鏈上後(從大家都驗證並承認它的身份後開始),它的資料不能再做任何改變。

剛才說過,孩子的出生是依靠父母基因的。每個區塊的基因都是特定的,由整個區塊的資料內容hash而成,如果資料內容改變,其自身的hash值就會(必須)發生改變。那麼不管是當前區塊的孩子們,還是所有的孵化師們,都不會同意的。

想想**中的故事,有兩個非常強大的人物在打架,其中乙個人打不過對手,趁對方不注意,通過時光隧道回到了過去,殺掉了對手的爺爺...

劇情雖然誇張,但歷史不允許被修改的道理確是大家所共知的。強行改變區塊鏈中的父節點,相當於把該父節點後面的所有子節點統統捨棄,重新新增,導致該節點之後所有計算出子區塊的客戶端的努力都白費了,勞作既是代價,也是金錢。

位元幣是乙個和區塊鏈緊密相關的產物,想要理解區塊鏈,總是不自覺得往位元幣上面去靠。我思來想去,是因為位元幣中蘊含著的利益博弈,是理解區塊鏈在人心驅動下的精髓,也是區塊鏈價值的核心所在。區塊鏈唯一的信仰,就是每個人(客戶端)都會牟取自己的利益。支援對自己有利的行為,反對對自己有害的行為,監督其他人的不合規矩的行為(一般都不符合自己的利益)。它(位元幣規則)堅信這一點,並以此為核心,形成的一系列附加規則,通過人與人之間相互制約,監督,建立起一套完整的貨幣體系。

簡單理解區塊鏈技術

最近兩個比較火的名詞莫過於深度學習和區塊鏈了,本文章將從最簡單的基本概念帶大家走進區塊鏈的世界。圖1 1 傳統支付系統的交易流程 什麼是區塊鏈呢?簡單來說,區塊鏈就是乙個去中心化的信任機制。區塊鏈技術是一種全民參與記賬的方式。所有系統的背後都有乙個資料庫,可以把資料庫看成乙個大賬本,目前是各自記各自...

區塊鏈入門與理解 什麼是區塊和鏈

雜湊看起來就像是一串64位的隨機的16進製制的字串,本質上是某些數字資料的乙個指紋 也就是說每個不同的 文字 內容都有對應不同的指紋 雜湊值 先來看看下圖中的演示,我們在data區內輸入任意內容,下面的hash區內就會自動實時計算與之對應的hash值 並且data區的內容不管是只有1個字元,還是你把...

區塊鏈入門與理解 什麼是區塊和鏈

自 雜湊看起來就像是一串64位的隨機的16進製制的字串,本質上是某些數字資料的乙個指紋 也就是說每個不同的 文字 內容都有對應不同的指紋 雜湊值 先來看看下圖中的演示,我們在data區內輸入任意內容,下面的hash區內就會自動實時計算與之對應的hash值 並且data區的內容不管是只有1個字元,還是...