驗證
驗證是節點確認交易和區塊是否合法的過程,是區塊鏈去中心化信任的基礎。
Last updated
驗證是節點確認交易和區塊是否合法的過程,是區塊鏈去中心化信任的基礎。
區塊鏈沒有中央權威,所以每個節點都要自己驗證:
不能相信別人說的:礦工可能作弊,節點可能被駭
Trust, but verify:自己跑一遍規則才安心
去中心化的代價:每個節點都做重複的工作
「Don't trust, verify」
這是比特幣社群的名言。意思是不要相信任何人告訴你的,自己運行節點來驗證一切。
數位簽名
確認是帳戶持有人發起的
餘額足夠
確認有錢可以轉
格式正確
交易資料符合規範
無雙重支付
同一筆錢沒有花兩次
工作量證明
哈希值符合難度要求
前區塊連結
正確指向前一個區塊
時間戳
時間合理、沒有來自未來
區塊大小
沒有超過上限
交易有效
區塊內所有交易都合法
獎勵正確
礦工沒有多拿區塊獎勵
驗證失敗的後果
如果一個節點持續發送無效區塊或交易,其他節點可能會把它加入黑名單,不再接收它的訊息。
這兩個詞常被混淆:
驗證
檢查交易/區塊是否合法
確認
交易被打包進區塊後的區塊數
一筆交易可能「驗證通過」但還沒「被確認」(還在交易池等待打包)。
全節點
完整驗證所有規則
輕節點
只驗證區塊頭,信任全節點
SPV 錢包
最低程度驗證,依賴他人
運行全節點的意義
運行全節點意味著你不需要信任任何第三方。你自己驗證每一筆交易、每一個區塊,確保沒有人能欺騙你。
驗證是共識的基礎:
節點收到新區塊
驗證區塊是否合法
合法才接受,加入本地區塊鏈
廣播給其他節點
如果大多數節點都接受同一條鏈,就形成了共識。
Last updated
收到新區塊
↓
檢查區塊頭(PoW、時間戳、連結)
↓
逐筆驗證區塊內交易
↓
全部通過?
↓ 是 ↓ 否
接受區塊 拒絕區塊
寫入本地鏈 丟棄、標記節點