




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
??閱讀數(shù):336??閱讀數(shù):336干貨分享【程序員必看】人才稀缺的區(qū)塊鏈,轉(zhuǎn)型入門需要這四項技能!愛名網(wǎng)??2018-03-0114:40:51?舉報C:\Users\ztt\Desktop\1.jpg區(qū)塊鏈(BlockChain),是區(qū)塊(Block)和鏈(Chain)的直譯,其數(shù)據(jù)結(jié)構(gòu)如圖1所示,即每個區(qū)塊保存規(guī)定時間段內(nèi)的數(shù)據(jù)記錄,并通過密碼學的方式,構(gòu)建一條安全可信的鏈條,形成一個不可篡改、全員共有的分布式賬本。比特幣的區(qū)塊分為區(qū)塊頭和區(qū)塊體兩部分。區(qū)塊頭的大小為80字節(jié),包括4字節(jié)的版本號、32字節(jié)(256位)的上一區(qū)塊哈希值、32字節(jié)的Merkle根節(jié)點、4字節(jié)的時間戳、4字節(jié)的難度值和4字節(jié)的隨機數(shù)。區(qū)塊體包含10分鐘內(nèi)選定的交易記錄,第一筆交易(coinbase交易)是用于獎勵礦工比特幣的特殊交易,由礦工自己添加進區(qū)塊。
區(qū)塊回 區(qū)塊N+1 新區(qū)塊版本號區(qū)版本號版本號上一區(qū)頊晴忌位材巳「klw根若點'上一區(qū)塊郵修上一區(qū)塊哈希值5HA?泌、調(diào)節(jié)點MerkleIB節(jié)點時間戡時間離時間畿唯度值難度值.一髓機數(shù)隨機散R易數(shù)夜匠塊體交易數(shù)據(jù)反塊體交易數(shù)據(jù)C:\Users\ztt\Desktop\2.jpg圖1?區(qū)塊鏈的數(shù)據(jù)結(jié)構(gòu)示意圖基本概念區(qū)塊鏈是很多現(xiàn)有技術交叉融合在一起的集成創(chuàng)新。因此,要了解區(qū)塊鏈,首先要了解區(qū)塊鏈到底集成了哪些技術。P2P網(wǎng)絡如圖2所示,P2P(Peer-to-Peer)網(wǎng)絡是一種端到端的網(wǎng)絡。P2P網(wǎng)絡分為結(jié)構(gòu)化(例如基于Chord的P2P網(wǎng)絡)和非結(jié)構(gòu)化的P2P網(wǎng)絡(例如Gnutella)。比特幣的區(qū)塊鏈采用的是非結(jié)構(gòu)化P2P網(wǎng)絡,整個網(wǎng)絡沒有中心化的硬件或管理機構(gòu),任一節(jié)點既是服務端,也是客戶端。任何節(jié)點只要安裝相應的客戶端軟件,就能接入P2P網(wǎng)絡(例如BT軟件),參與區(qū)塊鏈的記錄和驗證,不超過1/3節(jié)點的損壞、退出甚至被植入惡意代碼,都不會影響整個系統(tǒng)的運作。金融系統(tǒng)在機構(gòu)之間
使用一個中心化的賬本
來追蹤資產(chǎn)的流動通過去中心化賬本來普代中心機構(gòu)認證資產(chǎn)所有權(quán)“多個機構(gòu)共同運行和檢驗,來防止欺詐和人為操控金融系統(tǒng)在機構(gòu)之間
使用一個中心化的賬本
來追蹤資產(chǎn)的流動通過去中心化賬本來普代中心機構(gòu)認證資產(chǎn)所有權(quán)“多個機構(gòu)共同運行和檢驗,來防止欺詐和人為操控C:\Users\ztt\Desktop\3.jpg圖2?傳統(tǒng)中心化系統(tǒng)和P2P網(wǎng)絡的拓撲對比圖加密算法和數(shù)字簽名加密技術分為對稱、非對稱和哈希(Hash)加密。對稱加密是指用同樣的密鑰來進行加密和解密,非對稱加密是指用一個密鑰對來進行加密和解密,哈希加密主要是通過對數(shù)據(jù)進行哈希運算,用固定的哈希結(jié)果值驗證信息是否被篡改。非對稱加密在非對稱加密技術中,對外公開、分發(fā)出去的密鑰叫做公鑰,不能公開、自己留存的密鑰叫做私鑰。公鑰加密的,對應的私鑰才能解密。反之亦然。如圖3所示。明文加密密文解密明曳98 =11 11―? 1儼伽d187二日8——88公鑰=(7,187) 私鑰水23」167)C:\Users\ztt\Desktop\4.jpg圖3?非對稱加密RSA算法的簡化示例圖非對稱加密算法有RSA、DSA和ECC等種類,區(qū)塊鏈使用的是基于橢圓曲線加密技術的數(shù)字簽名(ECDSA),具體實現(xiàn)是secp256k1。ECDSA相當于
是DSA和非對稱加密ECC的結(jié)合。相比RSA算法,ECDSA具有計算量小、存儲空間小、帶寬要求低等特點。數(shù)字簽名基于數(shù)字簽名的通信機制工作原理,如圖4所示,發(fā)送報文時,發(fā)送方用一個哈希函數(shù)從報文文本中生成文件摘要,然后用自己的私鑰對摘要進行加密,加密后的摘要將作為報文的數(shù)字簽名和報文一起發(fā)送給接收方。接收方首先用與發(fā)送方一樣的哈希函數(shù)從接收到的原始報文中計算出報文摘要,接著再用發(fā)送方的公鑰來對報文附加的數(shù)字簽名進行解密,如果得到的明文相同,那么接收方就能確認傳輸?shù)奈募⑽词艿酱鄹?,是安全可信的。文樣揭? 就字簽乞C:\Users\ztt\Desktop\5.jpg如邛同「文樣揭茬2 就字簽乞C:\Users\ztt\Desktop\5.jpg如邛同「臉可值。始果不同,文1㈱登1 _/費會□就盼折\凰竺箜戶發(fā)送文件文件腱圖4?數(shù)字簽名的流程示意圖哈希加密安全哈希算法(SecureHashAlgorithm,SHA)是由美國國家安全局研發(fā),由美國國家標準與技術研究院(NIST)發(fā)布的一系列密碼哈希函數(shù),包括SHA-0、SHA-1、SHA-2和SHA-3等系列。比特幣的區(qū)塊鏈使用的是SHA-256哈希加密算法,于2001年發(fā)布,屬于SHA-2分支。由于SHA256偽隨機性的特點,只要是相同的數(shù)據(jù)輸入,一定會得到相同的結(jié)果,如果輸入數(shù)據(jù)稍有變化,將得到一個千差萬別的結(jié)果,如圖5所示。SHA256還是一個單向不可逆的算法,即根據(jù)一個輸入數(shù)算SHA256的結(jié)果很容易,但根據(jù)SHA256的結(jié)果反算輸入數(shù)幾乎是不可能。除此之外,比特幣還使用ripemd160算法來生成比特幣錢包的地址。
C:\Users\ztt\Desktop\6.jpgC:\Users\ztt\Desktop\6.jpg圖5?哈希加密的示意圖梅克爾樹梅克爾(Merkle)樹是區(qū)塊鏈的基本組成部分。如果沒有梅克爾樹,區(qū)塊鏈也是可以運轉(zhuǎn),但是要在區(qū)塊頭里包含所有交易記錄,擴展性方面存在很大挑戰(zhàn)。如圖6所示,區(qū)塊鏈中的每個區(qū)塊,由區(qū)塊頭和區(qū)塊體構(gòu)成,區(qū)塊頭中含有一個Merkle根節(jié)點的字段,通過對區(qū)塊體中所有交易記錄,以二叉樹的形式迭代地兩兩拼接、進行哈希操作,可以得到一個最終的哈希值,我們稱之為Merkle根哈希。Merkle根哈希相當于是對區(qū)塊中所有交易記錄進行了一個快照,區(qū)塊中交易記錄的任意改動都可以通過比較Merkle根哈希而很容易地察覺。Merkle根哈希主要用于簡單支付驗證(SPV),在驗證某個交易是否在區(qū)塊中時,也能極大地減少網(wǎng)絡傳輸成本。區(qū)域N區(qū)塊N+1新區(qū)塊區(qū)域N區(qū)塊N+1新區(qū)塊貌妃5界Merkle^的
根節(jié)點哈希值交易的 交易的哈希值 哈希與有交荔。的哈希值交易1的哈希值交易2的哈泠伯交荔。的哈希值交易1的哈希值交易2的哈泠伯交期?的C:\Users\ztt\Desktop\7.jpg圖6?Merkle樹示意圖工作量證明機制工作量證明機制,簡單地說,就是一種共識機制,用來確認你是否做過一定量工作的證明。比特幣的區(qū)塊鏈主要是依托計算數(shù)學難題來衡量工作量。每個區(qū)塊,當選定一定數(shù)量的交易記錄之后,填充版本號、時間戳、難度值,生成相應的Merkle根哈希。很容易看到,這些數(shù)值在選定交易記錄以后,都是確定的,唯一能夠改變的就只有隨機數(shù)(Nonce)這個值。如圖7所示,系統(tǒng)根據(jù)難度值,要求計算整個區(qū)塊頭的兩次SHA256算法,得到的哈希結(jié)果要小于一個閾值。根據(jù)前面描述的SHA256算法的偽隨機性,只有通過不斷地嘗試和枚舉,才能找到相應的隨機數(shù),證明自己的工作量。新區(qū)塊上一個區(qū)塊的哈希值#78Aadqddq 上一個區(qū)塊的哈希值#78Aadqddq 梅克爾根節(jié)點[兩次SHA256哈希61dldflahjm隨機數(shù)(不斷猜測)30282937302829383028293930282940302829413028294230282943C:\Users\ztt\Desktop\8.jpg圖7?工作量證明機制示意圖除了工作量證明機制(PoW)這類共識機制之外,還有股權(quán)證明機制(PoS)、授權(quán)股權(quán)證明機制(DPoS)、拜占庭容錯機制(BFT)、實用拜占庭容錯機制(PBFT)這些在不可信環(huán)境下的共識機制以及要求在可信環(huán)境下的共識機制,例如PaxOS和Raft。表1是做了簡單的對比。表1?共識機制的簡單對比表共識機制PaxosRaftPoWBFTPBFT一致性強一致性強一,致姓弱一致性致一弱性弱一致性網(wǎng)絡組織主從主從對等對等精導..數(shù)據(jù)庫適配levelDBlevelDBrocksDB允許失敗的節(jié)點數(shù)<1/2<1/2<1/3<1/3<1/3惡意節(jié)點不允許不允許允許允許允許虛擬機無無無有需要代幣無無有有無C:\Users\ztt\Desktop\9.jpg運行機制接入網(wǎng)絡和驗證節(jié)點通過安裝相應的軟件(例如比特幣核心),接入?yún)^(qū)塊鏈。節(jié)點啟動以后,主要是在P2P網(wǎng)絡上發(fā)現(xiàn)鄰居節(jié)點、鏈接鄰居節(jié)點、傳遞P2P消息和下載區(qū)塊鏈驗證。節(jié)點可以選擇下載全量的區(qū)塊鏈進行驗證,或者是只下載區(qū)塊頭,通過Merkle樹節(jié)點來進行簡單支付驗證(SPV)。錢包軟件可以分為移動錢包、桌面錢包、互聯(lián)網(wǎng)錢包和紙錢包,都支持保存用戶的私鑰,錢包也可以根據(jù)私鑰是否是種子產(chǎn)生的,而分為決定性錢包和非決定性錢包,關鍵區(qū)別在于私鑰的備份和易恢復性。區(qū)塊鏈的存儲和接受比特幣的區(qū)塊鏈使用BerkeleyDB(文件數(shù)據(jù)庫)作為錢包數(shù)據(jù)庫,使用LevelDB(鍵值數(shù)據(jù)庫)存儲區(qū)塊的索引和UTXO(UnspentTransactionOutput,未開銷的比特幣交易輸出)。節(jié)點在啟動的時候,將整個區(qū)塊鏈的索引從LevelDB加載入內(nèi)存。當收到一個新區(qū)塊時,節(jié)點對新區(qū)塊中的所有交易進行檢測,驗證交易格式、交易大小、交易簽名、UTXO是否匹配、交易簽名、腳本合規(guī)等方面。如果驗證成功,檢查上一區(qū)塊頭與鏈頭區(qū)塊哈希值是否一致,如果是一致,則更新UTXO數(shù)據(jù)庫和回滾交易數(shù)據(jù)庫,如果不是,則將該區(qū)塊放在孤兒區(qū)塊池中。當節(jié)點發(fā)現(xiàn)網(wǎng)絡中存在另一條更長的區(qū)塊鏈時,就需要斷開現(xiàn)有的區(qū)塊并對區(qū)塊鏈進行重組。如果驗證不成功,會拋棄該區(qū)塊,繼續(xù)等待新區(qū)塊的到來(礦工會繼續(xù)計算新區(qū)塊的數(shù)學難題)。
區(qū)塊鏈的工作量證明計算機制“礦工”角色的節(jié)點一直收集網(wǎng)絡中廣播的交易記錄,并致力于計算新區(qū)塊的數(shù)學難題,即工作量證明。如果其他節(jié)點發(fā)來的新區(qū)塊驗證成功,節(jié)點除了更新UTXO數(shù)據(jù)庫和回滾交易數(shù)據(jù)庫,節(jié)點會立即開始下一個新區(qū)塊的計算。新區(qū)塊的構(gòu)建優(yōu)先選取交易內(nèi)存池中優(yōu)先級高的交易記錄。優(yōu)先級的計算方式為:如果自己的工作量證明計算成功,節(jié)點會第一時間將這個區(qū)塊廣播至整個網(wǎng)絡中,其他節(jié)點收到該新區(qū)塊,如上所述,會進行相應的驗證和存儲。我源明.形皤購寂球名「茨起交舄我源明.形皤購寂球名「茨起交舄整個區(qū)塊鏈的運轉(zhuǎn)機制如圖8所示?!复т赶V陶整「揣涓息廣陶整廣描浦E.廣漏陣息F髀-_,讓加洶獻菅點一措希疽,堵克建坦:廣描浦E.廣漏陣息F髀-_,讓加洶獻菅點一措希疽,堵克建坦:— 頭怕荒宇用*一]計筋效學迪眥.—]十I工作址皿十I頭怕荒字網(wǎng)-赧謂S3很,廣那消理[vt^Mtrldc眼節(jié)舟
哈枷.境充國塊
頭粗演字以厚雙皿1U貌.X17ffiijEfVlM觀訴區(qū)說人一|廄成新區(qū)塊.銷入
原席塊府寸尺+J原晞塊情不懇尼,或:忻匡塊.由人
原厚我M觀訴區(qū)說人一|廄成新區(qū)塊.銷入
原席塊府寸尺+J原晞塊情不懇尼,或:忻匡塊.由人
原厚我鏈制?J?房塊槌末宅+>原區(qū)塊前末尾qC:\Users\ztt\Desktop\10.jpg圖8?區(qū)塊鏈運轉(zhuǎn)機制示意圖其他相關腳本語言區(qū)塊鏈采用的腳本語言并不是圖靈完備的語言,不支持循環(huán),只能進行堆棧式操作。這種腳本語言的好處是,不允許礦工提交一個死循環(huán)的腳本,更注重的是安全方面的考量,但其擴展能力有限。從以太坊為首的區(qū)塊鏈編程平臺支持圖靈完備的編程語言,引領區(qū)塊鏈跨入2.0時代。由于支持循環(huán)等復雜操作,以太坊用Gas(燃料)機制來防止死循環(huán)的出現(xiàn),確保系統(tǒng)的安全。消息隊列比特幣區(qū)塊鏈采用ZeroMQ(ZMQ)作為消息分發(fā)和消息隊列管理工具。與很多人熟悉的RabbitMQ相比,ZMQ不像傳統(tǒng)意義的消息服務器,更像一個底層的網(wǎng)絡通信庫,在多個線程、內(nèi)核和主機盒之間彈性伸縮,在SocketAPI之上將網(wǎng)絡通信、進程通信和線程通信抽象為統(tǒng)一的API接口。挖礦設備和算法演進挖礦設備從支持復雜指令(CISC)、適合串行計算的CPU礦機時代,經(jīng)由基于眾核體系、適合并行簡單計算的GPU挖礦和低功耗卻價格昂貴的FPGA挖礦,逐漸向集約高速的ASIC礦機和規(guī)模效應的礦池演進?;诠ぷ髁孔C明機制的算法,容易導致礦工算力集中的問題。有人將這種“中心化”的責任歸咎于SHA256算法。此時,基于SCRYPT算法的萊特幣(Litecoin)進入了人們視線,其占用內(nèi)存多、計算時間長、并行計算困難的特點,限制了礦工的“軍備競賽”。萊特幣的成功催生了更多算法的交叉融合,衍生出串聯(lián)算法(夸克幣)、并聯(lián)算法(HeavyCoin)和多用途算法(在工作量證明的同時,尋找大素數(shù)的素數(shù)幣,PrimeCoin)。開源項目和工具區(qū)塊鏈的開源項目BitCoinBitCoin是最早、也是現(xiàn)網(wǎng)運行區(qū)塊鏈最成功的一個開源項目,核心技術框架采用C++開發(fā),共識算法采用PoW,每秒交易量(TPS)為不多于7筆,開源許可協(xié)議為MIT。官方編程語言:C++開源許可協(xié)議:MIT開源項目地址:Ethereum以太坊(Ethereum)是一個支持圖靈完備腳本運行的區(qū)塊鏈開發(fā)平臺,基于智能合約,降低用戶搭建DApp應用的門檻。目前以太坊正式運行的版本是1.0,采用的是POW共識算法,公網(wǎng)TPS是25筆,未來將采用類POS的Casper算法,區(qū)塊鏈的確認速度將得到大幅提升。在規(guī)劃的2.0版本中,TPS有望可以達到2000TPS。官方編程語言:Go開源許可協(xié)議:GPLv3開源項目地址:HyperledgerFabricHyperledgerFabric是RM開源的區(qū)塊鏈項目,開發(fā)環(huán)境可以適配多種環(huán)境(virtualbox虛擬機、自建網(wǎng)絡和舊M的BlueMix),支持Docker,共識算法插件化,注重角色的權(quán)限控制和企業(yè)級的安全機制。主要開發(fā)語言是Go語言,支持JavaScript、Java和Python等語言,交易頻率TPS最高能夠達到100K。其子項目Iroha助力區(qū)塊鏈移動應用程序的開發(fā),值得關注和進一步跟IE蹤o官方編程語言:Go開源許可協(xié)議:Apache2.0開源項目地址:OpenChainOpenChain是區(qū)塊鏈技術公司Coinprism的開源工具,目標是大型企業(yè)和金融機構(gòu),基于一種獨特的分布式賬本技術,幫助用戶部署自己定制的區(qū)塊鏈,減少用戶的交易成本和結(jié)算時間。官方編程語言:C#開源許可協(xié)議:Apache2.0開源項目地址:BitShares比特股(BitShares)提供的BitUSD等錨定資產(chǎn),是虛擬幣歷史上的一個最重要變革之一,消除了虛擬貨幣估值波動大的問題。比特股創(chuàng)新地提出了DPoS共識算法,核心技術框架采用C++語言開發(fā),既適用于公有鏈,也適合于聯(lián)盟鏈。在比特股2.0中,交易頻率TPS最高能夠達到100K。官方編程語言:C++開源許可協(xié)議:MIT開源項目地址:Ripple瑞波(Ripple)是世界上第一個開放的支付網(wǎng)絡,也是目前最成功的區(qū)塊鏈技術公司。其核心產(chǎn)品Ripple協(xié)議本質(zhì)上是一個實時結(jié)算系統(tǒng),通過引入新的共識機制RPCA,只要特殊節(jié)點投票,就能在很短時間內(nèi)完成交易的驗證和確認。官方編程語言:C++開源許可協(xié)議:ISC開源項目地址:Tendermint美國公司Tendermint推出的Tendermint是第一個實施分片技術的公共區(qū)塊鏈。Tendermint主核心負責管理所有區(qū)塊鏈分區(qū),支持比特幣分區(qū)和以太坊分區(qū),具有很大的靈活性,共識引擎通過Tendermint套接字協(xié)議(TMSP)與應用程序進行連接,不依賴于某一特定的編程語言,所以開發(fā)人員可以使用任意一種編程語言來編寫智能合約。官方編程語言:Go開源許可協(xié)議:Apache2.0開源項目地址:CordaCorda是R3CEV于2016年12月初開源的區(qū)塊鏈平臺,采用一種類區(qū)塊鏈的分布式賬本,基于產(chǎn)業(yè)標準工具,通過創(chuàng)新智能合約和數(shù)據(jù)處理,為金融服務設計一種新型分布式的分類帳平臺。官方編程語言:Go開源許可協(xié)議:Apache2.0開源項目地址具體對比圖如表2所示。表2?開源項目的對比表艮界心UP-曜;BitCoin】知Cl否7mu IEibe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五暑期工勞務派遣與就業(yè)環(huán)境優(yōu)化合同
- 二零二五年度物流公司貨車司機服務質(zhì)量考核與獎勵協(xié)議
- 2025年度網(wǎng)絡安全防護等級評定安全協(xié)議書
- 2025年度汽車零部件貨物運輸安全與質(zhì)量協(xié)議
- 二零二五年度環(huán)保產(chǎn)業(yè)技術人才招聘與綠色創(chuàng)新協(xié)議
- 2025年度環(huán)保型清潔公司員工聘用合同書
- 二零二五年度水利設施監(jiān)控維保及災害預警服務合同
- 二零二五年度海鮮水產(chǎn)店轉(zhuǎn)讓與經(jīng)營協(xié)議
- 二零二五年度倆人共同創(chuàng)業(yè)經(jīng)營咖啡廳合伙協(xié)議
- 二零二五年度農(nóng)村土地租賃合同模板(現(xiàn)代農(nóng)業(yè)物流園區(qū))
- 蘇科版八年級生物下冊全冊完整課件
- 第四單元復習教學設計 部編版語文七年級上冊
- 醫(yī)學專家談靈芝孢子粉課件
- 開心麻花《白蛇前傳》劇本
- 全部編版三年級語文下冊生字讀音、音序、偏旁及組詞
- 六年級下冊英語全冊教案(冀教版)
- 血小板血漿(PRP)課件
- 腹部開放性損傷急救
- 二輪 河流專題(精心)
- 球墨鑄鐵管安裝規(guī)范及圖示課件
- ERCP講義教學課件
評論
0/150
提交評論