1.前言
最近因為工作需要,后期會做區塊鏈相關的底層測試。
而且隨着2017年比特幣的爆發式升值,也引起了大家對於區塊鏈的關注。
隨着不斷的了解發現,區塊鏈技術,並沒有特殊創新的技術,而是有機組合了已有領域的已有成果,所以,了解區塊鏈,重要的是從思路上理解它的運行機制和理念。
備注:寫此文章,主要是為了記錄所學當做筆記,肯定會有理解錯誤的內容,請大家多多指正。
感覺自己寫的好差,有時間的可以多看看
阮大師的區塊鏈科普文章http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html
從概念到底層技術架構:http://www.8btc.com/ebook-blockchain
官方學習資料:https://github.com/chaozh/awesome-blockchain-cn
2.什么是區塊鏈?
用一句話說,區塊鏈就是首個自帶對賬功能的數字記賬技術實現。(其實就是一個分布式存儲系統)
區塊鏈的基本概念包括:
- 交易(Transaction):一次成功的交易,會導致賬本狀態的一次改變,如添加一條記錄;
- 區塊(Block):記錄一段時間內發生的交易和狀態結果,是對當前賬本狀態的一次共識;
- 鏈(Chain):由一個個區塊按照發生順序串聯而成,是整個狀態變化的日志記錄
2.1 區塊鏈分類
根據參與者的不同,可以分為公開(Public)鏈、聯盟(Consortium)鏈、私有(Private)鏈。
- 公開鏈:任何人都可以參與和維護,典型的比如比特幣區塊鏈,信息是完全公開的。
- 引入許可機制,包括私有鏈和聯盟鏈:
- 私有鏈:集中管理者進行限制,只能得到內部少數人可以使用,信息不公開。
- 聯盟鏈:由若干組織一起合作維護一條區塊鏈,該區塊鏈的使用必須是有權限的管理,相關信息會得到保護,典型如銀聯組織。
3. 區塊鏈工作原理(以比特幣為例)
在進行更深入的了解之前,先來大體了解一下區塊鏈的運行過程,如下圖所示:
從宏觀到微觀,區塊鏈是由一個一個的區塊組成的,每個區塊又包含多筆交易信息,每筆交易又是由客戶端發起的。
(1)合法的未確認交易是如何形成的?
節點1所做的事情就是一筆合法的未確認交易的形成過程。客戶端發起交易信息到網絡中,網絡中的節點收到交易信息后,會進行如下檢查:
- 交易是否已經處理過;
- 交易是否合法。包括地址是否合法、發起交易者是輸入地址的合法擁有者、是否是 UTXO;
- 交易的輸入之和是否大於輸出之和。
檢查都通過,則將交易標記為合法的未確認交易,並在網絡內進行廣播;
一筆完整的交易包含內容如下圖所示:
(2)交易又是怎么變成區塊的呢?
請看節點2所做的事情。節點將10分鍾之內獲取到的交易信息(長度需要控制,每個區塊不大於1MB),打包生成Merkle樹根的hash值,節點暴力嘗試計算出Nonce串,然后加上其他信息,生成候選區塊。然后判斷候選區塊頭的hash值是否滿足一定條件(小於某個值),如果滿足,就進行全網廣播,候選區塊變成了提案區塊。一個完整的區塊數據結構如下圖所示:

(3)區塊如何上鏈?交易如何被最終確認?
請看節點3所做的事情。節點從網絡中收到 提案區塊后,對提案區塊頭的hash進行驗證,如果符合條件,提案區塊成為合法區塊,添加到鏈上。然后再等待6個塊的可信確認后,交易最終被確認,交易生效。
4. 區塊鏈基礎架構模型
首先先來簡單的一層一層進行了解:
- 數據層:數據層其實從數據結構的角度看待,會更加有效。如下圖所示: 內容太多,未完待續