今天是第二天介紹hash!
總結一下hash,其實有兩個很重要的重點:
- 不能讓任何人從hash導出原本的值,hash函數應該要是單向的,就像你不能用果汁做出水果的概念。
- 要確保每個hash值只能對應到一個原始值,不能因為很像就有一樣的hash產生,就像test 跟Test的hash值不能一樣。(要讓機率降到最低)
另外在hash的計算中,有分成簡單hash(simple hash)以及tree,當我們今天要進行hash的項目數量是固定的,則使用簡單hash。如果今天要進行hash的項目數量不固定時,則用樹狀結構來進行計算。
現在最常見的哈希大小是 256 位,常用函數是 SHA-3、SHA-256 和 Keccak。
- MD 5:它會產生一個 128 位的hash。
- SHA 1:生成 160 位hash。
- SHA 256:生成 256 位hash。目前正在被比特幣使用。
- Keccak-256:生成 256 位hash,目前被以太坊使用。
區塊分成head&body
區塊頭(head)包含...
- 版本號
- 時間戳(timestamp)
- Difficulty target:代表這個區塊的proof of work 的困難值。(難度係數越大,目標值越小)
- 前一個區塊的hash。
- Nonce:表示proof of work 的執行次數。
- Merkle root hash:紀錄目前區塊裡經由merkle tree 演算法算出來的merkle tree root 的hash值。
區塊體(body)包含...
實際數據
此外還有找到一個可以demo hash的網頁,大家如果好奇可以去玩看看!
https://andersbrownworth.com/blockchain/hash
參考資料:
https://blockgeeks.com/guides/what-is-hashing/
https://blockgeeks.com/guides/what-is-hashing/
那今天的介紹就到這邊拉~
真的是沒有很專業的介紹,比較像是跟大家分享我學到甚麼,我還有很多要學習的地方:(
如果喜歡的話明天記得繼續回來看下一篇!影片記得按讚訂閱開小鈴鐺謝謝大家!