區塊鏈研究計劃
一、對區塊鏈的初步認識
(一)什麼是區塊鏈?
狹義來講, 區塊鏈是一種按照時間順序將資料區塊以鏈條的方式組合成特定資料結構, 並以密碼學方式保證的不可篡改和不可偽造的去中心化共享總賬(Decentralized shared ledger), 能夠安全儲存簡單的、 有先後關係的、 能在系統內驗證的資料。 廣義的區塊鏈技術則是利用加密鏈式區塊結構來驗證與儲存資料、 利用分散式節點共識演算法來生成和更新資料、 利用自動化指令碼程式碼(智慧合約)來程式設計和操作資料的一種全新的去中心化基礎架構與分散式計算正規化。(參考文獻:袁勇, 王飛躍 . 區塊鏈技術發展現狀與展望. 自動化學報, 2016, 42(4): 481-494.)
(二)區塊結構
每個資料區塊一般包含區塊頭(Header)和區塊體(Body)兩部分。 區塊頭封裝了當前版本號、 前一區塊地址、 當前區塊的目標雜湊值、 當前區塊PoW共識過程的解隨機數(Nonce)、 Merkle根(Merkle-root)以及時間戳等資訊 。區塊體則包括當前區塊的交易數量以及經過驗證的、 區塊建立過程中生成的所有交易記錄.。這些記錄通過Merkle樹的雜湊過程生成唯一的Merkle根並記入區塊頭。(參考文獻:袁勇, 王飛躍 . 區塊鏈技術發展現狀與展望. 自動化學報, 2016, 42(4): 481-494.)
(三)區塊鏈特性
- 去中心化:去中心化既去中心化的分散式結構,整個網路無中心化硬體或機構,沒有中心核心系統。
- 去信任化:指該系統將以往的“信任人”轉化為“信任機器”,既區塊鏈用技術規則加持信用,實現的信任不源於第三方的背書而是所有參與者對共識機制的認同。
- 可追溯性:既區塊鏈採用了時間戳技術,給資料增加時間維度,記錄交易的先後順序,使得資料具有可追溯性,便於監管和追蹤。
- 集體維護性:指系統中的資料有所有具有維護功能的參與節點集體維護,任何人都可以參與,同時任一個節點的過失也不會影響整個系統的運作,保證整個系統穩定執行。
- 安全性:首先非對稱加密技術對資料進行加密保證資料的安全性;其次,共識演算法形成的強大算力來抵禦外部攻擊保證區塊鏈資料不可篡改和不可偽造;最後,時間戳技術保證資料可追溯和完整性及不可篡改等。
- 開放性:區塊鏈是開放的,除了賬戶和交易各方的私密資訊外,區塊鏈的資料對所有人開放。
- 匿名性:節點與節點之間無需公開身份,資訊傳遞可以匿名進行,極大保護了使用者的隱私。(參考文獻:王元地, 李莉粒, 胡諜 . 區塊鏈研究綜述[J].中國礦業大學學報(社會科學版),2018(3):74-86.)
- 區塊鏈的基礎架構
- 資料層:包含資料區塊和相關的非對稱加密和時間戳等技術,主要目的是達到資料的去中心化分散式儲存、校驗區塊資料的存在性和完整性、保證資料的可追溯性、及不可篡改性;
- 網路層:包括分散式組網機制、資料傳播機制和資料驗證機制,網路層構建了網路環境、搭建了交易通道、制定了節點獎勵;
- 共識層:包括網路節點的各類共識演算法,主要有工作量證明機制(PoW共識機制),權益證明機制(PoS共識機制)、授權股份證明機制(DPoS共識機制)等,能夠在決策權高度分散的去中心化系統中是的各節點高效地針對區塊資料的有效性達成共識這是區塊鏈的核心技術之一。
- 激勵層:激勵層將經濟因素整合到區塊鏈技術體系中來,主要包括經濟激勵的發行機制和分配機制,例如比特幣的區塊鏈採用了“挖礦”機制,激勵參與者不斷提供算力來獲得獎勵
- 合約層:主要包括各類指令碼、演算法和智慧合約,是建立在區塊鏈虛擬機器上的商業邏輯和演算法,是實現區塊鏈系統靈活程式設計和操作資料的基礎。
- 應用層:是區塊鏈的各種應用場景和例項,主要包括可程式設計貨幣、可程式設計金融、和可程式設計社會。(參考文獻:王元地, 李莉粒, 胡諜 . 區塊鏈研究綜述[J].中國礦業大學學報(社會科學版),2018(3):74-86.)
- 區塊鏈的應用前景
- 金融服務
- 教育就業
- 供應鏈管理
- 醫療健康
- 文化娛樂
- 電信行業
(參考文獻:王珍珍 ,陳婷 .區塊鏈真的可以顛覆世界嗎——內涵、應用場景、改革與挑戰[J].中國科技論壇,2018)
- 區塊鏈面臨的問題
- 新技術的風險問題
- 安全問題
- 資源浪費問題
- 資料庫空間儲存問題
- 效率問題
- 存在中心化現象問題
(參考文獻:王元地, 李莉粒, 胡諜 . 區塊鏈研究綜述[J].中國礦業大學學報(社會科學版),2018(3):74-86.)
- 研究方向
對於區塊鏈底層(資料層、網路層、共識層)安全問題的研究。
區塊鏈的基礎架構包括6層,但是但是資料層、網路層、共識層是區塊鏈的必要層,包含了大量的加密演算法,網路協議,共識機制等,因此通過對於底層的研究可以更為清晰的理解區塊鏈的運作原理。C++是一種通用程式設計語言,支援多重程式設計模式(例如面向物件程式設計、泛型程式設計),大多數的區塊鏈的底層開發都用的c++。在大學期間的學習中,對c++的掌握運用比較好,因此可以更好地深入區塊鏈底層研究。對底層的研究需要掌握相關的演算法的思想,需要過硬的理解能力,以及思考、分析問題的能力,在大學期間演算法分析與設計這門課的學習中積累了演算法的學習方法,鍛鍊了分析問題、解決問題的能力,也有助於對區塊鏈底層的研究。其次,想要了解相區塊鏈關的網路協議,對於計算機網路的學習也是必不可少的,大學期間的計算機網路掌握的比較好,也有助於對區塊鏈底層相關網路協議的理解。
安全性威脅是區塊鏈迄今為止所面臨的最重要的問題。
1、其中,基於PoW共識過程的區塊鏈主要面臨的是51%攻擊問題,既節點通過掌握全網超過51%的算力就有能力成功篡改和偽造區塊鏈資料。為了解決該問題,引用基於PoS共識過程。但基於PoS共識過程同時也引入了區塊分叉時的[email protected](nothing at stake)攻擊問題。研究者進一步提出通過構造同時依賴高算力和高記憶體的PoW共識演算法來部分解決51%攻擊問題。
2、區塊鏈的非對稱加密機制也將隨著數學、密碼學和計算技術的發展而變得脆弱。以目前天河二號的算力來說,產生比特幣SHA256雜湊演算法的一個碰撞大約需要248年,但隨著量子計算機等新計算技術的發展,未來非對稱加密演算法具有一定的破解可能性,這也是區塊鏈技術面臨的潛在威脅。為了抵抗量子攻擊,應該研究能夠抵抗量子攻擊的密碼演算法。
3、區塊鏈的隱私保護也存在安全性風險。區塊鏈系統內各節點並非完全匿名,而是通過類似電子郵件地址的地址標識(例如比特幣公鑰)來實現資料傳輸。雖然地址標識並未直接與真實世界的人物身份相關聯,但區塊鏈資料是完全公開透明的,隨著各類反匿名身份甄別技術的發展,實現部分重點目標的定位和識別認識有可能的。應對措施:確保私鑰的隨機性、使用冷錢包、對錢包進行備份,建立合理的安全機制對祕鑰進行保管。當祕鑰洩露時,應當對祕鑰進行修改。
研究過程:充分閱讀相關文獻,深入理解每一層的相關的演算法、協議等,掌握底層的運作機理。並且學習其在處理安全性問題方面的提出的處理方法,思考自己有沒有改進的方法。
在對區塊鏈的底層有了充分了解後,上手程式設計實現區塊鏈小Demo,在此基礎上可以加深對區塊鏈的理解,並繼續研究底層的安全性問題。