區塊鏈,英文 blockchain,本質上是一種去中心化的分布式資料庫。任何人只要架設自己的伺服器,接入區塊鏈網路,都可以成為這個龐大網路的乙個節點。用電腦挖礦就是這樣來的,現在越來越難挖,就是因為接入節點增加,計算量指數級增加導致。
區塊鏈既然本質是資料庫,裡面究竟儲存了什麼東西呢?讓我們來了解一下區塊鏈的基本單元:區塊(block)。
乙個區塊分為兩大部分:
1.區塊頭
區塊頭裡面儲存著區塊的頭資訊,包含上乙個區塊的雜湊值(prehash),本區塊體的雜湊值(hash),以及時間戳(timestamp)等等。
2.區塊體
區塊體儲存著這個區塊的詳細資料(data),這個資料報含若干行記錄,可以是交易資訊,也可以是其他某種資訊。
剛才提及的雜湊值又是什麼意思呢?
想必大家都聽說過md5,md5就是典型的雜湊演算法,可以把一串任意長度的明文轉化成一串固定長度(128bit)的字串,這個字串就是雜湊值。
而在我們的區塊鏈中,採用的是一種更為複雜的雜湊演算法,叫做sha256。最新的資料資訊(比如交易記錄)經過一系列複雜的計算,最終會通過這個雜湊演算法轉化成了長度為256bit的雜湊值字串,也就是區塊頭當中的hash,格式如下:
a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0
區塊與hash是一一對應的,hash可以當做是區塊的唯一標識。
不同的區塊之間是如何進行關聯的呢?依靠hash和prehash來關聯。每乙個區塊的prehash和前乙個區塊的hash值是相等的。
這個從資料結構上看,就是乙個鍊錶,由許多的區塊所組成的鏈式結構,所以就是區塊鏈。
挖礦就是最新資料的雜湊值,生成新區塊的過程。
為什麼要計算區塊的雜湊值呢?
既然區塊鏈是乙個鏈狀結構,就必然存在鏈條的頭節點(第乙個區塊)和尾節點(最後乙個區塊)。一旦有人計算出區塊鏈最新資料資訊的雜湊值,相當於對最新的交易記錄進行打包,新的區塊會被建立出來,銜接在區塊鏈的末尾。
新區塊頭的hash就是剛剛計算出的雜湊值,prehash等於上乙個區塊的hash。區塊體的data儲存的是打包前的交易記錄,這部分資料資訊已經變得不可修改。
這個計算hash值,建立新區塊的過程就叫做挖礦。
用於進行海量計算的伺服器,叫做礦機。
操作計算的工作人員,叫做礦工
所以大家也看到
計算雜湊值究竟難在**?咱們來做乙個最粗淺的解釋,雜湊值計算的公式如下:
hash = sha-256(最後乙個區塊的hash + 新區塊基本資訊 + 交易記錄資訊 + 隨機數)
其中,交易記錄資訊也是一串雜湊值,它的計算涉及到乙個資料結構merkle tree。有興趣的小夥伴可以查閱相關資料,我們暫時不做展開介紹。
這裡關鍵的計算難點在於隨機數的生成。猥瑣的區塊鏈發明者為了增大hash的計算難度,要求hash結果的前72bit必須都是0,這個機率實在是太小太小。
由於(最後乙個區塊的hash + 新區塊基本資訊 + 交易記錄資訊)是固定的,所以能否獲得符合要求的hash,完全取決於隨機數的值。挖礦者必須經過海量計算,反覆生成隨機數進行「撞大運」一般的嘗試,才有可能得到正確的hash,從而挖礦成功。
同時,區塊頭內還包含著乙個動態的難度係數,當全世界的硬體計算能力越來越快的時候,區塊鏈的難度係數也會水漲船高,使得全網平均每10分鐘才能產生出乙個新區塊。
小夥伴們明白挖礦有多麼難了吧?需要補充的是,不同的區塊鏈應用在細節上是不同的,這裡所描述的挖礦規則是以位元幣為例。
位元幣(bitcoin)的概念最初由中本聰於2023年提出,而後根據這一思路設計發布了開源軟體以及建構其上的p2p網路。位元幣是一種p2p形式的數字貨幣。點對點的傳輸意味著乙個去中心化的支付系統。它的三個組成部分都出現了,即加密數字貨幣(cryptocurrency)、分布式賬本(distributed ledger)、去中心網路(decentralized network)
什麼是p2p網路呢?
傳統的貨幣都是由**銀行統一發行,所有的個人儲蓄也是由銀行統一管理,這是典型的中心化系統。
而位元幣則是部署在乙個全世界眾多對等節點組成的去中心化網路之上。每乙個節點都有資格對這種數字貨幣進行記錄和發行。
至於位元幣底層的資料儲存,正是基於了區塊鏈技術。位元幣的每一筆交易,都對應了區塊體資料中的一行,簡單的示意如下:
交易記錄的每一行都包含時間戳、交易明細、數字簽名。
**中只是為了方便理解。實際儲存的交易明細是匿名的,只會記錄支付方和收款方的錢包位址。
至於數字簽名呢,可以理解為每一條單筆交易的防偽標識,由非對稱加密演算法所生成。
位元幣協議規定,挖到新區塊的礦工將獲得獎勵,從2023年起是50個位元幣,然後每4年減半,目前2023年是12.5個位元幣。流通中新增的位元幣都是這樣誕生的,也難怪大家對挖掘位元幣的工作如此趨之若鶩!所以位元幣初期挖礦容易,出現有人用10000個位元幣換了2個披薩.
1.去中心化
區塊鏈不依賴於某個中心節點,整個系統的資料由全網所有對等節點共同維護,都可以進行資料的儲存和檢驗。這樣一來,除非攻擊者黑掉全網半數以上的節點,否則整個系統是不會遭到破壞的。
2.資訊不可篡改
區塊內的資料是無法被篡改的。一旦資料遭到篡改哪怕一丁點,整個區塊對應的雜湊值就會隨之改變,不再是乙個有效的雜湊值,後面鏈結的區塊也會隨之斷裂。
1.過度消耗能源
想要生成乙個新的區塊,必須要大量伺服器資源進行大量無謂的嘗試性計算,嚴重耗費電能。
2.資訊的網路延遲
以位元幣為例,任何一筆交易資料都需要同步到其他所有節點,同步過程中難免會受到網路傳輸延遲的影響,帶來較長的耗時。
什麼是區塊鏈
區塊鏈又叫blockchain,是位元幣的核心技術與基礎架構。區塊鏈是乙個分布式網路,可以幫助多個節點達成共識。技術特徵 1 塊鏈式資料結構 2 分布式公式演算法 從技術層面杜絕了非法篡改技術的可能性。3 密碼學方式 保證資料傳輸和訪問的安全。儲存在區塊鏈上的交易資訊是公開的,賬戶的身份資訊是高度加...
什麼是區塊鏈
礦池,是位元幣礦工為了使挖礦收益更為穩定而結成的共同挖礦團體。現在單人挖礦已經不太可能挖出位元幣了。由於全網的算力增漲很快,單個礦工挖得位元幣的概率越來越低。當然,並不是沒有可能,只是概率很低。這意味著單個礦工需要很長時間才能挖到位元幣。而加入礦池,可以按自己貢獻的算力,從整個礦池的每份收益中分得一...
什麼是區塊鏈?
區塊鏈是什麼?本質上就是乙個分布式的資料庫 區塊鏈作用 1 訪問資料 2 去中心化 任何人都可以架設伺服器,加入區塊鏈網路,成為乙個節點。區塊鏈的世界裡面,沒有中心節點,每個節點都是平等的,都儲存著整個資料庫。你可以向任何乙個節點,寫入 讀取資料,因為所有節點最後都會同步,保證區塊鏈一致。分布式資料...