區(qū)塊鏈簡介·背景
互聯(lián)網(wǎng)上的貿(mào)易隙笆,幾乎都需要借助可資信賴的第三方信用機(jī)構(gòu)來處理電子支付信息。這類系統(tǒng)仍然內(nèi)生性地受制于“基于信用的模式”升筏。
區(qū)塊鏈技術(shù)是構(gòu)建比特幣區(qū)塊鏈網(wǎng)絡(luò)與交易信息加密傳輸?shù)幕A(chǔ)技術(shù)撑柔。它基于密碼學(xué)原理而不基于信用,使得任何達(dá)成一致的雙方直接支付您访,從而不需要第三方中介的參與铅忿。
區(qū)塊鏈簡介·定義
定義
區(qū)塊鏈?zhǔn)且粋€(gè)分布式賬本,一種通過去中心化灵汪、去信任的方式集體維護(hù)一個(gè)可靠數(shù)據(jù)庫的技術(shù)方案檀训。
從數(shù)據(jù)的角度來看
區(qū)塊鏈?zhǔn)且环N幾乎不可能被更改的分布式數(shù)據(jù)庫。這里的“分布式”不僅體現(xiàn)為數(shù)據(jù)的分布式存儲享言,也體現(xiàn)為數(shù)據(jù)的分布式記錄(即由系統(tǒng)參與者共同維護(hù))肢扯。
從技術(shù)的角度來看
區(qū)塊鏈并不是一種單一的技術(shù),而是多種技術(shù)整合的結(jié)果担锤。這些技術(shù)以新的結(jié)構(gòu)組合在一起蔚晨,形成了一種新的數(shù)據(jù)記錄、存儲和表達(dá)的方式。
區(qū)塊鏈簡介·特征
開放? 共識
任何人都可以參與到區(qū)塊鏈網(wǎng)絡(luò)铭腕,每一臺設(shè)備都能作為一個(gè)節(jié)點(diǎn)银择,每個(gè)節(jié)點(diǎn)都允許獲得一份完整的數(shù)據(jù)庫拷貝。節(jié)點(diǎn)間基于一套共識機(jī)制累舷,通過競爭計(jì)算共同維護(hù)整個(gè)區(qū)塊鏈浩考。任一節(jié)點(diǎn)失效,其余節(jié)點(diǎn)仍能正常工作被盈。
去中心? 去信任
區(qū)塊鏈由眾多節(jié)點(diǎn)共同組成一個(gè)端到端的網(wǎng)絡(luò)析孽,不存在中心化的設(shè)備和管理機(jī)構(gòu)。節(jié)點(diǎn)之間數(shù)據(jù)交換通過數(shù)字簽名技術(shù)進(jìn)行驗(yàn)證只怎,無需互相信任袜瞬,只要按照系統(tǒng)既定的規(guī)則進(jìn)行,節(jié)點(diǎn)之間不能也無法欺騙其它節(jié)點(diǎn)身堡。
交易透明? 雙方匿名
區(qū)塊鏈的運(yùn)行規(guī)則是公開透明的邓尤,所有的數(shù)據(jù)信息也是公開的,因此每一筆交易都對所有節(jié)點(diǎn)可見贴谎。由于節(jié)點(diǎn)與節(jié)點(diǎn)之間是去信任的汞扎,因此節(jié)點(diǎn)之間無需公開身份,每個(gè)參與的節(jié)點(diǎn)都是匿名的擅这。
不可篡改? 可追溯
單個(gè)甚至多個(gè)節(jié)點(diǎn)對數(shù)據(jù)庫的修改無法影響其他節(jié)點(diǎn)的數(shù)據(jù)庫澈魄,除非能控制整個(gè)網(wǎng)絡(luò)中超過51%的節(jié)點(diǎn)同時(shí)修改,這幾乎不可能發(fā)生仲翎。區(qū)塊鏈中的每一筆交易都通過密碼學(xué)方法與相鄰兩個(gè)區(qū)塊串聯(lián)一忱,因此可以追溯到任何一筆交易的前世今生。
區(qū)塊鏈簡介·分類
公有鏈
無官方組織及管理機(jī)構(gòu)谭确,無中心服務(wù)器帘营,參與的節(jié)點(diǎn)按照系統(tǒng)規(guī)則自由接入網(wǎng)絡(luò)、不受控制逐哈,節(jié)點(diǎn)間基于共識機(jī)制開展工作芬迄。
私有鏈
建立在某個(gè)企業(yè)內(nèi)部,系統(tǒng)的運(yùn)作規(guī)則根據(jù)企業(yè)要求進(jìn)行設(shè)定昂秃,修改甚至是讀取權(quán)限僅限于少數(shù)節(jié)點(diǎn)禀梳,同時(shí)仍保留著區(qū)塊鏈的真實(shí)性和部分去中心化的特性。
聯(lián)盟鏈
由若干機(jī)構(gòu)聯(lián)合發(fā)起肠骆,介于公有鏈和私有鏈之間算途,兼具部分去中心化的特性。
區(qū)塊鏈·科普
數(shù)字簽名
數(shù)字簽名涉及到一個(gè)哈希函數(shù)蚀腿、發(fā)送者的公鑰嘴瓤、發(fā)送者的私鑰扫外。數(shù)字簽名有兩個(gè)作用,一是能確定消息確實(shí)是由發(fā)送方簽名并發(fā)出來的廓脆。二是數(shù)字簽名能確定消息的完整性筛谚。
工作原理
發(fā)送報(bào)文時(shí),發(fā)送方用一個(gè)哈希函數(shù)從報(bào)文文本中生成報(bào)文摘要停忿,然后用自己的私鑰對摘要進(jìn)行加密驾讲,加密后的摘要將作為報(bào)文的數(shù)字簽名和報(bào)文一起發(fā)送給接收方,接收方首先用與發(fā)送方一樣的哈希函數(shù)從接收到的原始報(bào)文中計(jì)算出報(bào)文摘要席赂,接著再用發(fā)送方的公鑰來對報(bào)文附加的數(shù)字簽名進(jìn)行解密吮铭,如果這兩個(gè)摘要相同、那么接收方就能確認(rèn)該數(shù)字簽名是發(fā)送方的颅停。
Merkle Tree
一種哈希二叉樹谓晌,使用它可以快速校驗(yàn)大規(guī)模數(shù)據(jù)的完整性。在比特幣網(wǎng)絡(luò)中便监,Merkle 樹被用來歸納一個(gè)區(qū)塊中的所有交易信息,最終生成這個(gè)區(qū)塊所有交易信息的一個(gè)統(tǒng)一的哈希值碳想,區(qū)塊中任何一筆交易信息的改變都會使得使得Merkle樹改變烧董。
工作原理
非葉子節(jié)點(diǎn)value的計(jì)算方法是將該節(jié)點(diǎn)的所有子節(jié)點(diǎn)進(jìn)行組合,然后對組合結(jié)果進(jìn)行hash計(jì)算所得出的hashvalue胧奔。
時(shí)間戳服務(wù)器
大多用來進(jìn)行比對以及驗(yàn)證處理逊移,時(shí)間戳服務(wù)器是一款基于PKI(公鑰密碼基礎(chǔ)設(shè)施)技術(shù)的時(shí)間戳權(quán)威系統(tǒng),對外提供精確可信的時(shí)間戳服務(wù)龙填。它采用精確的時(shí)間源胳泉、高強(qiáng)度高標(biāo)準(zhǔn)的安全機(jī)制,以確認(rèn)系統(tǒng)處理數(shù)據(jù)在某一時(shí)間的存在性和相關(guān)操作的相對時(shí)間順序岩遗,為信息系統(tǒng)中的時(shí)間防抵賴提供基礎(chǔ)服務(wù)扇商。
區(qū)塊鏈·節(jié)點(diǎn)網(wǎng)絡(luò)
任何機(jī)器都可以運(yùn)行一個(gè)完整的比特幣節(jié)點(diǎn),一個(gè)完整的比特幣節(jié)點(diǎn)包括如下功能:
錢包宿礁,允許用戶在區(qū)塊鏈網(wǎng)絡(luò)上進(jìn)行交易案铺;完整區(qū)塊鏈,記錄了所有交易歷史梆靖,通過特殊的結(jié)構(gòu)保證歷史交易的安全性控汉,并且用來驗(yàn)證新交易的合法性;礦工返吻,通過記錄交易及解密數(shù)學(xué)題來生成新區(qū)塊姑子,如果成功可以賺取獎(jiǎng)勵(lì);路由功能测僵,把其它節(jié)點(diǎn)傳送過來的交易數(shù)據(jù)等信息再傳送給更多的節(jié)點(diǎn)街佑。
除了路由功能以外,其它的功能都不是必須的。
區(qū)塊鏈·交易過程
1舆乔,B以公鑰作為接收方地址
所有者A利用他的私鑰對前一次交易(比特貨來源)和下一位所有者B簽署一個(gè)數(shù)字簽名岳服,并將這個(gè)簽名附加在這枚貨幣的末尾,制作成交易單
2希俩,比特幣區(qū)塊確認(rèn)
A將交易單廣播至全網(wǎng)吊宋,比特幣就發(fā)送給了B,每個(gè)節(jié)點(diǎn)都將收到的交易信息納入一個(gè)區(qū)塊中
3颜武,答案并不唯一
每個(gè)節(jié)點(diǎn)通過解一道數(shù)學(xué)難題璃搜,從而去獲得創(chuàng)建新區(qū)塊權(quán)利,并爭取得到比特幣的獎(jiǎng)勵(lì)(新比特幣會在此過程中產(chǎn)生)
4鳞上,取中間值為時(shí)間戳
當(dāng)一個(gè)節(jié)點(diǎn)找到解時(shí)这吻,它就向全網(wǎng)廣播該區(qū)塊記錄的所有蓋時(shí)間戳交易,并由全網(wǎng)其他節(jié)點(diǎn)核對
5篙议,每個(gè)區(qū)塊生成需10分鐘
全網(wǎng)其他節(jié)點(diǎn)核對該區(qū)塊記賬的正確性唾糯,沒有錯(cuò)誤后他們將在該合法區(qū)塊之后競爭下一個(gè)區(qū)塊,這樣就形成了一個(gè)合法記賬的區(qū)塊鏈鬼贱。
數(shù)據(jù)結(jié)構(gòu)
區(qū)塊鏈
區(qū)塊鏈以區(qū)塊為單位組織數(shù)據(jù)移怯。全網(wǎng)所有的交易記錄都以交易單的形式存儲在全網(wǎng)唯一的區(qū)塊鏈中。
區(qū)塊
區(qū)塊是一種記錄交易的數(shù)據(jù)結(jié)構(gòu)这难。每個(gè)區(qū)塊由區(qū)塊頭和區(qū)塊主體組成舟误,區(qū)塊主體只負(fù)責(zé)記錄前一段時(shí)間內(nèi)的所有交易信息,區(qū)塊鏈的大部分功能都由區(qū)塊頭實(shí)現(xiàn)姻乓。
區(qū)塊鏈·區(qū)塊頭
版本號嵌溢,標(biāo)示軟件及協(xié)議的相關(guān)版本信息
父區(qū)塊哈希值,引用的區(qū)塊鏈中父區(qū)塊頭的哈希值蹋岩,通過這個(gè)值每個(gè)區(qū)塊才首尾相連組成了區(qū)塊鏈赖草,并且這個(gè)值對區(qū)塊鏈的安全性起到了至關(guān)重要的作用
Merkle 根,這個(gè)值是由區(qū)塊主體中所有交易的哈希值再逐級兩兩哈希計(jì)算出來的一個(gè)數(shù)值剪个,主要用于檢驗(yàn)一筆交易是否在這個(gè)區(qū)塊中存在
時(shí)間戳疚顷,記錄該區(qū)塊產(chǎn)生的時(shí)間,精確到秒
難度值禁偎,該區(qū)塊相關(guān)數(shù)學(xué)題的難度目標(biāo)
隨機(jī)數(shù)(Nonce)腿堤,記錄解密該區(qū)塊相關(guān)數(shù)學(xué)題的答案的值
區(qū)塊鏈形成過程
在當(dāng)前區(qū)塊加入?yún)^(qū)塊鏈后,所有礦工就立即開始下一個(gè)區(qū)塊的生成工作如暖。
1笆檀,把在本地內(nèi)存中的交易信息記錄到區(qū)塊主體中
2,在區(qū)塊主體中生成此區(qū)塊中所有交易信息的 Merkle樹盒至,把 Merkle 樹根的值保存在區(qū)塊頭中
3酗洒,把上一個(gè)剛剛生成的區(qū)塊的區(qū)塊頭的數(shù)據(jù)通過 SHA256算法生成一個(gè) 哈希值填入到當(dāng)前區(qū)塊的父哈希值中
4士修,把當(dāng)前時(shí)間保存在時(shí)間戳字段中
5,難度值字段會根據(jù)之前一段時(shí)間區(qū)塊的平均生成時(shí)間進(jìn)行調(diào)整以應(yīng)對整個(gè)網(wǎng)絡(luò)不斷變化的整體計(jì)算總量樱衷,如果計(jì)算總量增長了棋嘲,則系統(tǒng)會調(diào)高數(shù)學(xué)題的難度值,使得預(yù)期完成下一個(gè)區(qū)塊的時(shí)間依然在一定時(shí)間內(nèi)
核心問題
區(qū)塊鏈工作量證明
區(qū)塊頭包含一個(gè)隨機(jī)數(shù)矩桂,使得區(qū)塊的隨機(jī)散列值出現(xiàn)了所需的0個(gè)數(shù)沸移。節(jié)點(diǎn)通過反復(fù)嘗試來找到這個(gè)隨機(jī)數(shù), 這樣就構(gòu)建了一個(gè)工作量證明機(jī)制侄榴。
工作量證明機(jī)制的本質(zhì)是一CPU一票雹锣,“大多數(shù)”的決定表達(dá)為最長的鏈,因?yàn)樽铋L的鏈包含了最大的工作量癞蚕。如果大多數(shù)的CPU為誠實(shí)的節(jié)點(diǎn)控制蕊爵,那么誠實(shí)的鏈條將以最快的速度延長,并超越其他的競爭鏈條桦山。如果想要修改已出現(xiàn)的區(qū)塊攒射,攻擊者必須重新完成該區(qū)塊的工作量外加該區(qū)塊之后所有區(qū)塊的工作量,并最終趕上和超越誠實(shí)節(jié)點(diǎn)的工作量恒水。
區(qū)塊鏈核心問題
同一時(shí)間段內(nèi)全網(wǎng)不止一個(gè)節(jié)點(diǎn)能計(jì)算出隨機(jī)數(shù)会放,即會有多個(gè)節(jié)點(diǎn)在網(wǎng)絡(luò)中廣播它們各自打包好的臨時(shí)區(qū)塊(都是合法的)。
某一節(jié)點(diǎn)若收到多個(gè)針對同一前續(xù)區(qū)塊的后續(xù)臨時(shí)區(qū)塊寇窑,則該節(jié)點(diǎn)會在本地區(qū)塊鏈上建立分支鸦概,多個(gè)臨時(shí)區(qū)塊對應(yīng)多個(gè)分支箩张。該僵局的打破要等到下一個(gè)工作量證明被發(fā)現(xiàn)甩骏,而其中的一條鏈條被證實(shí)為是較長的一條,那么在另一條分支鏈條上工作的節(jié)點(diǎn)將轉(zhuǎn)換陣營先慷,開始在較長的鏈條上工作饮笛。其他分支將會被網(wǎng)絡(luò)徹底拋棄。
雙花论熙,即二重支付福青,指攻擊者幾乎同時(shí)將同一筆錢用作不同交易。
每當(dāng)節(jié)點(diǎn)在把新收到的交易單加入?yún)^(qū)塊之前脓诡,會順著交易的發(fā)起方的公鑰向前遍歷檢查无午,檢查當(dāng)前交易所用的幣是否確實(shí)屬于當(dāng)前交易發(fā)起方,此檢查可遍歷到該幣的最初誕生點(diǎn)(即產(chǎn)生它的那塊區(qū)塊源)祝谚。雖然多份交易單可以任意序的廣播宪迟,但是它們最終被加入?yún)^(qū)塊時(shí)必定呈現(xiàn)一定的順序。區(qū)塊之間以Hash值作為時(shí)間戳則區(qū)塊交惯,這決定了任意一筆交易資金來源都可以被確定的回溯
高能耗次泽,數(shù)據(jù)庫存儲空間穿仪,處理大規(guī)模交易的抗壓能力,安全性