【《區(qū)塊鏈相關(guān)理論基礎(chǔ)概述》3300字】_第1頁
【《區(qū)塊鏈相關(guān)理論基礎(chǔ)概述》3300字】_第2頁
【《區(qū)塊鏈相關(guān)理論基礎(chǔ)概述》3300字】_第3頁
【《區(qū)塊鏈相關(guān)理論基礎(chǔ)概述》3300字】_第4頁
【《區(qū)塊鏈相關(guān)理論基礎(chǔ)概述》3300字】_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

區(qū)塊鏈相關(guān)理論基礎(chǔ)概述目錄TOC\o"1-3"\h\u8882區(qū)塊鏈相關(guān)理論基礎(chǔ)概述 1163711.1區(qū)塊和Merkle樹 177611.2橢圓曲線簽名算法 2281621.3智能合約 4222691.4共識(shí)算法 4在2014年之前,“區(qū)塊鏈”一詞作為實(shí)現(xiàn)比特幣的多項(xiàng)技術(shù)之一被提出,并進(jìn)入到各經(jīng)濟(jì)、社會(huì)等應(yīng)用背景中[47]?,F(xiàn)如今,“區(qū)塊鏈”更多是一種狹義的概念,代表著哈希函數(shù)、非對(duì)稱密碼學(xué)、分布式共識(shí)、智能合約等多項(xiàng)技術(shù)。在本質(zhì)上,區(qū)塊鏈可以稱作“密碼共識(shí)”,其中,哈希函數(shù)作為這一系列技術(shù)的基礎(chǔ),分布式共識(shí)以及實(shí)現(xiàn)分布式共識(shí)的非對(duì)稱密碼技術(shù)在“區(qū)塊鏈”中發(fā)揮著關(guān)鍵的作用,而智能合約、MerkleTree、時(shí)間戳等技術(shù)也作為不可或缺的一部分共同構(gòu)成了“區(qū)塊鏈”這一新名詞。1.1區(qū)塊和Merkle樹(1)區(qū)塊結(jié)構(gòu)如圖2.7所示,區(qū)塊由區(qū)塊頭和區(qū)塊體組成,其中的區(qū)塊頭則由三組用于不同目的的元數(shù)據(jù)組成。第一組元數(shù)據(jù)是用于將當(dāng)前區(qū)塊連接在前一區(qū)塊之后的前區(qū)塊哈希值。第二組元數(shù)據(jù)是默克爾樹根(MerkleTreeRoot),樹根的值則是由該區(qū)塊中所有交易的散列值計(jì)算而成。第三組元數(shù)據(jù)是為挖礦行為服務(wù)的目標(biāo)難度值Target、時(shí)間戳Timestamp以及隨機(jī)數(shù)Nounce。區(qū)塊體中存放的是所有的交易。(2)Merkle樹默克爾樹,又稱哈希二叉樹,在區(qū)塊鏈中主要用于匯總和認(rèn)證交易完整性。由于其將散列值表示成了二叉樹的形式,使得在處理大型數(shù)據(jù)時(shí)變得非常有效。二叉樹對(duì)于交易的匯總形式如下:最底層的葉子節(jié)點(diǎn)是交易的散列值,由下而上地,上層的非葉子節(jié)點(diǎn)為其相鄰下層兩個(gè)節(jié)點(diǎn)數(shù)據(jù)連接后的哈希值。以此方式,沿著路徑向上計(jì)算,直到計(jì)算出默克爾樹的根哈希(MerkleHashRoot),此時(shí)便生成了一個(gè)由散列值構(gòu)成的二叉樹。哈希樹根的值就相當(dāng)于底層所有交易的數(shù)字摘要,可以高效地驗(yàn)證某交易是否包含在此區(qū)塊中,也能快速定位到底層任意交易數(shù)據(jù)的修改。如圖2.7所示,為了證明塊中存在某個(gè)特定的交易B,區(qū)塊會(huì)公布默克爾路徑上的其他兩個(gè)哈希值,即H(A)、H(CD)。通過交易B的哈希值和H(A),可從下到上地計(jì)算出默克爾樹的根哈希。若計(jì)算出的根哈希和區(qū)塊頭中的根哈希相同,則說明有此交易,否則不存在。此查詢交易過程的時(shí)間復(fù)雜度最大為,其在計(jì)算量方面的優(yōu)勢(shì)會(huì)在處理大量數(shù)據(jù)時(shí)更加明顯。Merkle樹快速定位數(shù)據(jù)修改的過程如下:一旦底層數(shù)據(jù)發(fā)生任何變動(dòng),該數(shù)據(jù)所在路徑上的值都會(huì)跟隨變化,直至傳遞到哈希樹根。因此,Hash根可快速定位到底層發(fā)生修改的具體交易,此定位過程所需要的時(shí)間復(fù)雜度最大為,適合有大量數(shù)據(jù)需要驗(yàn)證的情況。當(dāng)交易的數(shù)量超過了區(qū)塊的大小,則創(chuàng)建下一個(gè)區(qū)塊并鏈接在前一區(qū)塊后。2.7區(qū)塊結(jié)構(gòu)Fig.2.7Blockstructure1.2橢圓曲線簽名算法數(shù)字簽名算法是一種非對(duì)稱加密算法,與加密算法不同的是,其不僅能夠保證數(shù)據(jù)在傳輸過程中的完整性,而且能夠根據(jù)所收到信息中的數(shù)字簽名和公鑰驗(yàn)證出身份的真實(shí)性,即確實(shí)來自于發(fā)送者。對(duì)數(shù)據(jù)包進(jìn)行數(shù)字簽名時(shí)所用的私鑰保存在發(fā)送者的本地,很難被攻擊者獲取到,因此數(shù)字簽名算法也可保證發(fā)送實(shí)體的真實(shí)性。區(qū)塊鏈?zhǔn)褂脵E圓曲線數(shù)字簽名算法(EllipticCurvesDigitalSignatureAlgorithm,ECDSA)對(duì)數(shù)據(jù)信息進(jìn)行安全保證,該算法中用于對(duì)數(shù)據(jù)進(jìn)行簽名的臨時(shí)私鑰是通過橢圓曲線加密算法(EllipseCurveCryptography,ECC)產(chǎn)生的。現(xiàn)有方案中的HMAC方案并不能實(shí)現(xiàn)真正的拓?fù)浒l(fā)現(xiàn)安全,因此,本文為了保證能夠?qū)χ鳈C(jī)設(shè)備進(jìn)行身份認(rèn)證、消息認(rèn)證以及防抵抗性驗(yàn)證,采用的是ECDSA數(shù)字簽名算法,見公式(2.1)。該算法的輸入有兩個(gè)參數(shù),一個(gè)參數(shù)是存儲(chǔ)在用戶本地的私鑰,另一個(gè)是數(shù)據(jù)的哈希值,而不是數(shù)據(jù)本身。輸出是一個(gè)數(shù)字簽名,這個(gè)簽名包含兩部分內(nèi)容,通常稱為和,可表示為。(2.1)該算法首先會(huì)采用哈希函數(shù)keccak256對(duì)交易內(nèi)容進(jìn)行哈希計(jì)算,然后用自己的私鑰對(duì)數(shù)字摘要進(jìn)行簽名,最終生成一個(gè)數(shù)字簽名值。ECDSA簽名算法的具體細(xì)節(jié)可以用公式(2.2)表示:(2.2)(2.3),(2.4)簽名的步驟如下:步驟1.發(fā)送數(shù)據(jù)包的用戶產(chǎn)生密鑰對(duì),其中是私鑰,是從[1,n-1]中隨機(jī)選取的數(shù),是利用公式(2.3)計(jì)算出的公鑰。步驟2.發(fā)送者需要用Keccak-256哈希函數(shù)計(jì)算交易信息的摘要,此處的是經(jīng)過RLP編碼的待簽名交易數(shù)據(jù)包。步驟3.在簽名算法執(zhí)行過程中,ECC算法會(huì)同步生成一個(gè)臨時(shí)的密鑰對(duì)。步驟4.根據(jù)公式(2.4)和臨時(shí)公鑰可計(jì)算出對(duì)應(yīng)的軸坐標(biāo),將其作為值,基于此,便可利用公式(2.2)計(jì)算出數(shù)字簽名中的值。接收方接收到交易信息之后會(huì)開始驗(yàn)證簽名,其根據(jù)交易中攜帶的數(shù)字簽名和發(fā)送方共享的公鑰值完成整個(gè)驗(yàn)證過程。具體步驟如下:(2.5)(2.6)(2.7)(2.8)步驟1.根據(jù)Keccak256哈希函數(shù)計(jì)算出所收到的交易數(shù)據(jù)包的數(shù)字摘要,并將哈希值字符串轉(zhuǎn)化為整數(shù)。步驟2.利用公式(2.5)、(2.6)和(2.7)便可計(jì)算出值,如果=0,則驗(yàn)證該簽名無效。步驟3.利用公式(2.8)計(jì)算出值,若==,則簽名有效,否則,簽名無效。1.3智能合約智能合約是在發(fā)生特定事件時(shí)自動(dòng)觸發(fā)的一系列代碼,通常使用類似Solidity這類高級(jí)語言編寫,可以理解為一種無需第三方介入即可進(jìn)行交易驗(yàn)證的計(jì)算機(jī)協(xié)議。由于智能合約的行為是由代碼控制的,而代碼是由參與共識(shí)的節(jié)點(diǎn)共同商議決定的。合約代碼一旦被確定,則不能被修改,只能重新部署一個(gè)新的合約實(shí)例,或者利用創(chuàng)建者已有的特權(quán)嘗試刪除合約實(shí)例,代碼的這種不可改變以及透明性使得智能合約是安全的。需要區(qū)分的是,在區(qū)塊鏈中,可用自己的私鑰對(duì)所發(fā)交易進(jìn)行簽名的節(jié)點(diǎn)被稱作外部賬戶,而智能合約并不像各點(diǎn)對(duì)點(diǎn)(PeerToPeer,P2P)節(jié)點(diǎn)一樣有自己的私鑰,其由代碼和存儲(chǔ)的數(shù)據(jù)狀態(tài)組成,屬于一種合約賬戶。智能合約,在使用過程中通常包含創(chuàng)建和調(diào)用兩個(gè)階段。其中,前者指編寫代碼并將其編譯成字節(jié)碼之后,通過某一具體地址將交易部署到區(qū)塊鏈的過程。后者則是節(jié)點(diǎn)在網(wǎng)絡(luò)中發(fā)起一筆目的地址為智能合約IP地址的交易,也就是說合約只有被交易調(diào)用的時(shí)候才會(huì)被觸發(fā)執(zhí)行,其并不是一種“自動(dòng)運(yùn)行”或“在后臺(tái)運(yùn)行”的概念。通常情況下,為了保證合約的執(zhí)行限制在可控范圍之內(nèi),往往需要對(duì)合約的調(diào)用者進(jìn)行一定的權(quán)限限制。根據(jù)外部賬戶對(duì)于合約的權(quán)限控制,可分為三種賬戶:管理員賬戶、可讀賬戶和可寫賬戶。其中管理員賬戶可以添加可讀或可寫的賬戶,并且對(duì)合約進(jìn)行讀寫操作。1.4共識(shí)算法共識(shí)算法是區(qū)塊鏈中的關(guān)鍵技術(shù),常見的有工作量證明(ProofofWork,POW)、權(quán)益證明(ProofofStake,POS)、實(shí)用拜占庭容錯(cuò)(PracticalByzantineFaultTolerance,PBFT)、委任權(quán)益證明(DelegatedProofofStake,DPOS)等算法。事實(shí)上,共識(shí)機(jī)制早在區(qū)塊鏈出現(xiàn)之前就已經(jīng)出現(xiàn),主要應(yīng)用在分布式系統(tǒng)中,而區(qū)塊鏈的出現(xiàn)推動(dòng)了“共識(shí)機(jī)制”這個(gè)概念的發(fā)展。區(qū)塊鏈中的共識(shí)算法在具體應(yīng)用時(shí),會(huì)因?yàn)閳?chǎng)景和需求的不同而有所變化。如比特幣采用的POW算法,其根據(jù)完成的工作量判斷是否有產(chǎn)生下一區(qū)塊的機(jī)會(huì),該算法達(dá)到共識(shí)的時(shí)間較長(zhǎng),惡意者破壞系統(tǒng)需要巨大的成本。POS算法將POW中的算力更換成了權(quán)益,縮短了共識(shí)時(shí)間,但容易出現(xiàn)分叉。DPOS算法中的節(jié)點(diǎn)輪流產(chǎn)生區(qū)塊,共識(shí)驗(yàn)證速度快,但是容易依賴某一節(jié)點(diǎn),不適合完全去中心化的應(yīng)用場(chǎng)景。PBFT是所有的節(jié)點(diǎn)參與投票,結(jié)果按照拜占庭容錯(cuò)(ByzantineFaultTolerance,BFT)算法處理以實(shí)現(xiàn)一致性,該算法可用于解決由于節(jié)點(diǎn)自身突然故障以及遭受到惡意者侵犯所造成的網(wǎng)絡(luò)不正常行為。如圖2.8所示,Client代表客戶端,S0-3為服務(wù)節(jié)點(diǎn),其中3為故障節(jié)點(diǎn),0代表主節(jié)點(diǎn),該主節(jié)點(diǎn)是在所有服務(wù)節(jié)點(diǎn)中選舉出來負(fù)責(zé)生成區(qū)塊的。區(qū)塊鏈中PBFT共識(shí)算法的一致性協(xié)議有三個(gè)核心階段,具體流程如下:(1)Pre-prepare階段:在共識(shí)過程中,任何節(jié)點(diǎn)都可以發(fā)送請(qǐng)求生成區(qū)塊的消息,此處假設(shè)客戶端H僅發(fā)送交易請(qǐng)求至主節(jié)點(diǎn)0,主節(jié)點(diǎn)0收到多個(gè)交易請(qǐng)求并均打包至區(qū)塊之后,簽名并廣播Pre-prepare消息,即進(jìn)入Pre-prepare階段。從節(jié)點(diǎn)收到Pre-prepare消息之后,開始對(duì)區(qū)塊中的簽名和Hash進(jìn)行校驗(yàn),以同意或拒絕區(qū)塊生成。驗(yàn)證通過后,節(jié)點(diǎn)才可進(jìn)入到Prepare階段,廣播消息并告知已對(duì)該區(qū)塊認(rèn)可。(2)Prepare階段:當(dāng)其他節(jié)點(diǎn)收到針對(duì)某區(qū)塊的Prepare消息時(shí),開始進(jìn)行校驗(yàn)。若從節(jié)點(diǎn)收到2f+1個(gè)Prepare消息,則廣播Commit消息,讓該區(qū)塊進(jìn)入Commit階段的投票過程;否則,發(fā)布拒絕繼續(xù)事件。(3)Commit階段:在Commit階段,通過校驗(yàn)區(qū)塊被認(rèn)可的數(shù)量,來決定是否在本地生成該區(qū)塊。當(dāng)各個(gè)節(jié)點(diǎn)收到超過2f+1個(gè)不同節(jié)點(diǎn)的Commit消息(f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論