2019年8月11日 星期日

區塊鏈學習筆記(挖礦和Hash)

挖礦(Mining)

是指去中心化驗證區塊的機制,而從挖礦兩個字可以知道,分為兩個字

挖:指的是需要付出某種工作
礦:指的是高價值的獎勵

隱藏含義是指不容易得到(成功的機率很小)

而在比特幣上的應用指的是礦工消耗電腦算力,時間,來驗證區塊,獲取比特幣

而驗證區塊可以比喻成比特幣系統出一道數學題,看誰先解出來

為什麼要挖礦?

因為區塊鏈沒有中心化伺服器來處理交易,所以用挖礦的方式來獎勵其他人(礦工)來做這項工作




實際流程:

 這裡有一串交易資料,誰先把這些資料加上一個隨機數(Nonce),湊出前面有四個0的Hash值就贏了

礦工:猜隨機數的數值,通常是從0開始把每個組合都試一遍

礦工:第一個找出正確隨機數的人才能拿到比特幣,所以礦工會用最好的設備來挖礦
會消耗許多電力和資源

礦池(mining pool)的出現:因為要搶第一,但個人的設備有限,所以會找一群人一起挖礦,如果挖到礦後會把利益均分

本來區塊鏈想要去中心化,但礦池的出現,,比特幣網絡的算力都平分在這些礦池上,於是比特幣區塊鏈被中心化的礦池掌控了

Hash

特性

輸入任何資料,都輸出固定長度
把巨大的資料濃縮表示
從結果回推原資料非常難
兩筆不同的資料不會有重複的結果(即兩個輸入即使差距很小,輸出即是兩個截然不同的結果,沒辦法用兩個相似的結果回推原資料)
產生結果非常快、容易

用途:

資料摘要

保護機密資料
例如帳戶的登入:在用戶登入時需要用戶登入的密碼跟後方資料庫的密碼作比對確認,但如果資料庫存的是明碼,很容易有安全的疑慮,但如果資料庫存的是Hash過後的值,那用戶輸入的密碼可以先Hash後,在跟資料庫做比對,如果有人中間攔截,攔截到的是Hash值,就不會有密碼洩漏的問題了
確保資料的真實完整性

在挖礦的應用
從結果回推資料非常難,所以礦工必須不斷猜數字
確保資料的真實完整,區塊鏈的不可竄改性
挖礦難度
有多難挖到礦:區塊鏈定義輸出Hash值前面有幾個0
比特幣區塊鏈用挖礦難度控制每10分鐘產生一個區塊

沒有留言:

張貼留言