




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章區(qū)塊鏈概述1.1區(qū)塊鏈的概念1.2區(qū)塊鏈技術(shù)平臺(tái)1.3比特幣的機(jī)制詳解1.4區(qū)塊鏈應(yīng)用場(chǎng)景1.5區(qū)塊鏈DAPP介紹本章小結(jié)
1.1區(qū)塊鏈的概念
1.1.1區(qū)塊鏈的歷史與演進(jìn)趨勢(shì)從20世紀(jì)80年代開(kāi)始,數(shù)字貨幣技術(shù)就一直是研究的熱門(mén),前后經(jīng)歷了幾代演進(jìn),比較典型的成果包括E-Cash、HashCash、B-money等。
1983年,DavidChaum最早在論文《BlindSignatureforUntraceablePayments》中提出E-Cash貨幣,并于1989年創(chuàng)建了Digicash公司。E-Cash系統(tǒng)是首個(gè)匿名化的數(shù)字加密貨幣(AnonymousCryptographicElectronicMoney或ElectronicCashSystem),基于DavidChaum發(fā)明的盲簽名技術(shù)(盲簽名技術(shù)將在2.5.2小節(jié)中做具體描述),曾被應(yīng)用于部分銀行的小額支付系統(tǒng)中。
1997年,AdamBack發(fā)明了HashCash貨幣,以解決郵件系統(tǒng)中DoS攻擊問(wèn)題(DoS攻擊問(wèn)題就是黑客利用被植入病毒的電腦向服務(wù)端頻繁發(fā)送非正常請(qǐng)求,使服務(wù)器的內(nèi)存和CPU超負(fù)荷,導(dǎo)致其無(wú)法正常工作)。
1998年,WeiDai提出了B-money貨幣,將POW引入數(shù)字貨幣生成過(guò)程中。B-money是首個(gè)面向去中心化設(shè)計(jì)的數(shù)字貨幣,從概念上看已經(jīng)比較完善,但是很遺憾,其未能提出具體的設(shè)計(jì)實(shí)現(xiàn)。
以上三種數(shù)字貨幣都或多或少地依賴(lài)于第三方信用擔(dān)保系統(tǒng)。直到比特幣的出現(xiàn),將工作量證明機(jī)制(POW)與共識(shí)機(jī)制聯(lián)系在一起,才首次真正意義上實(shí)現(xiàn)了一套去中心化的數(shù)字貨幣系統(tǒng)。
比特幣依托的分布式網(wǎng)絡(luò)無(wú)需任何管理機(jī)構(gòu),自身通過(guò)數(shù)學(xué)和密碼學(xué)原理來(lái)確保所有交易的成功進(jìn)行,并且比特幣自身的價(jià)值通過(guò)背后的計(jì)算力進(jìn)行背書(shū)。
隨著比特幣技術(shù)的發(fā)展和業(yè)界對(duì)其系統(tǒng)技術(shù)架構(gòu)了解的日益加深,人們發(fā)現(xiàn)這些技術(shù)還能應(yīng)用在其他領(lǐng)域,于是相關(guān)技術(shù)人員將這些技術(shù)提取并系統(tǒng)化,將它們命名為區(qū)塊鏈。
區(qū)塊鏈技術(shù)起源于比特幣,但迄今的發(fā)展又高于比特幣,形成了一套完備的技術(shù)體系。如果說(shuō)比特幣是影響力巨大的社會(huì)學(xué)實(shí)驗(yàn),那么從比特幣核心設(shè)計(jì)中提煉出來(lái)的區(qū)塊鏈技術(shù),則讓大家看到了塑造更高效、更安全的未來(lái)商業(yè)網(wǎng)絡(luò)的可能。
區(qū)塊鏈技術(shù)現(xiàn)在已經(jīng)在金融、貿(mào)易、征信、物聯(lián)網(wǎng)、共享經(jīng)濟(jì)等諸多領(lǐng)域嶄露頭角。美國(guó)區(qū)塊鏈專(zhuān)家梅蘭妮·斯萬(wàn)(MelanieSwan)針對(duì)區(qū)塊鏈應(yīng)用領(lǐng)域的演化,提出了從區(qū)塊鏈1.0、2.0到3.0的進(jìn)化階段。
1.1.2區(qū)塊鏈的本質(zhì)
1.從網(wǎng)絡(luò)的角度來(lái)看區(qū)塊鏈
區(qū)塊鏈的底層網(wǎng)絡(luò)模型完美地實(shí)現(xiàn)了數(shù)據(jù)分布式存儲(chǔ),比特幣系統(tǒng)迄今為止都沒(méi)有過(guò)一次宕機(jī),這也充分證明了該網(wǎng)絡(luò)模型的穩(wěn)定性。
2.從協(xié)議的觀(guān)點(diǎn)來(lái)看區(qū)塊鏈
區(qū)塊鏈?zhǔn)且环N價(jià)值傳輸信任協(xié)議。過(guò)去互聯(lián)網(wǎng)上沒(méi)有這種協(xié)議,因此無(wú)法進(jìn)行價(jià)值傳輸和確權(quán)?,F(xiàn)在有了區(qū)塊鏈協(xié)議,再加上互聯(lián)網(wǎng)的作用,就可以通過(guò)互聯(lián)網(wǎng)傳輸價(jià)值信息、實(shí)現(xiàn)確權(quán)和權(quán)證轉(zhuǎn)移等功能。
3.從底層技術(shù)角度看區(qū)塊鏈
顧名思義,區(qū)塊鏈?zhǔn)且粋€(gè)鏈狀體,該鏈上分布著一個(gè)個(gè)區(qū)塊,每個(gè)區(qū)塊中存儲(chǔ)了數(shù)據(jù)。因此區(qū)塊鏈更像是一個(gè)數(shù)據(jù)結(jié)構(gòu),通過(guò)這樣的存儲(chǔ)方式防止數(shù)據(jù)被篡改。
4.從密碼學(xué)角度看區(qū)塊鏈
區(qū)塊鏈利用哈希函數(shù)和橢圓曲線(xiàn)數(shù)字簽名算法來(lái)保證區(qū)塊中數(shù)據(jù)的完整性和正確性。
5.從數(shù)據(jù)存儲(chǔ)技術(shù)角度來(lái)看區(qū)塊鏈
區(qū)塊鏈?zhǔn)且粋€(gè)去中心化的分布式數(shù)據(jù)庫(kù),通過(guò)集體協(xié)作,以去中心化的方式來(lái)維護(hù)數(shù)據(jù)庫(kù)的安全,防止其被篡改。區(qū)塊鏈像是一個(gè)巨大的賬本,一個(gè)客觀(guān)的第三方公證處,記錄和見(jiàn)證每一個(gè)交易的成功與失敗。它獨(dú)立地存在著,不受任何人的控制。
6.從對(duì)人類(lèi)文明的影響來(lái)看區(qū)塊鏈
生產(chǎn)工具是人類(lèi)文明發(fā)展水平的重要標(biāo)準(zhǔn),生產(chǎn)方式?jīng)Q定人類(lèi)文明形態(tài)的形成。區(qū)塊鏈?zhǔn)且环N全新的生產(chǎn)工具,并且改進(jìn)了生產(chǎn)方式,因此它對(duì)人類(lèi)文明的影響毋庸置疑是巨大的。
1.1.3
區(qū)塊鏈的技術(shù)特點(diǎn)
1.去中心化
區(qū)塊鏈的底層網(wǎng)絡(luò)是一種稱(chēng)為P2P(PeertoPeer)的點(diǎn)對(duì)點(diǎn)技術(shù)。在這一網(wǎng)絡(luò)中,沒(méi)有中心化服務(wù)器,沒(méi)有中介/第三方機(jī)構(gòu),所有節(jié)點(diǎn)的權(quán)力與義務(wù)都相等。
2.數(shù)據(jù)加密
數(shù)據(jù)在存儲(chǔ)時(shí)采用密碼學(xué)方法對(duì)其進(jìn)行加密并擁有特定的時(shí)序,使數(shù)據(jù)不能輕易被篡改并且可以追溯。區(qū)塊鏈網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)都擁有最新的、完整數(shù)據(jù)庫(kù)的備份(即數(shù)據(jù)的集合),修改單個(gè)節(jié)點(diǎn)的數(shù)據(jù)庫(kù)自然是無(wú)效的。
3.去信任化
系統(tǒng)中所有節(jié)點(diǎn)之間無(wú)須信任也可以進(jìn)行交易,因?yàn)閿?shù)據(jù)庫(kù)和整個(gè)系統(tǒng)的運(yùn)作是公開(kāi)透明的,在系統(tǒng)的規(guī)則和時(shí)間范圍內(nèi),節(jié)點(diǎn)之間無(wú)法欺騙彼此。
4.難以被篡改
所有參與者共同參與數(shù)據(jù)的創(chuàng)建與維護(hù)工作。在沒(méi)有其他參與者允許的情況下,任何一方都不可以對(duì)數(shù)據(jù)進(jìn)行篡改。
5.智能合約
除了以上基礎(chǔ)特性外,隨著需求的日益增長(zhǎng)和技術(shù)的不斷增進(jìn),智能合約這個(gè)新特性也誕生了。智能合約是一種旨在以信息化方式傳播、驗(yàn)證或執(zhí)行合同的計(jì)算機(jī)協(xié)議。
6.可升級(jí)性
區(qū)塊鏈的去中心化特點(diǎn)使得區(qū)塊鏈系統(tǒng)機(jī)制的維護(hù)與升級(jí)工作變得復(fù)雜,但并非沒(méi)有辦法升級(jí)。在區(qū)塊鏈網(wǎng)絡(luò)中,系統(tǒng)機(jī)制的變化意味著網(wǎng)絡(luò)節(jié)點(diǎn)需要遵守新的共識(shí)規(guī)則、驗(yàn)證規(guī)則,而且又可能存在拒絕機(jī)制改動(dòng)、想要延續(xù)舊版本機(jī)制的用戶(hù),而“分叉”手段的存在正是為了滿(mǎn)足各種用戶(hù)的需求,完成對(duì)區(qū)塊鏈系統(tǒng)的升級(jí)。
分叉技術(shù)分為硬分叉和軟分叉兩種。區(qū)塊鏈發(fā)生永久性分歧,在新共識(shí)規(guī)則發(fā)布后,部分沒(méi)有升級(jí)的節(jié)點(diǎn)無(wú)法驗(yàn)證已經(jīng)升級(jí)的節(jié)點(diǎn)產(chǎn)生的區(qū)塊,通常此時(shí)硬分叉就會(huì)發(fā)生。硬分叉是指區(qū)塊格式或交易格式發(fā)生改變時(shí),未升級(jí)的節(jié)點(diǎn)拒絕驗(yàn)證已經(jīng)升級(jí)的節(jié)點(diǎn)生產(chǎn)出的區(qū)塊。不過(guò)已經(jīng)升級(jí)的節(jié)點(diǎn)可以驗(yàn)證未升級(jí)節(jié)點(diǎn)生產(chǎn)出的區(qū)塊,各自延續(xù)自己認(rèn)為正確的鏈,所以分成兩條鏈。
軟分叉是指交易的數(shù)據(jù)結(jié)構(gòu)發(fā)生改變時(shí),未升級(jí)的節(jié)點(diǎn)與已升級(jí)的節(jié)點(diǎn)可以驗(yàn)證彼此產(chǎn)生出的區(qū)塊,因此在區(qū)塊鏈層面上沒(méi)有分叉的鏈,只有組成鏈的區(qū)塊的新舊之分。
綜上所述,區(qū)塊鏈技術(shù)具有分布式數(shù)據(jù)存儲(chǔ)、密碼學(xué)加密、P2P網(wǎng)絡(luò)等技術(shù)應(yīng)用。正是由于這些技術(shù)特點(diǎn)的存在,使得區(qū)塊鏈技術(shù)能夠構(gòu)建一個(gè)去中心化的、點(diǎn)對(duì)點(diǎn)對(duì)等的、不可篡改的、安全的價(jià)值傳播網(wǎng)絡(luò)體系。
1.1.4區(qū)塊鏈的層次模型
1.區(qū)塊鏈的基本架構(gòu)
1)數(shù)據(jù)層
數(shù)據(jù)層主要描述區(qū)塊鏈的物理結(jié)構(gòu),封裝了區(qū)塊鏈的存儲(chǔ)數(shù)據(jù)、鏈?zhǔn)浇Y(jié)構(gòu)、時(shí)間戳、公鑰數(shù)據(jù)、私鑰數(shù)據(jù)、隨機(jī)數(shù)以及非對(duì)稱(chēng)加密等區(qū)塊鏈核心技術(shù),是區(qū)塊鏈中最底層的數(shù)據(jù)結(jié)構(gòu)。
2)網(wǎng)絡(luò)層
網(wǎng)絡(luò)層主要提供點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)通信和數(shù)據(jù)驗(yàn)證機(jī)制,通過(guò)P2P技術(shù)實(shí)現(xiàn)分布式網(wǎng)絡(luò),具備自動(dòng)組網(wǎng)的機(jī)制,節(jié)點(diǎn)間依靠維護(hù)共同的區(qū)塊鏈結(jié)構(gòu)來(lái)保持彼此的通信。
3)共識(shí)層
共識(shí)層主要提供網(wǎng)絡(luò)節(jié)點(diǎn)間達(dá)成共識(shí)的各種共識(shí)算法,含有共識(shí)機(jī)制,能讓高度分散的節(jié)點(diǎn)在無(wú)中心的區(qū)塊鏈中高效地達(dá)成共識(shí)。
4)激勵(lì)層
激勵(lì)層主要提供激勵(lì)措施,鼓勵(lì)節(jié)點(diǎn)參與到區(qū)塊鏈的安全驗(yàn)證工作中。在區(qū)塊鏈技術(shù)體系中加入經(jīng)濟(jì)獎(jiǎng)勵(lì)制度,激勵(lì)遵循規(guī)則來(lái)記賬的節(jié)點(diǎn),對(duì)不遵守規(guī)則的節(jié)點(diǎn)實(shí)施相應(yīng)的懲罰措施。
5)合約層
合約層封裝了各類(lèi)腳本、智能合約和算法,是區(qū)塊鏈可編程的基礎(chǔ),可用于定義區(qū)塊鏈代幣的交易方式和過(guò)程中涉及的種種細(xì)節(jié),并通過(guò)將代碼嵌入?yún)^(qū)塊鏈的方式來(lái)實(shí)現(xiàn)智能合約的自定義,無(wú)需經(jīng)過(guò)第三方就能夠自動(dòng)執(zhí)行,是整個(gè)區(qū)塊鏈信任模塊的基礎(chǔ)。
6)應(yīng)用層
應(yīng)用層封裝了區(qū)塊鏈技術(shù)的應(yīng)用場(chǎng)景和案例,如電腦操作系統(tǒng)中的應(yīng)用程序、移動(dòng)端上的APP等,將區(qū)塊鏈技術(shù)部署在以太坊、EOS平臺(tái)(EOS平臺(tái)在本章1.3.3小節(jié)進(jìn)行講解)等上并在實(shí)際生活中應(yīng)用。
在該架構(gòu)中,數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層是構(gòu)建區(qū)塊鏈技術(shù)的必要元素,缺少任何一層都不能稱(chēng)之為真正意義上的區(qū)塊鏈技術(shù);而激勵(lì)層、合約層和應(yīng)用層不是每個(gè)區(qū)塊鏈應(yīng)用的必要因素,一些區(qū)塊鏈應(yīng)用并不完整包含此三層結(jié)構(gòu)。區(qū)塊鏈基本架構(gòu)如圖1-1所示。
圖1-1區(qū)塊鏈基本架構(gòu)
2.區(qū)塊鏈的組成
每一個(gè)區(qū)塊一般都由區(qū)塊頭和區(qū)塊體兩部分組成,區(qū)塊中所有的數(shù)據(jù)通過(guò)哈希算法得到一個(gè)哈希值,該哈希值存儲(chǔ)在區(qū)塊頭中,并且每一個(gè)區(qū)塊都會(huì)存儲(chǔ)前一個(gè)區(qū)塊的哈希值,這樣就可以把所有區(qū)塊連接在一起,從而形成區(qū)塊鏈。當(dāng)某一方想要篡改某一區(qū)塊中的交易時(shí),勢(shì)必會(huì)導(dǎo)致該區(qū)塊的哈希值發(fā)生變化,這樣一來(lái)后面區(qū)塊中存儲(chǔ)的前一區(qū)塊的哈希值也會(huì)改變,相應(yīng)地,之后所有區(qū)塊的哈希值都會(huì)變化。因此為了使被篡改的交易值得到認(rèn)同,篡改者就要從當(dāng)前節(jié)點(diǎn)開(kāi)始,改變后面所有的區(qū)塊。
由于工作量太大且篡改成本會(huì)遠(yuǎn)遠(yuǎn)超過(guò)收益,因此這基本是不可能完成的事。因此區(qū)塊鏈從一定程度上來(lái)說(shuō),是具有高度安全性的。一個(gè)簡(jiǎn)單的哈希鏈如圖1-2所示。
圖1-2哈希鏈?zhǔn)疽鈭D
區(qū)塊鏈的區(qū)塊頭中含有前一區(qū)塊的哈希值、版本號(hào)、時(shí)間戳、隨機(jī)數(shù)、Merkle根(Merkle根在2.2.4小節(jié)有詳細(xì)講解)、難度目標(biāo)等信息,而區(qū)塊體中包含了此區(qū)塊的所有交易信息,并且,每個(gè)區(qū)塊都有自己的區(qū)塊標(biāo)識(shí)符——區(qū)塊頭哈希值和區(qū)塊高度。區(qū)塊結(jié)構(gòu)如圖1-3所示。
圖1-3區(qū)塊結(jié)構(gòu)示意圖
1.1.5區(qū)塊鏈的基本類(lèi)型
1.公有鏈
公有鏈?zhǔn)侵溉澜缛魏稳硕伎勺x取,任何人都能發(fā)送交易且交易能獲得有效確認(rèn),任何人都能參與共識(shí)過(guò)程的區(qū)塊鏈。共識(shí)過(guò)程決定哪個(gè)區(qū)塊可被添加到區(qū)塊鏈中,同時(shí)明確當(dāng)前狀態(tài)。
公有鏈有如下幾個(gè)特點(diǎn):
(1)保護(hù)用戶(hù)免受開(kāi)發(fā)者影響。在公有鏈中,程序開(kāi)發(fā)者無(wú)權(quán)干涉用戶(hù),區(qū)塊鏈可以保護(hù)其用戶(hù)。
(2)訪(fǎng)問(wèn)門(mén)檻低。任何人都可以訪(fǎng)問(wèn)公有鏈,只要有一臺(tái)能夠聯(lián)網(wǎng)的計(jì)算機(jī)就能滿(mǎn)足最基本的訪(fǎng)問(wèn)條件。
(3)所有數(shù)據(jù)默認(rèn)公開(kāi)。公有鏈中的每個(gè)參與者都可以看到整個(gè)分布式賬本中的所有交易記錄。
2.私有鏈
私有鏈?zhǔn)侵钙鋵?xiě)入權(quán)限僅在一個(gè)組織手里的區(qū)塊鏈,目的是對(duì)讀取權(quán)限或者對(duì)外開(kāi)放權(quán)限進(jìn)行限制。
私有鏈有如下幾個(gè)特點(diǎn):
(1)交易速度非??臁K接墟溨猩倭抗?jié)點(diǎn)具有很高的信任度,并不需要每個(gè)節(jié)點(diǎn)都來(lái)驗(yàn)證一個(gè)交易。
(2)為隱私提供更好的保障。私有鏈的數(shù)據(jù)不會(huì)被公開(kāi),除非擁有規(guī)定的訪(fǎng)問(wèn)權(quán)限,否則無(wú)法獲取鏈中數(shù)據(jù)。
(3)交易成本大幅降低甚至為零。私有鏈上可以進(jìn)行完全免費(fèi)或者至少說(shuō)是非常廉價(jià)的交易。
3.聯(lián)盟鏈
聯(lián)盟鏈?zhǔn)侵钙涔沧R(shí)過(guò)程受到預(yù)選節(jié)點(diǎn)控制的區(qū)塊鏈。例如,對(duì)由15個(gè)金融機(jī)構(gòu)組成的共同體而言,每個(gè)機(jī)構(gòu)都運(yùn)行一個(gè)節(jié)點(diǎn),為了使每個(gè)區(qū)塊生效,需要其中半數(shù)以上機(jī)構(gòu)的確認(rèn)。區(qū)塊鏈上的數(shù)據(jù)可能會(huì)允許每個(gè)人讀取,也可能會(huì)受限于參與者身份,并實(shí)現(xiàn)基于用戶(hù)節(jié)點(diǎn)身份的訪(fǎng)問(wèn)控制功能。
1.1.6區(qū)塊鏈的共識(shí)算法
所謂共識(shí)(Consensus),通俗地講,就是大家對(duì)某一事物的理解達(dá)成一致。
“挖礦”是區(qū)塊鏈中一個(gè)專(zhuān)業(yè)術(shù)語(yǔ),是對(duì)“為獲取比特幣而付出努力”這個(gè)過(guò)程的比喻,它通過(guò)消耗計(jì)算資源來(lái)處理交易,確保網(wǎng)絡(luò)安全,保持網(wǎng)絡(luò)中每個(gè)人的信息同步??梢岳斫鉃槭潜忍貛诺臄?shù)據(jù)中心,區(qū)別在于完全分布式的設(shè)計(jì)。挖礦實(shí)質(zhì)上是在用計(jì)算機(jī)解決一項(xiàng)復(fù)雜的數(shù)學(xué)問(wèn)題,來(lái)保證比特幣網(wǎng)絡(luò)分布式記賬系統(tǒng)的一致性。也就是說(shuō)要算出當(dāng)前區(qū)塊復(fù)雜數(shù)學(xué)問(wèn)題的解。
“礦工”在世界各國(guó)進(jìn)行操作,沒(méi)有人可以控制網(wǎng)絡(luò)。有些礦工為了能挖到比特幣,就不斷提高自己的挖礦設(shè)備的配置,這實(shí)則是提高自己計(jì)算機(jī)計(jì)算哈希函數(shù)的速度。
區(qū)塊可以看做是比特幣賬本的單獨(dú)一頁(yè)紙或者總賬本。在絕大多數(shù)情況下,新區(qū)塊被加入到記錄最后(在比特幣中的名稱(chēng)為塊鏈),一旦寫(xiě)上,就再也不能改變或刪除。每個(gè)區(qū)塊記錄了它被創(chuàng)建之前發(fā)生的所有事件。
FLP原理實(shí)際上說(shuō)明在允許節(jié)點(diǎn)失效的情況下,純粹異步系統(tǒng)無(wú)法確保在有限時(shí)間內(nèi)完成一致性。但這不意味著我們無(wú)法設(shè)計(jì)出一個(gè)基于區(qū)塊鏈技術(shù)的共識(shí)算法。在工程領(lǐng)域中,通過(guò)控制最壞情形(如一致性被破壞)的發(fā)生概率,將其降低至一個(gè)可接受的范圍后,我們便可以考慮在實(shí)際場(chǎng)合中使用該算法了。
共識(shí)算法絕非區(qū)塊鏈的“專(zhuān)利”。任何分布式系統(tǒng)皆可針對(duì)自身性質(zhì),采用不同的共識(shí)算法。
下面將首先介紹幾個(gè)經(jīng)典的共識(shí)算法。
1.?Paxos算法
Paxos算法應(yīng)用于分布式系統(tǒng)中存在故障、但不存在惡意節(jié)點(diǎn)的場(chǎng)景下的共識(shí)達(dá)成問(wèn)題,其原理基于“兩階段提交”并進(jìn)行泛化和擴(kuò)展,通過(guò)消息傳遞來(lái)逐步消除系統(tǒng)中的不確定狀態(tài)。Paxos能保證在超過(guò)一半的節(jié)點(diǎn)正常工作時(shí),系統(tǒng)總能以較大概率達(dá)成共識(shí)。
1)?Paxos算法的邏輯角色和約束要求
Paxos算法將節(jié)點(diǎn)分為三種邏輯角色,在實(shí)現(xiàn)上同一個(gè)節(jié)點(diǎn)可以擔(dān)任多個(gè)角色。
(1)
Proposer:提議發(fā)起者。Proposer可以有多個(gè),Proposer提出提案(value)。所謂value,可以是任何操作,比如“設(shè)置某個(gè)變量的值為value”。不同的Proposer可以提出不同的value,例如某個(gè)Proposer提議“將變量X設(shè)置為1”,另一個(gè)Proposer提議“將變量X設(shè)置為2”。但對(duì)同一輪Paxos過(guò)程,最多只有一個(gè)value被批準(zhǔn)。
(2)?Acceptor:提議接受者。Acceptor有N個(gè),Proposer提出的value必須獲得超過(guò)半數(shù)(N/2+1)的Acceptor批準(zhǔn)后才能通過(guò)。Acceptor之間完全對(duì)等獨(dú)立。
(3)
Learner:提議學(xué)習(xí)者。上面提到只要超過(guò)半數(shù)Acceptor通過(guò)即可獲得通過(guò),那么Learner角色的目的就是把通過(guò)的確定性取值同步給其他未確定的Acceptor。
算法需要滿(mǎn)足Safety和Liveness兩方面的約束要求。Safety約束用于保證提案(value)結(jié)果是對(duì)的,無(wú)歧義的,不會(huì)出現(xiàn)錯(cuò)誤情況。Liveness約束用于保證提案過(guò)程能在有限時(shí)間內(nèi)完成。
2)?Paxos算法的詳細(xì)過(guò)程
Paxos算法的詳細(xì)過(guò)程如下所述:
(1)準(zhǔn)備階段:
·提案者將自己計(jì)劃提交的提案編號(hào)作為準(zhǔn)備信息(Prepare(n))發(fā)送給多個(gè)接收者,試探是否可以鎖定多數(shù)接收者的支持。
·接受者時(shí)刻保留收到過(guò)提案的最大編號(hào)和接受的最大提案。如果收到的提案號(hào)比目前保留的最大提案號(hào)還大,則返回自己已接受的提案(如果還未接受過(guò)任何提案,則為空)給提案者,更新當(dāng)前最大提案號(hào),并承諾不再接受小于最大提案號(hào)的提案。
(2)提交階段:
·提案者如果收到大多數(shù)接受者的回復(fù),則可準(zhǔn)備發(fā)出帶有剛才提案號(hào)的接受信息(Accept(value,n)),否則直接視為提案失敗。
·接受者接收到“接受”信息后,如果發(fā)現(xiàn)提案編號(hào)不小于已接收的最大提案編號(hào),則接受該提案,并更新接受的最大提案。
·一旦多數(shù)接受者接受了共同的提案值,則形成決議并成為最終確認(rèn)案,Proposer將通知Learner更新提案內(nèi)容。至此,一輪Paxos過(guò)程結(jié)束。
3)?Paxos算法的運(yùn)行過(guò)程
下面將配合圖例(圖1-4)講解Paxos算法的運(yùn)行過(guò)程。
(1)
Proposer1把提案1的準(zhǔn)備請(qǐng)求發(fā)送給所有Acceptor,并接收到來(lái)自Acceptor1與Acceptor2的回復(fù)(Acceptor3因網(wǎng)絡(luò)原因未能收到請(qǐng)求)。因?yàn)锳cceptor1、Acceptor2此前從未接受過(guò)任何提案,所以回復(fù)為空,同時(shí)更新接收的最大提案。(時(shí)間軸①)
(2)
Proposer2把提案2發(fā)送給所有Acceptor,并接收到來(lái)自Acceptor2與Acceptor3的回復(fù)。兩個(gè)Acceptor此前從未接受過(guò)任何提案,因此回復(fù)為空,同時(shí)更新接收的最大提案。(時(shí)間軸②)
(3)
Proposer1獲得超過(guò)半數(shù)準(zhǔn)備請(qǐng)求的回復(fù),且收到的回復(fù)全為空值,因此繼續(xù)使用自己的提案值,并發(fā)送提案1的“接受”請(qǐng)求至回復(fù)它的Acceptor。Acceptor1、Acceptor2收到接受請(qǐng)求后檢查提案號(hào)與已接收的最大提案號(hào),Acceptor1同意請(qǐng)求并將提案作為自己的已接受提案,Acceptor2拒絕請(qǐng)求。因?yàn)闆](méi)有超過(guò)半數(shù),所以提案失敗。(時(shí)間軸③)
(4)
Proposer2獲得超過(guò)半數(shù)準(zhǔn)備請(qǐng)求的回復(fù),且收到的回復(fù)全為空值,因此繼續(xù)使用自己的提案值,發(fā)送提案2的“接受”請(qǐng)求至回復(fù)它的Acceptor。Acceptor2、Acceptor3收到接受請(qǐng)求后檢查提案號(hào)與已接收的最大提案號(hào),兩個(gè)Acceptor都同意了Proposer2的接受請(qǐng)求,超過(guò)半數(shù),故一輪Paxos過(guò)程結(jié)束。(時(shí)間軸④)
如果在時(shí)間軸④中某個(gè)Acceptor至Proposer2的回復(fù)并未能發(fā)送成功,那么該提案2將會(huì)因支持者不超過(guò)半數(shù)而失敗。此時(shí)Acceptor1、Acceptor2、Acceptor3三者皆留有一份自己已接受的提案。而最終通過(guò)的提案的值無(wú)論如何都會(huì)繼承提案2的值,請(qǐng)讀者自行思考其中的原因。
圖1-4
Paxos算法圖例
2.拜占庭問(wèn)題與PBFT算法
1)拜占庭算法概述
拜占庭問(wèn)題更為廣泛,討論的是允許存在少數(shù)結(jié)點(diǎn)作惡(消息可能偽造)場(chǎng)景下的一致性達(dá)成問(wèn)題。在公有鏈環(huán)境中,這一需求尤為突出。
拜占庭問(wèn)題是LeslieLamport等科學(xué)家于1982年提出的用來(lái)解釋一致性問(wèn)題的一個(gè)虛構(gòu)模型。問(wèn)題中,守衛(wèi)邊境的多個(gè)將軍(系統(tǒng)中的多個(gè)節(jié)點(diǎn))需要通過(guò)信使來(lái)傳遞消息,以達(dá)成某些一致的決定。但由于將軍中可能存在叛徒(系統(tǒng)中節(jié)點(diǎn)出錯(cuò)),這些叛徒將努力向不同的將軍發(fā)送不同的消息,試圖干擾共識(shí)的達(dá)成。拜占庭問(wèn)題即為在此情況下,如何讓忠誠(chéng)的將軍們達(dá)成行動(dòng)的一致。該模型指出,對(duì)于拜占庭問(wèn)題來(lái)說(shuō),假如節(jié)點(diǎn)總數(shù)為N,叛變將軍數(shù)為F,則當(dāng)N≥3F+1時(shí),問(wèn)題才有解。
例如,N
=
3,F(xiàn)
=
1時(shí),可分為兩種情況:
(1)提案人不是叛變者。提案人發(fā)送一個(gè)提案出來(lái),叛變者可以宣稱(chēng)收到的是相反的命令。則第三個(gè)人(忠誠(chéng)者)收到兩個(gè)相反的消息,無(wú)法判斷誰(shuí)是叛徒,且無(wú)法達(dá)成一致。
(2)提案人是叛變者。提案人發(fā)送兩個(gè)相反的提案給另外兩個(gè)人,另外兩個(gè)人都收到兩個(gè)相反的消息,無(wú)法判斷誰(shuí)是叛徒,且無(wú)法達(dá)成一致。
2)?PBFT算法的基本過(guò)程
1999年,Castro和Liskov提出的PBFT(PracticalByzantineFaultTolerance,實(shí)用拜占庭容錯(cuò))是第一個(gè)得到廣泛應(yīng)用的BFT算法。在PBFT算法中,如果超過(guò)三分之二的節(jié)點(diǎn)正常,整個(gè)系統(tǒng)就可以正常工作。PBFT算法采用密碼學(xué)相關(guān)技術(shù)(RSA簽名算法、消息驗(yàn)證編碼和摘要)確保消息傳遞過(guò)程中算法無(wú)法被篡改和破壞。
PBFT算法的基本過(guò)程如下:
(1)首先通過(guò)輪換或隨機(jī)算法選出某個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn),此后只要主節(jié)點(diǎn)不切換,則成為一個(gè)視圖(view)。
(2)在某視圖中,客戶(hù)端將請(qǐng)求<Request,operation,timestamp,client>發(fā)送給主節(jié)點(diǎn),主節(jié)點(diǎn)負(fù)責(zé)廣播請(qǐng)求到所有其他副本節(jié)點(diǎn)。
(3)所有節(jié)點(diǎn)處理完請(qǐng)求,將處理結(jié)果<Reply,view,timestamp,client,id_node,response>返回給客戶(hù)端。客戶(hù)端檢查是否收到了至少F+1個(gè)來(lái)自不同節(jié)點(diǎn)的相同結(jié)果,并將其作為最終結(jié)果。
3)主節(jié)點(diǎn)的廣播過(guò)程
主節(jié)點(diǎn)的廣播過(guò)程包括預(yù)準(zhǔn)備(pre-prepare)階段、準(zhǔn)備(prepare)和提交(commit)階段三個(gè)階段的處理。預(yù)準(zhǔn)備和準(zhǔn)備階段確保在同一視圖內(nèi)請(qǐng)求的發(fā)送順序是正確的;準(zhǔn)備和提交階段則確保在不同視圖之間的確認(rèn)請(qǐng)求是保序的。
(1)預(yù)準(zhǔn)備階段。
(2)準(zhǔn)備階段。
(3)提交階段。
在區(qū)塊鏈網(wǎng)絡(luò)中,節(jié)點(diǎn)為了讓自己的賬本與其他節(jié)點(diǎn)賬本保持一致,需要共識(shí)機(jī)制,但與上述共識(shí)算法存在不同點(diǎn)。例如通過(guò)設(shè)立與區(qū)塊鏈代幣相關(guān)的機(jī)制,采用經(jīng)濟(jì)上的懲罰來(lái)制約破壞者;放寬對(duì)最終一致性確認(rèn)的需求,鏈可以出現(xiàn)短暫分叉并最終按已知最長(zhǎng)的鏈進(jìn)行擴(kuò)展;通過(guò)增加提案成本來(lái)限制一段時(shí)間內(nèi)整個(gè)網(wǎng)絡(luò)中出現(xiàn)的提案?jìng)€(gè)數(shù)。
3.常見(jiàn)的共識(shí)算法
目前在區(qū)塊鏈中,常見(jiàn)的共識(shí)算法有如下幾種:
1)
POW
工作量證明(ProofOfWork,POW)是第一個(gè)成功的去中心化區(qū)塊鏈共識(shí)算法。
工作量證明最顯著的優(yōu)點(diǎn)是,它在過(guò)去的幾年里得到了實(shí)踐的證明,這個(gè)比許多其他共識(shí)算法都更值得一提。然而,工作量證明并不是沒(méi)有缺點(diǎn),它的缺點(diǎn)為采礦的大量電力消耗和低交易吞吐量。
2)?POS
對(duì)于權(quán)益證明(Proof
Of
State,POS),有很多實(shí)施提議。在所有的實(shí)施方案中,權(quán)益證明均要求所有的參與者抵押一部分他們所擁有的代幣來(lái)驗(yàn)證交易。不同于通過(guò)完成復(fù)雜計(jì)算問(wèn)題來(lái)驗(yàn)證交易,驗(yàn)證者需要通過(guò)鎖定代幣來(lái)完成交易驗(yàn)證。POS機(jī)制類(lèi)似于現(xiàn)實(shí)生活中的股東機(jī)制,擁有股份越多的人越容易獲取記賬權(quán),同時(shí)越傾向于維護(hù)網(wǎng)絡(luò)的正常工作,否則他們手中的‘代幣’將失去應(yīng)有的價(jià)值。
3)?DPOS
雖然委托權(quán)益證明(Delegated
Proof
Of
State,DPOS)和權(quán)益證明名字差不多,但它們的實(shí)施細(xì)節(jié)卻有顯著的不同。在委托權(quán)益證明中,不同于在權(quán)益證明中用抵押代幣的方式來(lái)驗(yàn)證交易,它通過(guò)代幣的持有者投票產(chǎn)生一組交易驗(yàn)證者(超級(jí)節(jié)點(diǎn))。
委托權(quán)益證明既是去中心化的,因?yàn)榫W(wǎng)絡(luò)中的所有參與者都能參與投票;但也是中心化的,因?yàn)橹挥幸唤M交易驗(yàn)證者,這樣的好處就是提高了交易和驗(yàn)證的速度。
委托權(quán)益證明的實(shí)施需要維持良好的信譽(yù)、維持持續(xù)投票流程以及正常進(jìn)行驗(yàn)證節(jié)點(diǎn)的更換,以保證選取產(chǎn)生的驗(yàn)證者有良好的責(zé)任心和誠(chéng)實(shí)感。
委托權(quán)益證明的優(yōu)勢(shì)在于良好的可擴(kuò)展性以及快速的交易驗(yàn)證,但是缺點(diǎn)在于部分中心化,并且治理模式還沒(méi)有在大的區(qū)塊鏈項(xiàng)目中被證明是行之有效的。
4)?BFT
拜占庭容錯(cuò)機(jī)制(ByzantineFaultTolerance,BFT)本質(zhì)上是一個(gè)高度技術(shù)性的算法(像其他共識(shí)算法一樣)。一般來(lái)說(shuō),加密貨幣項(xiàng)目所采用的拜占庭容錯(cuò)機(jī)制是通過(guò)允許將軍(節(jié)點(diǎn))分別管理一條鏈,并在彼此之間以共享消息的方式來(lái)確保正確的交易記錄和每個(gè)節(jié)點(diǎn)的誠(chéng)實(shí)性的。
在應(yīng)用上,比較為人熟知的是,拜占庭容錯(cuò)機(jī)制被用于瑞波(驗(yàn)證節(jié)點(diǎn)由瑞波團(tuán)隊(duì)選出)和恒星幣(任何人都可以當(dāng)驗(yàn)證節(jié)點(diǎn),信任節(jié)點(diǎn)由社區(qū)共識(shí)產(chǎn)生)。
拜占庭容錯(cuò)機(jī)制的優(yōu)勢(shì)在于其所具有的可擴(kuò)展性和低廉的轉(zhuǎn)賬費(fèi)用,但是它和委托權(quán)益證明一樣,引入了部分中心化。
每個(gè)共識(shí)機(jī)制都有其獨(dú)特的優(yōu)點(diǎn)和權(quán)衡,在選擇時(shí)應(yīng)當(dāng)理性權(quán)衡。值得注意的是,這是一個(gè)不斷發(fā)展的領(lǐng)域,也存在許多其他方法,并且可能會(huì)出現(xiàn)新的方法。
1.2區(qū)塊鏈技術(shù)平臺(tái)
1.2.1比特幣比特幣(Bitcoin)是第一個(gè)區(qū)塊鏈應(yīng)用,是一種P2P形式的數(shù)字貨幣,采用點(diǎn)對(duì)點(diǎn)的傳輸方式,是一個(gè)去中心化的支付系統(tǒng)。比特幣使用工作量證明機(jī)制(POW)來(lái)達(dá)成網(wǎng)絡(luò)間節(jié)點(diǎn)的共識(shí)。比特幣是一個(gè)公有鏈,任何節(jié)點(diǎn)都可以加入,沒(méi)有訪(fǎng)問(wèn)方面的權(quán)限;不支持智能合約,但是支持一些有局限性(沒(méi)有循環(huán)語(yǔ)句和條件控制語(yǔ)句)的編程腳本語(yǔ)言來(lái)運(yùn)作簡(jiǎn)單的腳本程序。
比特幣經(jīng)濟(jì)是指通過(guò)使用整個(gè)P2P網(wǎng)絡(luò)中眾多節(jié)點(diǎn)構(gòu)成的分布式數(shù)據(jù)庫(kù)來(lái)確認(rèn)并記錄所有的交易行為,并使用密碼學(xué)的設(shè)計(jì)來(lái)確保貨幣流通中各個(gè)環(huán)節(jié)的安全性。這一概念為后續(xù)出現(xiàn)的區(qū)塊鏈貨幣所沿用,記錄交易行為的分布式數(shù)據(jù)庫(kù)被稱(chēng)為“賬本”。結(jié)合對(duì)先前區(qū)塊鏈層次模型的介紹,我們不難理解區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)對(duì)于交易數(shù)據(jù)起到的保護(hù)作用。比特幣賬本樣例參見(jiàn)圖1-5,其原理和運(yùn)行機(jī)制在1.3小節(jié)會(huì)進(jìn)行詳細(xì)介紹。
圖1-5比特幣“賬本”
1.2.2以太坊
以太坊(Ethereum)是一個(gè)開(kāi)源的有智能合約功能的公共區(qū)塊鏈平臺(tái),通過(guò)其專(zhuān)用加密貨幣——以太幣(Ether)——提供去中心化的虛擬機(jī)(即以太虛擬機(jī),EthereumVirtualMachine),以處理點(diǎn)對(duì)點(diǎn)合約。以太坊簡(jiǎn)要來(lái)說(shuō)就是區(qū)塊鏈技術(shù)與智能合約的結(jié)合產(chǎn)物。
在以太坊中,每個(gè)賬戶(hù)都有一個(gè)Key-Value形式的持久化存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)Storage。智能合約需要通過(guò)Storage存儲(chǔ)狀態(tài)變量的值,而用戶(hù)通過(guò)Storage存儲(chǔ)以太坊代幣儲(chǔ)值。以太坊中所有用戶(hù)的Storage所構(gòu)成的集合被稱(chēng)為State(狀態(tài)),通過(guò)某種方式記錄于區(qū)塊中。每次交易后State會(huì)發(fā)生改變。如在圖1-6中,賬戶(hù)0x892bf92f是一個(gè)合約賬號(hào)(與被稱(chēng)為‘外部賬號(hào)’的普通用戶(hù)相對(duì)應(yīng))。它本身可以存儲(chǔ)代幣值,其自定義的合約代碼的功能是根據(jù)交易參數(shù)tx.data[0]的值,修改狀態(tài)變量數(shù)組中對(duì)應(yīng)序號(hào)的元素值為tx.data[1](前提是原有的元素值為空)。
圖1-6以太坊與智能合約
1.2.3
EOS
EOS(Enterprise
Operation
System,企業(yè)操作系統(tǒng))是商用分布式應(yīng)用設(shè)計(jì)的一款區(qū)塊鏈操作系統(tǒng),具有超高性能。它的設(shè)計(jì)目標(biāo)是支持大量用戶(hù)(可能是上億級(jí)別的)、超高性能(支持百萬(wàn)級(jí)TPS)、消除手續(xù)費(fèi)、具備橫向和縱向性能擴(kuò)展能力。
EOS區(qū)塊鏈操作系統(tǒng)具備強(qiáng)大的性能,能夠同時(shí)運(yùn)作多個(gè)應(yīng)用程序。EOS底層平臺(tái)對(duì)開(kāi)發(fā)者友好,設(shè)計(jì)了一個(gè)類(lèi)似Facebook公司的現(xiàn)代網(wǎng)站開(kāi)發(fā)結(jié)構(gòu),大大降低了區(qū)塊鏈應(yīng)用程序的開(kāi)發(fā)難度。
EOS就像有一組有人和機(jī)器人的腳本,他們之間不斷交換著信息。每個(gè)用戶(hù)和機(jī)器人在系統(tǒng)中都擁有自己的地址,當(dāng)交易信息被發(fā)送后,不一定能夠保證接收成功。如果交易信息被成功接收,就意味著接收方能夠根據(jù)智能合約觸發(fā)相應(yīng)的操作。同時(shí),EOS系統(tǒng)中的接收方和被抄送方可以拒收交易信息,此時(shí)交易信息傳送失敗。EOS區(qū)塊鏈?zhǔn)且粋€(gè)透明的系統(tǒng),并且可以永久記錄消息,它記錄著EOS系統(tǒng)內(nèi)部所有傳遞成功的消息。
EOS上的應(yīng)用程序不需要用戶(hù)為區(qū)塊鏈上的操作支付費(fèi)用。像傳統(tǒng)的基于Web的應(yīng)用程序一樣,EOS應(yīng)用程序也為開(kāi)發(fā)人員提供了程序運(yùn)行需要的資源。這意味著我們可以創(chuàng)建免費(fèi)的區(qū)塊鏈應(yīng)用程序,新用戶(hù)無(wú)需經(jīng)歷繁瑣的電子貨幣購(gòu)買(mǎi)流程,就可用直接使用區(qū)塊鏈上的應(yīng)用程序以及直接在區(qū)塊鏈上構(gòu)建應(yīng)用程序。與之前底層區(qū)塊鏈平臺(tái)技術(shù)相比,EOS使大規(guī)模分布式應(yīng)用程序相互通信得以實(shí)現(xiàn)。
1.2.4區(qū)塊鏈商用平臺(tái)——超級(jí)賬本
2015年12月,由Linux基金會(huì)牽頭,IBM、Intel、Cisco等共同宣布了Hyperledger聯(lián)合項(xiàng)目成立,Hyperledger
Fabric也是該聯(lián)盟同時(shí)推出的第一個(gè)孵化中的項(xiàng)目。
超級(jí)賬本項(xiàng)目為透明、公開(kāi)、去中心化的企業(yè)級(jí)分布式賬本技術(shù)提供了開(kāi)源參考實(shí)現(xiàn)。它首次將區(qū)塊鏈技術(shù)引入到分布式聯(lián)盟賬本的應(yīng)用場(chǎng)景中,為未來(lái)基于區(qū)塊鏈技術(shù)打造高效率的商業(yè)網(wǎng)絡(luò)打下基礎(chǔ)。
1.?Fabric
Fabric是區(qū)塊鏈的基礎(chǔ)核心平臺(tái),支持PBFT(拜占庭容錯(cuò)算法)等新的共識(shí)機(jī)制,支持權(quán)限管理。Fabric是數(shù)字事件(交易)的賬本,這個(gè)賬本由多個(gè)參與者共享,每個(gè)參與者都在系統(tǒng)中擁有權(quán)益。賬本只有在所有參與者達(dá)成共識(shí)的情況下才能夠更新。交易可以具有保密性和私有性。每個(gè)參與者(需提供身份證明)可在網(wǎng)絡(luò)成員服務(wù)頁(yè)面進(jìn)行注冊(cè),以獲取系統(tǒng)的訪(fǎng)問(wèn)權(quán)限,使用密鑰導(dǎo)出的復(fù)雜函數(shù)對(duì)交易內(nèi)容進(jìn)行加密,確保只有指定的參與者才能看到內(nèi)容。Fabric的結(jié)構(gòu)(見(jiàn)圖1-7)分為身份服務(wù)、策略服務(wù)、區(qū)塊鏈服務(wù)、智能合約服務(wù)四種。
圖1-7
Fabric的結(jié)構(gòu)示意圖
2.?Sawtooth
Sawtooth是Intel主要發(fā)起和貢獻(xiàn)的區(qū)塊鏈平臺(tái),支持全新的基于硬件芯片的共識(shí)機(jī)制ProofOfElapsedTime(POET),時(shí)間消逝量。
3.?Iroha
Iroha是賬本平臺(tái)項(xiàng)目,基于C++?實(shí)現(xiàn),帶有面向Web和Mobile的特性。
4.?BlockchainExplorer
BlockchainExplorer提供Web操作界面,可以查詢(xún)綁定區(qū)塊鏈的狀態(tài)(如區(qū)塊個(gè)數(shù)、交易歷史)信息等。
5.?Cello
Cello可提供區(qū)塊鏈平臺(tái)的部署和運(yùn)行時(shí)管理功能,應(yīng)用開(kāi)發(fā)者無(wú)需關(guān)心如何搭建和維護(hù)區(qū)塊鏈。
6.?Indy
Indy可提供基于分布式賬本技術(shù)的數(shù)字身份管理機(jī)制。
7.?Composer
Composer可提供面向鏈碼開(kāi)發(fā)的高級(jí)語(yǔ)言支持,并可自動(dòng)生成鏈碼等。
8.?Burrow
Burrow可提供以太坊虛擬機(jī)的支持,實(shí)現(xiàn)支持高效交易的帶權(quán)限的區(qū)塊鏈平臺(tái)。
表1-1中列出了以上幾個(gè)平臺(tái)所使用的共識(shí)機(jī)制、區(qū)塊鏈類(lèi)型、開(kāi)發(fā)語(yǔ)言、是否支持智能合約和每秒事務(wù)處理量(TPS)等性能指標(biāo),以便讀者更加直觀(guān)地對(duì)各平臺(tái)進(jìn)行對(duì)比。
1.3比特幣的機(jī)制詳解
1.3.1工作量證明——挖礦在比特幣網(wǎng)絡(luò)這個(gè)去中心化的電子記賬系統(tǒng)中,當(dāng)A發(fā)送10個(gè)比特幣給B時(shí),A需要把這個(gè)信息廣播給網(wǎng)絡(luò)中的其他人。同理,B發(fā)送5個(gè)比特幣給C,C也需要把這個(gè)消息廣播給網(wǎng)絡(luò)中的所有人。該廣播記賬過(guò)程如圖1-8所示。圖1-8簡(jiǎn)化版比特幣記賬演示
1.3.2身份認(rèn)證
傳統(tǒng)的身份認(rèn)證方法包括人臉識(shí)別、手寫(xiě)簽字、指紋識(shí)別等,但是由于它們都可以被電子拷貝,因此這些方法在電子支付中都不現(xiàn)實(shí)。
傳統(tǒng)身份認(rèn)證方法中的賬戶(hù)地址和密碼的對(duì)應(yīng)關(guān)系是依靠數(shù)據(jù)庫(kù)中存儲(chǔ)的表格來(lái)實(shí)現(xiàn)的。賬戶(hù)由第三方提供,密碼則由用戶(hù)自己設(shè)置,并沒(méi)有數(shù)學(xué)上的關(guān)系。
舉個(gè)例子,A要轉(zhuǎn)賬10個(gè)比特幣給B,那么A首先需要將這個(gè)記錄進(jìn)行哈希運(yùn)算得到摘要,再對(duì)摘要用私鑰進(jìn)行加密得到密碼,并將A轉(zhuǎn)賬10個(gè)比特幣給B的這個(gè)記錄、公鑰和密碼廣播給比特幣網(wǎng)絡(luò)中的其他人;其他人對(duì)記錄進(jìn)行哈希運(yùn)算得到摘要1,再用公鑰解密密碼得到摘要2;對(duì)比摘要1和摘要2,若相同,則確定是A廣播的。以上就是防偽的過(guò)程,即電子簽名技術(shù),如圖1-9所示。
圖1-9電子簽名技術(shù)
1.3.3雙重支付問(wèn)題
1.余額檢查——追溯與記錄
比特幣網(wǎng)絡(luò)中,鏈?zhǔn)怯梢粋€(gè)個(gè)區(qū)塊組成的,每一個(gè)塊上都有交易記錄,并且是公開(kāi)透明的,每一個(gè)用戶(hù)都能看到,若A要轉(zhuǎn)賬10個(gè)比特幣給B,就要廣播,那么網(wǎng)絡(luò)中的其他人就會(huì)不斷往前追溯塊中的記錄,來(lái)檢查A用戶(hù)是否有那么多的比特幣可被用來(lái)轉(zhuǎn)賬,若計(jì)算余額足夠就會(huì)將該交易記錄下來(lái),如果計(jì)算的金額不足,那么就拒絕接收該交易消息。
2.次序檢查——分歧與一致
假設(shè)A本身賬戶(hù)只有18個(gè)比特幣,卻同時(shí)分別發(fā)送10個(gè)比特幣給B和C時(shí),由于有一次的交易金額不足,因此在比特幣網(wǎng)絡(luò)中,有一部分用戶(hù)只接收與B的交易記錄,有一部分用戶(hù)只接收與C的交易記錄。當(dāng)其中有一個(gè)人挖礦成功,把他打包的交易記錄鏈接到區(qū)塊鏈中去,那么這個(gè)人所記錄的A的記錄就成為“官方”的了,其他記錄錯(cuò)了的用戶(hù)會(huì)自動(dòng)站隊(duì)過(guò)去。
舉個(gè)例子,攻擊者馬洛里在Carol的畫(huà)廊買(mǎi)了三幅畫(huà),馬洛里轉(zhuǎn)賬比特幣給Carol,進(jìn)而完成了一筆交易。Carol確認(rèn)交易登記在鏈上后,就把畫(huà)交給馬洛里。此時(shí)馬洛里的一個(gè)同伙Paul開(kāi)始了51%攻擊,首先Paul利用自己礦池的算力重新計(jì)算包含這筆交易的塊,并且在新塊里將原來(lái)的交易替換成了另一筆交易(比如直接轉(zhuǎn)給了馬洛里的另一個(gè)錢(qián)包,而非Carol的錢(qián)包);然后Paul在偽造塊的基礎(chǔ)上又快速計(jì)算出新的塊,加高分叉鏈高度,使得這個(gè)包含替換交易的分叉區(qū)塊鏈替代了原來(lái)的鏈條,而Carol從合法交易中獲得的比特幣將不再存在。
為了避免這類(lèi)攻擊,一種方法是在交易上鏈后,額外等待新的若干個(gè)區(qū)塊出塊后再正式交付。這種方法可降低51%攻擊成功的可能性。
1.3.4防止篡改
1.最長(zhǎng)鏈原則
由于哈希值的產(chǎn)生是隨機(jī)的,再加上網(wǎng)絡(luò)的延遲,所以曠工在挖礦時(shí),可能存在兩個(gè)礦工同時(shí)挖出區(qū)塊的可能,這時(shí)候區(qū)塊鏈就會(huì)分叉。此時(shí)可以等待下一個(gè)塊的出現(xiàn),看下一個(gè)塊首先出現(xiàn)在哪一個(gè)分叉上,出現(xiàn)在哪條鏈上,哪條鏈就更長(zhǎng)一點(diǎn),哪條鏈就是主鏈,同時(shí)另一條就被舍棄,這就是“最長(zhǎng)鏈原則”。
2.防篡改
區(qū)塊鏈的防篡改是由以下三點(diǎn)來(lái)保證的:
一是分布式賬本技術(shù)。區(qū)塊鏈創(chuàng)建了一個(gè)多點(diǎn)分布、數(shù)據(jù)一致的分布式記賬技術(shù)。一個(gè)黑客組織可能黑掉一個(gè)銀行的數(shù)據(jù)庫(kù),往自己的賬號(hào)加錢(qián),但面對(duì)比特幣這種有數(shù)千萬(wàn)節(jié)點(diǎn)的分布式網(wǎng)絡(luò),必須要在短時(shí)間內(nèi)黑掉一半以上(51%)的節(jié)點(diǎn),才能更改數(shù)據(jù)。這技術(shù)難度太大了,幾乎不可能實(shí)現(xiàn)。
二是巨大的計(jì)算力成本。要更改數(shù)據(jù),就要更改一整個(gè)區(qū)塊,即比特幣中的挖礦(做一個(gè)單向的哈希算法)。這需要付出巨大的算力成本,個(gè)人或組織要具備這種算力是不太現(xiàn)實(shí)的。
三是密碼學(xué)的應(yīng)用。區(qū)塊鏈采用了大量的密碼學(xué)技術(shù),如非對(duì)稱(chēng)算法、橢圓曲線(xiàn)、RSA等。非對(duì)稱(chēng)算法背后有強(qiáng)大的數(shù)學(xué)模型做支撐,現(xiàn)有的計(jì)算機(jī)技術(shù)還很難突破底層的數(shù)學(xué)難題。并且區(qū)塊鏈?zhǔn)且粚右粚盈B加的區(qū)塊,要更改某個(gè)區(qū)塊,必須從頭開(kāi)始更改所有區(qū)塊。改一個(gè)區(qū)塊的算力成本都非常大,可想而知要更改這么多區(qū)塊的難度有多大。
1.3.5閃電網(wǎng)絡(luò)
比特幣交易網(wǎng)絡(luò)最為人詬病的一點(diǎn)便是交易性能——全網(wǎng)絡(luò)每秒7筆左右的交易速度,遠(yuǎn)低于傳統(tǒng)的金融交易速度;同時(shí)等待6個(gè)塊的可行確認(rèn)(為了抵御之前所提及的雙重支付攻擊),將導(dǎo)致約一個(gè)小時(shí)的最終確認(rèn)時(shí)間。
為了提升性能,比特幣社區(qū)提出了閃電網(wǎng)絡(luò)等創(chuàng)新的設(shè)計(jì)。
閃電網(wǎng)絡(luò)主要通過(guò)引入智能合約的思想來(lái)完善鏈下的交易渠道。核心的概念主要有兩個(gè):RSMC(RecoverableSequenceMaturityContract,序列到期可撤銷(xiāo)合約)和HTLC(HashedTimeLockContract,哈希時(shí)間鎖定合約)。前者解決了鏈下交易的確認(rèn)問(wèn)題。后者解決了支付通道的問(wèn)題。下面將介紹這兩個(gè)概念。
1.?
RSMC
RSMC定義了該雙向微支付通道的最基本工作方式。
1)單方面終止通道
如圖1-10所示,深灰色的交易都是交易者A持有的合約,反之亦然;流程圖的箭頭代表資金的走向以及合約的簽名狀況,經(jīng)過(guò)兩者簽名的合約才算正式生效;圓圈(o)表示該簽名已被簽署于合約中,加粗的流程箭頭和對(duì)勾(√)代表示例中簽署的合約以及對(duì)應(yīng)的簽名執(zhí)行者;符號(hào)“X”代表兩個(gè)合約是互斥的,只能執(zhí)行其中的一個(gè)。圖中,交易者A簽署C1a合約單方面終止通道,交易者B將立刻獲得當(dāng)前資金分配方案中自己的部分,而交易者A需要等待若干個(gè)出塊確認(rèn)后才能獲得自己應(yīng)有的資金。
圖1-10
RSMC示例—單方面終止通道
2)舊版本廢止與違約懲罰
如圖1-11所示,在更新資金分配方案的同時(shí)雙方必須要簽署舊版本作廢合約。例如對(duì)于BR1a合約,雙方均已簽名,只要作為父合約的C1a被執(zhí)行,它也便可被執(zhí)行。一旦交易者A妄圖執(zhí)行已作廢的C1a合約,那么作為反擊,交易者B可以執(zhí)行BR1a合約,獲得交易者A的0.5比特幣資產(chǎn);此時(shí)RD1a合約執(zhí)行失敗,表現(xiàn)不誠(chéng)信的交易者A失去了所有存儲(chǔ)在通道內(nèi)的金額。
圖1-11
RSMC示例——舊版本廢止與合約懲罰
2.HTLC
RSMC通道提供的是一種局限于鏈下雙方快速、高頻、可信的安全交易方案,但是為需要進(jìn)行交易的每一對(duì)用戶(hù)間都建立這一通道,反而得不償失。
HTLC可用于實(shí)現(xiàn)由中間人參與的微支付通道。HTLC理解起來(lái)較為簡(jiǎn)單,即通過(guò)智能合約,雙方約定接收方提供一個(gè)哈希值。如果在一定時(shí)間內(nèi)有人能提出一個(gè)字符串,使得它經(jīng)過(guò)哈希計(jì)算后的值與已知值匹配,則轉(zhuǎn)賬方將這筆錢(qián)轉(zhuǎn)給回答正確的人。HTLC合約具有強(qiáng)行執(zhí)行的效能,并具有時(shí)間限制。
示例步驟如下所示:
(1)甲方要付1個(gè)比特幣給丁方,丁方將一個(gè)隨機(jī)的哈希值(H)給甲方;
(2)甲方和乙方簽訂一個(gè)HTLC,合約內(nèi)容是:甲方支付乙方1個(gè)比特幣,前置條件為“乙方需要在48小時(shí)內(nèi)提供哈希值(H)給甲方,否則交易自動(dòng)取消”;
(3)乙方和丙方簽訂了一個(gè)HTLC,合約內(nèi)容是:乙方支付丙方1個(gè)比特幣,前置條件為“丙方需要在28小時(shí)內(nèi)提供哈希值(H)給乙方,否則交易自動(dòng)取消”;
(4)丙方和丁方簽訂了一個(gè)HTLC,合約內(nèi)容是:丙方支付丁方1個(gè)比特幣,前置條件為“丁方需要在8小時(shí)內(nèi)提供哈希值(H)給丙方,否則交易自動(dòng)取消”;
(5)在規(guī)定時(shí)間內(nèi),哈希值(H)由丁方交給丙方,丙方交給乙方,乙方交給甲方,大家依次拿到1個(gè)比特幣,甲丁雙方的交易至此完成。
1.4區(qū)塊鏈應(yīng)用場(chǎng)景
1.4.1金融服務(wù)自有人類(lèi)社會(huì)以來(lái),金融交易就是必不可少的經(jīng)濟(jì)活動(dòng),涉及貨幣、證券、保險(xiǎn)、抵押、捐贈(zèng)等諸多行業(yè)。交易角色和交易功能的不同,反映出不同的生產(chǎn)關(guān)系。通過(guò)金融交易,可以?xún)?yōu)化社會(huì)運(yùn)轉(zhuǎn)效率,實(shí)現(xiàn)資源價(jià)值的最大化??梢哉f(shuō),人類(lèi)社會(huì)的文明發(fā)展離不開(kāi)交易形式的演變。
傳統(tǒng)交易本質(zhì)上交換的是物品價(jià)值的所屬權(quán)。為了完成一些貴重商品的交易(例如房屋、車(chē)輛的所屬權(quán)等),往往需要十分繁瑣的中間環(huán)節(jié),同時(shí)需要中介和擔(dān)保機(jī)構(gòu)參與其中。這是因?yàn)?,交易雙方往往存在著不能充分互信的情況。一方面,要證實(shí)合法的價(jià)值所屬權(quán)并不簡(jiǎn)單,往往需要開(kāi)具各種證明材料,這其中難免存在造假的可能;另一方面,價(jià)值不能直接進(jìn)行交換,同樣需要繁瑣的手續(xù),在這個(gè)過(guò)程中存在較多的篡改風(fēng)險(xiǎn)。
1.銀行業(yè)金融管理
銀行從角色上一般可分為中央銀行(央行)和普通銀行。
中央銀行的兩大職能是促進(jìn)宏觀(guān)經(jīng)濟(jì)穩(wěn)定和維護(hù)金融穩(wěn)定,主要手段就是管理各種證券和利率。中央銀行為整個(gè)社會(huì)的金融體系提供了最終的信用擔(dān)保。
普通銀行業(yè)則往往基于央行的信用,作為中介和擔(dān)保方,來(lái)協(xié)助完成多方的金融交易。
區(qū)塊鏈技術(shù)的出現(xiàn),被認(rèn)為是有可能促使這一行業(yè)發(fā)生革命性變化的“奇點(diǎn)”。除了眾所周知的比特幣等數(shù)字貨幣實(shí)驗(yàn)之外,還有諸多金融機(jī)構(gòu)進(jìn)行了有意義的嘗試。下面進(jìn)行簡(jiǎn)單介紹。
(1)歐洲央行評(píng)估了區(qū)塊鏈在證券交易后結(jié)算的應(yīng)用。
(2)中國(guó)人民銀行也積極投入?yún)^(qū)塊鏈研究。
(3)加拿大銀行推出新的數(shù)字貨幣。
(4)英國(guó)央行實(shí)現(xiàn)RSCoin(數(shù)字化貨幣系統(tǒng))。
(5)日本政府取消比特幣消費(fèi)稅。
(6)中國(guó)郵政儲(chǔ)蓄銀行將區(qū)塊鏈技術(shù)應(yīng)用到核心業(yè)務(wù)系統(tǒng)中。
2.證券交易
證券交易包括交易執(zhí)行環(huán)節(jié)和交易后處理環(huán)節(jié)。
交易環(huán)節(jié)本身相對(duì)簡(jiǎn)單,主要由交易系統(tǒng)(高性能實(shí)時(shí)處理系統(tǒng))完成電子數(shù)據(jù)庫(kù)中內(nèi)容的變更。中心化的驗(yàn)證系統(tǒng)往往極為復(fù)雜和昂貴,交易指令執(zhí)行后的結(jié)算和清算環(huán)節(jié)也十分復(fù)雜,需要大量的人力成本和時(shí)間成本,并且容易出錯(cuò)。
關(guān)于區(qū)塊鏈技術(shù)在證券交易領(lǐng)域的其他相關(guān)案例描述如下:
(1)
BitShare推出基于區(qū)塊鏈的證券發(fā)行平臺(tái),號(hào)稱(chēng)每秒達(dá)到10萬(wàn)筆交易。
(2)DAH為金融市場(chǎng)交易提供基于區(qū)塊鏈的交易系統(tǒng),獲得澳洲證交所項(xiàng)目。
(3)
Symbiont幫助金融企業(yè)創(chuàng)建存儲(chǔ)于區(qū)塊鏈的智能債券,當(dāng)條件符合時(shí),清算立即執(zhí)行。
(4)
O推出基于區(qū)塊鏈的私有和公開(kāi)股權(quán)交易“T0”平臺(tái),提出“交易即結(jié)算”(Thetradeisthesettlement)的理念,主要目標(biāo)是建立證券交易實(shí)時(shí)清算結(jié)算的全新系統(tǒng)。
(5)高盛為一種叫做“SETLcoin”的新虛擬貨幣申請(qǐng)專(zhuān)利,用于為股票和債券等資產(chǎn)交易提供“近乎立即執(zhí)行和結(jié)算”的服務(wù)。
3.眾籌投資
作為去中心化的眾籌管理的代表,DAO(DecentralizedAutonomousOrganization,去中心化自治組織)曾創(chuàng)下歷史最高的融資記錄,數(shù)額超過(guò)1.6億美元。
值得一提的是,DAO的組織形式十分創(chuàng)新,這也造成其在受到攻擊后缺乏應(yīng)對(duì)經(jīng)驗(yàn)。項(xiàng)目于2016年4月30日開(kāi)始正式上線(xiàn)。6月12日,有技術(shù)人員報(bào)告合約執(zhí)行過(guò)程中存在軟件漏洞,但很遺憾并未得到組織的重視和及時(shí)修復(fù)。四天后,黑客利用漏洞轉(zhuǎn)移了360萬(wàn)枚以太幣,當(dāng)時(shí)價(jià)值超過(guò)5000萬(wàn)美元。
用ICO方式進(jìn)行眾籌可以降低普通投資者對(duì)早期項(xiàng)目的參與門(mén)檻,并提高項(xiàng)目資產(chǎn)流動(dòng)性。目前對(duì)ICO的眾籌模式缺少明確的法律法規(guī),對(duì)項(xiàng)目的商業(yè)模式也很難按照傳統(tǒng)方法進(jìn)行估值與代幣定價(jià)。但隨著項(xiàng)目發(fā)起人開(kāi)始重視對(duì)底層技術(shù)、資金使用和項(xiàng)目發(fā)展的信息披露,大眾投資者開(kāi)始加深理解區(qū)塊鏈技術(shù)及其可行的應(yīng)用場(chǎng)景,這必將有助于促進(jìn)這種新興模式的健康發(fā)展。
1.4.2征信和權(quán)屬管理
1.征信管理
征信管理是一個(gè)巨大的潛在市場(chǎng),據(jù)稱(chēng)超過(guò)千億元規(guī)模,也是目前大數(shù)據(jù)應(yīng)用領(lǐng)域最有前途的方向之一。目前,與征信相關(guān)的大量有效數(shù)據(jù)集中在少數(shù)機(jī)構(gòu)手中。由于這些數(shù)據(jù)太過(guò)敏感,并且具備極高的商業(yè)價(jià)值,因此往往會(huì)被嚴(yán)密保護(hù)起來(lái),形成很高的行業(yè)門(mén)檻。
雖然現(xiàn)在大量的互聯(lián)網(wǎng)企業(yè)(包括各類(lèi)社交網(wǎng)站)嘗試從各種維度獲取海量的用戶(hù)信息,但從征信角度看,這些數(shù)據(jù)仍然存在若干問(wèn)題,主要包括以下三個(gè)方面:
(1)時(shí)效性不足。
(2)數(shù)據(jù)不足。
(3)相關(guān)度較差。
2.權(quán)屬管理
區(qū)塊鏈技術(shù)可以用于產(chǎn)權(quán)、版權(quán)等所有權(quán)的管理和追蹤,其中包括汽車(chē)、房屋、藝術(shù)品等各種貴重物品的交易等,也包括數(shù)字出版物以及可以標(biāo)記的數(shù)字資源。目前權(quán)屬管理領(lǐng)域存在的幾個(gè)難題如下所述:
·
所有權(quán)的確認(rèn)和管理。
·
交易的安全性和可靠性保障。
·
必要的隱私保護(hù)機(jī)制。
3.其他項(xiàng)目
在人力資源和教育領(lǐng)域,MIT(MassachusettsInstituteofTechnology,麻省理工學(xué)院)研究員朱莉安娜·納扎雷(JulianaNazard)和學(xué)術(shù)創(chuàng)新部主管菲利普·施密特(PhilippSchmidt)發(fā)表了文章《MITMediaLabUsestheBitcoinBlockchainforDigitalCertificates》,介紹基于區(qū)塊鏈的學(xué)歷認(rèn)證系統(tǒng)。基于該系統(tǒng),用人單位可以確認(rèn)求職者的學(xué)歷信息是否真實(shí)可靠。
此外,還包括一些其他相關(guān)的應(yīng)用項(xiàng)目,如:
·
Chronicled:基于區(qū)塊鏈的球鞋鑒定方案,為正品球鞋添加電子標(biāo)簽,記錄在區(qū)塊鏈上。
·Mediachain:通過(guò)metadata協(xié)議,將內(nèi)容創(chuàng)造者與作品唯一對(duì)應(yīng)。
·Monegraph:通過(guò)區(qū)塊鏈保障圖片版權(quán)的透明交易。
·
Mycelia:區(qū)塊鏈產(chǎn)權(quán)保護(hù)項(xiàng)目,使音樂(lè)人實(shí)現(xiàn)音樂(lè)的自由交易。
·Tierion:將用戶(hù)數(shù)據(jù)錨定在比特幣區(qū)塊鏈上,并生成“區(qū)塊鏈?zhǔn)論?jù)”。
下面具體加以介紹。
1)資源共享
當(dāng)前,以Uber、Airbnb為代表的共享經(jīng)濟(jì)模式正在多個(gè)垂直領(lǐng)域沖擊傳統(tǒng)行業(yè),這一模式鼓勵(lì)人們通過(guò)互聯(lián)網(wǎng)的方式共享閑置資源。資源共享目前面臨的問(wèn)題主要包括如下:
·共享過(guò)程成本過(guò)髙。
·用戶(hù)行為評(píng)價(jià)難。
·共享服務(wù)管理難。
區(qū)塊鏈技術(shù)為解決上述問(wèn)題提供了更多的可能性。相比于依賴(lài)于中間方的資源共享模式,基于區(qū)塊鏈的模式有潛力更直接地連接資源的供給方和需求方,其透明、不可篡改的特性有助于減小摩擦。
有人認(rèn)為區(qū)塊鏈技術(shù)會(huì)成為新一代共享經(jīng)濟(jì)的基石。筆者認(rèn)為,區(qū)塊鏈在資源共享領(lǐng)域是否存在價(jià)值,還要看能否比傳統(tǒng)的專(zhuān)業(yè)供應(yīng)者或中間方形式實(shí)現(xiàn)更高的效率和更低的成本,同時(shí)不能損害用戶(hù)體驗(yàn)。
2)短租共享
大量提供短租服務(wù)的公司已經(jīng)開(kāi)始嘗試用區(qū)塊鏈來(lái)解決共享中的難題。高盛在報(bào)告《Blockchain:PuttingTheoryintoPractice》中宣稱(chēng):Airbnb等P2P住宿平臺(tái)已經(jīng)開(kāi)始通過(guò)利用私人住所打造公開(kāi)市場(chǎng)來(lái)變革住宿行業(yè),但是這種服務(wù)的接受程度可能會(huì)因人們對(duì)人身安全以及財(cái)產(chǎn)損失的擔(dān)憂(yōu)而受到限制。而如果通過(guò)引入安全且無(wú)法篡改的數(shù)字化資質(zhì)和信用管理系統(tǒng),我們認(rèn)為區(qū)塊鏈有助于提升P2P住宿的接受程度。
3)社區(qū)能源共享
在紐約布魯克林的一個(gè)社區(qū),已有項(xiàng)目嘗試將家庭太陽(yáng)能發(fā)的電通過(guò)社區(qū)的電力網(wǎng)絡(luò)直接進(jìn)行買(mǎi)賣(mài)。具體的交易不再經(jīng)過(guò)電網(wǎng)公司,而是通過(guò)區(qū)塊鏈執(zhí)行。
與之類(lèi)似,ConsenSys和微電網(wǎng)開(kāi)發(fā)商L03提出共建光伏發(fā)電交易網(wǎng)絡(luò),實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的能源交易。這些方案的主要難題如下:
·太陽(yáng)能電池管理。
·社區(qū)電網(wǎng)構(gòu)建。
·電力儲(chǔ)備系統(tǒng)搭建。
·低成本交易系統(tǒng)支持。
4)電商平臺(tái)
傳統(tǒng)情況下,電商平臺(tái)起到中介的作用。一旦買(mǎi)賣(mài)雙方發(fā)生糾紛,電商平臺(tái)會(huì)作為第三方機(jī)構(gòu)進(jìn)行仲裁。這種模式存在著周期長(zhǎng)、缺乏公證、成本高等缺點(diǎn)。OpenBazaar試圖在無(wú)中介的情形下,實(shí)現(xiàn)安全電商交易。OpenBazaar提供的分布式電商平臺(tái)通過(guò)多方簽名機(jī)制和信譽(yù)評(píng)分機(jī)制,讓眾多參與者合作進(jìn)行評(píng)估,實(shí)現(xiàn)零成本解決糾紛問(wèn)題。
5)大數(shù)據(jù)共享
在大數(shù)據(jù)時(shí)代,價(jià)值來(lái)自于對(duì)數(shù)據(jù)的挖掘,數(shù)據(jù)維度越多,體積越大,潛在價(jià)值也就越高。一直以來(lái),比較讓人頭疼的問(wèn)題是如何評(píng)估數(shù)據(jù)的價(jià)值,如何利用數(shù)據(jù)進(jìn)行交換和交易,以及如何避免寶貴的數(shù)據(jù)在未經(jīng)許可的情況下泄露出去。
6)減小共享風(fēng)險(xiǎn)
傳統(tǒng)的資源共享平臺(tái)在遇到經(jīng)濟(jì)糾紛時(shí)會(huì)充當(dāng)調(diào)解和仲裁者的角色。對(duì)于區(qū)塊鏈共享平臺(tái),目前還存在線(xiàn)下復(fù)雜交易難以數(shù)字化等問(wèn)題。除了引入信譽(yù)評(píng)分、多方評(píng)估等機(jī)制,也有方案提出引入保險(xiǎn)機(jī)制來(lái)對(duì)沖風(fēng)險(xiǎn)。
1.4.3貿(mào)易管理
1.跨境貿(mào)易
在國(guó)際貿(mào)易活動(dòng)中,買(mǎi)賣(mài)雙方可能互不信任。因此需要銀行作為買(mǎi)賣(mài)雙方的保證人,代為收款交單,并以銀行信用代替商業(yè)信用。
區(qū)塊鏈可以為信用證交易參與方提供共同賬本,允許銀行和其他參與方擁有經(jīng)過(guò)確認(rèn)的共同交易記錄并據(jù)此履約,從而降低風(fēng)險(xiǎn)和成本。
2.物流供應(yīng)鏈
物流供應(yīng)鏈?zhǔn)菂^(qū)塊鏈一個(gè)很有前景的應(yīng)用方向。供應(yīng)鏈行業(yè)往往涉及諸多實(shí)體,包括物流、資金流、信息流等,這些實(shí)體之間存在大量復(fù)雜的協(xié)作和溝通。傳統(tǒng)模式下,不同實(shí)體各自保存各自的供應(yīng)鏈信息,嚴(yán)重缺乏透明度,造成了較高的時(shí)間成本和金錢(qián)成本;而且一旦出現(xiàn)問(wèn)題(冒領(lǐng)、貨物假冒等),難以追查和處理。
通過(guò)區(qū)塊鏈,各方可以獲得一個(gè)透明可靠的統(tǒng)一信息平臺(tái),可以實(shí)時(shí)查看狀態(tài),降低物流成本,追溯物品的整個(gè)生產(chǎn)和運(yùn)送過(guò)程,從而提高供應(yīng)鏈管理的效率。當(dāng)發(fā)生糾紛時(shí),舉證和追查也變得更加清晰和容易。
3.一帶一路
為了促進(jìn)經(jīng)濟(jì)要素有序自由流動(dòng)、資源高效配置和市場(chǎng)深度融合,我國(guó)將共建“一帶一路”作為建立新型全球發(fā)展伙伴關(guān)系的重要方針。一帶一路的主要內(nèi)容包括政策溝通、設(shè)施聯(lián)通、貿(mào)易暢通、資金融通、民心相通,倡導(dǎo)以開(kāi)放為導(dǎo)向,冀望通過(guò)加強(qiáng)交通、能源和網(wǎng)絡(luò)等基礎(chǔ)設(shè)施的互聯(lián)互通建設(shè),開(kāi)展更大范圍、更高水平、更深層次的區(qū)域合作,打造開(kāi)放、包容、均衡、普惠的區(qū)域經(jīng)濟(jì)合作架構(gòu)。因此,建設(shè)可靠、高效的跨國(guó)家、全方位、多層面的交流、信任機(jī)制成為了合作順利與否的關(guān)鍵所在。
在類(lèi)似“一帶一路”這樣創(chuàng)新的投資建設(shè)模式中,會(huì)遇到來(lái)自地域、貨幣、信任等各方面的挑戰(zhàn)?,F(xiàn)在已經(jīng)有一些參與到一帶一路中的部門(mén)對(duì)區(qū)塊鏈技術(shù)進(jìn)行探索應(yīng)用。區(qū)塊鏈技術(shù)可以讓原先無(wú)法交易的雙方(例如,不存在多方都認(rèn)可的國(guó)際貨幣儲(chǔ)備的情況下)順利完成交易,并且降低貿(mào)易風(fēng)險(xiǎn),減少流程管控的成本。
1.4.4物聯(lián)網(wǎng)應(yīng)用
物聯(lián)網(wǎng)曾被認(rèn)為是大數(shù)據(jù)時(shí)代的基礎(chǔ),但是隨著區(qū)塊鏈技術(shù)的飛速發(fā)展和時(shí)代的進(jìn)步,區(qū)塊鏈技術(shù)已成為物聯(lián)網(wǎng)時(shí)代的基礎(chǔ)。
區(qū)塊鏈技術(shù)在物聯(lián)網(wǎng)中的一種可能的應(yīng)用場(chǎng)景是:為物聯(lián)網(wǎng)絡(luò)中每一個(gè)設(shè)備分配地址,并給該地址關(guān)聯(lián)一個(gè)賬戶(hù),用戶(hù)通過(guò)向賬戶(hù)中支付費(fèi)用可以租借設(shè)備,執(zhí)行相關(guān)動(dòng)作,從而達(dá)到租借物聯(lián)網(wǎng)的應(yīng)用。
下文將給出數(shù)個(gè)結(jié)合物聯(lián)網(wǎng)與區(qū)塊鏈技術(shù)的實(shí)踐案例:
1.?
IBM
IBM在物聯(lián)網(wǎng)領(lǐng)域已經(jīng)持續(xù)投入了幾十年的研發(fā),目前正在探索使用區(qū)塊鏈技術(shù)來(lái)降低物聯(lián)網(wǎng)應(yīng)用的成本。2015年年初,IBM與三星宣布合作研發(fā)“去中心化的P2P自動(dòng)遙測(cè)系統(tǒng)”(AutonomousDecentralizedPeer-to-PeerTelemetry),使用區(qū)塊鏈作為物聯(lián)網(wǎng)設(shè)備的共享賬本,打造去中心化的物聯(lián)網(wǎng)。
2.?Filament
美國(guó)的Filament公司以區(qū)塊鏈為基礎(chǔ)提出了一套去中心化的物聯(lián)網(wǎng)軟件堆棧。通過(guò)創(chuàng)建一個(gè)智能設(shè)備目錄,F(xiàn)ilament的物聯(lián)網(wǎng)設(shè)備可以進(jìn)行安全溝通,執(zhí)行智能合約以及發(fā)送小額交易。
基于上述技術(shù),F(xiàn)ilament能夠通過(guò)遠(yuǎn)程無(wú)線(xiàn)網(wǎng)絡(luò)將廣闊范圍內(nèi)的工業(yè)基礎(chǔ)設(shè)備溝通起來(lái),其應(yīng)用包括追蹤自動(dòng)售貨機(jī)的存貨和機(jī)器狀態(tài)、檢測(cè)鐵軌的損耗、安全帽或救生衣的應(yīng)急情況監(jiān)測(cè)等。
3.?NeuroMesh
2017年2月,源自MIT的NeuroMesh物聯(lián)網(wǎng)安全平臺(tái)獲得了MIT100KAccelerate競(jìng)賽的亞軍。該平臺(tái)致力于成為“物聯(lián)網(wǎng)疫苗”,能夠檢測(cè)和消除物聯(lián)網(wǎng)中的有害程序,并將攻擊源打入黑名單。
所有運(yùn)行NeuroMesh軟件的物聯(lián)網(wǎng)設(shè)備都通過(guò)訪(fǎng)問(wèn)區(qū)塊鏈賬本來(lái)識(shí)別其他節(jié)點(diǎn)和辨認(rèn)潛在威脅。如果一個(gè)設(shè)備借助深度學(xué)習(xí)功能檢測(cè)出可能的威脅,可通過(guò)發(fā)起投票的形式告知全網(wǎng),由網(wǎng)絡(luò)進(jìn)一步對(duì)該威脅進(jìn)行檢測(cè)并做出處理。
1.4.5其他場(chǎng)景
區(qū)塊鏈還有一些很有趣的應(yīng)用場(chǎng)景,包括但不限于云存儲(chǔ)、醫(yī)療、社交、游戲等多個(gè)方面。
1.云存儲(chǔ)
以Storj項(xiàng)目為例,該項(xiàng)目提供了基于區(qū)塊鏈的安全分布式云存儲(chǔ)服務(wù)。服務(wù)保證只有用戶(hù)自己能看到自己的數(shù)據(jù),并號(hào)稱(chēng)提供高速的下載速度和99.99999%的高可用性。用戶(hù)還可以“出租”自己的額外硬盤(pán)空間來(lái)獲得報(bào)酬。
2.醫(yī)療
醫(yī)院與醫(yī)保醫(yī)藥公司、不同醫(yī)院之間甚至醫(yī)院里不同部門(mén)之間的數(shù)據(jù)流動(dòng)性往往很差??紤]到醫(yī)療健康數(shù)據(jù)的敏感性,筆者認(rèn)為,如果能夠在滿(mǎn)足數(shù)據(jù)訪(fǎng)問(wèn)權(quán)、使用權(quán)等規(guī)定的基礎(chǔ)上促進(jìn)醫(yī)療數(shù)據(jù)的提取和流動(dòng),區(qū)塊鏈將在醫(yī)療行業(yè)獲得一定的用武之地。
3.通信和社交
在通信和社交方面,比較典型的應(yīng)用是BitMessage。BitMessage是一套去中心化通信系統(tǒng),在點(diǎn)對(duì)點(diǎn)通信的基礎(chǔ)上保護(hù)用戶(hù)的匿名性和信息的隱私。BitMessage協(xié)議在設(shè)計(jì)上充分參考了比特幣,二者擁有相似的地址編碼機(jī)制和消息傳遞機(jī)制。BitMessage也用“工作量證明”機(jī)制防止通信網(wǎng)絡(luò)受到大量垃圾信息的沖擊。
4.投票
目前,區(qū)塊鏈技術(shù)已應(yīng)用到投票系統(tǒng)上。例如,F(xiàn)ollowMyVote項(xiàng)目致力于提供一個(gè)安全、透明的在線(xiàn)投票系統(tǒng)。通過(guò)使用該系統(tǒng)進(jìn)行選舉投票,投票者可以隨時(shí)檢查自己選票的存在和正確性,看到實(shí)時(shí)計(jì)票結(jié)果,并在改變主意時(shí)修改選票。
該項(xiàng)目使用區(qū)塊鏈進(jìn)行計(jì)票,并開(kāi)源其軟件代碼供社區(qū)用戶(hù)審核。項(xiàng)目也為投票人身份認(rèn)證、防止重復(fù)投票、投票隱私等難點(diǎn)問(wèn)題提供了解決方案。
5.預(yù)測(cè)
目前,應(yīng)用較多的預(yù)測(cè)系統(tǒng)是Augur平臺(tái)。Augur是一個(gè)運(yùn)行在以太坊上的預(yù)測(cè)市場(chǎng)平臺(tái)。使用Augur,來(lái)自全球不同地方的任何人都可發(fā)起自己的預(yù)測(cè)話(huà)題市場(chǎng),或隨意加入其他市場(chǎng),來(lái)預(yù)測(cè)一些事件的發(fā)展結(jié)果。預(yù)測(cè)結(jié)果和獎(jiǎng)金結(jié)算由智能合約嚴(yán)格控制,使得在平臺(tái)上博弈的用戶(hù)不用為安全性產(chǎn)生擔(dān)憂(yōu)。
6.電子游戲
2017年3月,來(lái)自馬來(lái)西亞的電子游戲工作室XhaiStudios宣布將區(qū)塊鏈技術(shù)引入其電子游戲平臺(tái)。工作室旗下的一些游戲?qū)⒅С峙cNEM區(qū)塊鏈的代幣XEM整合。通過(guò)這一平臺(tái),游戲開(kāi)發(fā)者可以在游戲架構(gòu)中直接調(diào)用支付功能,消除對(duì)第三方支付的依賴(lài);玩家則可以自由地將XEM和游戲內(nèi)貨幣、點(diǎn)數(shù)等進(jìn)行雙向兌換。
7.公共網(wǎng)絡(luò)服務(wù)
現(xiàn)有的互聯(lián)網(wǎng)能正常運(yùn)行,離不開(kāi)很多近乎免費(fèi)的網(wǎng)絡(luò)服務(wù),如域名服務(wù)(DomainNameService,DNS)。任何人都可以免費(fèi)查詢(xún)到域名,沒(méi)有DNS,現(xiàn)在的各種網(wǎng)站將無(wú)法訪(fǎng)問(wèn)。因此,對(duì)于網(wǎng)絡(luò)系統(tǒng)來(lái)說(shuō),類(lèi)似的基礎(chǔ)服務(wù)必須要能做到安全可靠,并且低成本。
1.5區(qū)塊鏈DAPP介紹
1.5.1DAPP介紹
比較流行的一種區(qū)塊鏈進(jìn)化史說(shuō)法是,區(qū)塊鏈1.0時(shí)代是比特幣時(shí)代,2.0時(shí)代是以太坊時(shí)代,3.0時(shí)代是DAPP時(shí)代。那么DAPP究竟是什么呢?
DAPP是DecentralizedApplication的縮寫(xiě),即去中心化應(yīng)用。維基百科對(duì)于DAPP的定義是:DAPP是運(yùn)行在分布式計(jì)算機(jī)系統(tǒng)上的計(jì)算機(jī)應(yīng)用程序。
1.?APP
APP即為Application,既包含移動(dòng)端和電腦端的軟件,也包括Web應(yīng)用程序。
雖然現(xiàn)在A(yíng)PP主要指移動(dòng)端的應(yīng)用,在電腦端的應(yīng)用一般稱(chēng)之為“軟件”,但其實(shí)二者在系統(tǒng)體系結(jié)構(gòu)方面并無(wú)太大區(qū)別,均遵從C/S架構(gòu),即Client/Server(客戶(hù)端/服務(wù)器)架構(gòu)。C/S架構(gòu)是大家比較熟知的系統(tǒng)體系結(jié)構(gòu),它將不同的系統(tǒng)任務(wù)合理分配給客服端和服務(wù)器端進(jìn)行處理,減少了系統(tǒng)的通訊開(kāi)銷(xiāo)。但是用戶(hù)必須安裝客戶(hù)端才可以對(duì)APP進(jìn)行使用操作,并且每次程序?qū)蛻?hù)端的修改都要重新更新客戶(hù)端的代碼。
其實(shí),APP亦包括Web應(yīng)用程序,即我們用瀏覽器訪(fǎng)問(wèn)的網(wǎng)站,現(xiàn)在人們喜歡稱(chēng)之為WebAPP。網(wǎng)站應(yīng)用遵從B/S架構(gòu),即Browser/Server(瀏覽器/服務(wù)器)模式,將系統(tǒng)功能實(shí)現(xiàn)的核心部分集中到服務(wù)器上,大大提升了系統(tǒng)開(kāi)發(fā)的效率,同時(shí)也降低了后期維護(hù)的難度。
2.?
WebAPP
2014年10月20日,萬(wàn)維網(wǎng)聯(lián)盟宣布HTML5的標(biāo)準(zhǔn)規(guī)范制定完成,其設(shè)計(jì)目的是為了在移動(dòng)設(shè)備上支持多媒體。HTML5推動(dòng)了Web標(biāo)準(zhǔn)化運(yùn)動(dòng)的發(fā)展,擴(kuò)大了HTML的應(yīng)用場(chǎng)景,使越來(lái)越多運(yùn)行于移動(dòng)端的WebAPP進(jìn)入市場(chǎng)。得益于HTML的進(jìn)一步發(fā)展,APP對(duì)移動(dòng)端的適配和兼容越來(lái)越好,現(xiàn)在許多網(wǎng)站開(kāi)發(fā)者開(kāi)始進(jìn)軍移動(dòng)端開(kāi)發(fā)。而且由于WebAPP的高效開(kāi)發(fā),許多初創(chuàng)公司為了業(yè)務(wù)效率,往往都會(huì)先選擇開(kāi)發(fā)WebAPP,進(jìn)而再深入開(kāi)發(fā)Android或者iOS平臺(tái)的應(yīng)用。
3.?Node.js
Node.js發(fā)布于2009年5月,實(shí)質(zhì)是對(duì)ChromeV8引擎進(jìn)行了封裝,是一個(gè)開(kāi)源的跨平臺(tái)JavaScript運(yùn)行時(shí)環(huán)境,使JavaScript代碼能在瀏覽器外執(zhí)行。至此,JavaScript便不只作為腳本語(yǔ)言嵌入到網(wǎng)頁(yè)的HTML當(dāng)中去,還可以允許開(kāi)發(fā)人員使用JavaScript語(yǔ)言編寫(xiě)命令行工具。
Node.js代表了一個(gè)“JavaScriptEverywhere”的范例,這也就意味著,JavaScript能實(shí)現(xiàn)跨平臺(tái)開(kāi)發(fā),不依賴(lài)于特定的操作系統(tǒng)和硬件環(huán)境。著名的Java就是跨平臺(tái)語(yǔ)言,憑借Java虛擬機(jī)便可以在任何操作系統(tǒng)中運(yùn)行。在編寫(xiě)這本書(shū)的時(shí)候,Java在世界編程語(yǔ)言中排行第一。此外,WebAPP也是得益于其跨平臺(tái)的特性,在瀏覽器、Android和iOS等不同平臺(tái)上都能夠運(yùn)行,因此得到了快速發(fā)展。
再者,Node.js擁有一個(gè)十分活躍的社區(qū)——CNode。CNode社區(qū)為國(guó)內(nèi)最大、最具影響力的Node.js開(kāi)源技術(shù)社區(qū),致力于Node.js的技術(shù)研究,大量年輕技術(shù)人員和專(zhuān)業(yè)人員活躍其中,因此,Node.js的發(fā)展前景值得期待。
1.5.2
DAPP開(kāi)發(fā)簡(jiǎn)介
除了傳統(tǒng)APP開(kāi)發(fā)需要用到的技術(shù),開(kāi)發(fā)DAPP還需要學(xué)習(xí)開(kāi)發(fā)框架和智能合約的相關(guān)知識(shí)。
我們以以太坊為例,簡(jiǎn)要介紹DAPP的開(kāi)發(fā)框架和需要用到的技能和知識(shí)。假設(shè)我們要開(kāi)發(fā)一個(gè)分布式的WebAPP,架構(gòu)如圖1-12所示。該架構(gòu)運(yùn)用B/S架構(gòu),用戶(hù)多終端通過(guò)瀏覽器訪(fǎng)問(wèn)前端;前端和后臺(tái)進(jìn)行數(shù)據(jù)交互,后臺(tái)進(jìn)行業(yè)務(wù)邏輯操作和對(duì)以太坊網(wǎng)絡(luò)API的調(diào)用。下面將分別講述每一模塊運(yùn)用的技能。
圖1-12
DAPP架構(gòu)
1.前端
對(duì)于B/S體系結(jié)構(gòu)系統(tǒng),前端用于頁(yè)面展示和簡(jiǎn)單的業(yè)務(wù)邏輯處理,可以用傳統(tǒng)的HTML、css、js或者當(dāng)下主流的Vue、React、Angular等前端框架進(jìn)行開(kāi)發(fā)。在該體系結(jié)構(gòu)下,服務(wù)器可創(chuàng)建一個(gè)錢(qián)包管理所有用戶(hù)的賬戶(hù)。
2.后臺(tái)
后臺(tái)開(kāi)發(fā)框架與傳統(tǒng)開(kāi)發(fā)框架并無(wú)區(qū)別,使用web3.js或者其他語(yǔ)言版本的API來(lái)實(shí)現(xiàn)對(duì)區(qū)塊鏈的操作(例如,如果是Java開(kāi)發(fā)語(yǔ)言,就使用web3j庫(kù))。這里以node.js的Express框架為例,利用Solidity語(yǔ)言編寫(xiě)智能合約,再利用Truffle框架對(duì)智能合約進(jìn)行編譯部署,然后利用Express對(duì)web.js的API的調(diào)用來(lái)對(duì)以太坊網(wǎng)絡(luò)進(jìn)行操作。
3.以太坊網(wǎng)絡(luò)
以太坊網(wǎng)絡(luò)分為主網(wǎng)、測(cè)試網(wǎng)絡(luò)和私網(wǎng),下面分別加以介紹。
(1)主網(wǎng)是產(chǎn)生真正有價(jià)值的以太幣的網(wǎng)絡(luò)。
(2)測(cè)試網(wǎng)絡(luò)是專(zhuān)供用戶(hù)開(kāi)發(fā)、調(diào)試和測(cè)試的網(wǎng)絡(luò)。測(cè)試網(wǎng)絡(luò)的合約執(zhí)行不消耗真實(shí)的以太幣,分為Ropsten、Kovan和Rinkeby等。以Ropsten為例,在Infura網(wǎng)站注冊(cè)一個(gè)賬號(hào)即可得到一個(gè)RPC網(wǎng)址,這是連接測(cè)試網(wǎng)絡(luò)的重要參數(shù)。在測(cè)試網(wǎng)絡(luò)中,每天可以領(lǐng)取少量的以太幣,不過(guò)用于測(cè)試已經(jīng)足夠了。
(3)私網(wǎng)是用戶(hù)自己創(chuàng)建的網(wǎng)絡(luò),可以使用geth工具模擬以太坊出塊。但是私網(wǎng)只能用戶(hù)自己使用,一旦關(guān)閉,鏈上的數(shù)據(jù)就會(huì)消失。
4.
IPFS
IPFS(Inter-PlanetaryFileSystem,星際文件系統(tǒng))是一個(gè)面向全球的、點(diǎn)對(duì)點(diǎn)的分布式版本文件系統(tǒng)。將數(shù)據(jù)存放在以太坊公網(wǎng)需要支付gas,存儲(chǔ)的數(shù)據(jù)越龐大,支付的費(fèi)用就越多,想要把文件數(shù)據(jù)存儲(chǔ)在以太坊共鏈上是不太現(xiàn)實(shí)的。因此可以將文件上傳到IPFS上,此時(shí)IPFS會(huì)返回文件的哈希值,將這個(gè)哈希值存入數(shù)據(jù)庫(kù),可以節(jié)省大量的區(qū)塊鏈網(wǎng)絡(luò)帶寬。
5.智能合約
智能合約是一種旨在以信息化方式傳播、驗(yàn)證或執(zhí)行合同的計(jì)算機(jī)協(xié)議。智能合約允許在沒(méi)有第三方的情況下進(jìn)行可信交易,這些交易可追蹤且不可逆轉(zhuǎn)。智能合約就像是一份合同,制定了用戶(hù)與用戶(hù)之間、用戶(hù)與區(qū)塊鏈之間的規(guī)范。在區(qū)塊鏈中,代碼是如同法律一般的存在,智能合約可規(guī)范用戶(hù)行為。
1.5.3數(shù)據(jù)反饋合約與數(shù)據(jù)源
通常形式的數(shù)據(jù)反饋合約首先需要包含一個(gè)函數(shù),它能夠返回一些有關(guān)外部世界現(xiàn)象的現(xiàn)時(shí)數(shù)據(jù)作為調(diào)用的回應(yīng)(例如某座城市的當(dāng)?shù)貧鉁?,在代碼層面可具體表現(xiàn)為返回存儲(chǔ)變量中一些經(jīng)過(guò)確認(rèn)的值。當(dāng)然存儲(chǔ)變量中的值應(yīng)通過(guò)持續(xù)的維護(hù)工作以保證其正確性。因此該類(lèi)合約通常還需要一個(gè)連入以太坊、擁有以太坊節(jié)點(diǎn)的外部服務(wù)器。一旦現(xiàn)時(shí)數(shù)據(jù)需要更新,就可以創(chuàng)建一個(gè)交易,調(diào)用合約函數(shù)對(duì)存儲(chǔ)變量值進(jìn)行改動(dòng),整個(gè)數(shù)據(jù)采集的過(guò)程便完成了。
根據(jù)合約代碼的設(shè)計(jì),可以對(duì)調(diào)用更新數(shù)據(jù)函數(shù)的用戶(hù)進(jìn)行訪(fǎng)問(wèn)控制,僅允許特定用戶(hù)對(duì)數(shù)據(jù)進(jìn)行更新操作。
盡管在合約代碼方面理解起來(lái)較為簡(jiǎn)單、直觀(guān),但如何挑選可信的數(shù)據(jù)來(lái)源仍是個(gè)值得思考的問(wèn)題。簡(jiǎn)單獲取數(shù)據(jù)來(lái)源的方法是通過(guò)可信機(jī)構(gòu)、組織提供的接口(API)或Web服務(wù)。前者的前提條件是,一個(gè)或多個(gè)機(jī)構(gòu)提供智能合約運(yùn)行所需數(shù)據(jù)的API可以通過(guò)HTTP的方式免費(fèi)訪(fǎng)問(wèn),并且不需要任何形式的許可證明、注冊(cè)流程等。后者的前提條件是智能合約所使用的編程語(yǔ)言可以直接支持HTTP請(qǐng)求。
1.5.4以太坊預(yù)言機(jī)(Oracle)
簡(jiǎn)單的以太坊預(yù)言機(jī)模型如圖1-13所示。以
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 漢字筆順的課件
- 漢字的構(gòu)造及分類(lèi)課件
- 廣東省肇慶市2024-2025學(xué)年高二下學(xué)期期末考試物理試題(含答案)
- 工廠(chǎng)車(chē)間承包合同(5篇)
- 2024-2025學(xué)年廣東省揭陽(yáng)市普寧市二中七年級(jí)(下)第一次月考數(shù)學(xué)試卷(含答案)
- 《史記》的當(dāng)代價(jià)值轉(zhuǎn)換知到智慧樹(shù)答案
- 年度個(gè)人先進(jìn)工作總結(jié)
- 《Android移動(dòng)應(yīng)用開(kāi)發(fā)基礎(chǔ)》知到智慧樹(shù)答案
- 能源環(huán)保產(chǎn)業(yè)前景分析報(bào)告
- 2024年秋新北師大版數(shù)學(xué)一年級(jí)上冊(cè) 第四單元 一起做游戲 教學(xué)課件
- 護(hù)理法律相關(guān)案例分析
- 2025版《折彎?rùn)C(jī)安全操作規(guī)程》全
- 2024版標(biāo)準(zhǔn)性二手車(chē)貸款合同模板(含車(chē)況鑒定)3篇
- 孕期陰道炎的健康宣教
- DB32-T 4467-2023 南美白對(duì)蝦小棚養(yǎng)殖尾水生態(tài)化處理技術(shù)規(guī)程
- 31個(gè)工種安全技術(shù)交底
- 人工智能概論課件完整版
- 管道承諾質(zhì)量保證書(shū)范本
- 門(mén)窗訂購(gòu)電子合同模板
- 渠道襯砌施工方案(渠道預(yù)制混凝土塊)
- 臺(tái)州市開(kāi)發(fā)投資集團(tuán)有限公司招聘筆試題庫(kù)2024
評(píng)論
0/150
提交評(píng)論