




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