一文讀懂區塊鏈原理和比特幣架構 | 券商首席區塊鏈原理解讀
這是區塊鏈古典研究院的第一次活動。群內數百名傳統金融行業和幣圈鏈圈礦圈的大佬,我在這裡區塊鏈,還是有一點壓力。不過我們循序漸進,先說說我對區塊鏈和比特幣的基本理解,後面我們再著眼深層次的發展趨勢和思想碰撞。
主要目標:讓目前對區塊鏈感興趣的朋友們對區塊鏈有一個入門的理解。
1、區塊鏈的概念
區塊鏈是一種新的數據庫技術,更是一種新的經濟運行系統。狹義來看,區塊鏈技術是一種數據結構;廣義來看,區塊鏈實現的是一種經濟運行的系統,通過技術體系實現,用技術來制約激勵。
圖表1:區塊鏈的定義
來源:中泰證券研究所
(一) 數據結構的分類
1、關係型數據庫
關係數據庫,就是我們的OA、研究管理系統裡面用的數據庫的方式。是建立在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據,由多張能互相聯接的二維行列表格組成的數據庫。標準數據查詢語言SQL就是一種基於關係數據庫的語言。
關係型數據庫具有以下三個特點:
1)中心化處理確認方式;
2)標準的數據格式;
3)數據處理效率極高。
2、非關係型數據庫
隨著互聯網web2.0網站的興起,傳統的關係數據庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,為了解決大規模數據集合多重數據種類帶來的挑戰,非關係型數據庫(NoSQL)誕生。
非關係型數據庫具有以下兩個特點:
1)無標準的數據格式;
2)大數據的應用方式。
3、區塊鏈數據系統
區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一次比特幣網絡交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊,是分佈式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。
區塊鏈數據系統具有以下兩個特點:
1)去中心化的數據處理和確認;
2)哈希加密防篡改。
4、其他數據結構
2015年主推東方國信的時候,一直講基於Hadoop的大數據,非結構化數據,其實也是一種數據結構,Hadoop體系下大數據結構效率應該是介於我們用的關係數據好區塊鏈數據庫之間。
總體來看,我們平時用的數據是標準化格式的,表格型的,查詢、修改就是修改表格;區塊鏈數據結構是鏈式的,是一個長串,所以新發生的修改、新增要按照一定的格式存儲在下一個區塊中,查詢修改起來應該是相對麻煩的。所以,作為數據結構、數據庫技術。我們可以認為,區塊鏈是一種犧牲效率來構建信任體系、不可篡改性等特性的數據庫技術。
圖表2:關係型數據庫示意圖
來源:中泰證券研究所
圖表3:區塊鏈數據系統示意圖
來源:中泰證券研究所
二、區塊鏈的特徵
(一) 去中心化、去信任
傳統數據庫是放在一個服務器上,集中管理,如果需要修改,改一個地方就行。而區塊鏈數據庫是分佈式的,什麼叫分佈式呢,就是在很多個點上都放在全部鏈的內容,如圖4所示。這種多點分佈並不是備份的概念,因為任何修改、交易都需要在所有點上進行確認。
區塊鏈由眾多節點共同組成一個端到端的網絡,不存在中心化的設備和管理機構。節點之間數據交換通過數字簽名技術進行驗證,無需互相信任,只要按照系統既定的規則進行,節點之間不能也無法欺騙其它節點。所以這種方式也不僅僅是一個分佈式存儲、多節點確認的模式。
圖表4:區塊鏈分佈式示意圖
來源:中泰證券研究所
(二) 不可篡改、可追溯
1、hash加密
哈希是很奇特的,比如 A B C D四段字符,哈希之後的值是一段字符 E。hash加密有兩個特徵:第一,告訴你E,你是肯定無法解密出 ABCD的,第二,ABCD四串字符中只要有很少的改動,那麼E就會發生很大的改變。
圖表5:hash加密示意圖
來源:中泰證券研究所
圖表6:hash加密示意圖
來源:中泰證券研究所
區塊鏈就是靠哈希的這些特徵把數據鏈牢固的串了起來。
圖表7: hash加密示意圖
來源:中泰證券研究所
2、不可篡改性
區塊鏈的不可篡改性體現在兩點:
第一個就是要是改之前的數據,哈希值驗證肯定就出問題了,直接看出改過了。
第二就是,前面說了這個是去中心化分佈式的,要改還得所有點都改才行。兩點保證了不可篡改性。
3、可追溯性
可追溯性是指沿著鏈往前查所有行為都記錄在裡面了。再說的直白一點,你的諾言,存在許多個點上,要改所有點都得改,並且連諾言的hash值也得改。這個難度非常大。
(三)開放共識
任何人都可以參與到區塊鏈網絡,每一臺設備都能作為一個節點,每個節點都允許獲得一份完整的數據庫拷貝。節點間基於一套共識機制,通過競爭計算共同維護整個區塊鏈。任一節點失效,其餘節點仍能正常工作。說的直白點,就是我們如果要確認對之前的某個數據、某筆交易的修改確認,這麼多參與節點,如何達成一致。達成一致並不需要所有節點,只需要絕大部分的節點在線參與就OK。
比如比特幣,規定10m中內有一個區塊對10min內的交易進行確認打包,區塊容量不超過文件大小1M,如果按照機制確認後,交易就完成了,這個就是共識機制。也就是怎麼讓這麼多節點公平運轉的機制。
(四)交易透明,雙方匿名
區塊鏈的運行規則是公開透明的,所有的數據信息也是公開的,因此每一筆交易都對所有節點可見。由於節點與節點之間是去信任的,因此節點之間無需公開身份,每個參與的節點都是匿名的。其實匿名這個不好說,但是透明的原理就是,比如比特幣的每一個節點都存在從其創立以來的所有交易賬戶挖礦的記錄數據,任何人可查可分析。
三、比特幣的原理與基礎架構
(一)比特幣的基礎架構
圖表8:比特幣的基礎架構
來源:中泰證券研究所
圖表8裡面展示了兩個區塊,一個區塊就是一個數據塊的意思,比特幣的一個數據塊包含了四部分如圖:
1、上一塊所有數據的hash值;
2、時間戳,用來保證區塊間隔吧?應該是這兒樣;
3、隨機數nouce值,挖礦就是挖這個值;
4、本次時間間隔內所有交易數據形成的hash值。
如果這個區塊不是第一個區塊,那麼第1 2 4部分在這個時間段確定後就都大概是確定值了。
按照比特幣的共識,整個區塊鏈網絡要確認這個區塊,必須要算出一個nouce值就是隨機數,讓 1 2 3 4哈希出來的值要小於一個設定的值,前面講基礎知識說了hash不可逆,所以只能暴力破解,所謂暴力破解,就是一個一個試錯。
中本聰首先規定了比特幣的發行機制。它規定比特幣的總量為2100萬枚,比特幣網絡大約每10分鐘出一頁賬單,每個比特幣的產生伴隨著每一頁賬單的產生,也就是每一個區塊問世和發行。中本聰還規定,最開始每個區塊的比特幣獎勵是50枚,然後每21萬個區塊減半一次,一直到2140年,所有的比特幣發行完畢。
21萬個區塊,我們算一算,平均每10分鐘出一個區塊,出21萬個區塊需要多久呢?理論上需要1458.3天,也就是3.99年。這也就是大眾說的 "比特幣每四年減半" 的由來。2016年7月8日開始,比特幣第二次減半,也就是每個區塊伴隨的比特幣獎勵為12.5枚。
這裡面的區塊就是我們前面圖示離得區塊,獎勵就是我們說的挖礦算出nouce之後的簡歷,現在一個區塊是12.5個比特幣。10分鐘一個塊,每產生21萬個塊後獎勵減半。
今天有朋友跟我說要買10萬臺礦機,還有群內的培才總,他們的礦機的GPU、ASIC在幹什麼,就是天天在算這個數,很費電,按照比特幣的共識,哪個節點先算出這個數,本區塊的獎勵就歸該節點。
(二)技術知識補充:非對稱加密
比特幣的錢包地址是類似於這麼一串數字:dd05cacff9e9a980696a6dd47e1032886ddee8f6aef093c7a0ebe50816362f12(用於舉例,這個應該不是比特幣地址)。
公鑰可以理解為我們的錢包地址,私鑰就是我們設置的密碼。在比特幣體系裡面,我們要轉張給別人,需要用到自己的賬戶和私鑰,以及對方的地址。而交易的確認,則是經過前面所講的挖礦過程來確認的。
(三)比特幣的交易確認過程
圖表9:比特幣的基礎架構
來源:中泰證券研究所
四、比特幣的發展趨勢
狹義來看區塊鏈就是一種犧牲效率的數據技術,廣義來看,區塊鍊形成了一種新的經濟運行系統,經濟運行系統這個概念很大,比特幣在展現了雛形,而區塊鏈2.0 3.0才漸漸賦予了這種技術宏大的前景。區塊鏈應用系統融合了安全技術、經濟學理論、博弈論、網絡技術、數據庫技術、社會學、心理學的開放式經濟運行體系。
當然,這裡面我們認為比特幣網絡裡的比特幣、新興區塊鏈系統裡面的token,都構成了這個區塊鏈體系的基礎,以Token為紐帶,構建相互的激勵體系、博弈體系,就類似於我們上面圖中的類比的幾個系統。
所以區塊鏈想2.0 3.0的發展,DAPP的發展讓區塊鏈技術的應用前景更為廣闊,才有了我們講的區塊鏈是互聯網2.0、是未來十年改變互聯網治理的說法。
圖表10:比特幣的發展趨勢
來源:中泰證券研究所