區塊鏈基礎知識入門

2021-09-25 06:20:47 字數 2454 閱讀 6260

區塊鏈是什麼?一句話概括,它是一種特殊的分布式資料庫。

有兩個功能:

分布式資料庫不是新產品,但是區塊鏈有個革命性的特點就是去中心化,其他資料庫都有管理員,但是區塊鏈沒有。如果有人想對區塊鏈新增審核,是實現不了,因為它的設計目標就是防止出現居於中心地位的管理當局。因為無法管理,所以區塊鏈無法被控制。

區塊鏈是由乙個個區塊(block)組成。區塊很像資料庫的記錄,每次寫入資料,就是建立區塊。

每個區塊包含兩個內容:

區塊的結構圖如上圖所示。詳情如下:

1)版本號(version)

用來標識交易版本和所參照的規則。

2)前一區塊雜湊值

也稱「父區塊雜湊值」,這個雜湊值通過對前乙個區塊的區塊頭資料進行雜湊計算(sha256演算法)得出,它的意義在於:每個新挖出的區塊都按秩序接在前乙個區塊的後面。

3)默克爾根(merkle root)

在區塊主體中,所有交易資訊先進行兩個一組的雜湊計算,這種結構叫做merkle樹(merkle tree),而且是一棵倒掛的樹。

如果乙個區塊裡只有4筆交易,則默克爾樹生成過程

最後的hash值就是區塊頭的merkle根。merkle樹能夠快速檢驗交易資料的完整性,即資料是否被篡改過。因為某筆中交易中的乙個資料被篡改,都會改變最終的hash。

4)時間戳(time)

記錄這個區塊生成的時間,精確到秒。每誕生乙個新的區塊,就會被蓋上相應的時間戳,這樣就能保證整條鏈上的區塊都按照時間順序進行排列。

5)難度值(target_bits)

挖出該區塊的難度目標。每產生2016個區塊,資料區塊運算難度會調整一次。比如,位元幣區塊鏈網路能夠自動調整挖礦的難度,讓礦工每10分鐘才挖出乙個區塊。原本需要14天才能挖完2016塊區塊,但不知哪個天殺的突然弄來幾台算力爆表的礦機,7天就搞定了,這就意味著到預定調整期的時候,挖礦難度會增加一倍。

使用乙個常量除以難度係數,可以得到目標值(target)。顯然,難度係數越大,目標值就越小。目標值越小,挖礦就難挖,就是新區塊的hash值要小於這個目標值(案例中的14484.162361)。乙個hash 32bit的話,可以知道這個hash前面部分很多位數必須是0,即要找出類似 00000000000000000000000000000001 的hash。

6)隨機數(nonce)

前面說過,當前區塊的雜湊由區塊頭唯一決定。如果要對同乙個區塊反覆計算雜湊,就意味著,區塊頭必須不停地變化,否則不可能算出不一樣的雜湊。區塊頭裡面所有的特徵值都是固定的,為了讓區塊頭產生變化,區塊頭故意增加了乙個隨機項,叫做 nonce。nonce 是乙個隨機值,礦工的作用其實就是猜出 nonce 的值,使得區塊頭的雜湊可以小於目標值,從而能夠寫入區塊鏈。nonce 是非常難猜的,目前只能通過窮舉法乙個個試錯。根據協議,nonce 是乙個32位的二進位制值,即最大可以到21.47億。

採礦具有隨機性,沒法保證正好十分鐘產出乙個區塊,有時一分鐘就算出來了,有時幾個小時可能也沒結果。總體來看,隨著硬體裝置的提公升,以及礦機的數量增長,計算速度一定會越來越快。為了將產出速率恆定在十分鐘,中本聰還設計了難度係數的動態調節機制。他規定,難度係數每兩周(2016個區塊)調整一次。如果這兩周裡面,區塊的平均生成速度是9分鐘,就意味著比法定速度快了10%,因此接下來的難度係數就要調高10%;如果平均生成速度是11分鐘,就意味著比法定速度慢了10%,因此接下來的難度係數就要調低10%。難度係數越調越高(目標值越來越小),導致了採礦越來越難。

即使區塊鏈是可靠的,現在還有乙個問題沒有解決:如果兩個人同時向區塊鏈寫入資料,也就是說,同時有兩個區塊加入,因為它們都連著前乙個區塊,就形成了分叉。這時應該採納哪乙個區塊呢?

現在的規則是,新節點總是採用最長的那條區塊鏈。如果區塊鏈有分叉,將看哪個分支在分叉點後面,先達到6個新區塊(稱為"六次確認")。按照10分鐘乙個區塊計算,一小時就可以確認。

由於新區塊的生成速度由計算能力決定,所以這條規則就是說,擁有大多數計算能力的那條分支,就是正宗的區塊鏈。

1)區塊是區塊鏈的基本組成單元。

2)每個區塊由區塊頭和區塊主體組成,頭小身大。

為了保證資料的可靠性,區塊鏈也有自己的代價。一是效率,資料寫入區塊鏈,最少要等待十分鐘,所有節點都同步資料,則需要更多的時間;二是能耗,區塊的生成需要礦工進行無數無意義的計算,這是非常耗費能源的。

區塊鏈 入門 基礎知識

區塊鏈是分布式資料儲存 點對點傳輸 共識機制 加密演算法等計算機技術的 新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任 獲取權益的數學演算法特徵 1,去中心化 2,開放性 3,自治性 4,資訊不可篡改性 5,匿名性定義 由於點對點網路下存在較高的網路延遲,各個節點所觀察到的事務先後...

區塊鏈基礎知識入門

區塊鏈是什麼?一句話概括,它是一種特殊的分布式資料庫。有兩個功能 分布式資料庫不是新產品,但是區塊鏈有個革命性的特點就是去中心化,其他資料庫都有管理員,但是區塊鏈沒有。如果有人想對區塊鏈新增審核,是實現不了,因為它的設計目標就是防止出現居於中心地位的管理當局。因為無法管理,所以區塊鏈無法被控制。區塊...

區塊鏈基礎知識 6 區塊鏈分叉

位元幣採用p2p網路架構,網路中每乙個節點彼此平等,共同提供網路服務。p2p網路的工作機制,包括節點分類 節點發現 節點連線和廣播等,客戶端會維護乙個列表,裡面列出了一些 長期穩定執行 的節點,這樣的節點稱為 種子節點 新的客戶端可以通過種子節點來快速發現網路中的其它節點。區塊鏈分叉 原因 a b兩...