《區(qū)塊鏈原理與技術(shù)》專業(yè)課學習筆記 第一部分
-
一、概論
- 1.什么是區(qū)塊鏈
-
2.區(qū)塊鏈與比特幣的關(guān)系
- 2.1 區(qū)塊鏈是比特幣的底層技術(shù),是比特幣的核心基礎(chǔ)與架構(gòu)
- 2.2 區(qū)塊鏈不止是比特幣
-
3 區(qū)塊鏈的特點
- 3.1去中心化
- 3.2 透明性
- 3.3 不可篡改性
- 3.4 多方共識
- 4 區(qū)塊鏈的分類
-
二、區(qū)塊鏈共識層
-
1. 一致性問題
- 1.1 共識性要求
- 1.2 共識設(shè)計的理論限制:FLP不可能原理
- 1.3 CAP原理
- 1.4 區(qū)塊鏈分叉問題
-
2. 區(qū)塊鏈共識算法
- 2.1 不同區(qū)塊鏈需要不同的共識機制
- 2.2 BFT-based:拜占庭容錯算法
- 2.3 比特幣共識的思路:工作量證明
-
3. 對共識機制的攻擊
- 3.1 雙花攻擊
- 3.2 多重身份攻擊/女巫攻擊
- 3.3 其他攻擊
-
1. 一致性問題
-
區(qū)塊鏈安全與攻擊
-
為什么區(qū)塊鏈不安全?
- 區(qū)塊鏈層級架構(gòu)視角
- 區(qū)塊鏈的六類安全隱患
- 網(wǎng)絡(luò)連通性與區(qū)塊鏈安全性
- 怎樣讓區(qū)塊鏈不安全
- 怎樣讓區(qū)塊鏈更安全
-
為什么區(qū)塊鏈不安全?
一、概論
1.什么是區(qū)塊鏈
區(qū)塊鏈:一種按照時間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成鏈式結(jié)構(gòu),并以密碼學方式保證不可篡改和不可偽造的分布式賬本技術(shù)。
區(qū)塊鏈具有三個基本要素:
- 交易(transaction):一次操作,導(dǎo)致賬本狀態(tài)的一次改變。
- 區(qū)塊(block):記錄一段時間內(nèi)發(fā)生的交易和狀態(tài)結(jié)果,是對當前賬本狀態(tài)的共識。
- 鏈(chain):由一個個區(qū)塊按照發(fā)生順序串聯(lián)成,是整個狀態(tài)變化的日志記錄。
區(qū)塊鏈中的每個區(qū)塊保存規(guī)定時間段內(nèi)的數(shù)據(jù)記錄,并通過密碼學的方式構(gòu)建一條安全可信的鏈條,在節(jié)點之間通過共識算法,形成一個全員共有、不可篡改的分布式賬本。
2.區(qū)塊鏈與比特幣的關(guān)系
2.1 區(qū)塊鏈是比特幣的底層技術(shù),是比特幣的核心基礎(chǔ)與架構(gòu)
比特幣的核心問題:貨幣如何發(fā)行?交易如何記賬?
如何發(fā)行——挖礦機制:通過哈希計算得到特定數(shù)值,先計算出的人獲得記賬權(quán)。
記賬有比特幣獎勵和交易手續(xù)費,計算量可以證明工作量,保證賬本的可靠性,也不會發(fā)生通貨膨脹。
如何記賬——區(qū)塊鏈的鏈式哈希結(jié)構(gòu),可以做到防篡改。
2.2 區(qū)塊鏈不止是比特幣
區(qū)塊鏈本質(zhì)是一種去中心化的數(shù)字賬本,在此基礎(chǔ)上可以產(chǎn)生很多加密貨幣應(yīng)用,這種技術(shù)可以擴展到很多領(lǐng)域。
3 區(qū)塊鏈的特點
3.1去中心化
賬本數(shù)據(jù)的維護工作由全部或部分節(jié)點承擔,普通用戶之間的交易不需要第三方介入。
3.2 透明性
區(qū)塊鏈的交易和歷史都是透明公開的。
3.3 不可篡改性
比特幣的每次交易都會記錄在區(qū)塊鏈上,并且很難篡改。
3.4 多方共識
區(qū)塊鏈作為多方參與維護的分布式賬本,參與方要約定好共識算法,即數(shù)據(jù)校驗、寫入和沖突解決的規(guī)則。
4 區(qū)塊鏈的分類
- 公有區(qū)塊鏈:所有人都可以參與
- 私有區(qū)塊鏈:對單獨的個人或?qū)嶓w開放
- 聯(lián)盟區(qū)塊鏈:對特定的組織、團體開放。
二、區(qū)塊鏈共識層
解決的主要問題:如何在去中心化且存在惡意節(jié)點的場景下維護區(qū)塊鏈的全局賬本。
區(qū)塊鏈的共識機制是一種多方協(xié)作機制,用于協(xié)調(diào)多參與方達成共同接收的唯一結(jié)果,且保證此過程難以被欺騙,且持續(xù)穩(wěn)定運行,是區(qū)塊鏈的核心引擎。
1. 一致性問題
共識:不信任節(jié)點之間對指定數(shù)據(jù)的最終狀態(tài)達成一致的過程。
分布式共識:在某些節(jié)點故障的情況下,在多個節(jié)點之間達成共同的狀態(tài)。
1.1 共識性要求
在分布式系統(tǒng)中達成一致性的過程,應(yīng)該滿足:
- 可終止性:一致性的結(jié)果在有限時間內(nèi)完成。
- 約同性:不同節(jié)點最終完成決策的結(jié)果是相同的。
- 合法性:決策的結(jié)果必須是某個節(jié)點提出的提案。
對應(yīng)對分布式系統(tǒng)的要求為:
- 活性
- 安全性
- 正確性
1.2 共識設(shè)計的理論限制:FLP不可能原理
FLP不可能原理:在網(wǎng)絡(luò)可靠,但允許節(jié)點失效的最小化異步模型系統(tǒng)中,不存在一個可以解決一致性問題的算法。
這說明我們需要在活性和安全性上進行折中。折中方向為:
- 通過弱化安全性的異步假設(shè)為同步假設(shè)以實現(xiàn)活性——實用拜占庭容錯算法( Pratical Byzantine Fault Tolerance, PBFT)
- 通過弱化安全性的異步假設(shè)為同步假設(shè)以實現(xiàn)安全性——比特幣工作量證明
1.3 CAP原理
CAP原理本質(zhì)上描述了分布式系統(tǒng)在應(yīng)用過程中三個特性的取舍,即不可能同時滿足:
- 一致性(Consistency):每次讀操作都能得到最近寫的結(jié)果,或返回錯誤。
- 可用性(Availability):每次請求都能返回一個非錯誤結(jié)果,但結(jié)果不需要是最近寫的結(jié)果。
- 分區(qū)容忍性(Patition tolerance):當任意節(jié)點的連接中斷或者大大延遲,系統(tǒng)扔能工作。
1.4 區(qū)塊鏈分叉問題
硬分叉:舊區(qū)塊不兼容新區(qū)塊
區(qū)塊鏈發(fā)生了永久性分歧,在新共識規(guī)則發(fā)布后,部分沒有升級的節(jié)點無法驗證已經(jīng)升級的節(jié)點產(chǎn)生的區(qū)塊。
軟分叉:舊的節(jié)點不會感知區(qū)塊鏈代碼發(fā)生的改變,并繼續(xù)接受新節(jié)點創(chuàng)建的區(qū)塊。新舊節(jié)點在一條鏈上。
當新共識規(guī)則發(fā)布后,沒有升級的節(jié)點會因為不知道新共識規(guī)則下,而產(chǎn)生不合法的區(qū)塊,導(dǎo)致臨時性分叉產(chǎn)生。這會強迫老節(jié)點更新規(guī)則。
惡意的分叉:51%攻擊
2. 區(qū)塊鏈共識算法
2.1 不同區(qū)塊鏈需要不同的共識機制
對于公有鏈而言,因為參與者之間不存在任何信任,所以采用算力敏感的“挖礦”共識來作為激勵機制。
對于聯(lián)盟鏈/私鏈,節(jié)點間有一定的信任基礎(chǔ),不需要算力敏感,BFT類型的共識機制比較適合。
2.2 BFT-based:拜占庭容錯算法
拜占庭問題:在有叛徒的情況下,如何在不同節(jié)點之間達成正確的共識。
當節(jié)點總數(shù)為N,叛徒數(shù)量為F,則當 N≥3F+1 時,這個問題才有解。
拜占庭容錯算法(Byzantine Fault Tolerance,BFT)就是面向拜占庭問題的容錯算法。
實用拜占庭容錯算法:
- 預(yù)準備階段(pre-prepare)
- 準備階段(prepare)
- 提交階段(commit)
2.3 比特幣共識的思路:工作量證明
工作量證明(Proof of Work,PoW)要求用戶獲取服務(wù)前進行適量復(fù)雜的計算,來證明用戶對服務(wù)的真實需求,需要滿足以下條件:
- 不容易完成(需要工作量)
- 容易驗證:其他節(jié)點可以快速確認工作量
- 工作過程公平:任何節(jié)點沒有完成工作的捷徑
- 具有隨機性:能力越強,只保證率先完成度概率越大
在比特幣的PoW中,礦工通過花費算力來競爭區(qū)塊鏈上的記賬權(quán)。挖礦可以獲得比特幣獎勵+交易手續(xù)費,這也是比特幣發(fā)行的過程。
解決鏈分叉問題:比特幣的最長鏈機制——誠實的礦工會將最長的區(qū)塊鏈認可為全局的賬本,并在這條鏈上繼續(xù)延伸。因此惡意礦工更難造出更長的鏈。
3. 對共識機制的攻擊
3.1 雙花攻擊
大致過程為:
- 攻擊者在區(qū)塊N向商家發(fā)起了交易,商家承認交易。
- 攻擊者在區(qū)塊N開始分叉,這個分叉不承認交易。
- 當分叉鏈長度大于主網(wǎng)鏈,廣播分叉鏈,分叉鏈成為主網(wǎng)鏈,交易不被承認,付費失敗,攻擊者還可以用這筆錢再次交易。
3.2 多重身份攻擊/女巫攻擊
攻擊方法:一個攻擊這節(jié)點通過網(wǎng)絡(luò)廣播多個身份信息,非法地擁有多個身份標識,進行改變交易順序、阻止交易被確認、誤導(dǎo)正常節(jié)點的路由表、消耗節(jié)點間資源等惡意行為。
女巫攻擊可以通過偽造的多個身份進行不公平的重復(fù)投票,從而掌控網(wǎng)絡(luò)。文章來源:http://www.zghlxwxcb.cn/news/detail-757162.html
對抗方法:工作量證明機制文章來源地址http://www.zghlxwxcb.cn/news/detail-757162.html
3.3 其他攻擊
- 短距離攻擊
- 長舉例攻擊
- 幣領(lǐng)累計攻擊
- 預(yù)計算攻擊
到了這里,關(guān)于《區(qū)塊鏈原理與技術(shù)》學習筆記(一)——區(qū)塊鏈概念和區(qū)塊鏈共識機制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!