區塊是什麼
前幾篇是在說明整個系統的大致運作模式,但如果想比別人理解的更深, 就必須繼續下潛, 理解一個區塊當中的數學運作
區塊鏈是由很多區塊串聯而成的結構, 那區塊是什麼? 此章節會說明一個區塊的基本結構與核心觀念
區塊的基本組成
從宏觀角度來看, 一個區塊可以拆成兩個部分,
區塊Hash值
區塊內容
由藍色框框起來的為區塊內容,它會包含 "交易資訊" 與 "誰找出區塊的資訊", 而未來你還會學習到區塊內容也能夠包含 "隨機數", "時間戳"等資訊
由紅色框起來的為區塊Hash值,可以理解為代表該個區塊的識別碼 每一個區塊都有一個該區塊專屬的區塊Hash值,
區塊Hash值 是由區塊中的資料經過數學運算後生成的
而這種數學運算稱為Hash算法, 理解Hash算法是理解單個獨立區塊的關鍵
什麼是 Hash 算法
先來學習什麼是Hash算法吧
Hash 算法是可以將任意長度的資料算出固定長度的值。
算出來的結果稱為Hash值。
Hash值看起來就像這樣:
67468a63708da92a71fb243d0676cc196c3fd14c0a67a9d74a96be89b20a9c68
Hash 算法的特性是:
輸入相同資料,輸出相同Hash值
輸入不同資料,輸出不同Hash值
區塊中則廣泛使用Hash算法, 來確保區塊資料的完整性。
實際操作 Hash 算法
此區塊會將區塊內容 Data 進行 Hash 運算, 生成一個 Hash 值, 稱為 Block Hash
Hash值就像是數據指紋, 不同的數據算出不同的指紋, 相同的數據則算出相同的數據指紋
例如在以下 Data 中輸入123則會生成以下的 Block Hash,
a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
再嘗試 輸入999則會出現一串跟輸入123 完全不同的數據指紋 如下:
83cf8b609de60036a8277bd0e96135751bbc07eb234256d4b65b893360651bf2
繼續實驗, 我們再次輸入123 則會出現一樣的 Block Hash
a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
這就是Hash 算法的特性,
- 不同的數據算出不同的指紋
- 相同的數據算出相同的數據指紋
請嘗試輸入Data後, 點擊 Calculate Hash 按鈕, 看看會算出什麼 Hash 值吧
總結
現在你理解了一個區塊最基本的兩大部分
- 區塊Hash值, (它是由 將區塊內容進行Hash運算後, 生成的值)
- 區塊內容