版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
區(qū)塊鏈導(dǎo)論新一代信息技術(shù)系列教材《緒論》第一章區(qū)塊鏈的發(fā)端與源起區(qū)塊鏈的技術(shù)特點(diǎn)區(qū)塊鏈的發(fā)端與源起11.1.1記賬技術(shù)的更迭區(qū)塊鏈技術(shù)也稱為分布式記賬技術(shù)。眾所周知,“記賬”就是按時(shí)間的先后順序,將個(gè)體、公司、組織等在一定時(shí)間內(nèi)所發(fā)生的收和支出全部記錄下來,供査閱者翻閱査看的行為。簡單刻記/直觀繪圖結(jié)繩記事法單式記賬復(fù)式記賬法互聯(lián)網(wǎng)時(shí)代記賬工具分布式記賬技術(shù)人類記賬史上的革命——復(fù)式記賬法的生和發(fā)展奠定了當(dāng)代會(huì)計(jì)學(xué)基礎(chǔ)基于復(fù)式記賬法思想,但又有很大的改進(jìn)和提升,客觀上大大推動(dòng)了現(xiàn)代商業(yè)行為的發(fā)展。記賬技術(shù)的更迭:分布式記賬技術(shù)——新一代的記賬技術(shù)區(qū)塊鏈系統(tǒng)可以被視為帶密鑰的分布式和自動(dòng)式記賬賬本,其核心是系統(tǒng)中每個(gè)節(jié)點(diǎn)都有一份一模一樣的賬本,這些賬本記錄了系統(tǒng)所有發(fā)生的交易,并且能自動(dòng)將新的交易數(shù)據(jù)添加到每個(gè)節(jié)點(diǎn)的賬本中。和復(fù)式記賬方式相比,區(qū)塊鏈賬本是多點(diǎn)同時(shí)記賬,依靠共識(shí)機(jī)制確認(rèn),單個(gè)節(jié)點(diǎn)難以篡改賬本記錄。分布式記賬優(yōu)勢(shì):(1)通過多方記賬的方式,增強(qiáng)數(shù)據(jù)安全性,防止單點(diǎn)故障(2)減少不同數(shù)據(jù)庫之間的對(duì)賬工作,提高效率和透明度1.1.1記賬技術(shù)的更迭1.1.2密碼學(xué)的發(fā)展密碼學(xué)最初是研究如何在敵方存在的情況下進(jìn)行安全通信的一門科學(xué)。目的是分析和構(gòu)建協(xié)議,使得通信雙方在按照協(xié)議進(jìn)行通信的過程中,能夠防止第三方竊取通信內(nèi)容?,F(xiàn)代密碼學(xué)是數(shù)學(xué)、計(jì)算機(jī)科學(xué)、電子工程、通信科學(xué)、物理學(xué)等多學(xué)科匯集的交叉科學(xué),密碼學(xué)技術(shù)被廣泛應(yīng)用于電子商務(wù)、電子支付卡、數(shù)字貨幣、計(jì)算機(jī)密碼、軍事通信等眾多領(lǐng)域。密碼學(xué)最早起源于古希臘時(shí)代,經(jīng)過長達(dá)幾千年的研究,為如今的區(qū)塊鏈密碼學(xué)技術(shù)奠定了基礎(chǔ)。1.1.2密碼學(xué)的發(fā)展1.1.3“密碼朋克”的建立20世紀(jì)90年代發(fā)展出“密碼朋克”(“Cypherpunk'”)的概念。1992年,Intel的資深科學(xué)家蒂姆?梅(TimMay)成立密碼朋克組織。1993年,蒂姆?梅、美國加州大學(xué)伯克利分校(UCB)的數(shù)學(xué)家埃里克?休斯(EricHughes)、開源軟件的早期核心人物之一約輸?吉爾摩爾(JohnGilmore)共同創(chuàng)建“密碼朋克郵件列表”。1993年,埃里克?休斯(EricHughes)發(fā)表《密碼朋克宣言》密碼學(xué)研究賽博朋克構(gòu)想密碼朋克(Cypherpunk)(20世紀(jì)90年代)個(gè)體精神隱私保護(hù)1.1.3“密碼朋克”的建立大衛(wèi)?喬姆(DavidChaum)在20世紀(jì)80年代發(fā)明了喬姆育簽名技術(shù),并在20世紀(jì)90年代基于這種盲簽名技術(shù)首次提出在網(wǎng)絡(luò)上匿名傳遞價(jià)值的方式,將之命名為Ecash。Ecash通過銀行的加密簽名,以數(shù)字形式存儲(chǔ)貨幣,必須依賴中心服務(wù)器系統(tǒng)。Ecash的誕生在某種程度上可以說是加密貨幣的始祖。大衛(wèi)·喬姆1.1.3“密碼朋克”的建立尼爾?科布利茨(NealKoblitz)和維克多?米勒(VictorMiller)在1985年提出基于橢圓曲線的算法ECC。這是一種新型的密鑰算法,能夠提供比RSA更高級(jí)別的安全。這個(gè)算法成為后來比特幣的核心算法。尼爾?科布利茨1.1.3“密碼朋克”的建立斯圖爾特?哈勃(StuartHaber)和斯科特?斯托內(nèi)塔(ScottStornetta)在1991年發(fā)表論文《如何為電子文件添加時(shí)間戳》。在這篇論文中,他們提出用時(shí)間戳確保電子文檔的安全這種技術(shù)保證了信息的可追溯和不可篡改,成為后來“區(qū)塊鏈”數(shù)據(jù)結(jié)構(gòu)的雛形。斯圖爾特?哈勃1.1.3“密碼朋克”的建立菲利普?齊默爾曼(PhilipZimmerman)在1991年發(fā)布郵件加密軟件“優(yōu)良保密協(xié)議”(PrettyGoodPrivacy,PGP),并成立相關(guān)公司。PGP是一個(gè)基于RSA公鑰加密體系的郵件加密系統(tǒng),能夠保證郵件內(nèi)容不被篡改,同時(shí)讓郵件接受者信任郵件來自發(fā)送者。PGP的使用范圍很廣,例如比特幣白皮書的作者中本聰也是PGP的使用者,他的郵件都是通過PGP發(fā)出的。菲利普?齊默爾曼1.1.3“密碼朋克”的建立亞當(dāng)?巴克(AdamBack)在1997年發(fā)明了哈?,F(xiàn)金(Hashcash)算法。這個(gè)算法用于電子郵件系統(tǒng),要求在發(fā)送電子郵件之前,解一個(gè)數(shù)學(xué)題,以此來適度增加發(fā)送電子郵件的成本屏蔽大量的垃圾郵件。這個(gè)思想后來被PGP的成員哈爾?芬尼(HalFinney)借鑒發(fā)明了可重用的工作量證明機(jī)制。亞當(dāng)?巴克1.1.3“密碼朋克”的建立美國華裔工程師戴偉(WeiDai)在198年提出了匿名的、分布式的加密貨幣系統(tǒng)B-money,B-money在很多關(guān)的技術(shù)上與后來的比特幣非常相似,然而由于其某些技術(shù)細(xì)節(jié)(例如抵抗“雙花”)難以實(shí)現(xiàn),導(dǎo)致B-money最終沒有成為現(xiàn)實(shí)。盡管如此,中本聰與戴偉(WeiDai)之間的交流卻相當(dāng)多,并大量借鑒了B-money的很多思想。在比特幣白皮書的參考文獻(xiàn)中,B-money的論文也赫然在列。戴偉1.1.3“密碼朋克”的建立1998年,密碼學(xué)家、智能合約概念的創(chuàng)造者尼克?薩博(NickSzabo),提出了比特金(BitGold)的設(shè)想。這種設(shè)想已經(jīng)非常接近于比特幣的體系構(gòu)造,但由于BitGold的設(shè)想缺乏具體的代碼實(shí)現(xiàn),因此只停留在概念階段,而沒能成為“創(chuàng)世貨幣。尼克?薩博哈爾?芬尼是比特幣的早期核心貢獻(xiàn)者,也是PGP公司的成員,并為PGP做出了重要的貢獻(xiàn)。哈爾?芬尼在2004年借鑒亞當(dāng)巴克的哈?,F(xiàn)金算法提出了可重用的工作量證明機(jī)制(ReusableProofsofWork,RPOW),它直接影響了后來比特幣的共識(shí)機(jī)制。除了這些先驅(qū)以外,約?佩里?巴洛(JohnPerryBarlow,賽博自由主義政治活動(dòng)家)菜斯利?蘭伯特(LeslieLamport,拜占庭將軍問題的提出者)、肖恩?范寧(ShawnFanning)和肖恩、·派克(ShaunParker,點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)工具Napster的發(fā)明者)、布拉姆?科亨(BramCohen,BitTorrent的發(fā)明者)等都為比特幣各項(xiàng)關(guān)鍵技術(shù)的發(fā)展做出了巨大貢獻(xiàn)。在這些先驅(qū)以及更多科學(xué)家和工程師們的共同努力下,這些基于加密技術(shù)的創(chuàng)新和應(yīng)用逐漸發(fā)展和成熟起來,為日后比特幣和區(qū)塊鏈的誕生奠定了堅(jiān)實(shí)的基礎(chǔ)。1.1.3“密碼朋克”的建立1.1.3“密碼朋克”的建立1.1.4互聯(lián)網(wǎng)技術(shù)的蓬勃進(jìn)步互聯(lián)網(wǎng)發(fā)展史:蘇聯(lián)發(fā)射“伴侶號(hào)”——美國組建ARPA開始研究“包交換”技術(shù)ARPANET啟動(dòng)第一次使用“internet”一詞TCP/IP協(xié)議NSF擴(kuò)展MCIMailCompuserve1957年20世紀(jì)60年代1969年1974年20世紀(jì)80年代1989年超文本傳輸協(xié)議(HTP)超文本標(biāo)記語言(HTML)網(wǎng)絡(luò)瀏覽器商用互聯(lián)網(wǎng)exchange斯坦福聯(lián)邦信用社互聯(lián)網(wǎng)大面積普及1990年1991年1994年2000年以后1.1.4互聯(lián)網(wǎng)技術(shù)的蓬勃進(jìn)步根本原因:現(xiàn)有的轉(zhuǎn)賬系統(tǒng)必須依賴中介機(jī)構(gòu)進(jìn)行處理和協(xié)調(diào)1.1.5首個(gè)區(qū)塊鏈應(yīng)用的誕生2008年11月1日,一位網(wǎng)名為中本聰(SatoshiNakamoto)的用戶在密碼朋克社區(qū)上發(fā)表了比特幣白皮書《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》(Bitcoin:Peer-to-PeerElectronicCashSysten),聞述了一個(gè)以點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)、分布式記賬、工作量證明(PoW)共識(shí)機(jī)制、加密技術(shù)等為基礎(chǔ)構(gòu)建的電子現(xiàn)金支付系統(tǒng)。2009年1月3日,中本聰通過運(yùn)行這個(gè)版本產(chǎn)生了比特幣的第一個(gè)區(qū)塊,也就是創(chuàng)世區(qū)塊創(chuàng)世區(qū)塊的誕生標(biāo)志著比特幣主網(wǎng)正式上線,比特幣從理論變?yōu)楝F(xiàn)實(shí)。比特幣系統(tǒng)的發(fā)明是為了解決傳統(tǒng)的銀行轉(zhuǎn)賬過程中碰到的一些問題:賬戶和賬戶之間的轉(zhuǎn)賬交易成本高昂;存在利用信用卡撤銷交易進(jìn)行欺詐的行為;銀行系統(tǒng)為了處理可能發(fā)生的糾紛會(huì)過度索取交易雙方的個(gè)人隱私信息等。1.1.5首個(gè)區(qū)塊鏈應(yīng)用的誕生現(xiàn)有的金融系統(tǒng)中轉(zhuǎn)賬交易轉(zhuǎn)賬請(qǐng)求AB銀行后臺(tái)服務(wù)系統(tǒng)e.g.
A與B都在某銀行有賬戶,A向B轉(zhuǎn)賬100元檢查A的賬戶余額是否大于100元是A賬戶+100元B賬戶-100元拒絕A的轉(zhuǎn)賬請(qǐng)求否賬本記錄交易檢查交易執(zhí)行收取手續(xù)費(fèi)1.1.5首個(gè)區(qū)塊鏈應(yīng)用的誕生比特幣系統(tǒng)中轉(zhuǎn)賬交易AB賬本記錄了A、B的賬戶信息和余額信息賬本記錄了A、B的賬戶信息和余額信息雙方驗(yàn)證交易有效完成轉(zhuǎn)賬e.g.若系統(tǒng)用戶只有A、B兩人,A向B轉(zhuǎn)賬100元e.g.當(dāng)系統(tǒng)用戶規(guī)模擴(kuò)大,A向B轉(zhuǎn)賬1.1.5首個(gè)區(qū)塊鏈應(yīng)用的誕生AB賬本記賬節(jié)點(diǎn)完成記賬,并將交易廣播到整個(gè)網(wǎng)絡(luò)其他節(jié)點(diǎn)接受信息并驗(yàn)證,如果沒問題則加入自己賬本該筆交易生效執(zhí)行1.1.5首個(gè)區(qū)塊鏈應(yīng)用的誕生比特幣的誕生中本聰在郵件中提出“一種不需要第三方支持的新的點(diǎn)對(duì)點(diǎn)電子現(xiàn)金系統(tǒng)”,并貼出該電子現(xiàn)金系統(tǒng)的研究論文的地址。2009年1月,中本聰在一個(gè)小型服務(wù)器上挖出了比特幣的第一個(gè)區(qū)塊---創(chuàng)世區(qū)塊,并獲取了50個(gè)比特幣的獎(jiǎng)勵(lì),宣告了比特幣的正式誕生。有趣的是,在創(chuàng)世區(qū)塊中被寫入了一串?dāng)?shù)字信息,還原為文本為:“TheTimes03/Jan/2009ChancelloronBrinkofsecondbaioutforbanks”。當(dāng)時(shí)正值英國的財(cái)政大臣被迫考慮第二次出手解救陷入危機(jī)的銀行,這句話是泰晤士報(bào)當(dāng)天的頭版標(biāo)題。中本聰將這一事件在第一個(gè)區(qū)塊鏈中永久的保留了下來。這既是對(duì)區(qū)塊鏈產(chǎn)生時(shí)間的證明,也是對(duì)金融危機(jī)下銀行系統(tǒng)脆弱的嘲諷。區(qū)塊鏈的技術(shù)特點(diǎn)21.2.1公開透明在以比特幣為首的公有區(qū)塊鏈系統(tǒng)中,它們自創(chuàng)世區(qū)塊開始,所有區(qū)塊包含的交易信息都是公開、透明的。在系統(tǒng)中每一筆交易從何地址轉(zhuǎn)出、何時(shí)轉(zhuǎn)出、轉(zhuǎn)出金額、轉(zhuǎn)人何地址等信息都被一一記錄下來并且公開可査。依據(jù)這些信息,一個(gè)地址的總交易筆數(shù)、與何地址有過交易、轉(zhuǎn)出總金額、余額等信息也可以被推斷出來。區(qū)塊鏈瀏覽器:區(qū)塊鏈瀏覽器是一種區(qū)塊鏈搜索工具。區(qū)塊鏈瀏覽器的運(yùn)營方本身已經(jīng)下載好了完整的賬本數(shù)據(jù)。用戶在區(qū)塊鏈瀏覽器中輸入相關(guān)字段,可以查到區(qū)塊或交易的詳細(xì)信息。典型的區(qū)塊鏈公鏈系統(tǒng),比如比特幣和以太坊等都有許多區(qū)塊鏈瀏覽器,這些瀏覽器通常是由開源軟件團(tuán)隊(duì)自發(fā)開發(fā)的。1.2.1公開透明1.2.2難以篡改父區(qū)塊哈希值hash()數(shù)據(jù)父區(qū)塊哈希值hash()數(shù)據(jù)創(chuàng)世區(qū)塊父區(qū)塊哈希值hash()數(shù)據(jù)區(qū)塊鏈系統(tǒng)中的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),是由包含交易信息的區(qū)塊按照時(shí)間順序從先到后鏈接起來的,這個(gè)數(shù)據(jù)結(jié)構(gòu)被稱為“區(qū)塊鏈”。在區(qū)塊鏈中,每個(gè)區(qū)塊的區(qū)塊頭都包含一個(gè)名為“父區(qū)塊哈希值”的字段,這個(gè)區(qū)塊通過存儲(chǔ)在這個(gè)字段中的值“鏈接”到前一個(gè)區(qū)塊(父區(qū)塊),并一直延續(xù)到創(chuàng)世區(qū)塊。如果黑客想篡改區(qū)塊鏈中的數(shù)據(jù),那么前一區(qū)塊的哈希值將不會(huì)與該區(qū)塊的哈希指針匹配;當(dāng)然,黑客也可以通過篡改前一個(gè)區(qū)塊的哈希指針來進(jìn)行掩蓋,但他會(huì)發(fā)現(xiàn)修改到區(qū)塊鏈的頭部---創(chuàng)世塊時(shí)會(huì)遇到麻煩,因?yàn)閯?chuàng)世塊一般存儲(chǔ)在黑客無法改動(dòng)的地方。1.2.3可以追溯區(qū)塊鏈信息的可追溯性來源于區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)的特殊性。在區(qū)塊鏈系統(tǒng)中,它的鏈?zhǔn)浇Y(jié)構(gòu)是從創(chuàng)世區(qū)塊開始的,其后系統(tǒng)產(chǎn)生的所有區(qū)塊都通過父區(qū)塊的哈希值前后相連,并最終都能追溯到創(chuàng)世區(qū)塊。由于每個(gè)區(qū)塊都包含一段時(shí)間內(nèi)系統(tǒng)進(jìn)行的所有交易數(shù)據(jù),因此系統(tǒng)完整的區(qū)塊鏈數(shù)據(jù)就包含了自創(chuàng)世區(qū)塊以來,系統(tǒng)所有進(jìn)行的交易及交易前后的關(guān)聯(lián)信息。當(dāng)追溯一筆交易時(shí),能夠順著該交易所在的區(qū)塊向前追溯所有這些歷史區(qū)塊信息。父區(qū)塊哈希值hash()數(shù)據(jù)父區(qū)塊哈希值hash()數(shù)據(jù)創(chuàng)世區(qū)塊父區(qū)塊哈希值hash()數(shù)據(jù)1.2.3集體維護(hù)區(qū)塊鏈的集體維護(hù)主要指區(qū)塊鏈系統(tǒng)在共識(shí)機(jī)制的作用下,激勵(lì)新節(jié)點(diǎn)不斷加入系統(tǒng),并集體參與系統(tǒng)的維護(hù)和運(yùn)作的特點(diǎn)。每一個(gè)區(qū)塊鏈都會(huì)有一套“共識(shí)機(jī)制”,用來使眾多互不相識(shí)的節(jié)點(diǎn)達(dá)成一致。具體來說,共識(shí)機(jī)制激勵(lì)系統(tǒng)中的節(jié)點(diǎn)在參與系統(tǒng)運(yùn)作時(shí),令遵循這套機(jī)制的節(jié)點(diǎn)獲得利益最大化,不遵循甚至作惡的節(jié)點(diǎn)則會(huì)付出較大代價(jià)而得不償失。因此,區(qū)塊鏈系統(tǒng)在沒有單一機(jī)構(gòu)的運(yùn)作和管理下,依靠共識(shí)機(jī)制就能讓系統(tǒng)自我運(yùn)作起來,具備集體維護(hù)的特征。比特幣就是第一個(gè)這樣的集體維護(hù)性組織。1.2.4去中心化/弱中心化“中介化”:在一個(gè)組織或系統(tǒng)中,有一個(gè)中介機(jī)構(gòu)負(fù)責(zé)整個(gè)系統(tǒng)的調(diào)配和服務(wù)。系統(tǒng)中所有的個(gè)體無論做什么、進(jìn)行什么活動(dòng)都要通過這個(gè)中介機(jī)構(gòu)的調(diào)度。·現(xiàn)有的互聯(lián)網(wǎng)技術(shù)就是采用的這種方式工作,也就是俗稱的“客戶端/服務(wù)器”(ClientServer)模式,簡稱為C/S模式。在這種用模式中,能為客戶端應(yīng)用提供服務(wù)(如文件服務(wù)、打印服務(wù)、通信管理服務(wù)等)的計(jì)算機(jī)或處理器被稱為服務(wù)器。與服務(wù)器相對(duì)應(yīng),提出服務(wù)請(qǐng)求的計(jì)算機(jī)或處理器就是客戶端。這種系統(tǒng)中,服務(wù)器就是“中介”,客戶端就是系統(tǒng)的“個(gè)體”?!叭ブ薪榛保簠^(qū)塊鏈系統(tǒng)中沒有個(gè)擁有特殊權(quán)限的中介服務(wù)器或單一機(jī)構(gòu)。系統(tǒng)中每個(gè)全節(jié)點(diǎn)既是服務(wù)器也是客戶端,在系統(tǒng)中的權(quán)利和義務(wù)都是對(duì)等的。它們既能作為服務(wù)器為需要服務(wù)的客戶端服務(wù),也可以作為客戶端向其他節(jié)點(diǎn)提出請(qǐng)求。任意一個(gè)節(jié)點(diǎn)宕機(jī)或者失效都不會(huì)影響整個(gè)系統(tǒng)的運(yùn)作。因此,區(qū)塊鏈系統(tǒng)在架構(gòu)上是去中介化/弱中介化的?!秴^(qū)塊鏈的基礎(chǔ)概念》第二章分布式系統(tǒng)區(qū)塊鏈的分類區(qū)塊鏈的應(yīng)用分布式系統(tǒng)12.1.1分布式系統(tǒng)的概念集中式系統(tǒng)由一臺(tái)或者多臺(tái)計(jì)算機(jī)組成中心節(jié)點(diǎn),負(fù)責(zé)管理應(yīng)用訪問的數(shù)據(jù)存儲(chǔ)、計(jì)算等資源;集中式系統(tǒng)一般采用中心化的數(shù)據(jù)庫和服務(wù)器,優(yōu)點(diǎn)是部署簡單、開發(fā)運(yùn)維容易,缺點(diǎn)是可擴(kuò)展性不足;集中式系統(tǒng)還存在單點(diǎn)故障問題,如果中心節(jié)點(diǎn)出現(xiàn)故障就意味著所有應(yīng)用都將出現(xiàn)問題。2.1.1分布式系統(tǒng)的概念分布式系統(tǒng)是由若干獨(dú)立的計(jì)算機(jī)節(jié)點(diǎn)組成的系統(tǒng),這些計(jì)算機(jī)節(jié)點(diǎn)可以看成獨(dú)立的系統(tǒng)組件,通過網(wǎng)絡(luò)進(jìn)行連接并在一定范圍內(nèi)有效共享資源,節(jié)點(diǎn)之間通過傳遞消息進(jìn)行協(xié)調(diào)工作,共同完成系統(tǒng)內(nèi)的工作任務(wù)。2.1.1分布式系統(tǒng)的概念定義包含兩方面:①系統(tǒng)內(nèi)的計(jì)算機(jī)節(jié)點(diǎn)都是獨(dú)立的,通過網(wǎng)絡(luò)通信進(jìn)行協(xié)調(diào)②用戶對(duì)于分布式系統(tǒng)的訪問從功能邏輯上就像訪問單個(gè)計(jì)算機(jī)系統(tǒng)一樣(1)分布性:分布式系統(tǒng)內(nèi)計(jì)算機(jī)節(jié)點(diǎn)可以分布在不同的位置。(2)可擴(kuò)展性:分布式系統(tǒng)內(nèi)節(jié)點(diǎn)數(shù)量可以根據(jù)應(yīng)用需求進(jìn)行動(dòng)態(tài)増減,服務(wù)器也可以動(dòng)態(tài)部署。(3)對(duì)等性:分布式系統(tǒng)沒有中心化的控制主機(jī),組成分布式系統(tǒng)的所有計(jì)算機(jī)節(jié)點(diǎn)都是對(duì)等的;當(dāng)某一個(gè)節(jié)點(diǎn)上存儲(chǔ)的數(shù)據(jù)丟失時(shí),可以從副本上讀取該數(shù)據(jù)。(4)
并發(fā)性:分布式系統(tǒng)中的多個(gè)計(jì)算機(jī)節(jié)點(diǎn)通過網(wǎng)絡(luò)進(jìn)行連接并在一定范圍內(nèi)有效共享資源,某一時(shí)刻這些計(jì)算機(jī)節(jié)點(diǎn)可能會(huì)并發(fā)地操作一些共享的資源。分布式系統(tǒng)特征:2.1.2FLP和CAP定理FLP原理是一個(gè)關(guān)于分布式系統(tǒng)達(dá)成共識(shí)的重要理論,由費(fèi)舍爾(Fischer)、林奇(Lynch)、帕特森(Patterson)三位學(xué)者在1985年提出,并以三人姓氏的首字母作為縮寫命名。FLP原理告訴人們,不要浪費(fèi)時(shí)間去為異步通信的分布式系統(tǒng)設(shè)計(jì)在任意場景下都能實(shí)現(xiàn)共識(shí)的算法,這樣的算法不存在,理由是:在實(shí)際異步通信的分布式系統(tǒng)環(huán)境下,可能存在通信故障、延遲或者節(jié)點(diǎn)本身出現(xiàn)失效的情況,異步系統(tǒng)無法確保在有限時(shí)間內(nèi)完成一致性。FLP原理為分布式系統(tǒng)領(lǐng)域帯來一個(gè)較為悲觀的結(jié)論,既然不存在這樣的算法可以實(shí)現(xiàn)分布式系統(tǒng)的一致性,那么一致性問題就無法解決了么?后來埃里克?布魯爾(EricBrewer)在2000年美國計(jì)算機(jī)學(xué)會(huì)(AssociationforComputingMachinery,ACM)組織的一個(gè)研討會(huì)上提出了CAP原理猜想,之后林奇等人對(duì)CAP原理進(jìn)行了證明。FLP原理2.1.2FLP和CAP定理CAP原理CAP原理定義了分布式計(jì)算系統(tǒng)的三大特性:(1)一致性(Consistency):共享數(shù)據(jù)副本之間呈現(xiàn)出統(tǒng)一且實(shí)時(shí)的數(shù)據(jù)內(nèi)容;(2)
可用性(Availability):所有的數(shù)據(jù)操作總會(huì)在一定時(shí)間內(nèi)得到響應(yīng);(3)分區(qū)容錯(cuò)性(Partition):通常由于網(wǎng)絡(luò)間連接中斷而導(dǎo)致網(wǎng)絡(luò)中的節(jié)點(diǎn)相互隔離無法訪問時(shí),被隔離的節(jié)點(diǎn)仍可正常運(yùn)行。這三大特性無法同時(shí)實(shí)現(xiàn),設(shè)計(jì)中需要弱化其中某個(gè)特性,而保證另外兩個(gè)特性。對(duì)于結(jié)果一致性要求不是特別高的應(yīng)用,可弱化一致性要求,比如延長達(dá)成一致性的時(shí)間。對(duì)于一致性要求高的應(yīng)用可弱化可用性要求,比如系統(tǒng)發(fā)生故障時(shí)拒絕服務(wù)。大部分時(shí)候網(wǎng)絡(luò)都是可靠的,網(wǎng)絡(luò)分區(qū)出現(xiàn)概率小但很難完全避免,所以實(shí)際情況一般弱化分區(qū)容錯(cuò)性2.1.3分布式系統(tǒng)的一致性分布式系統(tǒng)的一致性:對(duì)系統(tǒng)內(nèi)的所有計(jì)算機(jī)節(jié)點(diǎn)給定一組操作,按照約定的規(guī)則協(xié)議,節(jié)點(diǎn)之間對(duì)于操作后的最終處理結(jié)果達(dá)成某種共同認(rèn)可的狀態(tài)。分布式系統(tǒng)的一致性是設(shè)計(jì)分布式系統(tǒng)時(shí)應(yīng)考慮的最核心問題。影響分布式系統(tǒng)最終全局狀態(tài)結(jié)果一致性的因素:不同計(jì)算機(jī)節(jié)點(diǎn)處于不同的地理位置計(jì)算性能也存在差異對(duì)于相同數(shù)據(jù)任務(wù)完成計(jì)算耗費(fèi)的時(shí)間無法保證一致:比如有可能出現(xiàn)少數(shù)節(jié)點(diǎn)處理較慢,而其他節(jié)點(diǎn)必須等待它們處理結(jié);或者發(fā)生節(jié)點(diǎn)臨時(shí)中斷處理等異常情況,如出現(xiàn)節(jié)點(diǎn)宕機(jī)的情況。節(jié)點(diǎn)之間進(jìn)行網(wǎng)絡(luò)通信也有可能因?yàn)橥ㄐ沛溌饭收隙鴮?dǎo)致消息接收延遲分布式系統(tǒng)一致性的目標(biāo):系統(tǒng)在出現(xiàn)上面描述各種故障發(fā)生的情況下,依然能正常滿足工作的要求,最終系統(tǒng)通過檢測和處理,節(jié)點(diǎn)依然能達(dá)成全局一致性狀態(tài)。2.1.3分布式系統(tǒng)的一致性分布式系統(tǒng)的容錯(cuò)率:分布式系統(tǒng)的一致性表明,系統(tǒng)本身具有容忍一定數(shù)量節(jié)點(diǎn)發(fā)生錯(cuò)誤行為的能力。這些發(fā)生錯(cuò)誤行為的節(jié)點(diǎn)稱為故障節(jié)點(diǎn),占整個(gè)分布式系統(tǒng)全部節(jié)點(diǎn)數(shù)量的比例稱為分布式系統(tǒng)的容錯(cuò)率。分布式系統(tǒng)達(dá)成一致性狀態(tài)的基本要求:(1)收斂性:一致的結(jié)果在有限時(shí)間內(nèi)能完成;(2)一致性:不同節(jié)點(diǎn)最終完成決策的結(jié)果是相同的;(3)有效性:決策的結(jié)果必須是某個(gè)節(jié)點(diǎn)提出的提案;分布式系統(tǒng)計(jì)算機(jī)服務(wù)可以正常使用的前提主要指分布式系統(tǒng)最終一致性是由分布式系統(tǒng)內(nèi)的節(jié)點(diǎn)執(zhí)行的結(jié)果2.1.3分布式系統(tǒng)的一致性在實(shí)際工程實(shí)踐中,一般會(huì)放寬對(duì)一致性的要求,采用弱一致性替代強(qiáng)一致性。強(qiáng)一致性要求節(jié)點(diǎn)無論何時(shí)進(jìn)行數(shù)據(jù)的讀取操作,均會(huì)返回最新一次寫操作后的結(jié)果數(shù)據(jù),即系統(tǒng)對(duì)節(jié)點(diǎn)達(dá)成一致性結(jié)果的同步性要求很高。弱一致性一般指在滿足一定約條件下達(dá)到最終一致性,即系統(tǒng)可以在未來某個(gè)時(shí)刻而不是馬上達(dá)成一致性狀態(tài)。弱一致性要求中比較典型的是最終一致性(EventualConsistency),不保證任意時(shí)間點(diǎn)上節(jié)點(diǎn)的數(shù)據(jù)均相同,但需要在經(jīng)過有限的時(shí)間后達(dá)到數(shù)據(jù)上的一致。這實(shí)際上可以通過放寬系統(tǒng)的目標(biāo)要求,從而降低系統(tǒng)實(shí)現(xiàn)的難度。2.1.4分布式系統(tǒng)的安全可信分布式系統(tǒng)內(nèi)部存在地理位置分布不同的計(jì)算機(jī)節(jié)點(diǎn),內(nèi)部節(jié)點(diǎn)之間還存在復(fù)雜的通信行為,分布式系統(tǒng)節(jié)點(diǎn)或者節(jié)點(diǎn)通信出現(xiàn)故障都有可能影響到系統(tǒng)的安全性和系統(tǒng)最終完成計(jì)算任務(wù)的結(jié)果可信度。分布式系統(tǒng)的安全性主要體現(xiàn)在攻擊者無法通過影響系統(tǒng)內(nèi)的部分節(jié)點(diǎn)或者其他手段,造成分布式系統(tǒng)整體功能故障而無法繼續(xù)正常工作。分布式系統(tǒng)的可信性系統(tǒng)最終完成計(jì)算任務(wù)得出的全局一致性狀態(tài)結(jié)果對(duì)于所有節(jié)點(diǎn)及系統(tǒng)用戶均是可信的。分布式系統(tǒng)一般通過系統(tǒng)內(nèi)數(shù)據(jù)和服務(wù)副本的冗余性,即所有節(jié)點(diǎn)都存儲(chǔ)一份狀態(tài)數(shù)據(jù)的副本以及保證這個(gè)唯一的系統(tǒng)全局狀態(tài)數(shù)據(jù)的不可篡改性來實(shí)現(xiàn)可信。區(qū)塊鏈的分類22.2.1公有鏈公有鏈通常不設(shè)置準(zhǔn)入門檻,對(duì)所有人開放,任何人都可以自由訪問公有鏈的數(shù)據(jù),參與公有鏈的共識(shí),并在公有鏈上創(chuàng)建應(yīng)用,這也是“公有”的由來。目前公有鏈可以運(yùn)用在數(shù)字資產(chǎn)等場景,如比特幣、以太坊等。同時(shí),公有鏈也可以應(yīng)用在一些直接點(diǎn)對(duì)點(diǎn)交互需求的場景,如資產(chǎn)注冊(cè)登記、發(fā)行、投票、資產(chǎn)管理等。公有鏈的公開透明使得其不太適合那些對(duì)數(shù)據(jù)隱私、商業(yè)機(jī)密要求較高的場景,更適合對(duì)信任、安全和持久性要求較高的場景,如用戶對(duì)自主數(shù)據(jù)的控制、可信的商品溯源記錄。公有鏈的應(yīng)用也不局限于金融場景,還包括防偽溯源、數(shù)字身份、內(nèi)容版權(quán)、物聯(lián)網(wǎng)等。2.2.2聯(lián)盟鏈聯(lián)盟鏈服務(wù)于符合某種條件的成員組成的特定聯(lián)盟,是由聯(lián)盟成員進(jìn)行管理的區(qū)塊鏈。其具有半開放的網(wǎng)絡(luò),只有經(jīng)過認(rèn)證許可的可信節(jié)點(diǎn)才能加入、退出網(wǎng)絡(luò);具有受控制的讀寫權(quán)限,只有特定權(quán)限的鏈上節(jié)點(diǎn)能發(fā)布和訪問交易,只有一部分擁有權(quán)限的可信節(jié)點(diǎn)才能參與該聯(lián)盟鏈的共識(shí)和記賬。聯(lián)盟鏈沒有通過激勵(lì)機(jī)制實(shí)現(xiàn)系統(tǒng)自治的強(qiáng)烈需求,各聯(lián)盟鏈根據(jù)自身需求自主選擇増加激勵(lì)系統(tǒng)。聯(lián)盟鏈的分布式程度和信息公開程度不及公有鏈,但也因此可更好地保護(hù)用戶、交易隱私。同時(shí)由于交易只需要部分被授權(quán)的受信高算力節(jié)點(diǎn)進(jìn)行驗(yàn)證共識(shí),因此相較公有鏈,其性能較更高,成本更低。2.2.3私有鏈私有鏈服務(wù)于特定企業(yè)、組織或個(gè)人,是由該企業(yè)、組織或個(gè)人進(jìn)行管理的區(qū)塊鏈。其具有相對(duì)封閉的網(wǎng)絡(luò),只對(duì)指定實(shí)體或個(gè)人開放,只有相關(guān)節(jié)點(diǎn)在許可認(rèn)證后才能加入、退出網(wǎng)絡(luò)。私有鏈同時(shí)具有受控制的讀寫權(quán)限,只有特定權(quán)限的鏈上節(jié)點(diǎn)才能在鏈上發(fā)布和訪問交易信息,只有一部分擁有權(quán)限的可信節(jié)點(diǎn)オ能參與共識(shí)和記賬。與聯(lián)盟鏈不同的是,私有鏈節(jié)點(diǎn)均屬于同一企業(yè)或組織,節(jié)點(diǎn)之間信任程度更高,并且私有鏈共識(shí)范圍更加狹窄,甚至可以僅由單高性能節(jié)點(diǎn)進(jìn)行記賬。私有鏈在三類區(qū)塊鏈中分布式程度和信息公開程度最低,因此其性能最高,隱私性最強(qiáng)且交易成本最低。由于私有鏈較為集中的權(quán)限控制與管理并非真正的分布式系統(tǒng),其一般只應(yīng)用于企業(yè)內(nèi)部,主要應(yīng)用于數(shù)據(jù)管理、審計(jì)等金融場景。區(qū)塊鏈的應(yīng)用32.3.1公有鏈的應(yīng)用公有鏈對(duì)所有人開放,任何人都可以參與訪問公有鏈,并在公有鏈上創(chuàng)建應(yīng)用。目前公有鏈主要應(yīng)用在數(shù)字貨幣等場景,如比特幣、以太坊等。同時(shí),公有鏈也可以應(yīng)用在一些具有點(diǎn)對(duì)點(diǎn)直接交互需求的場景,如資產(chǎn)注冊(cè)、發(fā)行、投票、資產(chǎn)管理等。關(guān)于數(shù)字貨幣、加密貨幣和虛擬貨幣概念界定:數(shù)字貨幣(DigitalCurrency)指向的范圍較廣,它泛指數(shù)字化的貨幣。電子貨幣ElectronicMoney)與數(shù)字貨幣的概念相類似,它同樣指以電子化途徑實(shí)現(xiàn)的貨幣,例如央行數(shù)字貨幣(CentralBankDigitalCurrencies,CBDC)。加密貨幣(CryptoCurrency)其實(shí)是加密數(shù)字貨幣的簡稱,是數(shù)字貨幣發(fā)展的一種分支它更強(qiáng)調(diào)貨幣使用了密碼學(xué)技術(shù)。例如,基于公用鏈技術(shù)發(fā)行的比特幣就是一種很經(jīng)典的加密貨幣。虛擬貨幣(VirtualCurrency)和數(shù)字貨幣范疇有一定的重合,但它強(qiáng)調(diào)這類貨幣不是真實(shí)的貨幣,通常不具有法償性和強(qiáng)制性等貨幣屬性。游戲中的點(diǎn)券、互聯(lián)網(wǎng)公司發(fā)行供生態(tài)內(nèi)使用的貨幣,都可以認(rèn)為是虛擬貨幣,而比特幣等有時(shí)也被認(rèn)為是虛擬貨幣。關(guān)于Token:它原指令牌、通行證。在區(qū)塊鏈中,它是指基于區(qū)塊鏈創(chuàng)建的一種數(shù)字對(duì)象代表區(qū)塊鏈的某種價(jià)值或某種權(quán)利,中文也被譯作“通證”。一般Token是以加密貨幣形式存在的,但也有一些是傳統(tǒng)的電子化憑證。Token指代的某種價(jià)值或某種權(quán)利的范圍很廣泛,例如貨幣、積分、票據(jù)、投票權(quán)、分紅權(quán)、地產(chǎn)、證券、債券、某種資格、某類證明等各種權(quán)益證明。大部分加密貨幣和Token為了能夠進(jìn)一步提升其可信程度,會(huì)選擇公有鏈作為載體去發(fā)行。但是也有一些Token,會(huì)因?yàn)閳鼍靶枰l(fā)行在聯(lián)盟鏈或私有鏈上。此外,出于便于監(jiān)管和可控的考慮,一些央行層面的數(shù)字貨幣會(huì)選擇在聯(lián)盟鏈或私有鏈架構(gòu)上進(jìn)行發(fā)行。2.3.1公有鏈的應(yīng)用2.3.2聯(lián)盟鏈的應(yīng)用聯(lián)盟鏈只對(duì)特定的參與組織開放權(quán)限,可以保護(hù)參與者的交易數(shù)據(jù)隱私,適合機(jī)構(gòu)之間的交易、清結(jié)算和B2B場景。聯(lián)盟鏈的應(yīng)用場景非常豐富,主要包括金融和非金融領(lǐng)域:1)金融領(lǐng)域:支付、保險(xiǎn)、清結(jié)算、股權(quán)登記、征信、供應(yīng)鏈金融等金融場景對(duì)于信任要求較高,同時(shí)也需要保護(hù)數(shù)據(jù)隱私,適合作為聯(lián)盟鏈場景。2)非金融領(lǐng)域:非金融領(lǐng)域主要通過區(qū)塊鏈不可篡改的特性來追蹤、記錄和共享數(shù)據(jù),如區(qū)塊鏈應(yīng)用在商品溯源、電子政務(wù)、智慧城市、公益慈善、醫(yī)療健康等場景。2.3.3區(qū)塊鏈應(yīng)用的發(fā)展趨勢(shì)區(qū)塊鏈的應(yīng)用方式從其延生開始已經(jīng)經(jīng)過了三個(gè)發(fā)展階段:第一個(gè)階段是比特幣為代表的點(diǎn)對(duì)點(diǎn)支付時(shí)代,主要實(shí)現(xiàn)高效率、點(diǎn)對(duì)點(diǎn)的支付過程,其主要應(yīng)用場景包括支付、流通等;第二個(gè)階段是以以太坊為代表的智能合約時(shí)代。區(qū)塊鏈與智能合約相結(jié)合,實(shí)現(xiàn)在區(qū)塊鏈上部署應(yīng)用程序,包括可編程金融、分布式應(yīng)用(DecentralizationApplications,簡稱DAPPS‘”)等落地;第三個(gè)階段是“區(qū)塊鏈+行業(yè)”應(yīng)用的時(shí)代,即把區(qū)塊鏈應(yīng)用拓展到各個(gè)行業(yè)場景,以實(shí)現(xiàn)具體行業(yè)應(yīng)用落地為目標(biāo),解決行業(yè)痛點(diǎn),服務(wù)經(jīng)濟(jì)發(fā)展和社會(huì)進(jìn)步。2.3.3區(qū)塊鏈應(yīng)用的發(fā)展趨勢(shì)目前區(qū)塊鏈正在加速向第三階段的行業(yè)應(yīng)用推進(jìn),成為一種通用基礎(chǔ)設(shè)施,加速與行業(yè)融合創(chuàng)新。區(qū)塊鏈技術(shù)的優(yōu)勢(shì):多方協(xié)作場景中以低成本建立信任區(qū)塊鏈技術(shù)發(fā)展瓶頸:存儲(chǔ)、計(jì)算等方面存在一定的資源和性能瓶頸區(qū)塊鏈不只是單一技術(shù),而是多種技術(shù)的綜合集成,包括P2P網(wǎng)絡(luò)通信、非對(duì)稱加密技術(shù)以及分布式數(shù)據(jù)庫技術(shù)等。同時(shí),區(qū)塊鏈應(yīng)用還涉及多節(jié)點(diǎn)參與的協(xié)調(diào)問題,實(shí)施區(qū)塊鏈解決方案可能面臨計(jì)算復(fù)雜度和存儲(chǔ)冗余度都比較高的情況,區(qū)塊鏈和其他技術(shù)結(jié)合可以有效降低復(fù)雜度,加速區(qū)塊鏈應(yīng)用落地進(jìn)程?!秴^(qū)塊鏈的分層模型》第三章3.2數(shù)據(jù)層3.1區(qū)塊鏈的系統(tǒng)分層3.3網(wǎng)絡(luò)層3.4共識(shí)層3.5合約層3.6應(yīng)用層區(qū)塊鏈的系統(tǒng)分層13.1.1互聯(lián)網(wǎng)分層模型發(fā)送者A接收者B?借助何種應(yīng)用完成轉(zhuǎn)賬檢查發(fā)送者余額與真實(shí)性節(jié)點(diǎn)確認(rèn)通知接收者“收款憑證”的存儲(chǔ)分層:拆分復(fù)雜問題,通過層級(jí)遞進(jìn)關(guān)系串聯(lián)3.1.1互聯(lián)網(wǎng)分層模型通用網(wǎng)絡(luò)標(biāo)準(zhǔn)和方法:開放系統(tǒng)互聯(lián)模型應(yīng)用層表示層會(huì)話層傳輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層圖3-1OSI七層網(wǎng)絡(luò)模型網(wǎng)絡(luò)通信模型:TCP/IP協(xié)議應(yīng)用層傳輸層網(wǎng)絡(luò)層鏈路層圖3-2TCP/IP四層網(wǎng)絡(luò)模型層級(jí)之間存在傳遞關(guān)系新一代信息技術(shù)系列教材《區(qū)塊鏈導(dǎo)論》3.1.2區(qū)塊鏈的五層模型獨(dú)立性
每層具有獨(dú)立的邏輯和功能通用性各層規(guī)范和架構(gòu)確定,有利于國際標(biāo)準(zhǔn)化工作展開,促進(jìn)系統(tǒng)各部分的通用性和兼容性。層級(jí)間具有遞進(jìn)關(guān)系需要滿足分層的以下特點(diǎn):應(yīng)用層分布式的鏈上應(yīng)用面向最終用戶合約層實(shí)現(xiàn)智能合約、腳本功能共識(shí)層負(fù)責(zé)實(shí)現(xiàn)各賬本的數(shù)據(jù)一致性分布式系統(tǒng)特有層級(jí)各節(jié)點(diǎn)達(dá)成一致,共識(shí)機(jī)制:PoW,PoS,BFT…網(wǎng)絡(luò)層節(jié)點(diǎn)之間的網(wǎng)絡(luò)連接和傳輸點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)數(shù)據(jù)層區(qū)塊鏈模型基礎(chǔ)負(fù)責(zé)區(qū)塊鏈數(shù)據(jù)存儲(chǔ)“賬本”數(shù)據(jù)形成區(qū)塊,以時(shí)間戳順序存儲(chǔ)在物理介質(zhì)中新區(qū)塊驗(yàn)證并上鏈圖3-3區(qū)塊鏈五層分層模型新一代信息技術(shù)系列教材《區(qū)塊鏈導(dǎo)論》發(fā)送者A接收者B應(yīng)用層例子:發(fā)送Token交易信息+簽名信息選擇APP,輸入交易信息合約層交易信息+簽名信息+合約內(nèi)容調(diào)用Token合約共識(shí)層選出節(jié)點(diǎn)并進(jìn)行信息驗(yàn)證,打包成區(qū)塊節(jié)點(diǎn)信息+交易信息+簽名信息+合約內(nèi)容網(wǎng)絡(luò)層節(jié)點(diǎn)廣播區(qū)塊給其他節(jié)點(diǎn),并進(jìn)行驗(yàn)證區(qū)塊數(shù)據(jù)層區(qū)塊上鏈3.1.2區(qū)塊鏈的五層模型新一代信息技術(shù)系列教材《區(qū)塊鏈導(dǎo)論》數(shù)據(jù)層23.2.1數(shù)據(jù)結(jié)構(gòu)區(qū)塊鏈的本質(zhì):分布式賬本數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)模型數(shù)據(jù)存儲(chǔ)合約層共識(shí)層網(wǎng)絡(luò)層數(shù)據(jù)層應(yīng)用層3.2.1數(shù)據(jù)結(jié)構(gòu)區(qū)塊鏈:區(qū)塊按照時(shí)間戳,由遠(yuǎn)及近地鏈接,形成一條鏈?zhǔn)浇Y(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)。1.區(qū)塊結(jié)構(gòu)區(qū)塊鏈的數(shù)據(jù)組織單元是區(qū)塊,不同的區(qū)塊鏈的區(qū)塊數(shù)據(jù)都會(huì)包含“區(qū)塊頭”和“交易”兩個(gè)部分。區(qū)塊頭交易存放區(qū)塊自身的元數(shù)據(jù)存放加密后的交易信息比特幣——幻數(shù)、區(qū)塊大小、區(qū)塊頭、交易計(jì)數(shù)和交易以太坊——區(qū)塊頭、交易、區(qū)塊頭哈希3.2.1數(shù)據(jù)結(jié)構(gòu)區(qū)塊鏈:區(qū)塊按照時(shí)間戳,由遠(yuǎn)及近地鏈接,形成一條鏈?zhǔn)浇Y(jié)構(gòu)的數(shù)據(jù)存儲(chǔ)。1.區(qū)塊結(jié)構(gòu)區(qū)塊鏈的數(shù)據(jù)組織單元是區(qū)塊,不同的區(qū)塊鏈的區(qū)塊數(shù)據(jù)都會(huì)包含“區(qū)塊頭”和“交易”兩個(gè)部分。區(qū)塊頭交易存放區(qū)塊自身的元數(shù)據(jù)存放加密后的交易信息比特幣——幻數(shù)、區(qū)塊大小、區(qū)塊頭、交易計(jì)數(shù)和交易以太坊——區(qū)塊頭、交易、區(qū)塊頭哈希區(qū)塊頭前塊哈希默克爾(Merkle)根時(shí)間戳向前一個(gè)區(qū)塊的指針,將孤立的區(qū)塊串聯(lián)在一起,形成區(qū)塊鏈存放著基于交易信息形成的哈希值記錄當(dāng)前區(qū)塊產(chǎn)生的近似時(shí)間3.2.1數(shù)據(jù)結(jié)構(gòu)區(qū)塊頭交易信息對(duì)交易信息的哈希對(duì)下層節(jié)點(diǎn)的進(jìn)一步哈希交易與Merkle樹Merkle樹又稱為哈希樹,樹中的每個(gè)節(jié)點(diǎn)存儲(chǔ)的均為哈希值。Merkle樹的結(jié)構(gòu)特點(diǎn):(1)易校驗(yàn)(2)擴(kuò)展性強(qiáng)(3)證明成本低3.2.1數(shù)據(jù)結(jié)構(gòu)3.2.4區(qū)塊鏈區(qū)塊鏈的形成:“前塊哈?!钡臄?shù)據(jù)域,將父區(qū)塊的區(qū)塊頭做哈希運(yùn)算得到,將區(qū)塊有序連接成區(qū)塊鏈。特點(diǎn):1.增加了篡改難度2.無法避免產(chǎn)生分叉!3.2.1數(shù)據(jù)結(jié)構(gòu)1.交易輸出(UnspentTransactionOutput,UTXO)模型UTXO以“交易”為單位進(jìn)行追蹤和記錄。比特幣為代表,每筆交易有一個(gè)或者多個(gè)交易輸出或輸入。輸出:交易的每一個(gè)輸出即為一個(gè)新的UTXO,一個(gè)用戶所擁有的比特余額為該用戶的所有UTXO之和,這些UTXO零散地記錄在不同的交易區(qū)塊中。輸入:交易的每一個(gè)輸入即為前序交易的某個(gè)UTXO,所有交易的最初輸入可以追溯了鑄幣獎(jiǎng)勵(lì)。每筆交易的輸入與輸出可以并行處理,并且一一對(duì)應(yīng)。3.2.2數(shù)據(jù)模型2.
賬戶模型賬戶不記錄交易過程,只記錄余額狀態(tài)。特點(diǎn):1.區(qū)塊體積小,網(wǎng)絡(luò)傳輸量小,空間利用率高;2.相比與UTXO模型,賬戶模型讓網(wǎng)絡(luò)中的輕節(jié)點(diǎn)更容易驗(yàn)證;3.并發(fā)處理能力比UTXO差。以太坊為代表,賬戶模型中包含了:(1)外部賬戶
給用戶操作,通過私鑰信息操作賬戶實(shí)現(xiàn)轉(zhuǎn)賬、智能合約的創(chuàng)建,調(diào)用等功能(2)合約賬戶
不能自主發(fā)起交易,只能被外部賬戶調(diào)用3.2.2數(shù)據(jù)模型3.2.3數(shù)據(jù)存儲(chǔ)存儲(chǔ)構(gòu)架的演變:中心化服務(wù)器分布式數(shù)據(jù)中心或者云平臺(tái)(多中心化)區(qū)塊鏈:分布式存儲(chǔ),每個(gè)節(jié)點(diǎn)都能夠存儲(chǔ)全量賬本。不同區(qū)塊鏈,節(jié)點(diǎn)上的物理存儲(chǔ)方式不同比特幣:區(qū)塊數(shù)據(jù)以文本形式存儲(chǔ);其他信息存儲(chǔ)在鍵值(Key-Value,KV)數(shù)據(jù)庫LevelDB中。以太坊:狀態(tài)和索引數(shù)據(jù)都被存儲(chǔ)在LevelDB中。聯(lián)盟鏈Corda項(xiàng)目的數(shù)據(jù)存儲(chǔ)在傳統(tǒng)關(guān)系型數(shù)據(jù)庫,TrustSQL項(xiàng)目數(shù)據(jù)采用MySQL及MariaDB作為存儲(chǔ)數(shù)據(jù)庫。區(qū)塊鏈項(xiàng)目面臨著嚴(yán)峻的存儲(chǔ)問題,需要新的技術(shù)手段,例如云平臺(tái)、側(cè)鏈、閃電網(wǎng)絡(luò)等。網(wǎng)絡(luò)層33.3網(wǎng)絡(luò)層合約層共識(shí)層網(wǎng)絡(luò)層數(shù)據(jù)層應(yīng)用層網(wǎng)絡(luò)層:泛指區(qū)塊鏈系統(tǒng)的整個(gè)網(wǎng)絡(luò)通信層,區(qū)塊鏈數(shù)據(jù)通過網(wǎng)絡(luò)層傳播進(jìn)行校驗(yàn)、存儲(chǔ)等。主要實(shí)現(xiàn)組網(wǎng)、傳播與校驗(yàn)功能。中心化模式:架構(gòu):客戶端/服務(wù)端(Client/Server,C/S)或?yàn)g覽器/服務(wù)端(Browser/Server,B/S)特點(diǎn):1.系統(tǒng)需要一個(gè)或多個(gè)中心化的服務(wù)器承擔(dān)統(tǒng)一接收和處理請(qǐng)求的職能2.優(yōu)點(diǎn):利于服務(wù)的統(tǒng)一管理與升級(jí);保持服務(wù)一致性;3.缺點(diǎn):中心化的設(shè)備故障會(huì)導(dǎo)致服務(wù)癱瘓;節(jié)點(diǎn)多導(dǎo)致負(fù)載壓力大。3.3.1點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)(Peer-to-Peer,P2P)分布式網(wǎng)絡(luò)架構(gòu),網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)都是對(duì)等的,可以充當(dāng)服務(wù)提供方及服務(wù)獲取方。單一或少量節(jié)點(diǎn)機(jī)器配套通信設(shè)備的故障不會(huì)影響整個(gè)網(wǎng)絡(luò)的服務(wù)提供。優(yōu)點(diǎn):節(jié)點(diǎn)越多,服務(wù)質(zhì)量越高,擴(kuò)展性越強(qiáng)。缺點(diǎn):數(shù)據(jù)一致性難以保障、資源無法統(tǒng)一管理、垃圾信息多等。3.3.1點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)P2P網(wǎng)絡(luò)的核心技術(shù):分布式哈希表用途:維護(hù)網(wǎng)絡(luò)中節(jié)點(diǎn)清單和和節(jié)點(diǎn)能提供的服務(wù)清單分布式哈希表(DistributedHashTable,DHT)誕生于2001年,核心思想是網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都維護(hù)一部分索引信息,然后通過特定的規(guī)則將這些節(jié)點(diǎn)信息連接起來,使得在查詢或注冊(cè)時(shí),按規(guī)則觸達(dá)相關(guān)節(jié)點(diǎn)或資源,不同的規(guī)則對(duì)應(yīng)著分布式哈希表不同的協(xié)議。
優(yōu)勢(shì):避免中心化索引和網(wǎng)絡(luò)風(fēng)暴分布式哈希表基礎(chǔ)結(jié)構(gòu):哈希表,是一種以“鍵-值”形式進(jìn)行存儲(chǔ)和查詢的數(shù)據(jù)結(jié)構(gòu)。在存儲(chǔ)時(shí),存儲(chǔ)信息經(jīng)過哈希函數(shù)的處理生成一個(gè)映射地址,并將信息存儲(chǔ)到這個(gè)地址中,讀取時(shí)直接定位到該映射地址提取數(shù)據(jù)。3.3.1點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)圖3-12為哈希表存儲(chǔ)結(jié)構(gòu),是一組數(shù)據(jù){1、3、4、7、8、20、55}經(jīng)過哈希函數(shù)H(k)=k%7進(jìn)行散列得到。對(duì)于數(shù)值20,20%7=6,因此數(shù)值20存儲(chǔ)在地址為6的地方。也有可能存在地址沖突的情況,例如1和8散列后地址相同,這種情況可以通過開放定址、單獨(dú)鏈表、再散列等方法解決。圖中的采用的是單獨(dú)鏈表法。通過哈希表存儲(chǔ)的數(shù)據(jù),可以實(shí)現(xiàn)在常數(shù)時(shí)間復(fù)雜度內(nèi)完成數(shù)據(jù)讀取,十分高效。在分布式網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)都存儲(chǔ)了一張哈希表,通過一定的規(guī)則關(guān)聯(lián)形成了分布式哈希表。地址存儲(chǔ)數(shù)據(jù)3.3.1點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)分布式哈希表實(shí)現(xiàn):Kademlia協(xié)議Kademlia協(xié)議在2002年設(shè)計(jì),具有結(jié)構(gòu)簡單、性能好、安全性強(qiáng)的優(yōu)點(diǎn)由于在分布式哈希表的網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)只保存一部分資源的索引信息,當(dāng)網(wǎng)絡(luò)中有資源變更時(shí)不需要全網(wǎng)廣播,只需要更新相關(guān)節(jié)點(diǎn)。問題1:如何在每個(gè)節(jié)點(diǎn)都知道部分信息的情況下實(shí)現(xiàn)對(duì)全網(wǎng)資源的觸達(dá)與維護(hù)???Kademlia協(xié)議提出基于距離的解決方案:每一個(gè)節(jié)點(diǎn)都維護(hù)一張哈希表,表中將網(wǎng)絡(luò)的節(jié)點(diǎn)基于距離進(jìn)行分組,每個(gè)分組下存放若干個(gè)節(jié)點(diǎn)代表。問題2:網(wǎng)絡(luò)中的節(jié)點(diǎn)和資源如何建立關(guān)系???Kademlia協(xié)議將網(wǎng)絡(luò)中的節(jié)點(diǎn)和資源均映射成160位的二進(jìn)制碼,編碼等于或接近某個(gè)資源的節(jié)點(diǎn),需要知道該資源的下載地址。Kademlia協(xié)議解決了點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中的組網(wǎng)問題,將找資源變成找節(jié)點(diǎn),將找具體節(jié)點(diǎn)變成找大類的代表。3.3.2數(shù)據(jù)傳播和校驗(yàn)
數(shù)據(jù)傳播
區(qū)塊數(shù)據(jù)打包后需要廣播給其他節(jié)點(diǎn)進(jìn)行校驗(yàn)和記賬。根據(jù)點(diǎn)對(duì)點(diǎn)分布式網(wǎng)絡(luò)的特點(diǎn),每個(gè)節(jié)點(diǎn)只會(huì)向其直接連接的節(jié)點(diǎn)發(fā)送區(qū)塊信息。收到消息的節(jié)點(diǎn)會(huì)對(duì)區(qū)塊進(jìn)行校驗(yàn),通過后加入該節(jié)點(diǎn)本地的區(qū)塊鏈,并廣播給其他節(jié)點(diǎn),如此循環(huán),知道觸達(dá)全網(wǎng)的節(jié)點(diǎn)。
以太坊中的數(shù)據(jù)傳播方式:
1.向相鄰節(jié)點(diǎn)直接發(fā)送包含完整的區(qū)塊內(nèi)容的消息;
2.向相鄰節(jié)點(diǎn)發(fā)送只包含區(qū)塊哈希的消息,收到區(qū)塊哈希的節(jié)點(diǎn)再從發(fā)送節(jié)點(diǎn)請(qǐng)求對(duì)應(yīng)的完整區(qū)塊信息。3.3.2數(shù)據(jù)傳播和校驗(yàn)
數(shù)據(jù)校驗(yàn)
點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中,全節(jié)點(diǎn)會(huì)占用較大的存儲(chǔ)量,輕量級(jí)節(jié)點(diǎn)會(huì)存儲(chǔ)部分?jǐn)?shù)據(jù),所以輕量級(jí)節(jié)點(diǎn)需要向相鄰節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)來完成數(shù)據(jù)校驗(yàn)。
數(shù)據(jù)校驗(yàn)的內(nèi)容:依據(jù)該區(qū)塊鏈項(xiàng)目預(yù)定義的清單。
比特幣的數(shù)據(jù)校驗(yàn)內(nèi)容:
(1)工作量證明檢查
(2)區(qū)塊頭中Merkle根的值是否與依據(jù)區(qū)塊體中交易信息計(jì)算得到一致
(3)區(qū)塊大小再限制范圍內(nèi)
(4)第一筆交易以外的其他交易不能是鑄幣交易
(5)交易的合法性共識(shí)層43.4.1共識(shí)和一致性區(qū)塊鏈系統(tǒng)作為一個(gè)分布式系統(tǒng),其正常工作的核心問題是如何保證所有節(jié)點(diǎn)中的數(shù)據(jù)完全相同,并且能夠?qū)δ硞€(gè)提案達(dá)成一致。解決方法:共識(shí)層包含了各種共識(shí)算法,負(fù)責(zé)實(shí)現(xiàn)區(qū)塊鏈各個(gè)賬本的一致性,即不同節(jié)點(diǎn)數(shù)據(jù)的一致性。一致性指不同節(jié)點(diǎn)中的數(shù)據(jù)內(nèi)容是否完整并且相同,是系統(tǒng)對(duì)外呈現(xiàn)的狀態(tài)是否一致。共識(shí)是一種實(shí)現(xiàn)一致性的方法、途徑或手段;共識(shí)機(jī)制(共識(shí)算法)是為了達(dá)成共識(shí)需要使用的某種機(jī)制,快速準(zhǔn)確地在各個(gè)節(jié)點(diǎn)實(shí)現(xiàn)區(qū)塊數(shù)據(jù)一致性的機(jī)制和算法,通常是利用獎(jiǎng)懲機(jī)制。主流的共識(shí)機(jī)制:確定性算法:如拜占庭容錯(cuò)(BFT)概率性算法:如工作量證明(PoW)、權(quán)益證明(PoS)、委托權(quán)益證明(DPoS)區(qū)別:確定性算法下的新區(qū)塊無法被滾回,而概率性算法的新區(qū)塊,只有當(dāng)被回滾的概率接近0時(shí),才被視為確定性的。3.4.2拜占庭容錯(cuò)BFT拜占庭容錯(cuò)(ByzantineFaultTolerance,BFT)算法可以解決分布式系統(tǒng)里拜占庭將軍問題的容錯(cuò)算法。拜占庭將軍問題:將軍選擇進(jìn)攻還是不進(jìn)攻?決策是否能達(dá)成一致,是決定勝負(fù)的關(guān)鍵。
誠實(shí)將軍們決策的結(jié)果會(huì)被叛徒將軍干擾:1.不進(jìn)行表態(tài);2.發(fā)表錯(cuò)誤觀點(diǎn);3.主動(dòng)干擾其他將軍對(duì)局勢(shì)進(jìn)行誤判。例如:有11位將軍A1,A2,A3,A4,B1,B2,B3,Z1,Z2,Z3,Z4叛徒:Z1~Z4;想進(jìn)攻:A1~A4;不想進(jìn)攻:B1~B34位叛徒成功瓦解了7位誠實(shí)將軍3.4.2拜占庭容錯(cuò)BFT區(qū)塊鏈中:每個(gè)節(jié)點(diǎn)——拜占庭軍隊(duì)中的將軍各個(gè)節(jié)點(diǎn)的信息傳輸過程——信使傳信部分節(jié)點(diǎn)被干擾——信使被殺惡意節(jié)點(diǎn)——叛徒將軍出現(xiàn)故障或錯(cuò)誤的節(jié)點(diǎn)被稱為拜占庭節(jié)點(diǎn);接收正確信息同時(shí)傳送正確信息的節(jié)點(diǎn)稱為非拜占庭節(jié)點(diǎn)。BFT共識(shí)機(jī)制中應(yīng)用最廣的位實(shí)用拜占庭容錯(cuò)機(jī)制(PracticalByzantineFaultTolerance,PBFT),1999年由MiguelCastro和BarbaraLiskov提出。適用場景:極少有惡意節(jié)點(diǎn)或者故障節(jié)點(diǎn)核心思路:性能優(yōu)先3.4.2拜占庭容錯(cuò)BFTPBFT算法:由執(zhí)行交易命令的主節(jié)點(diǎn)使用,在三個(gè)階段中達(dá)成共識(shí)。主節(jié)點(diǎn)廣播請(qǐng)求每個(gè)驗(yàn)證者簽名并準(zhǔn)備針對(duì)該請(qǐng)求的準(zhǔn)備消息,驗(yàn)證器廣播提交消息當(dāng)接收到足夠的提交消息后,請(qǐng)求被接受
3.4.3PoW證明類共識(shí)(ProofofX):節(jié)點(diǎn)以某種代價(jià)或消耗資源的證明,基于這個(gè)證明,節(jié)點(diǎn)可以獲得一定概率或一定比例的記賬權(quán)。工作量證明(ProofofWork,PoW):指節(jié)點(diǎn)通過消耗計(jì)算資源,計(jì)算一項(xiàng)較難完成但很容易驗(yàn)證的工作,并以此證明獲取區(qū)塊鏈記賬權(quán)的共識(shí)機(jī)制。最常用的工作為計(jì)算哈希函數(shù)(計(jì)算過程簡單,破解很難);要求節(jié)點(diǎn)利用計(jì)算能力去尋找一個(gè)隨機(jī)數(shù),使得該隨機(jī)數(shù)和特定數(shù)字的哈希計(jì)算滿足一定的條件。優(yōu)點(diǎn):安全性和不可篡改性。缺點(diǎn):交易確認(rèn)時(shí)間過長,不適用高頻的商業(yè)應(yīng)用;消耗了大量的電力資源;挖礦系統(tǒng)越來越中心化。3.4.3PoW比特幣使用隨機(jī)數(shù)搜索目標(biāo)哈希的PoW過程:(1)將一個(gè)新的鑄幣交易添加進(jìn)系統(tǒng)中,計(jì)算出Merkle根哈希;(2)利用隨機(jī)數(shù)Nonce、上一個(gè)區(qū)塊哈希值、當(dāng)前Merkle根哈希及其他的字段組成區(qū)塊頭;(3)將每一個(gè)區(qū)塊頭進(jìn)行雙重SHA-256運(yùn)算,并且使得隨機(jī)數(shù)Nonce加1,得到一個(gè)結(jié)果值,把網(wǎng)絡(luò)目標(biāo)值和得到的數(shù)值進(jìn)行比較。當(dāng)?shù)玫降闹敌∮诘扔谀繕?biāo)哈希值,則隨機(jī)數(shù)符合條件,第一個(gè)算出此隨機(jī)數(shù)的礦工擁有記賬權(quán)。3.4.4PoS/DPoS幣齡(CoinDays):個(gè)人所擁有貨幣數(shù)量與擁有天數(shù)的乘積。權(quán)益證明(ProofofStake,PoS)共識(shí)機(jī)制:根據(jù)用戶持有貨幣的幣齡為消耗資源,獲得記賬權(quán),打包新區(qū)塊的證明。擁有更高幣齡的節(jié)點(diǎn)會(huì)有更高的概率挖出新區(qū)塊,大部分PoS共識(shí)機(jī)制采用單純以Token數(shù)量爭奪記賬權(quán)的方式;挖出新區(qū)塊后,幣齡會(huì)被消耗;獲得記賬權(quán)的節(jié)點(diǎn)會(huì)得到一定的區(qū)塊獎(jiǎng)勵(lì);優(yōu)點(diǎn):挖礦效率更高效且不存在算力冗余;不需要消耗大量電力;缺點(diǎn):無法擺脫挖礦的約束;幣齡或持幣量越大的節(jié)點(diǎn),權(quán)益高度集中,產(chǎn)生馬太效應(yīng)。委托權(quán)益證明(DelegatedProofofStake,DPoS):嚴(yán)格限制了參與共識(shí)的節(jié)點(diǎn)數(shù)量,Token持有者可以參與投票,將權(quán)益委托給候選節(jié)點(diǎn)。能夠降低參與共識(shí)的節(jié)點(diǎn)數(shù)量,降低能耗及成本,提高區(qū)塊鏈的數(shù)據(jù)處理能力。3.4.4PoS/DPoSPoS:
節(jié)點(diǎn)都是對(duì)等節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都能參與共識(shí),概率和持幣量或幣齡掛鉤。DPoS:有代表節(jié)點(diǎn),系統(tǒng)中的Token持有者能夠把權(quán)益投票給某個(gè)候選代表節(jié)點(diǎn),委托其參與共識(shí)。票數(shù)高的候選節(jié)點(diǎn)可以稱為代表節(jié)點(diǎn),參與共識(shí)過程。3.4.5其他共識(shí)機(jī)制區(qū)塊鏈系統(tǒng)中,還有其他多個(gè)共識(shí)機(jī)制,采用何種共識(shí)算法需要考慮到實(shí)際應(yīng)用場景:(1)權(quán)威證明(ProofofAuthority):基于聲譽(yù)的共識(shí)算法,被選為區(qū)塊驗(yàn)證者需要憑借個(gè)人聲譽(yù),而不需要抵押Token。適用于私有鏈場景。(2)身份證明(ProofofIdentity,PoI):是一塊表示加密事實(shí)的數(shù)據(jù),它允許任何持有私鑰的用戶和一個(gè)認(rèn)證的身份相對(duì)應(yīng),然后和指定的交易進(jìn)行連接。(3)權(quán)重證明(ProofofWeight,PoWeight):基本理念是在權(quán)益證明系統(tǒng)中,用戶所擁有的網(wǎng)絡(luò)中Token的百分比,表示了該用戶“發(fā)現(xiàn)”下一個(gè)區(qū)塊的概率。合約層53.5.1合約層引入打個(gè)比方,區(qū)塊鏈?zhǔn)且粔K蛋糕,數(shù)據(jù)層、網(wǎng)絡(luò)層和共識(shí)層就是蛋糕胚,起到整體支撐作用;而合約層和應(yīng)用層則是蛋糕上的奶油和櫻桃,是整個(gè)區(qū)塊鏈最亮眼的部分。合約層在整個(gè)區(qū)塊鏈分層模型中位于第四層,它封裝腳本、智能合約,是區(qū)塊鏈靈活編程的基礎(chǔ)。一般來說,區(qū)塊鏈應(yīng)用的用戶不需要直接與智能合約進(jìn)行交互,而是通過應(yīng)用向智能合約下達(dá)指令,應(yīng)用再通過接口與合約層進(jìn)行交互。因此,合約層非常重要,它為頂層應(yīng)用提供所依賴的智能合約邏輯和算法。3.5.2智能合約通常認(rèn)為,區(qū)塊鏈2.0階段的一個(gè)重要標(biāo)志是智能合約的實(shí)現(xiàn),那么智能合約是什么呢?從定義看,智能合約是一種由機(jī)器實(shí)現(xiàn)的協(xié)議或程序,但是由于它運(yùn)行在一個(gè)需要達(dá)成共識(shí)的分布式系統(tǒng)環(huán)境中,與一般的計(jì)算機(jī)程序存在很大的區(qū)別。AB情景案例A在互聯(lián)網(wǎng)出售一個(gè)電子產(chǎn)品,而遠(yuǎn)在千里之外的B希望將這個(gè)電子產(chǎn)品收入囊中,他們?cè)撊绾瓮瓿山灰啄??最簡單的方法莫過于借助一個(gè)線上商店,但是這需要重度依賴商店的信譽(yù)。換一種思路,如果雙方簽訂一個(gè)(基于區(qū)塊鏈)的智能合約,并在合約中約定中約定,如果A發(fā)送電子商品給合約,B轉(zhuǎn)賬給合約,那么合約就將錢轉(zhuǎn)給A,將電子商品發(fā)送給B,雙方皆大歡喜完成交易?;蛘呷绻麜r(shí)間到了,雙方有一方未履行約定,就將電子商品和錢原路退回,不給雙方帶來任何風(fēng)險(xiǎn)和損失。3.5.2智能合約智能合約是一種旨在以數(shù)字化手段傳播、驗(yàn)證或執(zhí)行合同的計(jì)算機(jī)協(xié)議,它無需第三方即可執(zhí)行可靠且不可逆的交易。3.5.3多重簽名(4/6)可以解鎖(3/6)無法解鎖最常見的腳本語言實(shí)現(xiàn)的功能之一就是多重簽名,通常來說,每個(gè)地址都對(duì)應(yīng)一把獨(dú)一無二的私鑰。但是通過腳本語言,可以實(shí)現(xiàn)讓多把互不相同的私鑰管理同一個(gè)地址。每次用戶轉(zhuǎn)移地址中的資產(chǎn)時(shí),用戶們必須同時(shí)使用a+n把私鑰中的a把才能完成轉(zhuǎn)賬,在上圖展示的多重簽名示意中,要求同時(shí)出示6把私鑰中的4把簽名才能轉(zhuǎn)賬。這樣的多人管理的多簽手段,方便大型組織、公司使用,既有增加了安全性,又防止單一私鑰丟失,而這個(gè)功能,正是合約層腳本語言提供的。地址A多簽要求:6把私鑰中至少有4把地址A多簽要求:6把私鑰中至少有4把3.5.4確定性什么是確定性呢?從定義來看,如果給定一個(gè)輸入,計(jì)算機(jī)經(jīng)過同樣的狀態(tài)變化順序后總會(huì)產(chǎn)生相同的結(jié)果,那么這個(gè)算法即可被稱為是確定性的。區(qū)塊鏈?zhǔn)且粋€(gè)分布式系統(tǒng),分布式系統(tǒng)中的各類節(jié)點(diǎn)必須保證結(jié)果的確定性,如果每個(gè)結(jié)點(diǎn)運(yùn)行相同的智能合約,卻產(chǎn)生不同的結(jié)果,那么區(qū)塊鏈網(wǎng)絡(luò)就無法達(dá)成共識(shí)。智能合約確定性算法層面數(shù)據(jù)層面在合約層,不應(yīng)當(dāng)使用會(huì)產(chǎn)生不確定結(jié)果的算法,如隨機(jī)數(shù),如比特幣,它只提供有限數(shù)量的腳本,而這些腳本不會(huì)產(chǎn)生不確定的結(jié)果。不同的數(shù)據(jù)輸入一般會(huì)帶來不同的結(jié)果輸出,如果智能合約采用鏈上的數(shù)據(jù)的話,鏈上數(shù)據(jù)是確定的、不可篡改的。但很多智能合約的運(yùn)行邏輯都依賴外部的數(shù)據(jù)輸入,可以利用預(yù)言機(jī)來處理外部數(shù)據(jù),增加外部數(shù)據(jù)的可信性3.5.5腳本語言在區(qū)塊鏈早期,以比特幣為代表的區(qū)塊鏈網(wǎng)絡(luò),并沒有使用智能合約,而是使用一種簡單的,基于堆棧的腳本語言。它不支持循環(huán),不是圖靈完備的。但是,它可以實(shí)現(xiàn)一些基本的指令。以比特幣的指令為例,這些指令被稱為操作碼,它支持上百個(gè)這樣的簡單腳本指令。指令描述OP_IF指令如果頂部棧堆為非假,則語句被執(zhí)行OP_SHA256指令對(duì)輸入使用SHA-256進(jìn)行哈希處理比特幣的腳本語言是智能合約的雛形,它為自身系統(tǒng)帶來了一些新的功能,也為后來智能合約的發(fā)展提供了思路。3.5.6可終止性區(qū)塊鏈通過賬本冗余換來了不可篡改的特性,它其實(shí)消耗了相當(dāng)多的物理資源。因此,區(qū)塊鏈的鏈上資源,無論是存儲(chǔ)還是帶寬,都是非常寶貴的。如果一條智能合約使用了一些無法終止的函數(shù),例如死循環(huán),它將消耗大量的鏈上資源。而區(qū)塊鏈?zhǔn)且粋€(gè)分布式系統(tǒng),智能合約一經(jīng)部署無法撤回,無法終止的合約甚至?xí)斐蓞^(qū)塊鏈系統(tǒng)的停擺,所以,智能合約必須是可終止的。有限命令限制指比特幣的形式,它已經(jīng)預(yù)設(shè)規(guī)定好開發(fā)者能夠使用的腳本語言種類,而這些腳本語言不包括不可終止的功能燃料機(jī)制限制以以太坊Gas機(jī)制為代表,在這類區(qū)塊鏈系統(tǒng)中,運(yùn)行智能合約需要Gas費(fèi)用,用戶可執(zhí)行包含循環(huán)邏輯的函數(shù),但每循環(huán)一次就消耗一定的Gas費(fèi)用。一旦預(yù)交的Gas費(fèi)用耗盡,則智能合約的運(yùn)行自動(dòng)停止資源控制限制細(xì)化智能合約需要使用的CPU、帶寬、內(nèi)存等資源,智能合約每運(yùn)行一步都消耗一步的資源,確保合約可終止準(zhǔn)入資格限制主要應(yīng)用在聯(lián)盟鏈領(lǐng)域,聯(lián)盟鏈的可控性更好,可以通過對(duì)結(jié)點(diǎn)的限制來保證這些結(jié)點(diǎn)不會(huì)部署不可終止的合約智能合約限制策略應(yīng)用層63.6.1應(yīng)用層區(qū)塊鏈系統(tǒng)的應(yīng)用層封裝了各種應(yīng)用場景和案例,其概念類似于PC端的應(yīng)用程序,以分布式應(yīng)用為主要表現(xiàn)形式。這些應(yīng)用部署在區(qū)塊鏈的平臺(tái)上,并在現(xiàn)實(shí)中落地。根據(jù)對(duì)應(yīng)用層的深入程度,總結(jié)了區(qū)塊鏈四類應(yīng)用:分布式賬本、價(jià)值傳輸網(wǎng)絡(luò)、通證激勵(lì)以及資產(chǎn)數(shù)字化。3.6.2分布式賬本在分布式賬本大類中,主要應(yīng)用方向是實(shí)現(xiàn)分布式存證效果的分布式賬本應(yīng)用,不涉及對(duì)于通證的區(qū)塊鏈應(yīng)用。這類應(yīng)用更多的是利用分布式賬本技術(shù),實(shí)現(xiàn)業(yè)務(wù)信息的公開透明、防篡改、防偽造,主要包括數(shù)據(jù)存證、可信查詢等。盡管從技術(shù)上來看,很多時(shí)候仍然會(huì)利用傳統(tǒng)的、較為成熟的分布式數(shù)據(jù)庫技術(shù),但已經(jīng)開始與傳統(tǒng)互聯(lián)網(wǎng)產(chǎn)生區(qū)別。最明顯的區(qū)別在于分布式賬本技術(shù)。其解決了在沒有可信中介網(wǎng)絡(luò)環(huán)境下的信任問題,實(shí)現(xiàn)可追溯、可查證、防篡改的信息共享。3.6.2分布式賬本情景案例莫斯科曾推出了"積極市民"(ActiveCitizen)項(xiàng)目,讓市民通過投票參與到大大小小的城市管理決策中,比如新地鐵列車的取名、新的體育場館座位涂色等。傳統(tǒng)的投票方式在大規(guī)模實(shí)施時(shí)不僅耗時(shí)耗力,而目對(duì)計(jì)票結(jié)果也可能存在質(zhì)疑。但莫斯科市民投票系統(tǒng)基干以太坊私有鏈平臺(tái),每個(gè)市民可作為分布式網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn),記錄和存儲(chǔ)投票數(shù)據(jù)并實(shí)時(shí)查看計(jì)票情況。由于區(qū)塊鏈的數(shù)據(jù)不可篡改,使得投票透明度大大提高,市民和政府之間的信任程度也會(huì)隨之提高。截至2021年3月,該平臺(tái)已累計(jì)超過500萬用戶,共完成了數(shù)千次民意調(diào)查。3.6.2分布式賬本應(yīng)用挑戰(zhàn)挑戰(zhàn)簡述解決方案保障平臺(tái)獨(dú)立性目前很多區(qū)塊鏈平臺(tái)仍然會(huì)由—個(gè)或少數(shù)幾個(gè)單位來發(fā)起籌建。平臺(tái)上的運(yùn)營業(yè)務(wù)合作伙伴—般也是發(fā)起單位的原有合作者或某些聯(lián)盟的成員等。發(fā)起者以及早期參與者會(huì)在包括資產(chǎn)所屬權(quán)、標(biāo)準(zhǔn)制定、數(shù)據(jù)積累等方面具有極強(qiáng)的先發(fā)優(yōu)勢(shì)利用跨鏈交互等技術(shù)形成多中心化局面確保數(shù)據(jù)真實(shí)、有效采用了分布式賬本技術(shù)后一般可認(rèn)為記錄并流轉(zhuǎn)在區(qū)塊鏈平臺(tái)上的數(shù)據(jù)是真實(shí)可信的,但如何保證上鏈前的信息是真實(shí)可靠的則是個(gè)需要解決的問題。權(quán)威第三方驗(yàn)證、使用物聯(lián)網(wǎng)、人工智能等技術(shù)提升交易速度由于區(qū)塊鏈?zhǔn)窍忍斓姆植际絽f(xié)作系統(tǒng),用較復(fù)雜的算法和煩瑣的多參與方協(xié)作來獲得去中介化信任、數(shù)據(jù)不可篡改,以及交易可追溯等功能優(yōu)勢(shì),根據(jù)分布式系統(tǒng)CAP原理,在投入資源相同的情況下,區(qū)塊鏈的性能往往低于中心化的系統(tǒng),表現(xiàn)為交易并發(fā)處理性能不高,交易時(shí)延較明顯。通過多層思路擴(kuò)容避免資源浪費(fèi)分布式賬本由于其與生俱來的多節(jié)點(diǎn)、多中心的特點(diǎn),會(huì)存在一定程度的冗余。這些冗余一方面可實(shí)現(xiàn)多點(diǎn)備份的安全特性,避免單點(diǎn)故障;另一方面,如果控制不當(dāng),則會(huì)將冗余演變?yōu)槔速M(fèi),其中包括計(jì)算冗余和存儲(chǔ)冗余兩個(gè)方面擴(kuò)展技術(shù)(分片、狀態(tài)通道)鏈下存儲(chǔ)、輕節(jié)點(diǎn)方式和分布式存儲(chǔ)3.6.3價(jià)值傳輸網(wǎng)絡(luò)價(jià)值傳輸網(wǎng)絡(luò)的特點(diǎn)可清算可追溯普惠金融
通過鏈上的通證,使價(jià)值流轉(zhuǎn)過程清晰透明由于區(qū)塊鏈賬本對(duì)交易記錄的透明特性,每筆交易的付款方和收款方都在鏈上進(jìn)行交易區(qū)塊鏈對(duì)個(gè)人的價(jià)值傳輸網(wǎng)絡(luò)體現(xiàn)在KYC的提升,利用密碼學(xué)構(gòu)建的區(qū)塊鏈體系使用戶身份不可偽造、行為不可抵賴,利用點(diǎn)對(duì)點(diǎn)的支付功能可進(jìn)行個(gè)人資產(chǎn)的可信交換價(jià)值傳輸網(wǎng)絡(luò)應(yīng)用挑戰(zhàn)保持傳輸價(jià)值穩(wěn)定保證交易合法提高交易安全要求價(jià)格穩(wěn)定,不隨數(shù)字貨幣媒介的波動(dòng)而波動(dòng)價(jià)值可用,當(dāng)傳輸非法幣時(shí),接收方同意并可正常使用解決通過對(duì)沖工具穩(wěn)定價(jià)值使用法定數(shù)字貨幣區(qū)塊鏈天然帶有一定的匿名性,隱藏交易具體信息的同時(shí),加密貨幣也可能用來實(shí)施金融犯罪可通過加入KYC/AML的流程和進(jìn)行匿名性和可監(jiān)管性的平衡價(jià)值傳輸網(wǎng)絡(luò)由于自身的價(jià)值屬性,會(huì)吸引更多的惡意攻擊解決技術(shù)開發(fā)過程的白盒測試、黑盒測試漏洞獎(jiǎng)勵(lì)機(jī)制價(jià)值傳輸網(wǎng)絡(luò)是基于分布式賬本,借助已有通證實(shí)現(xiàn)價(jià)值互聯(lián)互通,以此形成價(jià)值互聯(lián)網(wǎng)的基礎(chǔ)。該層最早最典型的應(yīng)用主要是能體現(xiàn)價(jià)值流通的支付清算。3.6.4通證激勵(lì)體系通證(Token)是以數(shù)字形式存在的權(quán)益憑證,它通常以區(qū)塊鏈技術(shù)為載體。通證實(shí)際上代表著一種權(quán)利,可以在特定的場景或者時(shí)間內(nèi)生效、使用。通證激勵(lì)體系是基于價(jià)值傳輸網(wǎng)絡(luò),根據(jù)實(shí)際的應(yīng)用場景定制化生成的原生通證而產(chǎn)生的。這一層級(jí)應(yīng)用的顯著特點(diǎn)是在區(qū)塊鏈上引入了通證經(jīng)濟(jì)學(xué)的激勵(lì)機(jī)制。根據(jù)真實(shí)業(yè)務(wù)場景應(yīng)用,以區(qū)塊鏈通證為價(jià)值載體而建立的通證激勵(lì)體系可視作一種升級(jí)版的會(huì)員積分計(jì)劃。通證激勵(lì)體系可實(shí)現(xiàn)的特性主要有兩個(gè)方面。1)充分調(diào)動(dòng)各個(gè)關(guān)聯(lián)方的貢獻(xiàn)。2)優(yōu)化資源分配。將區(qū)塊鏈技術(shù)引入顧客忠誠度計(jì)劃和會(huì)員積分系統(tǒng),是通證激勵(lì)應(yīng)用體系的典型思路。在傳統(tǒng)的銷售模式下,顧客獲取會(huì)員積分最重要的途徑就是進(jìn)行購物消費(fèi),商家一般會(huì)根據(jù)消費(fèi)金額的大小進(jìn)行相應(yīng)積分的發(fā)放,而積分的使用場景,往往也是通過重復(fù)購物享受優(yōu)惠來實(shí)現(xiàn)。隨著互聯(lián)網(wǎng)營銷模式進(jìn)一步演變和創(chuàng)新,會(huì)員積分已經(jīng)不僅僅是終端消費(fèi)者的忠誠計(jì)劃,也可以成為渠道商和分銷合作伙伴的激勵(lì)管理手段。例如以阿里媽媽、京東和拼多多為代表的電商淘客平臺(tái),通過傭金分發(fā)獎(jiǎng)勵(lì)推廣行為,既提高了電商平臺(tái)的精準(zhǔn)營銷效率,又滿足了合作伙伴對(duì)圈層生態(tài)建設(shè)和推廣等服務(wù)的需求,而且還使得消費(fèi)者能以更優(yōu)惠的價(jià)格購買到電商平臺(tái)上同等質(zhì)量的商品,一舉多得。結(jié)合區(qū)塊鏈積分建立的通證激勵(lì)應(yīng)用體系,從"購物挖礦"到"行為挖礦",目前已形成一些較為典型的案例。3.6.4通證激勵(lì)體系的挑戰(zhàn)在通證經(jīng)濟(jì)設(shè)計(jì)體系中,通證本身所代表的價(jià)值需要進(jìn)行合理設(shè)計(jì),一方面應(yīng),保證足夠多的價(jià)值,對(duì)用戶形成足夠的吸引力;另一方面價(jià)值應(yīng)合理適度。除利用市場化手段進(jìn)行通證價(jià)格調(diào)節(jié)外,通證具有的內(nèi)在價(jià)值可隨著使用場景及未來表現(xiàn)的變化而變化。用戶在使用通證時(shí)可能會(huì)同時(shí)出于多種需求,比如使用上的流動(dòng)性與持有上的保值性等。平衡好這一關(guān)系的一個(gè)解決辦法是,讓通證發(fā)行的速度與通證使用的速度相匹配,使得整個(gè)系統(tǒng)的通證供給與需求達(dá)到平衡狀態(tài);另一個(gè)解決辦法是,設(shè)計(jì)好通證使用權(quán)益與持有權(quán)益的均衡比例。這一挑戰(zhàn)本質(zhì)是關(guān)于通證應(yīng)如何產(chǎn)生的問題,包括如何合理定義激勵(lì)點(diǎn)以及如何平衡冷啟動(dòng)與可持續(xù)性。合理定義通證激勵(lì),可以從對(duì)業(yè)務(wù)發(fā)展的分析入手,判斷阻礙業(yè)務(wù)進(jìn)一步發(fā)展的瓶頸所在,有針對(duì)性地對(duì)其進(jìn)行激勵(lì)。如何賦予通證價(jià)值通證流動(dòng)性與保值性平衡如何合理定義激勵(lì)點(diǎn)3.6.5資產(chǎn)數(shù)字化資產(chǎn)數(shù)字化是通證激勵(lì)體系的高級(jí)應(yīng)用形態(tài),但可應(yīng)用的概念范圍也最為廣義化,因?yàn)槿魏钨Y產(chǎn)都可以上鏈,并且具有以下的特點(diǎn):1)鏈上的通證背后有實(shí)際資產(chǎn)作為支撐,是資產(chǎn)的數(shù)字化形式,并不是憑空生成的。2)大額不可拆分的資產(chǎn)在數(shù)字化之后,將形成可拆分的所有權(quán)(FractionalOwnership)。3)資產(chǎn)數(shù)字化之后可自由流通。4)數(shù)字化資產(chǎn)可以全球性流通,沒有國界限制,資產(chǎn)間交互性更強(qiáng)。5)數(shù)字化資產(chǎn)可編程性強(qiáng),可實(shí)時(shí)清算交割,且清算交割的成本較低。6)可較為便捷、低成本地實(shí)現(xiàn)KYC/AML,資產(chǎn)交易可以實(shí)現(xiàn)自監(jiān)管。主要挑戰(zhàn)1.政策監(jiān)管體系還不成熟2.通證經(jīng)濟(jì)體系所帶來的流動(dòng)性增長,會(huì)在短時(shí)間內(nèi)積累出大量風(fēng)險(xiǎn)應(yīng)對(duì)措施1)適度建立流通門檻2)加強(qiáng)審核機(jī)制3)設(shè)立投資者準(zhǔn)入門檻4)針對(duì)早期項(xiàng)目給予輔導(dǎo)《比特幣—區(qū)塊鏈的首個(gè)應(yīng)用》第4章比特幣實(shí)現(xiàn)原理無中介支付體系基礎(chǔ)問題比特幣概述比特幣概述4.14.1比特幣概述比特幣:數(shù)字資產(chǎn)(BTC),點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)。供應(yīng)量:由軟件及底層協(xié)議確定,所有比特幣都是通過新區(qū)塊的挖礦獎(jiǎng)勵(lì)形式發(fā)行,共2100萬枚,最小單位是1聰(1億分之1枚)。減半:比特幣挖礦區(qū)塊獎(jiǎng)勵(lì)每21萬個(gè)區(qū)塊后減半,按照平均10分鐘1個(gè)區(qū)塊,減半大約每4年發(fā)生一次。難度調(diào)整:為了保持平均每10分鐘1個(gè)區(qū)塊的恒定出塊速度,比特幣網(wǎng)絡(luò)將在每挖出2016個(gè)區(qū)塊后進(jìn)行一次挖礦難度調(diào)整。中本聰:“比特幣之父”,2008年發(fā)表比特幣白皮書;2009年1月3日自己編程實(shí)現(xiàn)并發(fā)布比特幣首個(gè)區(qū)塊;2010年12月13日,最后一次登錄比特幣論壇。無中介支付體系基礎(chǔ)問題4.24.2無中介支付體系基礎(chǔ)問題如何記賬由誰來記賬才能保證系統(tǒng)的公平公正,怎么樣能吸引足夠的人來參與記賬活動(dòng),如何來保證系統(tǒng)記賬活動(dòng)的持續(xù)穩(wěn)定性與安全性。如何確保賬目不可篡改不僅要保證記賬的公平公正,還必須要確保所有的交易記錄不會(huì)被篡改。如何注冊(cè)和產(chǎn)生賬戶無中介支付體系必然涉及賬戶之間的價(jià)值轉(zhuǎn)移。如何在沒有中介的情況下安全地進(jìn)行賬戶的注冊(cè),確保賬戶擁有者對(duì)賬戶的絕對(duì)控制權(quán)。如何轉(zhuǎn)賬核心問題,在轉(zhuǎn)賬過程中需要保證用戶對(duì)自己財(cái)產(chǎn)控制的安全性。4.2無中介支付體系基礎(chǔ)問題如何防止資產(chǎn)被雙花雙花問題是數(shù)字貨幣所要面臨的一個(gè)獨(dú)特問題。數(shù)字貨幣是以數(shù)字形式存在的,容易被復(fù)制,使得一筆數(shù)字資產(chǎn)存在被多次重復(fù)使用的可能性,這也就是數(shù)字貨幣的雙花問題。要設(shè)計(jì)一個(gè)可行的記賬系統(tǒng),就必須解決雙花問題,杜絕數(shù)字資產(chǎn)被重復(fù)消費(fèi)。如何更改協(xié)議無論是出于主動(dòng)提升系統(tǒng)性能的目的,還是為了解決運(yùn)行過程中暴露出來的安全漏洞,都需要對(duì)協(xié)議體系進(jìn)行更改。由于組成節(jié)點(diǎn)眾多,一個(gè)網(wǎng)絡(luò)協(xié)議體系的更改遠(yuǎn)比單一節(jié)點(diǎn)上的軟件升級(jí)要復(fù)雜得多。比特幣實(shí)現(xiàn)原理4.34.3比特幣的實(shí)現(xiàn)原理2009年1月3日,比特幣區(qū)塊鏈網(wǎng)絡(luò)首次上線。它包括了公有鏈的三個(gè)組成部分一個(gè)分布式網(wǎng)絡(luò);一個(gè)分布式賬本;基于它們的價(jià)值表示物。(在這個(gè)網(wǎng)絡(luò)里,價(jià)值表示物是加密貨幣比特幣,在其他區(qū)塊鏈網(wǎng)絡(luò)中有的也用通證作為價(jià)值表示物。)公有鏈分布式網(wǎng)絡(luò)分布式賬本價(jià)值表示物4.3比特幣的實(shí)現(xiàn)原理電子現(xiàn)金系統(tǒng)比特幣區(qū)塊鏈能夠在沒有集中式機(jī)構(gòu)的情況下發(fā)行電子現(xiàn)金,能夠支持個(gè)人與個(gè)人之間的轉(zhuǎn)賬交易。這樣的技術(shù)系統(tǒng)可以用于任何價(jià)值表示物的無中介發(fā)行與點(diǎn)對(duì)點(diǎn)交易。區(qū)塊鏈賬本賬本用來記錄“誰擁有什么”。所有的區(qū)塊鏈賬本記錄的都是從最初狀態(tài)開始的每一個(gè)轉(zhuǎn)賬交易,之后在此基礎(chǔ)上形成“誰擁有什么”的記錄。比特幣區(qū)塊鏈賬本是記錄從最初時(shí)刻即創(chuàng)世時(shí)刻開始后的所有交易明細(xì)的底賬(Ledger)。4.3比特幣的實(shí)現(xiàn)原理3.分布式比特幣區(qū)塊鏈系統(tǒng)要實(shí)現(xiàn)的目標(biāo)是創(chuàng)建一個(gè)點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng),轉(zhuǎn)賬交易時(shí)無須任何“可信第三方”(Trustedthirdparty),實(shí)現(xiàn)方式是通過點(diǎn)對(duì)點(diǎn)的對(duì)等網(wǎng)絡(luò)與公開的分布式賬本取代中間人。沒有中心的網(wǎng)絡(luò)中,賬本維護(hù)和更改(對(duì)區(qū)塊鏈賬本來說僅是添加)并達(dá)成一致的方法是,由一組記賬節(jié)點(diǎn)通過工作量證明(Proof-of-Work,POW)共識(shí)機(jī)制來維護(hù)。記賬會(huì)獲得比特幣網(wǎng)絡(luò)提供的鑄幣(Coinbase)獎(jiǎng)勵(lì),這個(gè)行為很類似于現(xiàn)實(shí)生活中的挖取礦藏的行為,因此這些節(jié)點(diǎn)也常常被比作為“礦工”。工作量證明機(jī)制是開放的,任何人都可以自由加入和退出,這是無須許可的。4.發(fā)行機(jī)制與安全機(jī)制工作量證明即通過算力競爭來獲得初始發(fā)行的比特幣,成了比特幣網(wǎng)絡(luò)這個(gè)電子現(xiàn)金支付系統(tǒng)所需要的去中介化發(fā)行機(jī)制。算力競爭與經(jīng)濟(jì)激勵(lì)的組合,亦成了比特幣網(wǎng)絡(luò)的安全機(jī)制。4.3.1比特幣的數(shù)據(jù)結(jié)構(gòu)1.比特幣的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)區(qū)塊通過哈希指針按照時(shí)間順序單向鏈接形成一條區(qū)塊鏈。每一個(gè)比特幣區(qū)塊都包含區(qū)塊頭和交易記錄兩個(gè)部分。所有的交易記錄通過Merkle樹形式生成Merkle根,這個(gè)Merkle根作為一個(gè)字段,被存放在區(qū)塊頭當(dāng)中。如果在交易記錄中有任何改動(dòng),都會(huì)導(dǎo)致Merkle根的不一致。除了創(chuàng)世區(qū)塊以外,所有的比特幣的區(qū)塊中都包含父區(qū)塊(區(qū)塊頭)的哈希值,以保證區(qū)塊數(shù)據(jù)的真實(shí)有效,不可篡改。原文SHA-256哈希值區(qū)塊鏈導(dǎo)論0ed7c0af1b7cc693c2d012b198d2a4ea200c781e9a22a9a4d0c413cee1fa6079區(qū)塊鏈導(dǎo)論6647ce72b8d554c58cab1bbf88f988b00becbd4c0febd0866d7e3567c0feb412區(qū)塊鏈導(dǎo)論79e90af4904935120240b0aef927acba24ed3e56740e028fc9fe9b60b58e184b4.3.1比特幣的數(shù)據(jù)結(jié)構(gòu)比特幣和以太坊采用相似的哈希函數(shù)和樹形數(shù)據(jù)結(jié)構(gòu),但兩者有著微小又重要的不同。4.3.1比特幣的數(shù)據(jù)結(jié)構(gòu)2.比特幣的區(qū)塊頭數(shù)據(jù)結(jié)構(gòu)比特幣區(qū)塊鏈的一個(gè)區(qū)塊主要由兩大部分組成——區(qū)塊頭和交易數(shù)據(jù)。一個(gè)區(qū)塊頭包括80個(gè)字節(jié),交易數(shù)據(jù)則不固定,最高可以達(dá)到1MB左右。4.3.1比特幣的數(shù)據(jù)結(jié)構(gòu)當(dāng)在比特幣區(qū)塊瀏覽器中查看區(qū)塊的信息時(shí),可以用哈希值或區(qū)塊鏈高度進(jìn)行查詢,還可以看到其中每一個(gè)轉(zhuǎn)賬的詳情。一個(gè)礦工在挖礦時(shí),它的任務(wù)是按照規(guī)則打包形成Merkle樹形式的數(shù)據(jù)與區(qū)塊頭,然后進(jìn)行反復(fù)的哈希計(jì)算,獲得符合目標(biāo)值要求的頭部隨機(jī)數(shù)與幣基交易隨機(jī)數(shù)。比特幣區(qū)塊鏈的數(shù)據(jù)是由一個(gè)個(gè)區(qū)塊組成的,而區(qū)塊所存儲(chǔ)的就是10分鐘內(nèi)的交易。要說明的是,如果當(dāng)前10分鐘內(nèi)的轉(zhuǎn)賬交易較多,一些轉(zhuǎn)賬交易也可能不被包括,而被延遲到之后的區(qū)塊中。4.3.1比特幣的數(shù)據(jù)結(jié)構(gòu)區(qū)塊鏈網(wǎng)絡(luò)基本結(jié)構(gòu)區(qū)塊鏈網(wǎng)絡(luò)由眾多的記賬節(jié)點(diǎn)來維護(hù),一般用戶依靠節(jié)點(diǎn)訪問服務(wù)使用這個(gè)網(wǎng)絡(luò)。4.3.1比特幣的數(shù)據(jù)結(jié)構(gòu)節(jié)點(diǎn)對(duì)于一般用戶來說,僅僅使用用戶客戶端的錢包,可能并不包括區(qū)塊鏈數(shù)據(jù)庫和挖礦功能,例如常見的簡單支付驗(yàn)證節(jié)點(diǎn)(SimplePaymentVerification,SPV)就只有基礎(chǔ)的錢包服務(wù),不存儲(chǔ)完整的區(qū)塊鏈數(shù)據(jù)庫或者提供挖礦功能。在區(qū)塊鏈網(wǎng)絡(luò)中也存在一些有全量區(qū)塊鏈數(shù)據(jù)存儲(chǔ)和路由功能的節(jié)點(diǎn),但它們并不參與挖礦,這些節(jié)點(diǎn)也可認(rèn)為是一般用戶。節(jié)點(diǎn)功能區(qū)塊鏈數(shù)據(jù)庫網(wǎng)絡(luò)節(jié)點(diǎn)路由挖礦功能錢包服務(wù)新一代信息技術(shù)系列教材《區(qū)塊鏈導(dǎo)論》4.3.1比特幣的數(shù)據(jù)結(jié)構(gòu)3.比特幣普通交易的數(shù)據(jù)結(jié)構(gòu)比特幣中的交易主要可以分為兩種:一種是普通交易,一種是鑄幣交易(CoinbaseTransaction)。新一代信息技術(shù)系列教材《區(qū)塊鏈導(dǎo)論》4.3.1比特幣的數(shù)據(jù)結(jié)構(gòu)4.3.1比特幣的數(shù)據(jù)結(jié)構(gòu)4.比特幣鑄幣交易的結(jié)構(gòu)所有比特幣的發(fā)行都是通過鑄幣交易,也稱幣基交易。鑄幣交易是一個(gè)特殊交易,是每一個(gè)比特幣區(qū)塊中的第一筆交易。鑄幣交易沒有輸入,它的輸出是出塊獎(jiǎng)勵(lì),指向礦工的地址。輸出的金額包含兩部分:一部分是出塊獎(jiǎng)勵(lì),一部分是交易手續(xù)費(fèi)。4.3.1比特幣的數(shù)據(jù)結(jié)構(gòu)coinbase數(shù)據(jù)長度在2~100字節(jié)之間。coinbase數(shù)據(jù)除了前面幾個(gè)字節(jié)用于表示區(qū)塊高度,其他數(shù)據(jù)可以任意填寫。例如用于比特幣工作量共識(shí)機(jī)制的外部隨機(jī)數(shù)(extranonce)也就放在coinbase數(shù)據(jù)部分;又中本聰在創(chuàng)世區(qū)塊中的coinbase數(shù)據(jù)中填入了當(dāng)天泰晤士報(bào)頭版文章的標(biāo)題。如果某筆交易引用一個(gè)鑄幣交易輸出,那么至少要等這個(gè)鑄幣交易被后續(xù)100個(gè)區(qū)塊確認(rèn)才可用。這樣的規(guī)定是為了避免因網(wǎng)絡(luò)分叉而導(dǎo)致某筆交易引用無效區(qū)塊中的鑄幣交易輸出。新一代信息技術(shù)系列教材《區(qū)塊鏈導(dǎo)論》4.3.2比特幣的記賬方式作為電子支付系統(tǒng),支付寶的核心是維護(hù)一系列復(fù)雜的賬本,記錄用戶擁有的賬戶余額。當(dāng)用戶支付給商家時(shí),它相應(yīng)地修改賬本,在用戶的賬戶中減去款項(xiàng)、在商家賬戶增加款項(xiàng),實(shí)現(xiàn)支付的功能。支付寶不涉及從無到有的發(fā)行,從銀行轉(zhuǎn)賬到支付寶,支付寶
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色餐飲采購標(biāo)準(zhǔn)合同3篇
- 二零二五年度冷鏈物流倉儲(chǔ)管理服務(wù)合同2篇
- 2025年度苗木種植基地土地租賃合同樣本(含品牌授權(quán))
- 2025年度飛行員勞動(dòng)合同(含飛行業(yè)績獎(jiǎng)勵(lì))4篇
- 中醫(yī)師專屬2024聘用協(xié)議模板版B版
- 個(gè)性化全新承諾協(xié)議文檔(2024版)版B版
- 二零二五年度出租車公司股權(quán)置換及運(yùn)營權(quán)轉(zhuǎn)讓協(xié)議3篇
- 2025年度個(gè)人商鋪?zhàn)赓U稅費(fèi)代繳及財(cái)務(wù)結(jié)算合同4篇
- 二零二五年度農(nóng)民合作社加盟社員入社合同范本
- 個(gè)人寵物寄養(yǎng)服務(wù)2024年度合同
- 皮膚內(nèi)科過敏反應(yīng)病例分析
- 電影《獅子王》的視聽語言解析
- 妊娠合并低鉀血癥護(hù)理查房
- 煤礦反三違培訓(xùn)課件
- 向流程設(shè)計(jì)要效率
- 2024年中國航空發(fā)動(dòng)機(jī)集團(tuán)招聘筆試參考題庫含答案解析
- 當(dāng)代中外公司治理典型案例剖析(中科院研究生課件)
- 動(dòng)力管道設(shè)計(jì)手冊(cè)-第2版
- 2022年重慶市中考物理試卷A卷(附答案)
- Python繪圖庫Turtle詳解(含豐富示例)
- 煤礦機(jī)電設(shè)備檢修技術(shù)規(guī)范完整版
評(píng)論
0/150
提交評(píng)論