區(qū)塊鏈智能合約技術(shù)與應(yīng)用 課件 第1、2章 區(qū)塊鏈概述;區(qū)塊鏈中的信息安全技術(shù)_第1頁
區(qū)塊鏈智能合約技術(shù)與應(yīng)用 課件 第1、2章 區(qū)塊鏈概述;區(qū)塊鏈中的信息安全技術(shù)_第2頁
區(qū)塊鏈智能合約技術(shù)與應(yīng)用 課件 第1、2章 區(qū)塊鏈概述;區(qū)塊鏈中的信息安全技術(shù)_第3頁
區(qū)塊鏈智能合約技術(shù)與應(yīng)用 課件 第1、2章 區(qū)塊鏈概述;區(qū)塊鏈中的信息安全技術(shù)_第4頁
區(qū)塊鏈智能合約技術(shù)與應(yīng)用 課件 第1、2章 區(qū)塊鏈概述;區(qū)塊鏈中的信息安全技術(shù)_第5頁
已閱讀5頁,還剩284頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章區(qū)塊鏈概述1.1區(qū)塊鏈的概念1.2區(qū)塊鏈技術(shù)平臺1.3比特幣的機制詳解1.4區(qū)塊鏈應(yīng)用場景1.5區(qū)塊鏈DAPP介紹本章小結(jié)

1.1區(qū)塊鏈的概念

1.1.1區(qū)塊鏈的歷史與演進趨勢從20世紀80年代開始,數(shù)字貨幣技術(shù)就一直是研究的熱門,前后經(jīng)歷了幾代演進,比較典型的成果包括E-Cash、HashCash、B-money等。

1983年,DavidChaum最早在論文《BlindSignatureforUntraceablePayments》中提出E-Cash貨幣,并于1989年創(chuàng)建了Digicash公司。E-Cash系統(tǒng)是首個匿名化的數(shù)字加密貨幣(AnonymousCryptographicElectronicMoney或ElectronicCashSystem),基于DavidChaum發(fā)明的盲簽名技術(shù)(盲簽名技術(shù)將在2.5.2小節(jié)中做具體描述),曾被應(yīng)用于部分銀行的小額支付系統(tǒng)中。

1997年,AdamBack發(fā)明了HashCash貨幣,以解決郵件系統(tǒng)中DoS攻擊問題(DoS攻擊問題就是黑客利用被植入病毒的電腦向服務(wù)端頻繁發(fā)送非正常請求,使服務(wù)器的內(nèi)存和CPU超負荷,導(dǎo)致其無法正常工作)。

1998年,WeiDai提出了B-money貨幣,將POW引入數(shù)字貨幣生成過程中。B-money是首個面向去中心化設(shè)計的數(shù)字貨幣,從概念上看已經(jīng)比較完善,但是很遺憾,其未能提出具體的設(shè)計實現(xiàn)。

以上三種數(shù)字貨幣都或多或少地依賴于第三方信用擔(dān)保系統(tǒng)。直到比特幣的出現(xiàn),將工作量證明機制(POW)與共識機制聯(lián)系在一起,才首次真正意義上實現(xiàn)了一套去中心化的數(shù)字貨幣系統(tǒng)。

比特幣依托的分布式網(wǎng)絡(luò)無需任何管理機構(gòu),自身通過數(shù)學(xué)和密碼學(xué)原理來確保所有交易的成功進行,并且比特幣自身的價值通過背后的計算力進行背書。

隨著比特幣技術(shù)的發(fā)展和業(yè)界對其系統(tǒng)技術(shù)架構(gòu)了解的日益加深,人們發(fā)現(xiàn)這些技術(shù)還能應(yīng)用在其他領(lǐng)域,于是相關(guān)技術(shù)人員將這些技術(shù)提取并系統(tǒng)化,將它們命名為區(qū)塊鏈。

區(qū)塊鏈技術(shù)起源于比特幣,但迄今的發(fā)展又高于比特幣,形成了一套完備的技術(shù)體系。如果說比特幣是影響力巨大的社會學(xué)實驗,那么從比特幣核心設(shè)計中提煉出來的區(qū)塊鏈技術(shù),則讓大家看到了塑造更高效、更安全的未來商業(yè)網(wǎng)絡(luò)的可能。

區(qū)塊鏈技術(shù)現(xiàn)在已經(jīng)在金融、貿(mào)易、征信、物聯(lián)網(wǎng)、共享經(jīng)濟等諸多領(lǐng)域嶄露頭角。美國區(qū)塊鏈專家梅蘭妮·斯萬(MelanieSwan)針對區(qū)塊鏈應(yīng)用領(lǐng)域的演化,提出了從區(qū)塊鏈1.0、2.0到3.0的進化階段。

1.1.2區(qū)塊鏈的本質(zhì)

1.從網(wǎng)絡(luò)的角度來看區(qū)塊鏈

區(qū)塊鏈的底層網(wǎng)絡(luò)模型完美地實現(xiàn)了數(shù)據(jù)分布式存儲,比特幣系統(tǒng)迄今為止都沒有過一次宕機,這也充分證明了該網(wǎng)絡(luò)模型的穩(wěn)定性。

2.從協(xié)議的觀點來看區(qū)塊鏈

區(qū)塊鏈是一種價值傳輸信任協(xié)議。過去互聯(lián)網(wǎng)上沒有這種協(xié)議,因此無法進行價值傳輸和確權(quán)?,F(xiàn)在有了區(qū)塊鏈協(xié)議,再加上互聯(lián)網(wǎng)的作用,就可以通過互聯(lián)網(wǎng)傳輸價值信息、實現(xiàn)確權(quán)和權(quán)證轉(zhuǎn)移等功能。

3.從底層技術(shù)角度看區(qū)塊鏈

顧名思義,區(qū)塊鏈是一個鏈狀體,該鏈上分布著一個個區(qū)塊,每個區(qū)塊中存儲了數(shù)據(jù)。因此區(qū)塊鏈更像是一個數(shù)據(jù)結(jié)構(gòu),通過這樣的存儲方式防止數(shù)據(jù)被篡改。

4.從密碼學(xué)角度看區(qū)塊鏈

區(qū)塊鏈利用哈希函數(shù)和橢圓曲線數(shù)字簽名算法來保證區(qū)塊中數(shù)據(jù)的完整性和正確性。

5.從數(shù)據(jù)存儲技術(shù)角度來看區(qū)塊鏈

區(qū)塊鏈是一個去中心化的分布式數(shù)據(jù)庫,通過集體協(xié)作,以去中心化的方式來維護數(shù)據(jù)庫的安全,防止其被篡改。區(qū)塊鏈像是一個巨大的賬本,一個客觀的第三方公證處,記錄和見證每一個交易的成功與失敗。它獨立地存在著,不受任何人的控制。

6.從對人類文明的影響來看區(qū)塊鏈

生產(chǎn)工具是人類文明發(fā)展水平的重要標準,生產(chǎn)方式?jīng)Q定人類文明形態(tài)的形成。區(qū)塊鏈是一種全新的生產(chǎn)工具,并且改進了生產(chǎn)方式,因此它對人類文明的影響毋庸置疑是巨大的。

1.1.3

區(qū)塊鏈的技術(shù)特點

1.去中心化

區(qū)塊鏈的底層網(wǎng)絡(luò)是一種稱為P2P(PeertoPeer)的點對點技術(shù)。在這一網(wǎng)絡(luò)中,沒有中心化服務(wù)器,沒有中介/第三方機構(gòu),所有節(jié)點的權(quán)力與義務(wù)都相等。

2.數(shù)據(jù)加密

數(shù)據(jù)在存儲時采用密碼學(xué)方法對其進行加密并擁有特定的時序,使數(shù)據(jù)不能輕易被篡改并且可以追溯。區(qū)塊鏈網(wǎng)絡(luò)中的每一個節(jié)點都擁有最新的、完整數(shù)據(jù)庫的備份(即數(shù)據(jù)的集合),修改單個節(jié)點的數(shù)據(jù)庫自然是無效的。

3.去信任化

系統(tǒng)中所有節(jié)點之間無須信任也可以進行交易,因為數(shù)據(jù)庫和整個系統(tǒng)的運作是公開透明的,在系統(tǒng)的規(guī)則和時間范圍內(nèi),節(jié)點之間無法欺騙彼此。

4.難以被篡改

所有參與者共同參與數(shù)據(jù)的創(chuàng)建與維護工作。在沒有其他參與者允許的情況下,任何一方都不可以對數(shù)據(jù)進行篡改。

5.智能合約

除了以上基礎(chǔ)特性外,隨著需求的日益增長和技術(shù)的不斷增進,智能合約這個新特性也誕生了。智能合約是一種旨在以信息化方式傳播、驗證或執(zhí)行合同的計算機協(xié)議。

6.可升級性

區(qū)塊鏈的去中心化特點使得區(qū)塊鏈系統(tǒng)機制的維護與升級工作變得復(fù)雜,但并非沒有辦法升級。在區(qū)塊鏈網(wǎng)絡(luò)中,系統(tǒng)機制的變化意味著網(wǎng)絡(luò)節(jié)點需要遵守新的共識規(guī)則、驗證規(guī)則,而且又可能存在拒絕機制改動、想要延續(xù)舊版本機制的用戶,而“分叉”手段的存在正是為了滿足各種用戶的需求,完成對區(qū)塊鏈系統(tǒng)的升級。

分叉技術(shù)分為硬分叉和軟分叉兩種。區(qū)塊鏈發(fā)生永久性分歧,在新共識規(guī)則發(fā)布后,部分沒有升級的節(jié)點無法驗證已經(jīng)升級的節(jié)點產(chǎn)生的區(qū)塊,通常此時硬分叉就會發(fā)生。硬分叉是指區(qū)塊格式或交易格式發(fā)生改變時,未升級的節(jié)點拒絕驗證已經(jīng)升級的節(jié)點生產(chǎn)出的區(qū)塊。不過已經(jīng)升級的節(jié)點可以驗證未升級節(jié)點生產(chǎn)出的區(qū)塊,各自延續(xù)自己認為正確的鏈,所以分成兩條鏈。

軟分叉是指交易的數(shù)據(jù)結(jié)構(gòu)發(fā)生改變時,未升級的節(jié)點與已升級的節(jié)點可以驗證彼此產(chǎn)生出的區(qū)塊,因此在區(qū)塊鏈層面上沒有分叉的鏈,只有組成鏈的區(qū)塊的新舊之分。

綜上所述,區(qū)塊鏈技術(shù)具有分布式數(shù)據(jù)存儲、密碼學(xué)加密、P2P網(wǎng)絡(luò)等技術(shù)應(yīng)用。正是由于這些技術(shù)特點的存在,使得區(qū)塊鏈技術(shù)能夠構(gòu)建一個去中心化的、點對點對等的、不可篡改的、安全的價值傳播網(wǎng)絡(luò)體系。

1.1.4區(qū)塊鏈的層次模型

1.區(qū)塊鏈的基本架構(gòu)

1)數(shù)據(jù)層

數(shù)據(jù)層主要描述區(qū)塊鏈的物理結(jié)構(gòu),封裝了區(qū)塊鏈的存儲數(shù)據(jù)、鏈式結(jié)構(gòu)、時間戳、公鑰數(shù)據(jù)、私鑰數(shù)據(jù)、隨機數(shù)以及非對稱加密等區(qū)塊鏈核心技術(shù),是區(qū)塊鏈中最底層的數(shù)據(jù)結(jié)構(gòu)。

2)網(wǎng)絡(luò)層

網(wǎng)絡(luò)層主要提供點對點的數(shù)據(jù)通信和數(shù)據(jù)驗證機制,通過P2P技術(shù)實現(xiàn)分布式網(wǎng)絡(luò),具備自動組網(wǎng)的機制,節(jié)點間依靠維護共同的區(qū)塊鏈結(jié)構(gòu)來保持彼此的通信。

3)共識層

共識層主要提供網(wǎng)絡(luò)節(jié)點間達成共識的各種共識算法,含有共識機制,能讓高度分散的節(jié)點在無中心的區(qū)塊鏈中高效地達成共識。

4)激勵層

激勵層主要提供激勵措施,鼓勵節(jié)點參與到區(qū)塊鏈的安全驗證工作中。在區(qū)塊鏈技術(shù)體系中加入經(jīng)濟獎勵制度,激勵遵循規(guī)則來記賬的節(jié)點,對不遵守規(guī)則的節(jié)點實施相應(yīng)的懲罰措施。

5)合約層

合約層封裝了各類腳本、智能合約和算法,是區(qū)塊鏈可編程的基礎(chǔ),可用于定義區(qū)塊鏈代幣的交易方式和過程中涉及的種種細節(jié),并通過將代碼嵌入?yún)^(qū)塊鏈的方式來實現(xiàn)智能合約的自定義,無需經(jīng)過第三方就能夠自動執(zhí)行,是整個區(qū)塊鏈信任模塊的基礎(chǔ)。

6)應(yīng)用層

應(yīng)用層封裝了區(qū)塊鏈技術(shù)的應(yīng)用場景和案例,如電腦操作系統(tǒng)中的應(yīng)用程序、移動端上的APP等,將區(qū)塊鏈技術(shù)部署在以太坊、EOS平臺(EOS平臺在本章1.3.3小節(jié)進行講解)等上并在實際生活中應(yīng)用。

在該架構(gòu)中,數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層是構(gòu)建區(qū)塊鏈技術(shù)的必要元素,缺少任何一層都不能稱之為真正意義上的區(qū)塊鏈技術(shù);而激勵層、合約層和應(yīng)用層不是每個區(qū)塊鏈應(yīng)用的必要因素,一些區(qū)塊鏈應(yīng)用并不完整包含此三層結(jié)構(gòu)。區(qū)塊鏈基本架構(gòu)如圖1-1所示。

圖1-1區(qū)塊鏈基本架構(gòu)

2.區(qū)塊鏈的組成

每一個區(qū)塊一般都由區(qū)塊頭和區(qū)塊體兩部分組成,區(qū)塊中所有的數(shù)據(jù)通過哈希算法得到一個哈希值,該哈希值存儲在區(qū)塊頭中,并且每一個區(qū)塊都會存儲前一個區(qū)塊的哈希值,這樣就可以把所有區(qū)塊連接在一起,從而形成區(qū)塊鏈。當(dāng)某一方想要篡改某一區(qū)塊中的交易時,勢必會導(dǎo)致該區(qū)塊的哈希值發(fā)生變化,這樣一來后面區(qū)塊中存儲的前一區(qū)塊的哈希值也會改變,相應(yīng)地,之后所有區(qū)塊的哈希值都會變化。因此為了使被篡改的交易值得到認同,篡改者就要從當(dāng)前節(jié)點開始,改變后面所有的區(qū)塊。

由于工作量太大且篡改成本會遠遠超過收益,因此這基本是不可能完成的事。因此區(qū)塊鏈從一定程度上來說,是具有高度安全性的。一個簡單的哈希鏈如圖1-2所示。

圖1-2哈希鏈示意圖

區(qū)塊鏈的區(qū)塊頭中含有前一區(qū)塊的哈希值、版本號、時間戳、隨機數(shù)、Merkle根(Merkle根在2.2.4小節(jié)有詳細講解)、難度目標等信息,而區(qū)塊體中包含了此區(qū)塊的所有交易信息,并且,每個區(qū)塊都有自己的區(qū)塊標識符——區(qū)塊頭哈希值和區(qū)塊高度。區(qū)塊結(jié)構(gòu)如圖1-3所示。

圖1-3區(qū)塊結(jié)構(gòu)示意圖

1.1.5區(qū)塊鏈的基本類型

1.公有鏈

公有鏈是指全世界任何人都可讀取,任何人都能發(fā)送交易且交易能獲得有效確認,任何人都能參與共識過程的區(qū)塊鏈。共識過程決定哪個區(qū)塊可被添加到區(qū)塊鏈中,同時明確當(dāng)前狀態(tài)。

公有鏈有如下幾個特點:

(1)保護用戶免受開發(fā)者影響。在公有鏈中,程序開發(fā)者無權(quán)干涉用戶,區(qū)塊鏈可以保護其用戶。

(2)訪問門檻低。任何人都可以訪問公有鏈,只要有一臺能夠聯(lián)網(wǎng)的計算機就能滿足最基本的訪問條件。

(3)所有數(shù)據(jù)默認公開。公有鏈中的每個參與者都可以看到整個分布式賬本中的所有交易記錄。

2.私有鏈

私有鏈是指其寫入權(quán)限僅在一個組織手里的區(qū)塊鏈,目的是對讀取權(quán)限或者對外開放權(quán)限進行限制。

私有鏈有如下幾個特點:

(1)交易速度非常快。私有鏈中少量節(jié)點具有很高的信任度,并不需要每個節(jié)點都來驗證一個交易。

(2)為隱私提供更好的保障。私有鏈的數(shù)據(jù)不會被公開,除非擁有規(guī)定的訪問權(quán)限,否則無法獲取鏈中數(shù)據(jù)。

(3)交易成本大幅降低甚至為零。私有鏈上可以進行完全免費或者至少說是非常廉價的交易。

3.聯(lián)盟鏈

聯(lián)盟鏈是指其共識過程受到預(yù)選節(jié)點控制的區(qū)塊鏈。例如,對由15個金融機構(gòu)組成的共同體而言,每個機構(gòu)都運行一個節(jié)點,為了使每個區(qū)塊生效,需要其中半數(shù)以上機構(gòu)的確認。區(qū)塊鏈上的數(shù)據(jù)可能會允許每個人讀取,也可能會受限于參與者身份,并實現(xiàn)基于用戶節(jié)點身份的訪問控制功能。

1.1.6區(qū)塊鏈的共識算法

所謂共識(Consensus),通俗地講,就是大家對某一事物的理解達成一致。

“挖礦”是區(qū)塊鏈中一個專業(yè)術(shù)語,是對“為獲取比特幣而付出努力”這個過程的比喻,它通過消耗計算資源來處理交易,確保網(wǎng)絡(luò)安全,保持網(wǎng)絡(luò)中每個人的信息同步。可以理解為是比特幣的數(shù)據(jù)中心,區(qū)別在于完全分布式的設(shè)計。挖礦實質(zhì)上是在用計算機解決一項復(fù)雜的數(shù)學(xué)問題,來保證比特幣網(wǎng)絡(luò)分布式記賬系統(tǒng)的一致性。也就是說要算出當(dāng)前區(qū)塊復(fù)雜數(shù)學(xué)問題的解。

“礦工”在世界各國進行操作,沒有人可以控制網(wǎng)絡(luò)。有些礦工為了能挖到比特幣,就不斷提高自己的挖礦設(shè)備的配置,這實則是提高自己計算機計算哈希函數(shù)的速度。

區(qū)塊可以看做是比特幣賬本的單獨一頁紙或者總賬本。在絕大多數(shù)情況下,新區(qū)塊被加入到記錄最后(在比特幣中的名稱為塊鏈),一旦寫上,就再也不能改變或刪除。每個區(qū)塊記錄了它被創(chuàng)建之前發(fā)生的所有事件。

FLP原理實際上說明在允許節(jié)點失效的情況下,純粹異步系統(tǒng)無法確保在有限時間內(nèi)完成一致性。但這不意味著我們無法設(shè)計出一個基于區(qū)塊鏈技術(shù)的共識算法。在工程領(lǐng)域中,通過控制最壞情形(如一致性被破壞)的發(fā)生概率,將其降低至一個可接受的范圍后,我們便可以考慮在實際場合中使用該算法了。

共識算法絕非區(qū)塊鏈的“專利”。任何分布式系統(tǒng)皆可針對自身性質(zhì),采用不同的共識算法。

下面將首先介紹幾個經(jīng)典的共識算法。

1.?Paxos算法

Paxos算法應(yīng)用于分布式系統(tǒng)中存在故障、但不存在惡意節(jié)點的場景下的共識達成問題,其原理基于“兩階段提交”并進行泛化和擴展,通過消息傳遞來逐步消除系統(tǒng)中的不確定狀態(tài)。Paxos能保證在超過一半的節(jié)點正常工作時,系統(tǒng)總能以較大概率達成共識。

1)?Paxos算法的邏輯角色和約束要求

Paxos算法將節(jié)點分為三種邏輯角色,在實現(xiàn)上同一個節(jié)點可以擔(dān)任多個角色。

(1)

Proposer:提議發(fā)起者。Proposer可以有多個,Proposer提出提案(value)。所謂value,可以是任何操作,比如“設(shè)置某個變量的值為value”。不同的Proposer可以提出不同的value,例如某個Proposer提議“將變量X設(shè)置為1”,另一個Proposer提議“將變量X設(shè)置為2”。但對同一輪Paxos過程,最多只有一個value被批準。

(2)?Acceptor:提議接受者。Acceptor有N個,Proposer提出的value必須獲得超過半數(shù)(N/2+1)的Acceptor批準后才能通過。Acceptor之間完全對等獨立。

(3)

Learner:提議學(xué)習(xí)者。上面提到只要超過半數(shù)Acceptor通過即可獲得通過,那么Learner角色的目的就是把通過的確定性取值同步給其他未確定的Acceptor。

算法需要滿足Safety和Liveness兩方面的約束要求。Safety約束用于保證提案(value)結(jié)果是對的,無歧義的,不會出現(xiàn)錯誤情況。Liveness約束用于保證提案過程能在有限時間內(nèi)完成。

2)?Paxos算法的詳細過程

Paxos算法的詳細過程如下所述:

(1)準備階段:

·提案者將自己計劃提交的提案編號作為準備信息(Prepare(n))發(fā)送給多個接收者,試探是否可以鎖定多數(shù)接收者的支持。

·接受者時刻保留收到過提案的最大編號和接受的最大提案。如果收到的提案號比目前保留的最大提案號還大,則返回自己已接受的提案(如果還未接受過任何提案,則為空)給提案者,更新當(dāng)前最大提案號,并承諾不再接受小于最大提案號的提案。

(2)提交階段:

·提案者如果收到大多數(shù)接受者的回復(fù),則可準備發(fā)出帶有剛才提案號的接受信息(Accept(value,n)),否則直接視為提案失敗。

·接受者接收到“接受”信息后,如果發(fā)現(xiàn)提案編號不小于已接收的最大提案編號,則接受該提案,并更新接受的最大提案。

·一旦多數(shù)接受者接受了共同的提案值,則形成決議并成為最終確認案,Proposer將通知Learner更新提案內(nèi)容。至此,一輪Paxos過程結(jié)束。

3)?Paxos算法的運行過程

下面將配合圖例(圖1-4)講解Paxos算法的運行過程。

(1)

Proposer1把提案1的準備請求發(fā)送給所有Acceptor,并接收到來自Acceptor1與Acceptor2的回復(fù)(Acceptor3因網(wǎng)絡(luò)原因未能收到請求)。因為Acceptor1、Acceptor2此前從未接受過任何提案,所以回復(fù)為空,同時更新接收的最大提案。(時間軸①)

(2)

Proposer2把提案2發(fā)送給所有Acceptor,并接收到來自Acceptor2與Acceptor3的回復(fù)。兩個Acceptor此前從未接受過任何提案,因此回復(fù)為空,同時更新接收的最大提案。(時間軸②)

(3)

Proposer1獲得超過半數(shù)準備請求的回復(fù),且收到的回復(fù)全為空值,因此繼續(xù)使用自己的提案值,并發(fā)送提案1的“接受”請求至回復(fù)它的Acceptor。Acceptor1、Acceptor2收到接受請求后檢查提案號與已接收的最大提案號,Acceptor1同意請求并將提案作為自己的已接受提案,Acceptor2拒絕請求。因為沒有超過半數(shù),所以提案失敗。(時間軸③)

(4)

Proposer2獲得超過半數(shù)準備請求的回復(fù),且收到的回復(fù)全為空值,因此繼續(xù)使用自己的提案值,發(fā)送提案2的“接受”請求至回復(fù)它的Acceptor。Acceptor2、Acceptor3收到接受請求后檢查提案號與已接收的最大提案號,兩個Acceptor都同意了Proposer2的接受請求,超過半數(shù),故一輪Paxos過程結(jié)束。(時間軸④)

如果在時間軸④中某個Acceptor至Proposer2的回復(fù)并未能發(fā)送成功,那么該提案2將會因支持者不超過半數(shù)而失敗。此時Acceptor1、Acceptor2、Acceptor3三者皆留有一份自己已接受的提案。而最終通過的提案的值無論如何都會繼承提案2的值,請讀者自行思考其中的原因。

圖1-4

Paxos算法圖例

2.拜占庭問題與PBFT算法

1)拜占庭算法概述

拜占庭問題更為廣泛,討論的是允許存在少數(shù)結(jié)點作惡(消息可能偽造)場景下的一致性達成問題。在公有鏈環(huán)境中,這一需求尤為突出。

拜占庭問題是LeslieLamport等科學(xué)家于1982年提出的用來解釋一致性問題的一個虛構(gòu)模型。問題中,守衛(wèi)邊境的多個將軍(系統(tǒng)中的多個節(jié)點)需要通過信使來傳遞消息,以達成某些一致的決定。但由于將軍中可能存在叛徒(系統(tǒng)中節(jié)點出錯),這些叛徒將努力向不同的將軍發(fā)送不同的消息,試圖干擾共識的達成。拜占庭問題即為在此情況下,如何讓忠誠的將軍們達成行動的一致。該模型指出,對于拜占庭問題來說,假如節(jié)點總數(shù)為N,叛變將軍數(shù)為F,則當(dāng)N≥3F+1時,問題才有解。

例如,N

=

3,F(xiàn)

=

1時,可分為兩種情況:

(1)提案人不是叛變者。提案人發(fā)送一個提案出來,叛變者可以宣稱收到的是相反的命令。則第三個人(忠誠者)收到兩個相反的消息,無法判斷誰是叛徒,且無法達成一致。

(2)提案人是叛變者。提案人發(fā)送兩個相反的提案給另外兩個人,另外兩個人都收到兩個相反的消息,無法判斷誰是叛徒,且無法達成一致。

2)?PBFT算法的基本過程

1999年,Castro和Liskov提出的PBFT(PracticalByzantineFaultTolerance,實用拜占庭容錯)是第一個得到廣泛應(yīng)用的BFT算法。在PBFT算法中,如果超過三分之二的節(jié)點正常,整個系統(tǒng)就可以正常工作。PBFT算法采用密碼學(xué)相關(guān)技術(shù)(RSA簽名算法、消息驗證編碼和摘要)確保消息傳遞過程中算法無法被篡改和破壞。

PBFT算法的基本過程如下:

(1)首先通過輪換或隨機算法選出某個節(jié)點為主節(jié)點,此后只要主節(jié)點不切換,則成為一個視圖(view)。

(2)在某視圖中,客戶端將請求<Request,operation,timestamp,client>發(fā)送給主節(jié)點,主節(jié)點負責(zé)廣播請求到所有其他副本節(jié)點。

(3)所有節(jié)點處理完請求,將處理結(jié)果<Reply,view,timestamp,client,id_node,response>返回給客戶端??蛻舳藱z查是否收到了至少F+1個來自不同節(jié)點的相同結(jié)果,并將其作為最終結(jié)果。

3)主節(jié)點的廣播過程

主節(jié)點的廣播過程包括預(yù)準備(pre-prepare)階段、準備(prepare)和提交(commit)階段三個階段的處理。預(yù)準備和準備階段確保在同一視圖內(nèi)請求的發(fā)送順序是正確的;準備和提交階段則確保在不同視圖之間的確認請求是保序的。

(1)預(yù)準備階段。

(2)準備階段。

(3)提交階段。

在區(qū)塊鏈網(wǎng)絡(luò)中,節(jié)點為了讓自己的賬本與其他節(jié)點賬本保持一致,需要共識機制,但與上述共識算法存在不同點。例如通過設(shè)立與區(qū)塊鏈代幣相關(guān)的機制,采用經(jīng)濟上的懲罰來制約破壞者;放寬對最終一致性確認的需求,鏈可以出現(xiàn)短暫分叉并最終按已知最長的鏈進行擴展;通過增加提案成本來限制一段時間內(nèi)整個網(wǎng)絡(luò)中出現(xiàn)的提案個數(shù)。

3.常見的共識算法

目前在區(qū)塊鏈中,常見的共識算法有如下幾種:

1)

POW

工作量證明(ProofOfWork,POW)是第一個成功的去中心化區(qū)塊鏈共識算法。

工作量證明最顯著的優(yōu)點是,它在過去的幾年里得到了實踐的證明,這個比許多其他共識算法都更值得一提。然而,工作量證明并不是沒有缺點,它的缺點為采礦的大量電力消耗和低交易吞吐量。

2)?POS

對于權(quán)益證明(Proof

Of

State,POS),有很多實施提議。在所有的實施方案中,權(quán)益證明均要求所有的參與者抵押一部分他們所擁有的代幣來驗證交易。不同于通過完成復(fù)雜計算問題來驗證交易,驗證者需要通過鎖定代幣來完成交易驗證。POS機制類似于現(xiàn)實生活中的股東機制,擁有股份越多的人越容易獲取記賬權(quán),同時越傾向于維護網(wǎng)絡(luò)的正常工作,否則他們手中的‘代幣’將失去應(yīng)有的價值。

3)?DPOS

雖然委托權(quán)益證明(Delegated

Proof

Of

State,DPOS)和權(quán)益證明名字差不多,但它們的實施細節(jié)卻有顯著的不同。在委托權(quán)益證明中,不同于在權(quán)益證明中用抵押代幣的方式來驗證交易,它通過代幣的持有者投票產(chǎn)生一組交易驗證者(超級節(jié)點)。

委托權(quán)益證明既是去中心化的,因為網(wǎng)絡(luò)中的所有參與者都能參與投票;但也是中心化的,因為只有一組交易驗證者,這樣的好處就是提高了交易和驗證的速度。

委托權(quán)益證明的實施需要維持良好的信譽、維持持續(xù)投票流程以及正常進行驗證節(jié)點的更換,以保證選取產(chǎn)生的驗證者有良好的責(zé)任心和誠實感。

委托權(quán)益證明的優(yōu)勢在于良好的可擴展性以及快速的交易驗證,但是缺點在于部分中心化,并且治理模式還沒有在大的區(qū)塊鏈項目中被證明是行之有效的。

4)?BFT

拜占庭容錯機制(ByzantineFaultTolerance,BFT)本質(zhì)上是一個高度技術(shù)性的算法(像其他共識算法一樣)。一般來說,加密貨幣項目所采用的拜占庭容錯機制是通過允許將軍(節(jié)點)分別管理一條鏈,并在彼此之間以共享消息的方式來確保正確的交易記錄和每個節(jié)點的誠實性的。

在應(yīng)用上,比較為人熟知的是,拜占庭容錯機制被用于瑞波(驗證節(jié)點由瑞波團隊選出)和恒星幣(任何人都可以當(dāng)驗證節(jié)點,信任節(jié)點由社區(qū)共識產(chǎn)生)。

拜占庭容錯機制的優(yōu)勢在于其所具有的可擴展性和低廉的轉(zhuǎn)賬費用,但是它和委托權(quán)益證明一樣,引入了部分中心化。

每個共識機制都有其獨特的優(yōu)點和權(quán)衡,在選擇時應(yīng)當(dāng)理性權(quán)衡。值得注意的是,這是一個不斷發(fā)展的領(lǐng)域,也存在許多其他方法,并且可能會出現(xiàn)新的方法。

1.2區(qū)塊鏈技術(shù)平臺

1.2.1比特幣比特幣(Bitcoin)是第一個區(qū)塊鏈應(yīng)用,是一種P2P形式的數(shù)字貨幣,采用點對點的傳輸方式,是一個去中心化的支付系統(tǒng)。比特幣使用工作量證明機制(POW)來達成網(wǎng)絡(luò)間節(jié)點的共識。比特幣是一個公有鏈,任何節(jié)點都可以加入,沒有訪問方面的權(quán)限;不支持智能合約,但是支持一些有局限性(沒有循環(huán)語句和條件控制語句)的編程腳本語言來運作簡單的腳本程序。

比特幣經(jīng)濟是指通過使用整個P2P網(wǎng)絡(luò)中眾多節(jié)點構(gòu)成的分布式數(shù)據(jù)庫來確認并記錄所有的交易行為,并使用密碼學(xué)的設(shè)計來確保貨幣流通中各個環(huán)節(jié)的安全性。這一概念為后續(xù)出現(xiàn)的區(qū)塊鏈貨幣所沿用,記錄交易行為的分布式數(shù)據(jù)庫被稱為“賬本”。結(jié)合對先前區(qū)塊鏈層次模型的介紹,我們不難理解區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)對于交易數(shù)據(jù)起到的保護作用。比特幣賬本樣例參見圖1-5,其原理和運行機制在1.3小節(jié)會進行詳細介紹。

圖1-5比特幣“賬本”

1.2.2以太坊

以太坊(Ethereum)是一個開源的有智能合約功能的公共區(qū)塊鏈平臺,通過其專用加密貨幣——以太幣(Ether)——提供去中心化的虛擬機(即以太虛擬機,EthereumVirtualMachine),以處理點對點合約。以太坊簡要來說就是區(qū)塊鏈技術(shù)與智能合約的結(jié)合產(chǎn)物。

在以太坊中,每個賬戶都有一個Key-Value形式的持久化存儲數(shù)據(jù)結(jié)構(gòu)Storage。智能合約需要通過Storage存儲狀態(tài)變量的值,而用戶通過Storage存儲以太坊代幣儲值。以太坊中所有用戶的Storage所構(gòu)成的集合被稱為State(狀態(tài)),通過某種方式記錄于區(qū)塊中。每次交易后State會發(fā)生改變。如在圖1-6中,賬戶0x892bf92f是一個合約賬號(與被稱為‘外部賬號’的普通用戶相對應(yīng))。它本身可以存儲代幣值,其自定義的合約代碼的功能是根據(jù)交易參數(shù)tx.data[0]的值,修改狀態(tài)變量數(shù)組中對應(yīng)序號的元素值為tx.data[1](前提是原有的元素值為空)。

圖1-6以太坊與智能合約

1.2.3

EOS

EOS(Enterprise

Operation

System,企業(yè)操作系統(tǒng))是商用分布式應(yīng)用設(shè)計的一款區(qū)塊鏈操作系統(tǒng),具有超高性能。它的設(shè)計目標是支持大量用戶(可能是上億級別的)、超高性能(支持百萬級TPS)、消除手續(xù)費、具備橫向和縱向性能擴展能力。

EOS區(qū)塊鏈操作系統(tǒng)具備強大的性能,能夠同時運作多個應(yīng)用程序。EOS底層平臺對開發(fā)者友好,設(shè)計了一個類似Facebook公司的現(xiàn)代網(wǎng)站開發(fā)結(jié)構(gòu),大大降低了區(qū)塊鏈應(yīng)用程序的開發(fā)難度。

EOS就像有一組有人和機器人的腳本,他們之間不斷交換著信息。每個用戶和機器人在系統(tǒng)中都擁有自己的地址,當(dāng)交易信息被發(fā)送后,不一定能夠保證接收成功。如果交易信息被成功接收,就意味著接收方能夠根據(jù)智能合約觸發(fā)相應(yīng)的操作。同時,EOS系統(tǒng)中的接收方和被抄送方可以拒收交易信息,此時交易信息傳送失敗。EOS區(qū)塊鏈是一個透明的系統(tǒng),并且可以永久記錄消息,它記錄著EOS系統(tǒng)內(nèi)部所有傳遞成功的消息。

EOS上的應(yīng)用程序不需要用戶為區(qū)塊鏈上的操作支付費用。像傳統(tǒng)的基于Web的應(yīng)用程序一樣,EOS應(yīng)用程序也為開發(fā)人員提供了程序運行需要的資源。這意味著我們可以創(chuàng)建免費的區(qū)塊鏈應(yīng)用程序,新用戶無需經(jīng)歷繁瑣的電子貨幣購買流程,就可用直接使用區(qū)塊鏈上的應(yīng)用程序以及直接在區(qū)塊鏈上構(gòu)建應(yīng)用程序。與之前底層區(qū)塊鏈平臺技術(shù)相比,EOS使大規(guī)模分布式應(yīng)用程序相互通信得以實現(xiàn)。

1.2.4區(qū)塊鏈商用平臺——超級賬本

2015年12月,由Linux基金會牽頭,IBM、Intel、Cisco等共同宣布了Hyperledger聯(lián)合項目成立,Hyperledger

Fabric也是該聯(lián)盟同時推出的第一個孵化中的項目。

超級賬本項目為透明、公開、去中心化的企業(yè)級分布式賬本技術(shù)提供了開源參考實現(xiàn)。它首次將區(qū)塊鏈技術(shù)引入到分布式聯(lián)盟賬本的應(yīng)用場景中,為未來基于區(qū)塊鏈技術(shù)打造高效率的商業(yè)網(wǎng)絡(luò)打下基礎(chǔ)。

1.?Fabric

Fabric是區(qū)塊鏈的基礎(chǔ)核心平臺,支持PBFT(拜占庭容錯算法)等新的共識機制,支持權(quán)限管理。Fabric是數(shù)字事件(交易)的賬本,這個賬本由多個參與者共享,每個參與者都在系統(tǒng)中擁有權(quán)益。賬本只有在所有參與者達成共識的情況下才能夠更新。交易可以具有保密性和私有性。每個參與者(需提供身份證明)可在網(wǎng)絡(luò)成員服務(wù)頁面進行注冊,以獲取系統(tǒng)的訪問權(quán)限,使用密鑰導(dǎo)出的復(fù)雜函數(shù)對交易內(nèi)容進行加密,確保只有指定的參與者才能看到內(nèi)容。Fabric的結(jié)構(gòu)(見圖1-7)分為身份服務(wù)、策略服務(wù)、區(qū)塊鏈服務(wù)、智能合約服務(wù)四種。

圖1-7

Fabric的結(jié)構(gòu)示意圖

2.?Sawtooth

Sawtooth是Intel主要發(fā)起和貢獻的區(qū)塊鏈平臺,支持全新的基于硬件芯片的共識機制ProofOfElapsedTime(POET),時間消逝量。

3.?Iroha

Iroha是賬本平臺項目,基于C++?實現(xiàn),帶有面向Web和Mobile的特性。

4.?BlockchainExplorer

BlockchainExplorer提供Web操作界面,可以查詢綁定區(qū)塊鏈的狀態(tài)(如區(qū)塊個數(shù)、交易歷史)信息等。

5.?Cello

Cello可提供區(qū)塊鏈平臺的部署和運行時管理功能,應(yīng)用開發(fā)者無需關(guān)心如何搭建和維護區(qū)塊鏈。

6.?Indy

Indy可提供基于分布式賬本技術(shù)的數(shù)字身份管理機制。

7.?Composer

Composer可提供面向鏈碼開發(fā)的高級語言支持,并可自動生成鏈碼等。

8.?Burrow

Burrow可提供以太坊虛擬機的支持,實現(xiàn)支持高效交易的帶權(quán)限的區(qū)塊鏈平臺。

表1-1中列出了以上幾個平臺所使用的共識機制、區(qū)塊鏈類型、開發(fā)語言、是否支持智能合約和每秒事務(wù)處理量(TPS)等性能指標,以便讀者更加直觀地對各平臺進行對比。

1.3比特幣的機制詳解

1.3.1工作量證明——挖礦在比特幣網(wǎng)絡(luò)這個去中心化的電子記賬系統(tǒng)中,當(dāng)A發(fā)送10個比特幣給B時,A需要把這個信息廣播給網(wǎng)絡(luò)中的其他人。同理,B發(fā)送5個比特幣給C,C也需要把這個消息廣播給網(wǎng)絡(luò)中的所有人。該廣播記賬過程如圖1-8所示。圖1-8簡化版比特幣記賬演示

1.3.2身份認證

傳統(tǒng)的身份認證方法包括人臉識別、手寫簽字、指紋識別等,但是由于它們都可以被電子拷貝,因此這些方法在電子支付中都不現(xiàn)實。

傳統(tǒng)身份認證方法中的賬戶地址和密碼的對應(yīng)關(guān)系是依靠數(shù)據(jù)庫中存儲的表格來實現(xiàn)的。賬戶由第三方提供,密碼則由用戶自己設(shè)置,并沒有數(shù)學(xué)上的關(guān)系。

舉個例子,A要轉(zhuǎn)賬10個比特幣給B,那么A首先需要將這個記錄進行哈希運算得到摘要,再對摘要用私鑰進行加密得到密碼,并將A轉(zhuǎn)賬10個比特幣給B的這個記錄、公鑰和密碼廣播給比特幣網(wǎng)絡(luò)中的其他人;其他人對記錄進行哈希運算得到摘要1,再用公鑰解密密碼得到摘要2;對比摘要1和摘要2,若相同,則確定是A廣播的。以上就是防偽的過程,即電子簽名技術(shù),如圖1-9所示。

圖1-9電子簽名技術(shù)

1.3.3雙重支付問題

1.余額檢查——追溯與記錄

比特幣網(wǎng)絡(luò)中,鏈是由一個個區(qū)塊組成的,每一個塊上都有交易記錄,并且是公開透明的,每一個用戶都能看到,若A要轉(zhuǎn)賬10個比特幣給B,就要廣播,那么網(wǎng)絡(luò)中的其他人就會不斷往前追溯塊中的記錄,來檢查A用戶是否有那么多的比特幣可被用來轉(zhuǎn)賬,若計算余額足夠就會將該交易記錄下來,如果計算的金額不足,那么就拒絕接收該交易消息。

2.次序檢查——分歧與一致

假設(shè)A本身賬戶只有18個比特幣,卻同時分別發(fā)送10個比特幣給B和C時,由于有一次的交易金額不足,因此在比特幣網(wǎng)絡(luò)中,有一部分用戶只接收與B的交易記錄,有一部分用戶只接收與C的交易記錄。當(dāng)其中有一個人挖礦成功,把他打包的交易記錄鏈接到區(qū)塊鏈中去,那么這個人所記錄的A的記錄就成為“官方”的了,其他記錄錯了的用戶會自動站隊過去。

舉個例子,攻擊者馬洛里在Carol的畫廊買了三幅畫,馬洛里轉(zhuǎn)賬比特幣給Carol,進而完成了一筆交易。Carol確認交易登記在鏈上后,就把畫交給馬洛里。此時馬洛里的一個同伙Paul開始了51%攻擊,首先Paul利用自己礦池的算力重新計算包含這筆交易的塊,并且在新塊里將原來的交易替換成了另一筆交易(比如直接轉(zhuǎn)給了馬洛里的另一個錢包,而非Carol的錢包);然后Paul在偽造塊的基礎(chǔ)上又快速計算出新的塊,加高分叉鏈高度,使得這個包含替換交易的分叉區(qū)塊鏈替代了原來的鏈條,而Carol從合法交易中獲得的比特幣將不再存在。

為了避免這類攻擊,一種方法是在交易上鏈后,額外等待新的若干個區(qū)塊出塊后再正式交付。這種方法可降低51%攻擊成功的可能性。

1.3.4防止篡改

1.最長鏈原則

由于哈希值的產(chǎn)生是隨機的,再加上網(wǎng)絡(luò)的延遲,所以曠工在挖礦時,可能存在兩個礦工同時挖出區(qū)塊的可能,這時候區(qū)塊鏈就會分叉。此時可以等待下一個塊的出現(xiàn),看下一個塊首先出現(xiàn)在哪一個分叉上,出現(xiàn)在哪條鏈上,哪條鏈就更長一點,哪條鏈就是主鏈,同時另一條就被舍棄,這就是“最長鏈原則”。

2.防篡改

區(qū)塊鏈的防篡改是由以下三點來保證的:

一是分布式賬本技術(shù)。區(qū)塊鏈創(chuàng)建了一個多點分布、數(shù)據(jù)一致的分布式記賬技術(shù)。一個黑客組織可能黑掉一個銀行的數(shù)據(jù)庫,往自己的賬號加錢,但面對比特幣這種有數(shù)千萬節(jié)點的分布式網(wǎng)絡(luò),必須要在短時間內(nèi)黑掉一半以上(51%)的節(jié)點,才能更改數(shù)據(jù)。這技術(shù)難度太大了,幾乎不可能實現(xiàn)。

二是巨大的計算力成本。要更改數(shù)據(jù),就要更改一整個區(qū)塊,即比特幣中的挖礦(做一個單向的哈希算法)。這需要付出巨大的算力成本,個人或組織要具備這種算力是不太現(xiàn)實的。

三是密碼學(xué)的應(yīng)用。區(qū)塊鏈采用了大量的密碼學(xué)技術(shù),如非對稱算法、橢圓曲線、RSA等。非對稱算法背后有強大的數(shù)學(xué)模型做支撐,現(xiàn)有的計算機技術(shù)還很難突破底層的數(shù)學(xué)難題。并且區(qū)塊鏈是一層一層疊加的區(qū)塊,要更改某個區(qū)塊,必須從頭開始更改所有區(qū)塊。改一個區(qū)塊的算力成本都非常大,可想而知要更改這么多區(qū)塊的難度有多大。

1.3.5閃電網(wǎng)絡(luò)

比特幣交易網(wǎng)絡(luò)最為人詬病的一點便是交易性能——全網(wǎng)絡(luò)每秒7筆左右的交易速度,遠低于傳統(tǒng)的金融交易速度;同時等待6個塊的可行確認(為了抵御之前所提及的雙重支付攻擊),將導(dǎo)致約一個小時的最終確認時間。

為了提升性能,比特幣社區(qū)提出了閃電網(wǎng)絡(luò)等創(chuàng)新的設(shè)計。

閃電網(wǎng)絡(luò)主要通過引入智能合約的思想來完善鏈下的交易渠道。核心的概念主要有兩個:RSMC(RecoverableSequenceMaturityContract,序列到期可撤銷合約)和HTLC(HashedTimeLockContract,哈希時間鎖定合約)。前者解決了鏈下交易的確認問題。后者解決了支付通道的問題。下面將介紹這兩個概念。

1.?

RSMC

RSMC定義了該雙向微支付通道的最基本工作方式。

1)單方面終止通道

如圖1-10所示,深灰色的交易都是交易者A持有的合約,反之亦然;流程圖的箭頭代表資金的走向以及合約的簽名狀況,經(jīng)過兩者簽名的合約才算正式生效;圓圈(o)表示該簽名已被簽署于合約中,加粗的流程箭頭和對勾(√)代表示例中簽署的合約以及對應(yīng)的簽名執(zhí)行者;符號“X”代表兩個合約是互斥的,只能執(zhí)行其中的一個。圖中,交易者A簽署C1a合約單方面終止通道,交易者B將立刻獲得當(dāng)前資金分配方案中自己的部分,而交易者A需要等待若干個出塊確認后才能獲得自己應(yīng)有的資金。

圖1-10

RSMC示例—單方面終止通道

2)舊版本廢止與違約懲罰

如圖1-11所示,在更新資金分配方案的同時雙方必須要簽署舊版本作廢合約。例如對于BR1a合約,雙方均已簽名,只要作為父合約的C1a被執(zhí)行,它也便可被執(zhí)行。一旦交易者A妄圖執(zhí)行已作廢的C1a合約,那么作為反擊,交易者B可以執(zhí)行BR1a合約,獲得交易者A的0.5比特幣資產(chǎn);此時RD1a合約執(zhí)行失敗,表現(xiàn)不誠信的交易者A失去了所有存儲在通道內(nèi)的金額。

圖1-11

RSMC示例——舊版本廢止與合約懲罰

2.HTLC

RSMC通道提供的是一種局限于鏈下雙方快速、高頻、可信的安全交易方案,但是為需要進行交易的每一對用戶間都建立這一通道,反而得不償失。

HTLC可用于實現(xiàn)由中間人參與的微支付通道。HTLC理解起來較為簡單,即通過智能合約,雙方約定接收方提供一個哈希值。如果在一定時間內(nèi)有人能提出一個字符串,使得它經(jīng)過哈希計算后的值與已知值匹配,則轉(zhuǎn)賬方將這筆錢轉(zhuǎn)給回答正確的人。HTLC合約具有強行執(zhí)行的效能,并具有時間限制。

示例步驟如下所示:

(1)甲方要付1個比特幣給丁方,丁方將一個隨機的哈希值(H)給甲方;

(2)甲方和乙方簽訂一個HTLC,合約內(nèi)容是:甲方支付乙方1個比特幣,前置條件為“乙方需要在48小時內(nèi)提供哈希值(H)給甲方,否則交易自動取消”;

(3)乙方和丙方簽訂了一個HTLC,合約內(nèi)容是:乙方支付丙方1個比特幣,前置條件為“丙方需要在28小時內(nèi)提供哈希值(H)給乙方,否則交易自動取消”;

(4)丙方和丁方簽訂了一個HTLC,合約內(nèi)容是:丙方支付丁方1個比特幣,前置條件為“丁方需要在8小時內(nèi)提供哈希值(H)給丙方,否則交易自動取消”;

(5)在規(guī)定時間內(nèi),哈希值(H)由丁方交給丙方,丙方交給乙方,乙方交給甲方,大家依次拿到1個比特幣,甲丁雙方的交易至此完成。

1.4區(qū)塊鏈應(yīng)用場景

1.4.1金融服務(wù)自有人類社會以來,金融交易就是必不可少的經(jīng)濟活動,涉及貨幣、證券、保險、抵押、捐贈等諸多行業(yè)。交易角色和交易功能的不同,反映出不同的生產(chǎn)關(guān)系。通過金融交易,可以優(yōu)化社會運轉(zhuǎn)效率,實現(xiàn)資源價值的最大化??梢哉f,人類社會的文明發(fā)展離不開交易形式的演變。

傳統(tǒng)交易本質(zhì)上交換的是物品價值的所屬權(quán)。為了完成一些貴重商品的交易(例如房屋、車輛的所屬權(quán)等),往往需要十分繁瑣的中間環(huán)節(jié),同時需要中介和擔(dān)保機構(gòu)參與其中。這是因為,交易雙方往往存在著不能充分互信的情況。一方面,要證實合法的價值所屬權(quán)并不簡單,往往需要開具各種證明材料,這其中難免存在造假的可能;另一方面,價值不能直接進行交換,同樣需要繁瑣的手續(xù),在這個過程中存在較多的篡改風(fēng)險。

1.銀行業(yè)金融管理

銀行從角色上一般可分為中央銀行(央行)和普通銀行。

中央銀行的兩大職能是促進宏觀經(jīng)濟穩(wěn)定和維護金融穩(wěn)定,主要手段就是管理各種證券和利率。中央銀行為整個社會的金融體系提供了最終的信用擔(dān)保。

普通銀行業(yè)則往往基于央行的信用,作為中介和擔(dān)保方,來協(xié)助完成多方的金融交易。

區(qū)塊鏈技術(shù)的出現(xiàn),被認為是有可能促使這一行業(yè)發(fā)生革命性變化的“奇點”。除了眾所周知的比特幣等數(shù)字貨幣實驗之外,還有諸多金融機構(gòu)進行了有意義的嘗試。下面進行簡單介紹。

(1)歐洲央行評估了區(qū)塊鏈在證券交易后結(jié)算的應(yīng)用。

(2)中國人民銀行也積極投入?yún)^(qū)塊鏈研究。

(3)加拿大銀行推出新的數(shù)字貨幣。

(4)英國央行實現(xiàn)RSCoin(數(shù)字化貨幣系統(tǒng))。

(5)日本政府取消比特幣消費稅。

(6)中國郵政儲蓄銀行將區(qū)塊鏈技術(shù)應(yīng)用到核心業(yè)務(wù)系統(tǒng)中。

2.證券交易

證券交易包括交易執(zhí)行環(huán)節(jié)和交易后處理環(huán)節(jié)。

交易環(huán)節(jié)本身相對簡單,主要由交易系統(tǒng)(高性能實時處理系統(tǒng))完成電子數(shù)據(jù)庫中內(nèi)容的變更。中心化的驗證系統(tǒng)往往極為復(fù)雜和昂貴,交易指令執(zhí)行后的結(jié)算和清算環(huán)節(jié)也十分復(fù)雜,需要大量的人力成本和時間成本,并且容易出錯。

關(guān)于區(qū)塊鏈技術(shù)在證券交易領(lǐng)域的其他相關(guān)案例描述如下:

(1)

BitShare推出基于區(qū)塊鏈的證券發(fā)行平臺,號稱每秒達到10萬筆交易。

(2)DAH為金融市場交易提供基于區(qū)塊鏈的交易系統(tǒng),獲得澳洲證交所項目。

(3)

Symbiont幫助金融企業(yè)創(chuàng)建存儲于區(qū)塊鏈的智能債券,當(dāng)條件符合時,清算立即執(zhí)行。

(4)

O推出基于區(qū)塊鏈的私有和公開股權(quán)交易“T0”平臺,提出“交易即結(jié)算”(Thetradeisthesettlement)的理念,主要目標是建立證券交易實時清算結(jié)算的全新系統(tǒng)。

(5)高盛為一種叫做“SETLcoin”的新虛擬貨幣申請專利,用于為股票和債券等資產(chǎn)交易提供“近乎立即執(zhí)行和結(jié)算”的服務(wù)。

3.眾籌投資

作為去中心化的眾籌管理的代表,DAO(DecentralizedAutonomousOrganization,去中心化自治組織)曾創(chuàng)下歷史最高的融資記錄,數(shù)額超過1.6億美元。

值得一提的是,DAO的組織形式十分創(chuàng)新,這也造成其在受到攻擊后缺乏應(yīng)對經(jīng)驗。項目于2016年4月30日開始正式上線。6月12日,有技術(shù)人員報告合約執(zhí)行過程中存在軟件漏洞,但很遺憾并未得到組織的重視和及時修復(fù)。四天后,黑客利用漏洞轉(zhuǎn)移了360萬枚以太幣,當(dāng)時價值超過5000萬美元。

用ICO方式進行眾籌可以降低普通投資者對早期項目的參與門檻,并提高項目資產(chǎn)流動性。目前對ICO的眾籌模式缺少明確的法律法規(guī),對項目的商業(yè)模式也很難按照傳統(tǒng)方法進行估值與代幣定價。但隨著項目發(fā)起人開始重視對底層技術(shù)、資金使用和項目發(fā)展的信息披露,大眾投資者開始加深理解區(qū)塊鏈技術(shù)及其可行的應(yīng)用場景,這必將有助于促進這種新興模式的健康發(fā)展。

1.4.2征信和權(quán)屬管理

1.征信管理

征信管理是一個巨大的潛在市場,據(jù)稱超過千億元規(guī)模,也是目前大數(shù)據(jù)應(yīng)用領(lǐng)域最有前途的方向之一。目前,與征信相關(guān)的大量有效數(shù)據(jù)集中在少數(shù)機構(gòu)手中。由于這些數(shù)據(jù)太過敏感,并且具備極高的商業(yè)價值,因此往往會被嚴密保護起來,形成很高的行業(yè)門檻。

雖然現(xiàn)在大量的互聯(lián)網(wǎng)企業(yè)(包括各類社交網(wǎng)站)嘗試從各種維度獲取海量的用戶信息,但從征信角度看,這些數(shù)據(jù)仍然存在若干問題,主要包括以下三個方面:

(1)時效性不足。

(2)數(shù)據(jù)不足。

(3)相關(guān)度較差。

2.權(quán)屬管理

區(qū)塊鏈技術(shù)可以用于產(chǎn)權(quán)、版權(quán)等所有權(quán)的管理和追蹤,其中包括汽車、房屋、藝術(shù)品等各種貴重物品的交易等,也包括數(shù)字出版物以及可以標記的數(shù)字資源。目前權(quán)屬管理領(lǐng)域存在的幾個難題如下所述:

·

所有權(quán)的確認和管理。

·

交易的安全性和可靠性保障。

·

必要的隱私保護機制。

3.其他項目

在人力資源和教育領(lǐng)域,MIT(MassachusettsInstituteofTechnology,麻省理工學(xué)院)研究員朱莉安娜·納扎雷(JulianaNazard)和學(xué)術(shù)創(chuàng)新部主管菲利普·施密特(PhilippSchmidt)發(fā)表了文章《MITMediaLabUsestheBitcoinBlockchainforDigitalCertificates》,介紹基于區(qū)塊鏈的學(xué)歷認證系統(tǒng)?;谠撓到y(tǒng),用人單位可以確認求職者的學(xué)歷信息是否真實可靠。

此外,還包括一些其他相關(guān)的應(yīng)用項目,如:

·

Chronicled:基于區(qū)塊鏈的球鞋鑒定方案,為正品球鞋添加電子標簽,記錄在區(qū)塊鏈上。

·Mediachain:通過metadata協(xié)議,將內(nèi)容創(chuàng)造者與作品唯一對應(yīng)。

·Monegraph:通過區(qū)塊鏈保障圖片版權(quán)的透明交易。

·

Mycelia:區(qū)塊鏈產(chǎn)權(quán)保護項目,使音樂人實現(xiàn)音樂的自由交易。

·Tierion:將用戶數(shù)據(jù)錨定在比特幣區(qū)塊鏈上,并生成“區(qū)塊鏈收據(jù)”。

下面具體加以介紹。

1)資源共享

當(dāng)前,以Uber、Airbnb為代表的共享經(jīng)濟模式正在多個垂直領(lǐng)域沖擊傳統(tǒng)行業(yè),這一模式鼓勵人們通過互聯(lián)網(wǎng)的方式共享閑置資源。資源共享目前面臨的問題主要包括如下:

·共享過程成本過髙。

·用戶行為評價難。

·共享服務(wù)管理難。

區(qū)塊鏈技術(shù)為解決上述問題提供了更多的可能性。相比于依賴于中間方的資源共享模式,基于區(qū)塊鏈的模式有潛力更直接地連接資源的供給方和需求方,其透明、不可篡改的特性有助于減小摩擦。

有人認為區(qū)塊鏈技術(shù)會成為新一代共享經(jīng)濟的基石。筆者認為,區(qū)塊鏈在資源共享領(lǐng)域是否存在價值,還要看能否比傳統(tǒng)的專業(yè)供應(yīng)者或中間方形式實現(xiàn)更高的效率和更低的成本,同時不能損害用戶體驗。

2)短租共享

大量提供短租服務(wù)的公司已經(jīng)開始嘗試用區(qū)塊鏈來解決共享中的難題。高盛在報告《Blockchain:PuttingTheoryintoPractice》中宣稱:Airbnb等P2P住宿平臺已經(jīng)開始通過利用私人住所打造公開市場來變革住宿行業(yè),但是這種服務(wù)的接受程度可能會因人們對人身安全以及財產(chǎn)損失的擔(dān)憂而受到限制。而如果通過引入安全且無法篡改的數(shù)字化資質(zhì)和信用管理系統(tǒng),我們認為區(qū)塊鏈有助于提升P2P住宿的接受程度。

3)社區(qū)能源共享

在紐約布魯克林的一個社區(qū),已有項目嘗試將家庭太陽能發(fā)的電通過社區(qū)的電力網(wǎng)絡(luò)直接進行買賣。具體的交易不再經(jīng)過電網(wǎng)公司,而是通過區(qū)塊鏈執(zhí)行。

與之類似,ConsenSys和微電網(wǎng)開發(fā)商L03提出共建光伏發(fā)電交易網(wǎng)絡(luò),實現(xiàn)點對點的能源交易。這些方案的主要難題如下:

·太陽能電池管理。

·社區(qū)電網(wǎng)構(gòu)建。

·電力儲備系統(tǒng)搭建。

·低成本交易系統(tǒng)支持。

4)電商平臺

傳統(tǒng)情況下,電商平臺起到中介的作用。一旦買賣雙方發(fā)生糾紛,電商平臺會作為第三方機構(gòu)進行仲裁。這種模式存在著周期長、缺乏公證、成本高等缺點。OpenBazaar試圖在無中介的情形下,實現(xiàn)安全電商交易。OpenBazaar提供的分布式電商平臺通過多方簽名機制和信譽評分機制,讓眾多參與者合作進行評估,實現(xiàn)零成本解決糾紛問題。

5)大數(shù)據(jù)共享

在大數(shù)據(jù)時代,價值來自于對數(shù)據(jù)的挖掘,數(shù)據(jù)維度越多,體積越大,潛在價值也就越高。一直以來,比較讓人頭疼的問題是如何評估數(shù)據(jù)的價值,如何利用數(shù)據(jù)進行交換和交易,以及如何避免寶貴的數(shù)據(jù)在未經(jīng)許可的情況下泄露出去。

6)減小共享風(fēng)險

傳統(tǒng)的資源共享平臺在遇到經(jīng)濟糾紛時會充當(dāng)調(diào)解和仲裁者的角色。對于區(qū)塊鏈共享平臺,目前還存在線下復(fù)雜交易難以數(shù)字化等問題。除了引入信譽評分、多方評估等機制,也有方案提出引入保險機制來對沖風(fēng)險。

1.4.3貿(mào)易管理

1.跨境貿(mào)易

在國際貿(mào)易活動中,買賣雙方可能互不信任。因此需要銀行作為買賣雙方的保證人,代為收款交單,并以銀行信用代替商業(yè)信用。

區(qū)塊鏈可以為信用證交易參與方提供共同賬本,允許銀行和其他參與方擁有經(jīng)過確認的共同交易記錄并據(jù)此履約,從而降低風(fēng)險和成本。

2.物流供應(yīng)鏈

物流供應(yīng)鏈是區(qū)塊鏈一個很有前景的應(yīng)用方向。供應(yīng)鏈行業(yè)往往涉及諸多實體,包括物流、資金流、信息流等,這些實體之間存在大量復(fù)雜的協(xié)作和溝通。傳統(tǒng)模式下,不同實體各自保存各自的供應(yīng)鏈信息,嚴重缺乏透明度,造成了較高的時間成本和金錢成本;而且一旦出現(xiàn)問題(冒領(lǐng)、貨物假冒等),難以追查和處理。

通過區(qū)塊鏈,各方可以獲得一個透明可靠的統(tǒng)一信息平臺,可以實時查看狀態(tài),降低物流成本,追溯物品的整個生產(chǎn)和運送過程,從而提高供應(yīng)鏈管理的效率。當(dāng)發(fā)生糾紛時,舉證和追查也變得更加清晰和容易。

3.一帶一路

為了促進經(jīng)濟要素有序自由流動、資源高效配置和市場深度融合,我國將共建“一帶一路”作為建立新型全球發(fā)展伙伴關(guān)系的重要方針。一帶一路的主要內(nèi)容包括政策溝通、設(shè)施聯(lián)通、貿(mào)易暢通、資金融通、民心相通,倡導(dǎo)以開放為導(dǎo)向,冀望通過加強交通、能源和網(wǎng)絡(luò)等基礎(chǔ)設(shè)施的互聯(lián)互通建設(shè),開展更大范圍、更高水平、更深層次的區(qū)域合作,打造開放、包容、均衡、普惠的區(qū)域經(jīng)濟合作架構(gòu)。因此,建設(shè)可靠、高效的跨國家、全方位、多層面的交流、信任機制成為了合作順利與否的關(guān)鍵所在。

在類似“一帶一路”這樣創(chuàng)新的投資建設(shè)模式中,會遇到來自地域、貨幣、信任等各方面的挑戰(zhàn)?,F(xiàn)在已經(jīng)有一些參與到一帶一路中的部門對區(qū)塊鏈技術(shù)進行探索應(yīng)用。區(qū)塊鏈技術(shù)可以讓原先無法交易的雙方(例如,不存在多方都認可的國際貨幣儲備的情況下)順利完成交易,并且降低貿(mào)易風(fēng)險,減少流程管控的成本。

1.4.4物聯(lián)網(wǎng)應(yīng)用

物聯(lián)網(wǎng)曾被認為是大數(shù)據(jù)時代的基礎(chǔ),但是隨著區(qū)塊鏈技術(shù)的飛速發(fā)展和時代的進步,區(qū)塊鏈技術(shù)已成為物聯(lián)網(wǎng)時代的基礎(chǔ)。

區(qū)塊鏈技術(shù)在物聯(lián)網(wǎng)中的一種可能的應(yīng)用場景是:為物聯(lián)網(wǎng)絡(luò)中每一個設(shè)備分配地址,并給該地址關(guān)聯(lián)一個賬戶,用戶通過向賬戶中支付費用可以租借設(shè)備,執(zhí)行相關(guān)動作,從而達到租借物聯(lián)網(wǎng)的應(yīng)用。

下文將給出數(shù)個結(jié)合物聯(lián)網(wǎng)與區(qū)塊鏈技術(shù)的實踐案例:

1.?

IBM

IBM在物聯(lián)網(wǎng)領(lǐng)域已經(jīng)持續(xù)投入了幾十年的研發(fā),目前正在探索使用區(qū)塊鏈技術(shù)來降低物聯(lián)網(wǎng)應(yīng)用的成本。2015年年初,IBM與三星宣布合作研發(fā)“去中心化的P2P自動遙測系統(tǒng)”(AutonomousDecentralizedPeer-to-PeerTelemetry),使用區(qū)塊鏈作為物聯(lián)網(wǎng)設(shè)備的共享賬本,打造去中心化的物聯(lián)網(wǎng)。

2.?Filament

美國的Filament公司以區(qū)塊鏈為基礎(chǔ)提出了一套去中心化的物聯(lián)網(wǎng)軟件堆棧。通過創(chuàng)建一個智能設(shè)備目錄,F(xiàn)ilament的物聯(lián)網(wǎng)設(shè)備可以進行安全溝通,執(zhí)行智能合約以及發(fā)送小額交易。

基于上述技術(shù),F(xiàn)ilament能夠通過遠程無線網(wǎng)絡(luò)將廣闊范圍內(nèi)的工業(yè)基礎(chǔ)設(shè)備溝通起來,其應(yīng)用包括追蹤自動售貨機的存貨和機器狀態(tài)、檢測鐵軌的損耗、安全帽或救生衣的應(yīng)急情況監(jiān)測等。

3.?NeuroMesh

2017年2月,源自MIT的NeuroMesh物聯(lián)網(wǎng)安全平臺獲得了MIT100KAccelerate競賽的亞軍。該平臺致力于成為“物聯(lián)網(wǎng)疫苗”,能夠檢測和消除物聯(lián)網(wǎng)中的有害程序,并將攻擊源打入黑名單。

所有運行NeuroMesh軟件的物聯(lián)網(wǎng)設(shè)備都通過訪問區(qū)塊鏈賬本來識別其他節(jié)點和辨認潛在威脅。如果一個設(shè)備借助深度學(xué)習(xí)功能檢測出可能的威脅,可通過發(fā)起投票的形式告知全網(wǎng),由網(wǎng)絡(luò)進一步對該威脅進行檢測并做出處理。

1.4.5其他場景

區(qū)塊鏈還有一些很有趣的應(yīng)用場景,包括但不限于云存儲、醫(yī)療、社交、游戲等多個方面。

1.云存儲

以Storj項目為例,該項目提供了基于區(qū)塊鏈的安全分布式云存儲服務(wù)。服務(wù)保證只有用戶自己能看到自己的數(shù)據(jù),并號稱提供高速的下載速度和99.99999%的高可用性。用戶還可以“出租”自己的額外硬盤空間來獲得報酬。

2.醫(yī)療

醫(yī)院與醫(yī)保醫(yī)藥公司、不同醫(yī)院之間甚至醫(yī)院里不同部門之間的數(shù)據(jù)流動性往往很差??紤]到醫(yī)療健康數(shù)據(jù)的敏感性,筆者認為,如果能夠在滿足數(shù)據(jù)訪問權(quán)、使用權(quán)等規(guī)定的基礎(chǔ)上促進醫(yī)療數(shù)據(jù)的提取和流動,區(qū)塊鏈將在醫(yī)療行業(yè)獲得一定的用武之地。

3.通信和社交

在通信和社交方面,比較典型的應(yīng)用是BitMessage。BitMessage是一套去中心化通信系統(tǒng),在點對點通信的基礎(chǔ)上保護用戶的匿名性和信息的隱私。BitMessage協(xié)議在設(shè)計上充分參考了比特幣,二者擁有相似的地址編碼機制和消息傳遞機制。BitMessage也用“工作量證明”機制防止通信網(wǎng)絡(luò)受到大量垃圾信息的沖擊。

4.投票

目前,區(qū)塊鏈技術(shù)已應(yīng)用到投票系統(tǒng)上。例如,F(xiàn)ollowMyVote項目致力于提供一個安全、透明的在線投票系統(tǒng)。通過使用該系統(tǒng)進行選舉投票,投票者可以隨時檢查自己選票的存在和正確性,看到實時計票結(jié)果,并在改變主意時修改選票。

該項目使用區(qū)塊鏈進行計票,并開源其軟件代碼供社區(qū)用戶審核。項目也為投票人身份認證、防止重復(fù)投票、投票隱私等難點問題提供了解決方案。

5.預(yù)測

目前,應(yīng)用較多的預(yù)測系統(tǒng)是Augur平臺。Augur是一個運行在以太坊上的預(yù)測市場平臺。使用Augur,來自全球不同地方的任何人都可發(fā)起自己的預(yù)測話題市場,或隨意加入其他市場,來預(yù)測一些事件的發(fā)展結(jié)果。預(yù)測結(jié)果和獎金結(jié)算由智能合約嚴格控制,使得在平臺上博弈的用戶不用為安全性產(chǎn)生擔(dān)憂。

6.電子游戲

2017年3月,來自馬來西亞的電子游戲工作室XhaiStudios宣布將區(qū)塊鏈技術(shù)引入其電子游戲平臺。工作室旗下的一些游戲?qū)⒅С峙cNEM區(qū)塊鏈的代幣XEM整合。通過這一平臺,游戲開發(fā)者可以在游戲架構(gòu)中直接調(diào)用支付功能,消除對第三方支付的依賴;玩家則可以自由地將XEM和游戲內(nèi)貨幣、點數(shù)等進行雙向兌換。

7.公共網(wǎng)絡(luò)服務(wù)

現(xiàn)有的互聯(lián)網(wǎng)能正常運行,離不開很多近乎免費的網(wǎng)絡(luò)服務(wù),如域名服務(wù)(DomainNameService,DNS)。任何人都可以免費查詢到域名,沒有DNS,現(xiàn)在的各種網(wǎng)站將無法訪問。因此,對于網(wǎng)絡(luò)系統(tǒng)來說,類似的基礎(chǔ)服務(wù)必須要能做到安全可靠,并且低成本。

1.5區(qū)塊鏈DAPP介紹

1.5.1DAPP介紹

比較流行的一種區(qū)塊鏈進化史說法是,區(qū)塊鏈1.0時代是比特幣時代,2.0時代是以太坊時代,3.0時代是DAPP時代。那么DAPP究竟是什么呢?

DAPP是DecentralizedApplication的縮寫,即去中心化應(yīng)用。維基百科對于DAPP的定義是:DAPP是運行在分布式計算機系統(tǒng)上的計算機應(yīng)用程序。

1.?APP

APP即為Application,既包含移動端和電腦端的軟件,也包括Web應(yīng)用程序。

雖然現(xiàn)在APP主要指移動端的應(yīng)用,在電腦端的應(yīng)用一般稱之為“軟件”,但其實二者在系統(tǒng)體系結(jié)構(gòu)方面并無太大區(qū)別,均遵從C/S架構(gòu),即Client/Server(客戶端/服務(wù)器)架構(gòu)。C/S架構(gòu)是大家比較熟知的系統(tǒng)體系結(jié)構(gòu),它將不同的系統(tǒng)任務(wù)合理分配給客服端和服務(wù)器端進行處理,減少了系統(tǒng)的通訊開銷。但是用戶必須安裝客戶端才可以對APP進行使用操作,并且每次程序?qū)蛻舳说男薷亩家匦赂驴蛻舳说拇a。

其實,APP亦包括Web應(yīng)用程序,即我們用瀏覽器訪問的網(wǎng)站,現(xiàn)在人們喜歡稱之為WebAPP。網(wǎng)站應(yīng)用遵從B/S架構(gòu),即Browser/Server(瀏覽器/服務(wù)器)模式,將系統(tǒng)功能實現(xiàn)的核心部分集中到服務(wù)器上,大大提升了系統(tǒng)開發(fā)的效率,同時也降低了后期維護的難度。

2.?

WebAPP

2014年10月20日,萬維網(wǎng)聯(lián)盟宣布HTML5的標準規(guī)范制定完成,其設(shè)計目的是為了在移動設(shè)備上支持多媒體。HTML5推動了Web標準化運動的發(fā)展,擴大了HTML的應(yīng)用場景,使越來越多運行于移動端的WebAPP進入市場。得益于HTML的進一步發(fā)展,APP對移動端的適配和兼容越來越好,現(xiàn)在許多網(wǎng)站開發(fā)者開始進軍移動端開發(fā)。而且由于WebAPP的高效開發(fā),許多初創(chuàng)公司為了業(yè)務(wù)效率,往往都會先選擇開發(fā)WebAPP,進而再深入開發(fā)Android或者iOS平臺的應(yīng)用。

3.?Node.js

Node.js發(fā)布于2009年5月,實質(zhì)是對ChromeV8引擎進行了封裝,是一個開源的跨平臺JavaScript運行時環(huán)境,使JavaScript代碼能在瀏覽器外執(zhí)行。至此,JavaScript便不只作為腳本語言嵌入到網(wǎng)頁的HTML當(dāng)中去,還可以允許開發(fā)人員使用JavaScript語言編寫命令行工具。

Node.js代表了一個“JavaScriptEverywhere”的范例,這也就意味著,JavaScript能實現(xiàn)跨平臺開發(fā),不依賴于特定的操作系統(tǒng)和硬件環(huán)境。著名的Java就是跨平臺語言,憑借Java虛擬機便可以在任何操作系統(tǒng)中運行。在編寫這本書的時候,Java在世界編程語言中排行第一。此外,WebAPP也是得益于其跨平臺的特性,在瀏覽器、Android和iOS等不同平臺上都能夠運行,因此得到了快速發(fā)展。

再者,Node.js擁有一個十分活躍的社區(qū)——CNode。CNode社區(qū)為國內(nèi)最大、最具影響力的Node.js開源技術(shù)社區(qū),致力于Node.js的技術(shù)研究,大量年輕技術(shù)人員和專業(yè)人員活躍其中,因此,Node.js的發(fā)展前景值得期待。

1.5.2

DAPP開發(fā)簡介

除了傳統(tǒng)APP開發(fā)需要用到的技術(shù),開發(fā)DAPP還需要學(xué)習(xí)開發(fā)框架和智能合約的相關(guān)知識。

我們以以太坊為例,簡要介紹DAPP的開發(fā)框架和需要用到的技能和知識。假設(shè)我們要開發(fā)一個分布式的WebAPP,架構(gòu)如圖1-12所示。該架構(gòu)運用B/S架構(gòu),用戶多終端通過瀏覽器訪問前端;前端和后臺進行數(shù)據(jù)交互,后臺進行業(yè)務(wù)邏輯操作和對以太坊網(wǎng)絡(luò)API的調(diào)用。下面將分別講述每一模塊運用的技能。

圖1-12

DAPP架構(gòu)

1.前端

對于B/S體系結(jié)構(gòu)系統(tǒng),前端用于頁面展示和簡單的業(yè)務(wù)邏輯處理,可以用傳統(tǒng)的HTML、css、js或者當(dāng)下主流的Vue、React、Angular等前端框架進行開發(fā)。在該體系結(jié)構(gòu)下,服務(wù)器可創(chuàng)建一個錢包管理所有用戶的賬戶。

2.后臺

后臺開發(fā)框架與傳統(tǒng)開發(fā)框架并無區(qū)別,使用web3.js或者其他語言版本的API來實現(xiàn)對區(qū)塊鏈的操作(例如,如果是Java開發(fā)語言,就使用web3j庫)。這里以node.js的Express框架為例,利用Solidity語言編寫智能合約,再利用Truffle框架對智能合約進行編譯部署,然后利用Express對web.js的API的調(diào)用來對以太坊網(wǎng)絡(luò)進行操作。

3.以太坊網(wǎng)絡(luò)

以太坊網(wǎng)絡(luò)分為主網(wǎng)、測試網(wǎng)絡(luò)和私網(wǎng),下面分別加以介紹。

(1)主網(wǎng)是產(chǎn)生真正有價值的以太幣的網(wǎng)絡(luò)。

(2)測試網(wǎng)絡(luò)是專供用戶開發(fā)、調(diào)試和測試的網(wǎng)絡(luò)。測試網(wǎng)絡(luò)的合約執(zhí)行不消耗真實的以太幣,分為Ropsten、Kovan和Rinkeby等。以Ropsten為例,在Infura網(wǎng)站注冊一個賬號即可得到一個RPC網(wǎng)址,這是連接測試網(wǎng)絡(luò)的重要參數(shù)。在測試網(wǎng)絡(luò)中,每天可以領(lǐng)取少量的以太幣,不過用于測試已經(jīng)足夠了。

(3)私網(wǎng)是用戶自己創(chuàng)建的網(wǎng)絡(luò),可以使用geth工具模擬以太坊出塊。但是私網(wǎng)只能用戶自己使用,一旦關(guān)閉,鏈上的數(shù)據(jù)就會消失。

4.

IPFS

IPFS(Inter-PlanetaryFileSystem,星際文件系統(tǒng))是一個面向全球的、點對點的分布式版本文件系統(tǒng)。將數(shù)據(jù)存放在以太坊公網(wǎng)需要支付gas,存儲的數(shù)據(jù)越龐大,支付的費用就越多,想要把文件數(shù)據(jù)存儲在以太坊共鏈上是不太現(xiàn)實的。因此可以將文件上傳到IPFS上,此時IPFS會返回文件的哈希值,將這個哈希值存入數(shù)據(jù)庫,可以節(jié)省大量的區(qū)塊鏈網(wǎng)絡(luò)帶寬。

5.智能合約

智能合約是一種旨在以信息化方式傳播、驗證或執(zhí)行合同的計算機協(xié)議。智能合約允許在沒有第三方的情況下進行可信交易,這些交易可追蹤且不可逆轉(zhuǎn)。智能合約就像是一份合同,制定了用戶與用戶之間、用戶與區(qū)塊鏈之間的規(guī)范。在區(qū)塊鏈中,代碼是如同法律一般的存在,智能合約可規(guī)范用戶行為。

1.5.3數(shù)據(jù)反饋合約與數(shù)據(jù)源

通常形式的數(shù)據(jù)反饋合約首先需要包含一個函數(shù),它能夠返回一些有關(guān)外部世界現(xiàn)象的現(xiàn)時數(shù)據(jù)作為調(diào)用的回應(yīng)(例如某座城市的當(dāng)?shù)貧鉁?,在代碼層面可具體表現(xiàn)為返回存儲變量中一些經(jīng)過確認的值。當(dāng)然存儲變量中的值應(yīng)通過持續(xù)的維護工作以保證其正確性。因此該類合約通常還需要一個連入以太坊、擁有以太坊節(jié)點的外部服務(wù)器。一旦現(xiàn)時數(shù)據(jù)需要更新,就可以創(chuàng)建一個交易,調(diào)用合約函數(shù)對存儲變量值進行改動,整個數(shù)據(jù)采集的過程便完成了。

根據(jù)合約代碼的設(shè)計,可以對調(diào)用更新數(shù)據(jù)函數(shù)的用戶進行訪問控制,僅允許特定用戶對數(shù)據(jù)進行更新操作。

盡管在合約代碼方面理解起來較為簡單、直觀,但如何挑選可信的數(shù)據(jù)來源仍是個值得思考的問題。簡單獲取數(shù)據(jù)來源的方法是通過可信機構(gòu)、組織提供的接口(API)或Web服務(wù)。前者的前提條件是,一個或多個機構(gòu)提供智能合約運行所需數(shù)據(jù)的API可以通過HTTP的方式免費訪問,并且不需要任何形式的許可證明、注冊流程等。后者的前提條件是智能合約所使用的編程語言可以直接支持HTTP請求。

1.5.4以太坊預(yù)言機(Oracle)

簡單的以太坊預(yù)言機模型如圖1-13所示。以

溫馨提示

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

評論

0/150

提交評論