發布時間:2020-02-27所屬分類:計算機職稱論文瀏覽:1次
摘 要: 摘要區塊鏈技術是一種去中心化、去信任化的分布式數據庫技術方案。該數據庫由參與系統的所有節點集體維護,具有去中心化、不可篡改、透明、安全等特性。區塊鏈技術歸功于比特幣應用,它作為比特幣的底層技術支持,是比特幣系統的核心支撐。區塊鏈技術具有廣
摘要區塊鏈技術是一種去中心化、去信任化的分布式數據庫技術方案。該數據庫由參與系統的所有節點集體維護,具有去中心化、不可篡改、透明、安全等特性。區塊鏈技術歸功于比特幣應用,它作為比特幣的底層技術支持,是比特幣系統的核心支撐。區塊鏈技術具有廣闊的發展前景,從關鍵技術、內容、原理、瓶頸、應用和前景幾個方面進行介紹,對相關研究問題進行探討。
關鍵詞區塊鏈,比特幣,Merkle樹,POW共識,智能合約
2015年是區塊鏈元年,Fintech上近期出現最頻繁的一個詞語就是“區塊鏈”。區塊鏈的出現始于2008年末一個自稱為中本聰(SatoshiNakamom)的人或者團體發表在比特幣論壇的一篇論文((Bitcoin:APeer-to-PeerElectronicCashSys—tern)[1]。該文指出區塊鏈技術是構建比特幣系統的基礎技術,區塊鏈記錄著所有元數據和加密交易信息,從而建立了一個完全通過點對點(P2P)技術實現的電子現金系統,此系統使得在線支付的雙方不用通過第三方金融機構而直接進行交易。隨后比特幣系統大行其道,得到越來越多人的關注和研究,區塊鏈技術作為比特幣系統的底層技術也得以重視,由此拉開了研究區塊鏈技術的序幕。
區塊鏈技術是一項新技術,但它不是一種創新技術。它是將許多已有的跨領域的學科整合到一起,從而形成的一種技術,涉及數學、密碼學、計算機科學等領域。比特幣系統是第一個采用區塊鏈技術作為底層技術構建的系統,它是一個實現了去中心化、去信任化、安全、可靠的電子現金系統。
區塊鏈技術的迅猛發展引起了政府、金融機構的廣泛關注。2016年初,中國央行表態:積極推進官方發表的數字貨幣。隨后中國越來越多的金融以及科研機構開始關注數字貨幣背后的創新技術,即區塊鏈技術[2;幾乎同一時間,英國政府發布區塊鏈專題研究報告,即《分布式賬本技術:超越區塊鏈》跚,大力發展區塊鏈在政府中的應用;此外,為在區塊鏈技術發展進程上占得先機,平安集團、招商銀行、中國外匯交易中心及民生銀行更是加入了R3國際聯盟[4』(一家為全球金融市場設計和提供先進的分布式賬本技術的金融創新公司)。一切跡象表明區塊鏈技術正受到政府和金融機構的青睞。
據麥肯錫研究報告[5指出:區塊鏈技術,是繼蒸汽機、電力、信息和互聯網科技之后,目前最有潛力觸發第五輪顛覆性革命浪潮的核心技術。
目前區塊鏈技術仍然處于萌芽期,特別是在學術方面的研究相對滯后,以谷歌學術和WebofScience為英文數據源的檢索結果顯示,關于區塊鏈(Blockchain)的相關論文僅有3O多篇,本文列舉其中的14篇[。。
本文將詳細介紹和分析區塊鏈的運行原理和關鍵技術,并探討區塊鏈的應用和發展趨勢。
1區塊鏈的基礎技術
本節簡要介紹與構建區塊鏈相關的基礎技術。
1.1哈希算法哈希(也稱為散列)算法將任意長度的輸入值映射為較短的固定長度的二進制值。例如,SHA256算法就是將任意長度的輸人映射為長度為256位的固定長度輸出,這個二進制值稱為哈希值(也稱為散列值)。數據的哈希值可以檢驗數據的完整性,一般用于快速查找和加密算法。
哈希算法廣泛應用于區塊鏈中,區塊鏈通常不保存原始數據,而是保存該數據的哈希值,Merkle樹中的節點信息是兩次SHA256哈希運算得到的。以太坊賬戶地址,是用Kec—cak-256哈希運算一個公鑰得到的;而比特幣地址,則是通過SHA256和RIPEMD160哈希運算一個公鑰而得到的。此外,簽名頻繁應用于區塊鏈中,它由私鑰和需要被簽名的數據經哈希運算而成著名的工作量證明算法、MerMe樹都是哈希算法的應用。
1。2Merkle樹
1.2.1Merkle樹
Merkle樹_2是由RalphMerkle發明的一種基于數據哈希構建的樹:1)其數據結構是一棵樹,一般為二叉樹,也可以為多叉樹;2)其葉子節點是數據塊(如文件或文件集合)的哈希值;3)非葉子節點是其所有子節點的哈希值。
Merkle樹在驗證、文件對比中應用較多,特別是在分布式環境下,Merkle樹會大大減小數據的傳輸量和計算的復雜度。
1.2.2區塊鏈中的Merkle樹
區塊鏈中的每個區塊都包含了記錄于該區塊的所有交易,區塊鏈系統采用二叉樹型的Merkle樹對這些交易進行歸納表示,同時生成該交易集合的數字簽名,如圖1所示[1]。Merkle樹支持快速地歸納和校驗區塊中交易的完整性與存在性。
1.3時間戳服務
區塊鏈技術的發展受到比特幣應用需求的推動。比特幣作為數字貨幣,首先需要解決“重復支付(doublespending)”問題,即一筆貨幣不能被花費兩次或者一筆資金不能出現在兩個交易中。中心化的信用系統(例如銀行)依靠國家機器的強制力來防止偽鈔,而區塊鏈系統完全依靠技術來解決“重復支付”問題。系統給每一筆交易蓋上正確的時間戳[24-25],以此證明在這個時刻這筆交易確實發生,交易中資金的所屬權已經轉移,之前資金所有者再次使用這筆資金時就會報錯,從而解決重復支付問題。另外,每一個區塊也會蓋上正確的時間戳,從而形成一個按時間順序發展的正確鏈表。
1.4工作量證明機制
工作證明(ProofOfwork,POW),也稱為工作量的證明l1]。比特幣系統利用POW機制使系統各節點最終達成共識,進而得到最終區塊。這里的工作是指找到一個合理的區塊哈希值,它需要不斷地進行大量的計算,計算時間取決于當前目標的難度和機器的運算速度。當一個節點找到這個值之后,就說明該節點確實經過了大量的計算,這就是工作量證明。由于驗證只需對結果值進行一次哈希運算,因此POW的驗證效率很高。
1.5權益證明機制
相比POW浪費大量的算力,點權益證明(ProofOfStake,POS)僅僅需要少量的計算就能維持區塊鏈的正常運轉。這種機制根據貨幣持有量和時間來分配相應的利息。但是這種機制存在一點不足,即區塊的產生沒有消耗大量算力,導致這種機制下的貨幣價值來源難以確定,因為任何區塊鏈系統都可以實現。
1.6P2P網絡技術
P2P網絡技術又稱為點對點技術,它是一個沒有中心服務器、依靠用戶群交換信息的互聯網體系。P2P網絡由于沒有中心化服務器,使得它天生具有耐攻擊、高容錯的優點;并且各個節點地位平等,服務分散在各個節點上進行,因此部分節點或網絡遭到攻擊對整個系統幾乎沒有影響。比特幣系統應用P2P技術,使各個節點獨立地參與系統,每個節點都是一個獨立的個體,單獨節點宕機或者遭到攻擊都不會對系統造成影響。
1.7非對稱加密技術
非對稱加密需要密鑰對即公鑰和私鑰成對出現。公鑰公開、私鑰保密,私鑰加密的信息只有對應的公鑰才能解開,公鑰加密的信息只有對應的私鑰才能解密,即公鑰加密,私鑰解密;私鑰簽名,公鑰驗證。在比特幣系統中,公鑰由私鑰通過橢圓曲線加密算法生成;交易信息中必須要有正確的數字簽名才能驗證交易有效。
2區塊鏈的概念與結構
2.1定義
區塊鏈這一概念最早是在中本聰的比特幣白皮書…中提出的,但它不是以區塊鏈出現的,而是以工作量證明鏈(profof-workchain)的形式存在。下面是中本聰對區塊鏈概念的敘述:時間戳服務就是通過對區塊中數據項加上時間戳進行哈希,并把這一哈希值廣泛地傳播出去,就像是新聞或者在世界性新聞網絡(Usenet)上的發帖一樣。顯然,要得到這個哈希值,就需證明在過去的某個時刻加上時間戳的數據必然存在。每個時間戳包含了先前的時間戳,這樣就形成了一條鏈,并且后面的時間戳都對前一個時間戳進行了增強。
關于區塊鏈的定義,各個機構、權威都給予了不同的定義。
維基百科中文[2]定義:區塊鏈是一種分布式數據庫,起源自比特幣。區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一次比特幣網絡交易的信息,用于驗證其信息的有效性(防偽)和生成下一個區塊。中本聰創建的第一個區塊,即為“創世區塊”。
維基百科英文l2]定義:區塊鏈由包含一系列加蓋了時間戳的有效交易的區塊組成。每個區塊都包含了前一個區塊的哈希值,這樣就把區塊連接在了一起。連接在一起的區塊形成區塊鏈,并且每一個隨后的區塊都是對之前一個區塊的增強,因此給它取了一個數據庫類型的名字。
巴比特網站[2。]:區塊鏈是由一串使用密碼學方法產生的數據庫組成的,每一個區塊都包含了上一個區塊的哈希值,從創世區塊開始連接到當前區塊,形成區塊鏈。每一個區塊都確保按照時間順序在上一個區塊之后產生,否則前一個區塊的哈希值是未知的。這些特征使得比特幣的重復支付(doub—le-spending)變得困難。
以上是不同機構、權威對區塊鏈的定義,雖然有不同,但本質上都一樣,即區塊鏈擁有去中心化、去信任化、開放、信息不可更改、匿名、自治的特性。下面總結概括區塊鏈的概念:區塊鏈是指一種電子記錄形式的賬簿,其中每一個區塊是賬簿的一頁,從第一頁“鏈接”到最新一頁。這些區塊一旦被確認,幾乎不能做修改操作,每個區塊包含了當前一段時間內的所有交易信息和區塊元數據,如圖2所示。
2.2區塊鏈的發展
自2009年起,各種各樣基于區塊鏈的類比特幣的數字貨幣相繼出現,常見的有:bitcoin,litecoin,eth,etc,dogecoin及最新的堪比比特幣的零幣Zcash。區塊鏈除了在貨幣上的應用之外,還有各種衍生應用,如文件存儲系統Storj、預測市場系統Augur、電子商務系統OpenBazaar、智能合約系統等。
區塊鏈的進化過程_2。]如下:
1)區塊鏈1.O——數字貨幣;
2)區塊鏈2.O——數字資產與智能合約;
3)區塊鏈3.0——從DAO,(區塊鏈自治組織、區塊鏈自洽公司)到區塊鏈社會(科學、醫療、教育等)。
2.3區塊鏈類型
區塊鏈分為3類l3:公有、私有及行業區塊鏈。私有鏈和行業鏈是廣義的私鏈。
公有區塊鏈(簡稱公有鏈)是指任何個體或者團體都共用一條區塊鏈,只要接入此鏈都可以在上面發送交易,并且交易能夠獲得該區塊鏈的有效確認,任何團體或個人都可以參與其共識過程。公有區塊鏈是最先出現的區塊鏈,也是目前應用最為廣泛的區塊鏈,這類區塊鏈被認為是“完全去中心化”的。
行業區塊鏈(簡稱行業鏈)指共識過程受到某些預選節點控制的區塊鏈。由該行業集體內部首先指定多個預選節點為記賬人,每個區塊的生成是由所有的預選節點共同決定的(預選節點決定區塊鏈的共識),其他節點只能接入區塊鏈負責交易,但不參與共識過程,任何人都可以通過此區塊鏈對外開放的API進行有限查詢。這類區塊鏈被認為是“部分去中心化”的。
私有區塊鏈(簡稱私有鏈)指僅僅使用區塊鏈這一技術進行記賬操作,但它不對外公開。它的對象可以是一個公司也可以是個人,單獨擁有此區塊鏈的寫人權限,或許會對外開放有高度限制的讀取權限。目前金融巨頭都在探索自己的私有區塊鏈,既應用到區塊鏈的特性,叉能保證安全。
行業鏈結合了公有鏈的完全開放和私有鏈的高度集中,提供了一種混合折中的模式;而私有鏈由于完全限制的寫人權限和高度受限的讀取權限,對于保護個人隱私非常合適。
2.4區塊鏈的數據結構
2.4.1區塊結構
區塊鏈技術中,區塊是指一種數據結構,它包含兩部分:區塊元數據和區塊體。其中區塊元數據記錄的是區塊的元數據信息,區塊體記錄的是從上一區塊產生到此區塊創建之間所發生的所有交易,如表1所列。區塊元數據包含區塊大小、區塊頭和交易計數器3部分,如表2所列。
2.4.2區塊頭結構
區塊頭由兩組元數據組成,一組與挖礦有關,包括時間戳、難度目標及Nonce值;另一組則與區塊本身有關,包括鏈接父區塊的字段、版本號及Merkle樹的根。表3列出了區塊頭的數據結構[30]。
將區塊中所有交易記錄都進行兩次哈希運算之后,將結果作為Merkle樹的葉子節點,然后遞歸兩個相鄰節點的哈希值,直到得到最后一個哈希結果,此哈希值就是Merkle根。
難度目標Bits是一種特殊的浮點編碼類型,占4Byte,首字節是指數,僅用其中的最低5位,后3個字節是尾數,它能夠表示256位的數。一個區塊頭的SHA256哈希值必須小于或等于Bits難度目標才能被整個網絡認可,難度目標Bits值越小,產生一個新區塊的難度就越大,即目標值越小,得到正確結果的區間就越小,難度就越大。
Nonce字段是指隨機數,各個區塊頭的值往往不同,但它卻是從0開始嚴格按照線性方式增長的隨機數,每次計算都會增長。挖礦就是來尋找一個滿足條件的Nonce值。
2.4.3區塊標識符
每個區塊有兩種標識符:區塊頭哈希值和區塊高度。這兩個字段都沒有被真正記錄下來,因為這兩個字段可以直接被計算出來。
區塊的主標識符是它的區塊頭哈希值,通過對區塊頭6個字段進行兩次SHA256哈希計算得到數字簽名,產生的256位的值被稱為區塊頭哈希值,簡稱為區塊哈希值。例如000000000019d6689cO85ae165831e934ff763ae46a2a6cl72b3f1b60a8ce26堤比特幣創世區塊的區塊哈希值。區塊哈希值可以唯一、確切地標識一個區塊,并且任何節點都可以對區塊頭進行獨立計算從而得到該區塊的哈希值。但是為了方便從磁盤檢索區塊,可能會把哈希值作為元數據存儲在一個獨立的數據庫表中。
區塊的第2個標識是區塊高度,創世區塊的高度為0,通過識別該區塊在區塊鏈中的“深度”來確定一個區塊。每一個之后產生的區塊都比當前最新的區塊高出一個位置。2016年11月1日的區塊高度大約是436867,這說明已經有436867個區塊被堆疊在2009年1月創建的這個區塊上。
與區塊哈希值不同,區塊高度并不是唯一的標識符。雖然一個區塊對應著一個確定的高度,反之卻不成立,即一個高度并不總能確定一個區塊,當區塊分又發生時,兩個或者多個區塊競爭同一高度。
總之,一個區塊的區塊哈希值總是能唯一地識別出一個確切的區塊。一個區塊也有唯一的區塊高度。但是,一個特定的區塊高度并不是總能唯一地識別出一個特定區塊。
2.4.4創世區
塊創世區塊即區塊鏈系統中的第一個區塊,例如比特幣區塊鏈,它的第一個區塊創建于2009年,稱之為創世區塊。它是比特幣系統中所有區塊的共同祖先,這意味著比特幣區塊鏈中的任一區塊都可以回溯到第一個區塊。
比特幣創世區塊中包含一個隱藏的信息。在其Coinbase中包含這樣一句話“TheTimes03/Jan/2009Chancelloronbrinkofsecondbailoutforbanks”,且是泰晤士報當天的頭版頭條標題,且被留在創世區塊里永遠不可修改。引用這句話說明區塊鏈的時間戳服務可以用來進行存在性證明,正如上面所說,創世區塊記錄下了它產生的時間和當時正發生的事件,并且不能被修改。由此可以得到啟發,區塊鏈技術將可以用來存儲信息,并且是一個存在性證明的最佳技術。
相關期刊推薦:《計算機科學》主要報導國內外計算機科學與技術的發展動態,涉及面廣的方法論與技術,和反映新苗頭、能起承先啟后作用的研究成果。內容涉及程序理論、計算機軟件、計算機網絡與信息、數據庫、人工智能、人機界面、國際會議、應用等。雜志報導特點是“前沿學科”與“基礎研究”相結合;“核心核術”與“支撐技術”相結合;“倡導”與“爭鳴”相結合。
SCISSCIAHCI