91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

一文看懂比特幣與區(qū)塊鏈:從原理到應(yīng)用

admin
2018年3月30日 8:59 本文熱度 8072

1 貨幣的演變-從貝殼到比特幣

當(dāng)社會(huì)分工產(chǎn)生之后,人類就產(chǎn)生了商品交換的需求。在貨幣被發(fā)明之前,人類是以以物換物的方式進(jìn)行的。但顯然以物換物存在著商品價(jià)值無法精確衡量,效率低下的問題。試想一下,老王扛著一只羊走了一公里山路到老張家里想換幾只雞好過年,但是換6只雞老王覺得虧,換7只老張又不干。于是人類發(fā)明了貨幣,作為一般等價(jià)物,貨幣可以對商品價(jià)值進(jìn)行精確度量,利于提高商品交換的效率,老王也再也不用扛著羊走山路了,拿著貨幣去買就好。但是最早的貨幣是實(shí)物貨幣,也就是貝殼、金、銀、銅這些東西。能充當(dāng)實(shí)物貨幣的東西都具有一定的稀缺性,即一般人不是那么容易就能搜尋或挖掘到很多的,存量有限。后來隨著社會(huì)經(jīng)濟(jì)的發(fā)展,交易越來越頻繁,人們發(fā)現(xiàn)實(shí)物貨幣也存在著很多的弊端。比如易損耗,保存、攜帶都很不方便、不安全。于是紙幣就被發(fā)明出來了。紙幣最早在我國北宋年間就出現(xiàn)了,被稱為“交子”,由官方發(fā)行。相較于實(shí)物貨幣本身具有收藏價(jià)值,紙質(zhì)貨幣本身只是一張紙,并沒有什么價(jià)值,它的價(jià)值完全依賴于發(fā)行該紙幣的政府的信用。因?yàn)槿藗冾A(yù)期拿著這張紙是可以從政府那里換到金子銀子的。看上去這并沒有什么問題,但是一旦政府失信,紙幣也就形同廢紙。政府失信的事在歷史不是沒有發(fā)生過,比如清朝國庫存銀緊張時(shí),民眾手里的銀票就只能打折換銀子,再比如民國后期,政府瘋狂印刷金圓券,物價(jià)飛漲,民眾手里的紙幣飛速貶值。政府在法定貨幣上的失信相當(dāng)于掠奪了民眾手里的財(cái)富。

現(xiàn)代社會(huì),是不是所有的財(cái)富都需要印刷成紙幣在社會(huì)上流通呢?也不是,紙幣所代表的財(cái)富只占社會(huì)總財(cái)富很小的一部分,國家發(fā)行紙幣的總量只要滿足市場交易的需要即可,大部分財(cái)富是以數(shù)字貨幣的形式存在,每個(gè)人的財(cái)富只是一串?dāng)?shù)字,這些數(shù)字統(tǒng)統(tǒng)記錄在銀行的賬本上,當(dāng)然銀行的賬本現(xiàn)在表現(xiàn)就是計(jì)算機(jī)里的數(shù)據(jù)庫。在這種情況下,假設(shè)小李從蘇寧買了臺(tái)價(jià)值3000元的空調(diào),收銀的時(shí)候只要將小李的銀行賬戶余額C(小李)-3000,再將蘇寧的銀行賬戶余額C(蘇寧)+3000就可以了。當(dāng)然現(xiàn)在也可能需要支付寶或者銀聯(lián)等第三方支付提供商做中介完成這筆交易。銀行在修改余額即賬本數(shù)據(jù)的時(shí)候,需要做一些檢查,首先需要小李提供賬戶密碼,用以證明小李對賬戶余額具有使用權(quán),接著銀行還要檢查小李的賬戶余額是否大于等于3000,如果余額不足返回交易失敗提示。整個(gè)交易過程中,銀行作為第三方機(jī)構(gòu),獨(dú)立完成了這次交易支付。由于我們國家的國有銀行有政府做信用背書,所以小李和蘇寧都選擇相信銀行不會(huì)有欺詐行為。但是不是就完全沒有風(fēng)險(xiǎn)了呢?并不是。即使銀行不會(huì)主觀上產(chǎn)生欺詐的想法,但同樣存在記賬錯(cuò)誤,或是外來惡意攻擊的風(fēng)險(xiǎn)。一旦銀行的賬本數(shù)據(jù)發(fā)生錯(cuò)誤或被惡意篡改,小李和蘇寧將沒有辦法證明自己所擁有的準(zhǔn)確的財(cái)富。

2009年,中本聰在網(wǎng)上發(fā)表了比特幣白皮書《比特幣:⼀個(gè)點(diǎn)對點(diǎn)的電子現(xiàn)金系統(tǒng)》,宣告了比特幣的誕生。由于刻意隱藏,至今沒有人知道中本聰?shù)恼鎸?shí)身份,但是比特幣確是一個(gè)天才式的創(chuàng)造。比特幣參考了在它之前被發(fā)明的數(shù)十種加密數(shù)字貨幣所取得的成果,這些貨幣由于各種原因都失敗了,一個(gè)主要的原因是無法解決“雙重支付”問題,所謂“雙重支付”是指同一筆貨幣被重復(fù)支付給不同的賬戶。中本聰認(rèn)為之前的加密數(shù)字貨幣之所以失敗,主要是因?yàn)樗鼈兌疾煌潭壬洗嬖谝粋€(gè)中心機(jī)構(gòu),一旦這個(gè)中心機(jī)構(gòu)失效,整個(gè)加密貨幣系統(tǒng)就崩潰了。所以比特幣被設(shè)計(jì)成一個(gè)去中心化的系統(tǒng),它運(yùn)用分布式賬本和特有的共識(shí)機(jī)制解決了“雙重支付”問題。


2 比特幣與區(qū)塊鏈的基本原理

2.1 比特幣簡介

之前已經(jīng)介紹過,數(shù)字貨幣的本質(zhì)就是一個(gè)賬本。當(dāng)有交易發(fā)生,資金所有權(quán)發(fā)生轉(zhuǎn)移(或稱價(jià)值轉(zhuǎn)移),就通過在這個(gè)賬本上記賬來體現(xiàn)。傳統(tǒng)貨幣金融系統(tǒng),央行承擔(dān)貨幣發(fā)行的職責(zé),商業(yè)銀行承擔(dān)放貸和吸儲(chǔ)的職責(zé),每筆交易記錄、每個(gè)賬戶余額都存在銀行的賬本上,銀行此時(shí)是作為一個(gè)中心機(jī)構(gòu)。比特幣系統(tǒng)完全運(yùn)行在互聯(lián)網(wǎng)上,并沒有一個(gè)中心機(jī)構(gòu)替用戶保存賬本。相反,每一個(gè)持有比特幣、運(yùn)用比特幣完成交易的節(jié)點(diǎn)(完全節(jié)點(diǎn))都會(huì)在本地保存一份賬本,并從網(wǎng)絡(luò)上接收新的交易數(shù)據(jù)對自己的賬本進(jìn)行更新。所以說,不同于傳統(tǒng)貨幣交易賬本由銀行私密保存,比特幣的賬本是公開的,分布式存儲(chǔ)在每一個(gè)參與交易的節(jié)點(diǎn)上。

比特幣系統(tǒng)是一種P2P網(wǎng)絡(luò)系統(tǒng),網(wǎng)絡(luò)中并不存在任何中心節(jié)點(diǎn),所有P2P網(wǎng)絡(luò)中的節(jié)點(diǎn)地位都是相等的,每個(gè)節(jié)點(diǎn)從網(wǎng)絡(luò)接收資源和服務(wù)的同時(shí)也向網(wǎng)絡(luò)中的其它節(jié)點(diǎn)提供資源和服務(wù)。想加入比特幣網(wǎng)絡(luò)也很簡單,從比特幣官方網(wǎng)站下載比特幣客戶端并安裝到自己的計(jì)算機(jī),保證本地存儲(chǔ)系統(tǒng)有足夠的空間來存儲(chǔ)公共賬本數(shù)據(jù),運(yùn)行比特幣客戶端并聯(lián)入互聯(lián)網(wǎng),客戶端端口會(huì)自動(dòng)連接到若干現(xiàn)有節(jié)點(diǎn),此時(shí)這臺(tái)計(jì)算機(jī)就可以作為比特幣網(wǎng)絡(luò)中的一個(gè)節(jié)點(diǎn)存在了。初始加入的比特幣節(jié)點(diǎn)可以從其它節(jié)點(diǎn)接收賬本數(shù)據(jù)并保存下來。比特幣網(wǎng)絡(luò)中的節(jié)點(diǎn)時(shí)時(shí)刻刻都是在動(dòng)態(tài)變化的,一個(gè)節(jié)點(diǎn)可以隨時(shí)選擇退出,重新加入時(shí)只需要連接其它節(jié)點(diǎn)并接收它離開期間新增的交易數(shù)據(jù)就可以。

雖然每個(gè)節(jié)點(diǎn)都保存有比特幣交易賬本,但為了保持所有賬本副本的一致性,每筆交易只能安排一個(gè)節(jié)點(diǎn)記賬,其它節(jié)點(diǎn)同步新增的交易數(shù)據(jù)。那到底哪個(gè)節(jié)點(diǎn)擁有記賬的資格呢?比特幣系統(tǒng)采用了競爭記賬的機(jī)制。所有節(jié)點(diǎn)共同參與一個(gè)解方程大賽,由于這個(gè)方程解空間巨大且無任何求解的規(guī)律可言,每個(gè)參與競賽的節(jié)點(diǎn)只能采用隨機(jī)嘗試的辦法搜索方程的解。這樣一來,解方程大賽就變成了對各節(jié)點(diǎn)計(jì)算機(jī)運(yùn)算能力的一場考驗(yàn),擁有最強(qiáng)大運(yùn)算能力的節(jié)點(diǎn)顯然可能更快找到解。一旦某個(gè)節(jié)點(diǎn)率先找到一個(gè)滿足要求的解,它就搶到了本次競賽的記賬權(quán)。這樣的解方程競賽大約每10分鐘在全網(wǎng)舉行一次,搶到記賬權(quán)的節(jié)點(diǎn)迅速將過去10分鐘全網(wǎng)發(fā)生的交易數(shù)據(jù)記錄到一個(gè)新的區(qū)塊(區(qū)塊鏈的基本單位,可以看成是一個(gè)具有特定數(shù)據(jù)結(jié)構(gòu)的文件),并將這個(gè)區(qū)塊馬上向全網(wǎng)分發(fā),網(wǎng)上的其它節(jié)點(diǎn)接收到這個(gè)區(qū)塊時(shí),它就意識(shí)到本次解方程大賽已經(jīng)結(jié)束了,進(jìn)而馬上停止本輪的解方程競賽,同時(shí)開始下一輪解方程大賽。

比特幣交易的過程完全是匿名的。比特幣客戶端有錢包的功能,比特幣錢包并不存儲(chǔ)貨幣,存儲(chǔ)的是地址和私鑰。根據(jù)非對稱加密的原理,一對非對稱密鑰分為公鑰和私鑰,私鑰私密保存,公鑰可以公開出來,其它節(jié)點(diǎn)想給當(dāng)前節(jié)點(diǎn)加密發(fā)送消息時(shí),可以用公鑰對消息進(jìn)行加密,只有擁有私鑰的節(jié)點(diǎn)才能對消息解密,這樣就保證了信息傳輸不會(huì)被泄漏。在比特幣網(wǎng)絡(luò),每個(gè)節(jié)點(diǎn)的私鑰由錢包加密存儲(chǔ),用戶也可以備份成其他形式存儲(chǔ)。公鑰經(jīng)雙Hash運(yùn)算得到的字符串,被稱為地址,其實(shí)就是另一種形式的公鑰。一個(gè)比特幣地址和它對應(yīng)的私鑰就可以看成一個(gè)賬戶,地址可以看做用戶名,私鑰看做賬戶密碼。擁有私鑰的人就擁有這個(gè)地址上的所有資金。比特幣的賬本數(shù)據(jù)中并不存在賬戶余額的概念。事實(shí)上賬本數(shù)據(jù)中如果用余額字段來表示每個(gè)節(jié)點(diǎn)擁有的資產(chǎn),那么余額字段的數(shù)據(jù)是很容易被惡意篡改的。既然沒有余額數(shù)據(jù),那么交易時(shí)就沒有辦法通過對相關(guān)節(jié)點(diǎn)余額字段的修改實(shí)現(xiàn)。事實(shí)上,比特幣交易中“花費(fèi)”的是在交易中生成的“未使用的交易輸出(UTXO)”。每一筆交易轉(zhuǎn)賬相當(dāng)于將一筆錢注冊到新的地址上。比特幣地址并沒有余額,有的是遍布在賬本里所有注冊在這個(gè)地址上的UTXO。相當(dāng)于這個(gè)地址所擁有的資金分布在一筆筆交易記錄中。比特幣客戶端顯示的賬戶余額其實(shí)是對賬本數(shù)據(jù)中隸屬于當(dāng)前節(jié)點(diǎn)的UTXO逐一統(tǒng)計(jì)得到的結(jié)果。

2.2 比特幣交易

比特幣將貨幣、交易、賬本全都變成了一種數(shù)據(jù)結(jié)構(gòu),所以看一下一筆交易的數(shù)據(jù)結(jié)構(gòu)你會(huì)更理解。

表2-1 交易結(jié)構(gòu)

如表2-1所示,一筆交易可以包含多個(gè)輸入并形成多個(gè)輸出。尚未被“花費(fèi)”的交易輸出即UTXO(unspent transaction output),所謂“花費(fèi)”指將這筆錢注冊到其它地址(資金所有權(quán)轉(zhuǎn)移)。時(shí)間戳標(biāo)記這筆交易發(fā)生的時(shí)間。再來看一下交易輸出(表2-2)和輸入(表2-3)的數(shù)據(jù)結(jié)構(gòu)。

表2-2 交易輸出結(jié)構(gòu)

交易輸出的數(shù)據(jù)結(jié)構(gòu)很簡單,主要就是資金總量和鎖定腳本。資金總量表明了轉(zhuǎn)賬了多少錢。鎖定腳本其實(shí)表明了這筆錢的所有權(quán)。鎖定腳本里包含的最重要的內(nèi)容是轉(zhuǎn)賬的目標(biāo)地址,之前我們也介紹過,比特幣地址其實(shí)就是公鑰轉(zhuǎn)換得到的。交易輸出里包含了目標(biāo)地址相當(dāng)于用公鑰給這筆錢(交易輸出)上了一把鎖,只有唯一那個(gè)有對應(yīng)鑰匙(私鑰)的用戶才可以使用它。

交易輸入的數(shù)據(jù)結(jié)構(gòu)如表2-3,主要包括指向UTXO的指針和解鎖腳本。注意到,比特幣賬本里只有交易輸出才記錄了資金,交易輸入只是使用資金時(shí)用的那把鑰匙。其中指向UTXO的指針字段表明要“花費(fèi)”哪個(gè)UTXO。解鎖腳本包含了用戶的私鑰,正確的私鑰可以解密UTXO鎖定腳本中的公鑰加密。解鎖腳本和鎖定腳本一起運(yùn)行就可以正確使用UTXO完成交易了。

表2-3 交易輸入結(jié)構(gòu)

現(xiàn)在小李從蘇寧購買了一臺(tái)空調(diào),需要支付0.15比特幣,小李的比特幣客戶端里的錢包模塊會(huì)從所有注冊在小李地址上的UTXO中選出一個(gè)數(shù)額最合適的,假設(shè)最合適的UTXO的面值是0.2比特幣。現(xiàn)在,小李的錢包就會(huì)創(chuàng)建一筆新的交易,輸入就是面值0.2比特幣的UTXO,生成一筆0.15比特幣的輸出(一個(gè)UTXO),輸出鎖定腳本包含蘇寧的地址。與此同時(shí)生成一筆地址為自己的輸出0.04比特幣(另一個(gè)UTXO),也就是找零。但是這里0.2-0.15-0.04=0.01,剩余的0.01比特幣作為交易費(fèi)用,用來獎(jiǎng)勵(lì)承擔(dān)記賬工作的節(jié)點(diǎn),贏得記賬權(quán)的節(jié)點(diǎn)會(huì)自動(dòng)收集的。

2.2.1 交易周期

一筆比特幣交易的生命周期從它被創(chuàng)建的那一刻開始,節(jié)點(diǎn)會(huì)將這筆交易在比特幣網(wǎng)絡(luò)上廣播,收到這筆交易數(shù)據(jù)的節(jié)點(diǎn)會(huì)對交易有效性進(jìn)行獨(dú)立檢驗(yàn)。檢驗(yàn)內(nèi)容包括語法和數(shù)據(jù)格式是否有誤、交易輸入和輸出是否為空等等。通過獨(dú)立驗(yàn)證的交易會(huì)被放入節(jié)點(diǎn)自己的交易池,同時(shí)繼續(xù)向其它節(jié)點(diǎn)廣播,沒有通過檢驗(yàn)的交易直接被拒絕并不再廣播。等到這筆交易被網(wǎng)絡(luò)上的大部分節(jié)點(diǎn)驗(yàn)證,可能耗時(shí)不到一秒鐘,交易會(huì)最終被一個(gè)挖礦節(jié)點(diǎn)驗(yàn)證并記錄到區(qū)塊鏈上一個(gè)還記錄有很多其他交易的區(qū)塊上(挖礦節(jié)點(diǎn):參與解方程大賽并取得當(dāng)次記賬權(quán)的節(jié)點(diǎn))。此時(shí)這筆交易的交易輸出(UTXO)還不能被使用,等到區(qū)塊鏈中在這個(gè)區(qū)塊之上又生成足夠多的區(qū)塊,交易才成為區(qū)塊鏈總賬簿的一部分,這時(shí)交易輸出UTXO就可以被新的資金擁有者在下一筆交易中使用了,這樣就進(jìn)入下一個(gè)交易周期了。

2.3 比特幣網(wǎng)絡(luò)與節(jié)點(diǎn)

比特幣運(yùn)行在互聯(lián)網(wǎng)上并采用P2P協(xié)議,P2P網(wǎng)絡(luò)又稱對等網(wǎng)絡(luò),網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的地位都是相等的。比特幣設(shè)計(jì)的核心原則是去中心化,采用P2P網(wǎng)絡(luò)很好的體現(xiàn)了這個(gè)核心原則。雖然比特幣網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的地位相等,但不同節(jié)點(diǎn)的功能還是不一樣的。但是,任何節(jié)點(diǎn)都包含四個(gè)基本功能中的一個(gè)或者多個(gè):錢包、礦工、完整區(qū)塊鏈、網(wǎng)絡(luò)路由節(jié)點(diǎn)。

所有節(jié)點(diǎn)都是網(wǎng)絡(luò)路由節(jié)點(diǎn),可以對新創(chuàng)建的交易和區(qū)塊進(jìn)行驗(yàn)證,對通過驗(yàn)證的交易和區(qū)塊進(jìn)行轉(zhuǎn)發(fā)。

一個(gè)具備全部四個(gè)功能的節(jié)點(diǎn)被稱為全節(jié)點(diǎn)。全節(jié)點(diǎn)在本地存儲(chǔ)完整的區(qū)塊鏈數(shù)據(jù)(賬本),可以獨(dú)立的對交易和區(qū)塊數(shù)據(jù)進(jìn)行驗(yàn)證而不需要依賴于其他節(jié)點(diǎn)。

圖2-1 全節(jié)點(diǎn)

全節(jié)點(diǎn)同時(shí)具備挖礦功能,即參加算力競賽(解方程大賽)來贏得記賬權(quán)的能力。之所以稱競爭記賬權(quán)的行為為“挖礦”。這是為了類比于傳統(tǒng)實(shí)物貨幣(金、銀)的挖掘開采行為。每個(gè)在算力競賽中獲勝的節(jié)點(diǎn)能夠獲得一定數(shù)量的比特幣做獎(jiǎng)勵(lì),目前是12.5個(gè)比特幣,獎(jiǎng)勵(lì)的數(shù)量大約每4年會(huì)減少一半。除全節(jié)點(diǎn)之外,也有單獨(dú)的挖礦節(jié)點(diǎn)。

全節(jié)點(diǎn)同時(shí)具備錢包功能。錢包是用來生成并保存地址和私鑰,同時(shí)創(chuàng)建交易的模塊。

相比于全節(jié)點(diǎn),有些節(jié)點(diǎn)只存儲(chǔ)了部分區(qū)塊鏈數(shù)據(jù),它通過“簡易支付驗(yàn)證(SPV)”的方式來完成交易驗(yàn)證,稱為SPV節(jié)點(diǎn)或輕量級節(jié)點(diǎn)。SPV節(jié)點(diǎn)一般具備網(wǎng)絡(luò)路由節(jié)點(diǎn)和錢包功能。為了讓智能手機(jī)這種資源有限的終端具備比特幣交易的能力,SPV節(jié)點(diǎn)現(xiàn)在越來越普遍。

2.4 比特幣區(qū)塊鏈

區(qū)塊鏈的英文名字 Block Chain 更容易理解。Block其實(shí)是一個(gè)常用的數(shù)據(jù)量大小的度量單位。比如在Linux/Unix系統(tǒng)里有一個(gè)數(shù)據(jù)塊(Data Block)的概念,數(shù)據(jù)塊是文件系統(tǒng)讀寫的最小單元,在Linux/Unix系統(tǒng)中是512個(gè)字節(jié),一個(gè)文件所占大小就是數(shù)據(jù)塊的整數(shù)倍。又比如在Google分布式文件系統(tǒng)HDFS中,也有一個(gè)塊(Block)的概念,也是數(shù)據(jù)存儲(chǔ)的一個(gè)基本單元,不同之處在于HDFS為了提高大數(shù)據(jù)的效率和集群的吞吐量,將一個(gè)塊的大小設(shè)置成64MB。所以區(qū)塊鏈里的“區(qū)塊”也是指一個(gè)數(shù)據(jù)單元,而“鏈”其實(shí)就是將很多數(shù)據(jù)單元(區(qū)塊)一個(gè)個(gè)串聯(lián)起來,就像一個(gè)鏈表。但是鏈表是通過指針將數(shù)據(jù)串聯(lián)起來的,而區(qū)塊鏈?zhǔn)峭ㄟ^在每個(gè)區(qū)塊中存儲(chǔ)前一個(gè)區(qū)塊的唯一標(biāo)識(shí)符來鏈接的。具體可以看區(qū)塊和區(qū)塊頭的數(shù)據(jù)結(jié)構(gòu)。

表2-4 區(qū)塊結(jié)構(gòu)

一個(gè)區(qū)塊主要分為兩部分:區(qū)塊頭和交易數(shù)據(jù)。區(qū)塊頭里記錄的是這個(gè)區(qū)塊的元數(shù)據(jù),具體見區(qū)塊頭數(shù)據(jù)結(jié)構(gòu)表2-5。交易數(shù)據(jù)部分記錄了從上一個(gè)區(qū)塊被挖出到當(dāng)前區(qū)塊被挖出的約10分鐘時(shí)間內(nèi),全網(wǎng)發(fā)生的所有比特幣交易。比特幣系統(tǒng)中一個(gè)區(qū)塊大小并沒有嚴(yán)格限制,區(qū)塊頭的大小固定是80個(gè)字節(jié),平均每個(gè)交易至少是250個(gè)字節(jié),而平均每個(gè)區(qū)塊至少包含超過500個(gè)交易。交易的數(shù)據(jù)結(jié)構(gòu)之前已經(jīng)介紹過,下面來看一下區(qū)塊頭的數(shù)據(jù)結(jié)構(gòu)。

表2-5 區(qū)塊頭結(jié)構(gòu)

 “父區(qū)塊哈希值”字段存儲(chǔ)了前一個(gè)區(qū)塊數(shù)據(jù)的Hash值,嚴(yán)格來說,并不是整個(gè)區(qū)塊數(shù)據(jù)的Hash值,而是區(qū)塊頭數(shù)據(jù)的Hash值。其實(shí)是運(yùn)用SHA256算法對區(qū)塊頭數(shù)據(jù)做兩次Hash運(yùn)算得出的。由于每個(gè)區(qū)塊頭數(shù)據(jù)具有唯一性,它的Hash值基本可以作為區(qū)塊的主標(biāo)識(shí)符。所以將前一個(gè)區(qū)塊(父區(qū)塊)的標(biāo)識(shí)符存在當(dāng)前區(qū)塊的區(qū)塊頭里,也就相當(dāng)于將這兩個(gè)區(qū)塊連接了起來。

“Merkle根”字段相當(dāng)于是區(qū)塊內(nèi)所有交易數(shù)據(jù)的一個(gè)數(shù)字指紋,要得到Merkle根先要?jiǎng)?chuàng)建一棵Merkle樹。假設(shè)現(xiàn)在有A,B,C,D四筆交易,創(chuàng)建的Merkle樹圖2-2。

圖2-2 包含A、B、C、D四筆交易的Merkle樹/div>

Merkle樹是自底向上創(chuàng)建的,是一種Hash二叉樹。首先將交易數(shù)據(jù)輸入SHA256算法得到每筆交易的Hash值Ha、Hb、Hc、Hd,這四個(gè)Hash值作為葉子節(jié)點(diǎn),將葉子節(jié)點(diǎn)Hash值兩兩連接起來繼續(xù)輸入SHA256算法可以得到上一層節(jié)點(diǎn)的Hash值,計(jì)算示例如下。如果葉子節(jié)點(diǎn)個(gè)數(shù)為奇數(shù),將最后一個(gè)節(jié)點(diǎn)復(fù)制一份。

Ha=SHA256(SHA256(交易A))

Hab=SHA256(SHA256(Ha+Hb))

如此循環(huán)進(jìn)行,直到只剩一個(gè)節(jié)點(diǎn),也就是Merkle樹根。考慮到SHA256算法的特性,Merkle根可以看成是所有交易數(shù)據(jù)的一個(gè)歸納,也可以看成是所有交易數(shù)據(jù)的數(shù)字指紋,因?yàn)榧词谷我饨灰讛?shù)據(jù)被微小篡改,它生成的Hash值也會(huì)有很大變化,而葉子節(jié)點(diǎn)Hash值的變化,又會(huì)影響從該葉子節(jié)點(diǎn)連接到Merkle根的路徑上所有節(jié)點(diǎn)Hash值的變化,最終使Merkle根產(chǎn)生很大的變化。因此Merkle根可以唯一標(biāo)識(shí)一批交易數(shù)據(jù),也可以驗(yàn)證一批交易數(shù)據(jù)是否被篡改過。由于SHA256算法輸出固定是32個(gè)字節(jié),所以Merkle樹中所有節(jié)點(diǎn)包括Merkle樹根的值都固定是32個(gè)字節(jié)。Merkle樹在比特幣系統(tǒng)中的一個(gè)主要用處是可以高效的驗(yàn)證一筆交易是否存在于區(qū)塊中。假設(shè)某區(qū)塊記錄了N筆交易,利用Merkle樹可以最多計(jì)算2*log2(N)次就可以判斷一筆交易是否存在于這個(gè)區(qū)塊中。

區(qū)塊頭數(shù)據(jù)結(jié)構(gòu)中的“難度目標(biāo)”字段是用來動(dòng)態(tài)調(diào)節(jié)挖礦難度的,約兩周時(shí)間會(huì)調(diào)整一次,為了保證能夠在大概在10分鐘左右的時(shí)間挖出一個(gè)區(qū)塊(解出方程)。Nonce字段也是在挖礦(解方程大賽)時(shí)用到的,Nonce字段的值作為方程未知變量的一部分,不斷修改Nonce字段值以獲得滿足難度目標(biāo)的解。

區(qū)塊鏈就是就是將包含交易信息的區(qū)塊從后往前依次連接起來的數(shù)據(jù)結(jié)構(gòu)。它可以存儲(chǔ)在文件系統(tǒng),也可以存儲(chǔ)在一個(gè)簡單數(shù)據(jù)庫。區(qū)塊鏈可以被視為一個(gè)垂直的棧,第一個(gè)區(qū)塊(創(chuàng)世區(qū)塊)作為棧的底部,后續(xù)創(chuàng)建的區(qū)塊依次向上疊加,這樣就可以用一些術(shù)語,“高度”來表示當(dāng)前區(qū)塊離第一個(gè)區(qū)塊之間的距離,用“頂部”表示最新生成的區(qū)塊,用“深度”表示當(dāng)前區(qū)塊距離頂部區(qū)塊的距離。

每個(gè)區(qū)塊的區(qū)塊頭數(shù)據(jù)經(jīng)SHA256算法得到區(qū)塊Hash值,每個(gè)區(qū)塊的區(qū)塊Hash值并不存在于自身數(shù)據(jù)當(dāng)中,而是在創(chuàng)建它的子區(qū)塊(棧內(nèi)上一層區(qū)塊)時(shí)臨時(shí)計(jì)算得出并存儲(chǔ)在子區(qū)塊“父區(qū)塊哈希值”字段中。由于區(qū)塊Hash值可以在區(qū)塊鏈中唯一識(shí)別出一個(gè)區(qū)塊,因此通過“父區(qū)塊哈希值”就可以引用前一個(gè)區(qū)塊。這樣就通過“父區(qū)塊哈希值”字段將每個(gè)區(qū)塊依次鏈接起來形成了一條一直可以追溯到首區(qū)塊(創(chuàng)世區(qū)塊)的鏈條,見圖2-3。每個(gè)區(qū)塊都只有一個(gè)父區(qū)塊,但可能存在多個(gè)子區(qū)塊,這被稱為“區(qū)塊鏈分叉”。這種情況只在兩個(gè)礦工幾乎同時(shí)挖掘出新區(qū)塊時(shí)才可能出現(xiàn),但也只是暫時(shí)存在,很快區(qū)塊鏈系統(tǒng)就會(huì)選出工作量最大的鏈條作為主鏈。

圖2-3 區(qū)塊通過引⽤⽗區(qū)塊的區(qū)塊頭哈希值的⽅式,以鏈條的形式進(jìn)⾏相連

區(qū)塊哈希值雖然只是區(qū)塊頭數(shù)據(jù)的Hash值,但是區(qū)塊頭中包含的Merkle根字段是對所有交易數(shù)據(jù)的一個(gè)概括。上面介紹過,任何對交易數(shù)據(jù)的微篡改都會(huì)導(dǎo)致Merkle根發(fā)生很大變化,進(jìn)而導(dǎo)致區(qū)塊哈希值也發(fā)生變化。由于子區(qū)塊會(huì)存儲(chǔ)父區(qū)塊的區(qū)塊哈希值,所以如果父區(qū)塊任意數(shù)據(jù)有變動(dòng),就會(huì)導(dǎo)致子區(qū)塊數(shù)據(jù)產(chǎn)生變動(dòng),而子區(qū)塊數(shù)據(jù)變動(dòng)又會(huì)導(dǎo)致孫區(qū)塊值發(fā)生變動(dòng),等等以此類推。很明顯,對區(qū)塊鏈中任意區(qū)塊數(shù)據(jù)的篡改都會(huì)導(dǎo)致它后續(xù)所有區(qū)塊的數(shù)據(jù)發(fā)生變動(dòng),除非將后續(xù)所有區(qū)塊都重新生成,否則無法修改區(qū)塊鏈中的數(shù)據(jù)。而重新生成區(qū)塊面臨著巨大的工作量(解出每個(gè)區(qū)塊中的方程),當(dāng)區(qū)塊的“深度”到達(dá)6時(shí),由于巨大的工作量導(dǎo)致實(shí)際上想篡改這個(gè)區(qū)塊的數(shù)據(jù)已經(jīng)變得不可能。這種區(qū)塊鏈歷史數(shù)據(jù)不可更改的特性是區(qū)塊鏈可信的一個(gè)關(guān)鍵原因。同時(shí),這也是比特幣安全性的一個(gè)關(guān)鍵原因。

2.5 比特幣挖礦

將比特幣網(wǎng)絡(luò)中節(jié)點(diǎn)之間競爭記賬權(quán)的行為稱為“挖礦”。“挖礦”是比特幣系統(tǒng)中一個(gè)非常聰明的設(shè)計(jì),它同時(shí)實(shí)現(xiàn)了三個(gè)目標(biāo):

(1)一種激勵(lì)機(jī)制,使得比特幣節(jié)點(diǎn)有動(dòng)力去記錄交易數(shù)據(jù)。

(2)實(shí)現(xiàn)了新幣發(fā)行。

(3)通過工作量證明算法(解方程大賽)使得區(qū)塊鏈歷史數(shù)據(jù)實(shí)際上不可更改。

之前說節(jié)點(diǎn)之間競爭記賬權(quán)其實(shí)是在參加每10分鐘一場在全網(wǎng)舉行的解方程大賽。每場競賽的獲勝者將獲得本輪記賬權(quán),有權(quán)創(chuàng)建一個(gè)新區(qū)塊并將前10分鐘全網(wǎng)發(fā)生的比特幣交易記錄到新區(qū)塊。解方程大賽的規(guī)則被一個(gè)稱為“工作量證明(Proof of Work)”的算法所定義。工作量證明算法定義每輪競賽中所有挖礦節(jié)點(diǎn)獨(dú)立求解一道包含Hash函數(shù)的方程,誰先求出滿足難度目標(biāo)的解,誰就獲勝。

什么方程?Hash(區(qū)塊頭數(shù)據(jù))=滿足難度目標(biāo)的哈希值。

其實(shí)就是通過不斷修改區(qū)塊頭中的Nonce字段值(通常是遞增1),使得區(qū)塊頭哈希值滿足難度目標(biāo)。難度目標(biāo)就是區(qū)塊頭“難度目標(biāo)”字段值。這個(gè)難度目標(biāo)字段值通常類似于:哈希函數(shù)的輸出值十六進(jìn)制表示以0開頭。從概率角度看,平均隨機(jī)嘗試16次可以得到一個(gè)滿足難度目標(biāo)的解(十六進(jìn)制數(shù)字取值0到F)。從數(shù)字角度看,要找一個(gè)輸出小于0x10000000......0的輸入。顯然,這個(gè)字段的值可以看成一個(gè)難度閾值。如果將難度閾值繼續(xù)降低,要找到一個(gè)滿足要求的解會(huì)變得越來越困難。2014年的時(shí)候,一個(gè)礦工平均要嘗試10^15次才能找到一個(gè)合適的Nonce使得區(qū)塊頭信息哈希值足夠小。這幾年隨著計(jì)算機(jī)運(yùn)算能力的快速進(jìn)步,挖礦設(shè)備越來越專業(yè),難度閾值也設(shè)置的越來越小,才能保證全網(wǎng)10分鐘左右挖出一個(gè)新區(qū)塊。難度目標(biāo)的調(diào)整是依據(jù)最新的2016個(gè)區(qū)塊(約兩周時(shí)間)與20160分鐘的比較得出的。

挖礦過程中,每次嘗試雖然是Nonce值遞增,但其實(shí)是在隨機(jī)嘗試。這是由哈希函數(shù)的三個(gè)性質(zhì)決定的:

(1)不可逆。不可能根據(jù)哈希函數(shù)的輸出值反推出輸入值。

(2)抗碰撞。兩個(gè)不同的輸入值得到相同哈希輸出的可能性極低。

(3)高靈敏。當(dāng)輸入有微小變化時(shí)哈希值輸出都會(huì)產(chǎn)生巨大的變化。

以上三個(gè)性質(zhì)保證在搜索解時(shí),沒有辦法用前面的前一步經(jīng)驗(yàn)來指導(dǎo)后續(xù)的搜索,只能一直處于隨機(jī)搜索的狀態(tài)。這保證了想?yún)⑴c挖礦或者說在工作量證明中獲勝的節(jié)點(diǎn)唯一的選擇就是不斷提高自己的算力,而沒有任何其它的“捷徑”,而這點(diǎn)正是區(qū)塊鏈安全性的基石。

挖礦是比特幣系統(tǒng)運(yùn)行的核心環(huán)節(jié),但是參與挖礦的節(jié)點(diǎn)需要投入大量的資源,包括挖礦設(shè)備和電力消耗。顯然如果沒有激勵(lì)機(jī)制,節(jié)點(diǎn)是沒有動(dòng)力去挖礦的。比特幣的設(shè)計(jì)是,節(jié)點(diǎn)挖出一個(gè)新區(qū)塊以后,它記錄的第一筆交易并不是從全網(wǎng)接收到的交易,而是自己創(chuàng)建的一筆特殊交易——?jiǎng)?chuàng)幣交易或者稱coinbase交易。假設(shè)A節(jié)點(diǎn)挖出了一個(gè)新區(qū)塊,它創(chuàng)建的創(chuàng)幣交易內(nèi)容類似于“向A節(jié)點(diǎn)的地址支付12.5個(gè)比特幣”。這12.5個(gè)全新的比特幣是之前不存在于區(qū)塊鏈賬本中的增量,也是作為對挖礦節(jié)點(diǎn)的獎(jiǎng)勵(lì)。創(chuàng)幣交易的特殊在于不消耗UTXO,即沒有交易輸入只有交易輸出。所以給挖出新區(qū)塊的節(jié)點(diǎn)的獎(jiǎng)勵(lì)包括兩部分:新幣獎(jiǎng)勵(lì)和交易費(fèi)用。目前礦工獲得的主要收益還是新幣獎(jiǎng)勵(lì)為主,交易費(fèi)用占比還比較小。

可以看出,挖礦設(shè)計(jì)的高明之處在于它不僅是一種激勵(lì)記賬的機(jī)制,同時(shí)解決了加密數(shù)字貨幣新幣發(fā)行的難題。從2009年1月每個(gè)區(qū)塊獎(jiǎng)勵(lì)50個(gè)比特幣開始,每四年獎(jiǎng)勵(lì)的比特幣數(shù)量減少一半(準(zhǔn)確地說是210,000個(gè)區(qū)塊),直到2100萬比特幣全部發(fā)行完畢(大約2140年),目前每個(gè)新區(qū)塊獎(jiǎng)勵(lì)12.5個(gè)比特幣。可以看出,比特幣是一種總量有限的緊縮貨幣。

2.6 去中心化共識(shí)機(jī)制

一種貨幣體系很重要的組成部分就是要有一份所有參與者一致信任的賬本。這在傳統(tǒng)貨幣體系中很容易實(shí)現(xiàn),銀行作為貨幣體系的中心結(jié)構(gòu),保存這樣一份賬本并在新交易發(fā)生時(shí)維持對賬本的更新。但比特幣網(wǎng)絡(luò)是由分布在互聯(lián)網(wǎng)上的數(shù)以萬計(jì)的節(jié)點(diǎn)組成,并沒有中心機(jī)構(gòu)來保存賬本,那么那么多節(jié)點(diǎn)之間如何形成一份一致認(rèn)可的賬本?中本聰?shù)囊粋€(gè)主要?jiǎng)?chuàng)新就在于設(shè)計(jì)了一種去中心化共識(shí)機(jī)制,解決了古老的“拜占庭將軍難題”,即如何在不可信的環(huán)境中在異步節(jié)點(diǎn)之間達(dá)成共識(shí)。共識(shí)是網(wǎng)絡(luò)中數(shù)以萬計(jì)的獨(dú)立節(jié)點(diǎn)遵守了簡單的規(guī)則,獨(dú)立異步地交互形成的產(chǎn)物,主要包括以下四個(gè)方面:

(1)每個(gè)節(jié)點(diǎn)對接收到的交易的有效性進(jìn)行獨(dú)立檢驗(yàn)

(2)每個(gè)節(jié)點(diǎn)通過工作量證明算法競爭記賬權(quán)并對近期的交易獨(dú)立打包記錄到新區(qū)塊

(3)每個(gè)節(jié)點(diǎn)對接收到的新區(qū)塊進(jìn)行獨(dú)立檢驗(yàn)并組裝到區(qū)塊鏈

(4)每個(gè)節(jié)點(diǎn)獨(dú)立地選擇區(qū)塊鏈,在工作量證明機(jī)制下選擇累計(jì)工作量最大的區(qū)塊鏈

節(jié)點(diǎn)對交易數(shù)據(jù)的獨(dú)立檢驗(yàn)所遵循的規(guī)則都是統(tǒng)一規(guī)定好的,可能的詐騙、錯(cuò)誤等無效交易無法在網(wǎng)絡(luò)中繼續(xù)傳播。

工作量證明算法一方面實(shí)現(xiàn)了比特幣賬本不會(huì)被中心節(jié)點(diǎn)所控制,另一方面實(shí)現(xiàn)區(qū)塊鏈歷史數(shù)據(jù)實(shí)際不可更改。這兩點(diǎn)之前已經(jīng)介紹過。

每個(gè)完全節(jié)點(diǎn)獨(dú)立保存并更新區(qū)塊鏈。所以當(dāng)節(jié)點(diǎn)從網(wǎng)絡(luò)接收到一個(gè)新區(qū)塊時(shí),它要檢驗(yàn)并決定是否組裝到本地的區(qū)塊鏈上。檢驗(yàn)的內(nèi)容包括:

(1)區(qū)塊的數(shù)據(jù)結(jié)構(gòu)語法上有效

(2)區(qū)塊頭的哈希值小于目標(biāo)難度(確認(rèn)包含足夠的工作量證明)

(3)第⼀個(gè)交易(有且只有第⼀個(gè))是創(chuàng)幣交易

(4)使用檢查清單驗(yàn)證區(qū)塊內(nèi)的交易并確保它們的有效性。

。。。。。。

每個(gè)節(jié)點(diǎn)對每個(gè)新區(qū)塊的獨(dú)立檢驗(yàn)確保了礦工無法欺詐。假設(shè)一個(gè)欺詐礦工創(chuàng)建一筆交易向自己支付一大筆比特幣。接收到這個(gè)區(qū)塊的節(jié)點(diǎn)基于相同的檢驗(yàn)規(guī)則將很快能發(fā)現(xiàn),從而選擇拒絕這個(gè)新區(qū)塊,這樣這個(gè)欺詐礦工不僅不會(huì)得到額外的錢,反而會(huì)浪費(fèi)挖礦耗費(fèi)的大量投入。

去中心化共識(shí)會(huì)遇到的一個(gè)情況就是區(qū)塊鏈“分叉”。當(dāng)兩個(gè)節(jié)點(diǎn)幾乎同時(shí)挖出新區(qū)塊時(shí)。由于互相都沒有收到對方的新區(qū)塊,所以它們會(huì)將自己挖出的新區(qū)塊廣播出去。網(wǎng)絡(luò)上的其它節(jié)點(diǎn)就可能在幾乎同時(shí)接收到兩個(gè)新區(qū)塊,而且都可以有效的組裝到現(xiàn)有區(qū)塊鏈上。這個(gè)時(shí)候節(jié)點(diǎn)會(huì)把兩個(gè)區(qū)塊都保存下來,形成區(qū)塊鏈的兩條分叉。“分叉”只是暫時(shí)現(xiàn)象,解決辦法就是看這兩條分叉誰的工作量累計(jì)的更快,節(jié)點(diǎn)獨(dú)立地選擇累計(jì)工作量最大的鏈作為主鏈。當(dāng)所有節(jié)點(diǎn)都獨(dú)立選擇最長的鏈作為區(qū)塊鏈主鏈時(shí),很快全網(wǎng)節(jié)點(diǎn)就會(huì)重新達(dá)成共識(shí)。

去中心化共識(shí)唯一的隱患是可能遭受“共識(shí)攻擊”,典型的是“51%攻擊”。之前介紹過,工作量證明算法使得區(qū)塊鏈歷史數(shù)據(jù)實(shí)際上不可更改,因?yàn)閰^(qū)塊的生成需要巨大的工作量,背后需要巨大的算力支撐。但是一旦網(wǎng)絡(luò)中有超過一半的算力被攻擊者掌控,它就可能篡改交易數(shù)據(jù)。針對記錄目標(biāo)交易的區(qū)塊,攻擊者重新構(gòu)造一個(gè)新區(qū)塊,并故意與之形成分叉,在新區(qū)塊中,攻擊者可以重新生成一筆與目標(biāo)交易數(shù)額相等但支付地址不同的交易,如果支付地址改為自己掌握的節(jié)點(diǎn)地址就可以把這筆錢轉(zhuǎn)給自己。在后續(xù)的累計(jì)工作量競賽中,攻擊者利用自己掌握的超過一半算力獲勝,進(jìn)而使得故意分叉的鏈條成為全網(wǎng)的主鏈,最終實(shí)現(xiàn)交易欺詐。所以為了保證大額交易安全,建議在大宗商品交易用比特幣支付時(shí),接收方要等到記錄此交易的區(qū)塊深度超過6時(shí),再進(jìn)行商品交付。


3 區(qū)塊鏈的應(yīng)用與發(fā)展

區(qū)塊鏈?zhǔn)潜忍貛诺牡讓蛹夹g(shù)之一,比特幣是區(qū)塊鏈的一個(gè)應(yīng)用,也是目前為止區(qū)塊鏈最成功的應(yīng)用。在比特幣里,區(qū)塊鏈被看成是一個(gè)分布式的公開賬本。區(qū)塊鏈可以存儲(chǔ)賬本,當(dāng)然也可以存儲(chǔ)其它數(shù)據(jù),比如合約、證書、法律文件等等,所以本質(zhì)上區(qū)塊鏈?zhǔn)且粋€(gè)分布式數(shù)據(jù)庫,可以應(yīng)用在很多領(lǐng)域。但是并不是說區(qū)塊鏈只是一個(gè)數(shù)據(jù)庫,相反區(qū)塊鏈數(shù)據(jù)存儲(chǔ)成flat file和Google的LevelDB數(shù)據(jù)庫,都不是區(qū)塊鏈的創(chuàng)新點(diǎn)。區(qū)塊鏈的核心創(chuàng)新點(diǎn)是去中心化共識(shí)機(jī)制。區(qū)塊鏈為了實(shí)現(xiàn)去中心化共識(shí)機(jī)制用到了很多的技術(shù),包括P2P協(xié)議、非對稱加密技術(shù)、哈希加密技術(shù)、時(shí)間戳、Merkle樹、UTXO、工作量證明算法(PoW)等。所以,可以將區(qū)塊鏈技術(shù)看成是一個(gè)技術(shù)集合。

區(qū)塊鏈脫胎于比特幣,早期大家的關(guān)注點(diǎn)主要是以比特幣為代表的加密數(shù)字貨幣,這兩年大家越來越關(guān)注區(qū)塊鏈技術(shù)在各個(gè)領(lǐng)域的應(yīng)用。很多人認(rèn)為,區(qū)塊鏈的現(xiàn)狀就像早期的互聯(lián)網(wǎng),區(qū)塊鏈技術(shù)給人類社會(huì)帶來的影響將不亞于互聯(lián)網(wǎng)。所以我們講區(qū)塊鏈不僅僅是指比特幣里的區(qū)塊鏈技術(shù),還包括很多在它之上的創(chuàng)新和發(fā)展。

比特幣的區(qū)塊鏈技術(shù)在應(yīng)用時(shí)存在的四個(gè)主要問題是:

(1)腳本語言太復(fù)雜,開發(fā)難度大。

(2)生態(tài)系統(tǒng)基礎(chǔ)比較差。既沒有完善的開發(fā)工具,也沒有文檔和教程。

(3)腳本語言并非圖靈完備。圖靈完備指一切可計(jì)算的問題都可以用該語言描述并計(jì)算。由于沒有圖靈完備,限制了比特幣腳本語言的用途,沒有辦法開發(fā)更高級的應(yīng)用,例如沒有辦法實(shí)現(xiàn)去中心化的交易所。

(4)比特幣區(qū)塊鏈協(xié)議的擴(kuò)展性不足。比特幣系統(tǒng)中只有一種符號——比特幣,沒有辦法用戶自定義其它的符號,比如公司的股票、債券等,這使比特幣失去了在其它領(lǐng)域應(yīng)用的可能性。

(5)工作量證明算法耗費(fèi)耗費(fèi)大量的設(shè)備和電力資源。

2013年一位叫做 Vitalik Buterin 的俄羅斯少年發(fā)表了以太坊白皮書——《以太坊:下一代智能合約和去中心化應(yīng)用平臺(tái)》。以太坊解決了比特幣區(qū)塊鏈擴(kuò)展性不足,智能記錄交易不能記錄其它數(shù)據(jù)的問題。此外,以太坊通過其豐富的編程語言和完善的開發(fā)工具,解決了針對開發(fā)者不友好的問題,它讓任何人都能很輕松的在以太坊上建立新的協(xié)議和智能合約。目前,以太坊已經(jīng)成為應(yīng)用最廣泛的區(qū)塊鏈技術(shù)。

除以太坊之外,還有很多的區(qū)塊鏈項(xiàng)目出現(xiàn)。這里將目前有影響力的區(qū)塊鏈項(xiàng)目做一個(gè)分類,大致可以分為四類:數(shù)字資產(chǎn);智能合約平臺(tái);全球支付與結(jié)算;平臺(tái)類的應(yīng)用服務(wù)。

3.1 數(shù)字資產(chǎn)

數(shù)字資產(chǎn)分為一般數(shù)字資產(chǎn)和主打匿名應(yīng)用的匿名數(shù)字資產(chǎn)。

一般數(shù)字資產(chǎn)包括比特幣、萊特幣、新經(jīng)幣(NEM),Decred,狗狗幣Dogecoin等。以比特幣為代表它們要解決的就是跨中心情況下的支付問題。跟比特幣比較起來,其它代幣原理類似,但針對自己的使用場景有一些改進(jìn)。

萊特幣的交易確認(rèn)時(shí)間是2.5分鐘,也就是每2.5分鐘有一個(gè)區(qū)塊被挖出,相較于比特幣的10分鐘,確認(rèn)時(shí)間大大縮短,交易效率更高。

新經(jīng)幣的共識(shí)機(jī)制是重要性證明(Proof of Importance),根據(jù)交易量、活躍度等維度而不僅僅是根據(jù)工作量來決定區(qū)塊鏈的記賬權(quán)。

Decred強(qiáng)調(diào)社區(qū)投入、公開治理以及可持續(xù)挖礦。它的特點(diǎn)是共識(shí)機(jī)制采用工作量證明PoW和權(quán)益證明PoS結(jié)合的方式。相比于工作量證明算法,權(quán)益證明算法不要求挖礦節(jié)點(diǎn)完成大量的計(jì)算工作,而是節(jié)點(diǎn)能夠?qū)σ欢〝?shù)量的錢展示所有權(quán)。權(quán)益證明由于不需要挖礦,避免了類似工作量證明算法消耗大量設(shè)備和電力的問題,所以受到廣泛關(guān)注。

狗狗幣是結(jié)合Doge文化發(fā)展起來的,有自己獨(dú)特的社區(qū)文化,具有交易便捷、轉(zhuǎn)賬速度快、確認(rèn)時(shí)間短等特點(diǎn),在小費(fèi)、慈善等場景應(yīng)用的活躍度很高。

匿名數(shù)字資產(chǎn)要解決的是如何在保護(hù)隱私的情況下完成支付的問題。我們知道比特幣匿名機(jī)制在于你無法知道比特幣地址背后所有者的真實(shí)身份,但是比特幣區(qū)塊鏈?zhǔn)枪_賬本,每個(gè)地址的交易數(shù)據(jù)都是完全公開的。尤其是當(dāng)用戶在比特幣交易網(wǎng)站注冊時(shí),往往會(huì)填寫身份信息,這樣就可能暴露用戶身份信息。匿名數(shù)字資產(chǎn)比較知名的有達(dá)世幣Dash、門羅幣Monero以及采用零知識(shí)證明的零幣Zcash等。

達(dá)世幣的匿名性通過“混幣”的機(jī)制實(shí)現(xiàn)。原理是先將不同人的幣先混在一起,再將各自擁有的份額拿回去,這樣就無法知道轉(zhuǎn)賬人了。

門羅幣采用“環(huán)形簽名”的機(jī)制實(shí)現(xiàn)匿名。網(wǎng)絡(luò)首先將轉(zhuǎn)賬者的密鑰對和另外一個(gè)密鑰對集合混在一起得到一個(gè)新集合,然后用集合中的私鑰逐一簽名。其它節(jié)點(diǎn)用公鑰解密的時(shí)候就不確定到底哪個(gè)簽名是轉(zhuǎn)賬者的簽名。

零幣特色是采用了零知識(shí)證明機(jī)制實(shí)現(xiàn)匿名。原理類似于我們?nèi)胱【频陼r(shí),不需要向前臺(tái)提供全部個(gè)人身份信息,而是公安系統(tǒng)提供一個(gè)接口,我們把信息提供給公安系統(tǒng)的接口,公安系統(tǒng)驗(yàn)證身份之后返回結(jié)果就可以了。這樣就實(shí)現(xiàn)了對酒店前臺(tái)的匿名效果。

目前,全球數(shù)字資產(chǎn)超過1000種,充當(dāng)?shù)亩际且话阖泿诺墓δ埽糜诮灰字Ц丁D壳耙灿龅綉?yīng)用場景有限、自身價(jià)值波動(dòng)過大等問題。

3.2 智能合約平臺(tái)

智能合約就是在區(qū)塊鏈上運(yùn)行的計(jì)算機(jī)程序。當(dāng)滿足程序中預(yù)先設(shè)定的觸發(fā)條件時(shí),智能合約自動(dòng)執(zhí)行。觸發(fā)條件可以是時(shí)間、事件或者交易等。由于區(qū)塊鏈歷史數(shù)據(jù)的不可更改特性,智能合約一旦在區(qū)塊鏈上注冊之后,就不能更改,無法違約。例如,房屋租賃合同協(xié)議的智能合約,注冊之后,當(dāng)業(yè)主收到定金時(shí)會(huì)觸發(fā)執(zhí)行,自動(dòng)將房屋的鑰匙密鑰發(fā)送到房客的賬戶。到了租金交付時(shí)間,合約會(huì)自動(dòng)從房客的賬戶向業(yè)主轉(zhuǎn)賬預(yù)先商定的租金。

再舉一個(gè)智能合約應(yīng)用在航班延誤險(xiǎn)的例子。我們經(jīng)常坐飛機(jī)會(huì)買飛機(jī)延誤險(xiǎn),但是真的延誤之后,你還要打電話咨詢、在線下開證明、找保險(xiǎn)公司,才能執(zhí)行完你的飛機(jī)延誤險(xiǎn)賠付。如果有智能合約,在區(qū)塊鏈上注冊好合約以后,連接到航班數(shù)據(jù),就能確保航空公司在航班延誤之后自動(dòng)給你賠付了。

比特幣區(qū)塊鏈可以看做區(qū)塊鏈1.0。但比特幣區(qū)塊鏈因?yàn)椴皇菆D靈完備的。圖靈完備是指一切可計(jì)算的問題都能計(jì)算,這樣的虛擬機(jī)或者編程語言就是圖靈完備的。比特幣區(qū)塊鏈不能支持所有種類的計(jì)算,無法為賬戶取款額度提供精細(xì)的控制,缺少更豐富的狀態(tài)記錄,導(dǎo)致比特幣區(qū)塊鏈的擴(kuò)展性比較差,不能應(yīng)用在除比特幣以外的其它應(yīng)用上,無法支持復(fù)雜的智能合約。

智能合約的區(qū)塊鏈平臺(tái)被稱為區(qū)塊鏈2.0,代表項(xiàng)目是以太坊。針對比特幣區(qū)塊鏈擴(kuò)展性差、缺少圖靈完備等特點(diǎn),以太坊建立了一個(gè)可編程、圖靈完備的區(qū)塊鏈平臺(tái)。在這個(gè)平臺(tái)上,你可以通過編寫簡單的程序方便的實(shí)現(xiàn)數(shù)字資產(chǎn)的生產(chǎn),對鏈上運(yùn)行的各類數(shù)字資產(chǎn)的精確控制,比如這個(gè)資產(chǎn)是待支付還是被鎖定還是有額度限制、和其他資產(chǎn)的自動(dòng)兌換等等。同時(shí),你也可以開發(fā)很多的智能合約,來實(shí)現(xiàn)非區(qū)塊鏈資產(chǎn)的功能,比如投票、對賭、條件合同等。因?yàn)橐С种悄芎霞s,以太坊上有兩類賬戶地址。一種是普通賬戶,和比特幣賬戶地址差不多,一種是合約賬戶,主要用于智能合約。簡單點(diǎn)說,以太坊就是區(qū)塊鏈加智能合約。

由于以太坊有著強(qiáng)大的可擴(kuò)展性和完善的生態(tài)支持,在區(qū)塊鏈的應(yīng)用開發(fā)上,很多開發(fā)者和企業(yè)都選擇了以太坊區(qū)塊鏈作為他們的底層技術(shù)平臺(tái)。

接觸過以太坊的人都知道,除了以太坊之外,還有一個(gè)以太坊經(jīng)典,那么這兩者是什么關(guān)系呢?2016年7月份,由于以太坊網(wǎng)絡(luò)上,價(jià)值6000萬美元的以太幣(以太坊網(wǎng)絡(luò)上使用的代幣)被黑客盜取,為了追回被盜資金,以太坊創(chuàng)始人Vitalik組織并主導(dǎo)了一次硬分叉,通過在新的鏈上改寫了被黑客篡改的交易記錄實(shí)現(xiàn)資金追回。這次硬分叉將以太坊區(qū)塊鏈分成了兩條區(qū)塊鏈,由Vitalik主導(dǎo)、接受升級的區(qū)塊鏈稱為以太坊,它的代幣簡稱ETH(Ethereum,ETH),不接受這次升級的區(qū)塊鏈稱為以太坊經(jīng)典,它的代幣簡稱ETC(Ethereum Classic,ETC)。

以太幣是以太坊網(wǎng)絡(luò)上使用的代幣,是以太坊內(nèi)置的區(qū)塊鏈資產(chǎn),類似比特幣。但是以太幣的主要目的并不是交易支付,而是用于支付智能合約運(yùn)行的費(fèi)用。智能合約的運(yùn)行需要付費(fèi),相當(dāng)于設(shè)定了一個(gè)門檻,這個(gè)門檻對于真的想做應(yīng)用的用戶來說比較低,但對于大量運(yùn)行垃圾智能合約項(xiàng)目和攻擊者來說就是比較大的負(fù)擔(dān),因此可以有效防止惡意攻擊,確保區(qū)塊鏈的穩(wěn)定安全。

3.3 全球支付與結(jié)算

目前用于全球支付與結(jié)算的區(qū)塊鏈項(xiàng)目較為成功的是Ripple和Tether。以Ripple為例來介紹一下。

瑞波Ripple是目前區(qū)塊鏈金融領(lǐng)域比較成功的項(xiàng)目之一,支持全球不同網(wǎng)絡(luò)、不同幣種之間即時(shí)、低成本的國際支付。銀行等機(jī)構(gòu)用戶都可以利用瑞波在不同網(wǎng)絡(luò)之間發(fā)送實(shí)時(shí)的國際付款。與其他區(qū)塊鏈項(xiàng)目都由開發(fā)者組織進(jìn)行維護(hù)相比,瑞波的運(yùn)行維護(hù)全都由一家叫Ripple Labs的公司負(fù)責(zé)。瑞波公司是一家組織嚴(yán)格,完全按照法律法規(guī)注冊的公司,并且獲得了很多大公司、投資機(jī)構(gòu)、銀行的投資,包括Google、埃森哲、渣打銀行等。這種特點(diǎn)也與瑞波公司的目標(biāo)客戶有關(guān)。瑞波區(qū)塊鏈不向個(gè)人開發(fā)者開放,主要面向機(jī)構(gòu)客戶特別是銀行、支付機(jī)構(gòu)等,支持機(jī)構(gòu)客戶實(shí)現(xiàn)快速、低成本的跨境匯款。瑞波公司大量與銀行等支付機(jī)構(gòu)合作,推動(dòng)瑞波的應(yīng)用落地。例如2017年7月,日本和泰國之間首個(gè)基于瑞波區(qū)塊鏈的即時(shí)匯款服務(wù)正式開始。這項(xiàng)區(qū)塊鏈服務(wù)能實(shí)現(xiàn)個(gè)人資金從日元到泰銖的轉(zhuǎn)移,經(jīng)過2至5秒就能存到收款方的賬戶上,而現(xiàn)在兩國之間常規(guī)的匯款都需要花上兩個(gè)工作日的時(shí)間。

瑞波區(qū)塊鏈實(shí)現(xiàn)跨境支付主要通過內(nèi)置的代幣瑞波幣作為中介來實(shí)現(xiàn),瑞波幣可以兌換多種法幣。瑞波幣的發(fā)行并不是通過挖礦來實(shí)現(xiàn)的,而是通過業(yè)務(wù)開發(fā)交易來分發(fā)瑞波幣,獎(jiǎng)勵(lì)那些更小差價(jià)的流動(dòng)性提供商,另外向那些有興趣投資瑞波幣的機(jī)構(gòu)銷售瑞波幣。如果沒有挖礦,瑞波幣是如何實(shí)現(xiàn)交易確認(rèn)和記賬的呢?答案是協(xié)議共識(shí)機(jī)制。不同于工作量證明算法需要網(wǎng)絡(luò)上巨大的算力維持,瑞波區(qū)塊鏈將網(wǎng)絡(luò)上的節(jié)點(diǎn)分為普通節(jié)點(diǎn)和驗(yàn)證節(jié)點(diǎn),協(xié)議共識(shí)機(jī)制規(guī)定一筆交易只需要驗(yàn)證節(jié)點(diǎn)的投票就能完成驗(yàn)證和確認(rèn)。因此瑞波交易確認(rèn)的時(shí)間非常短。

瑞波幣被人詬病的一點(diǎn)是它的中心化運(yùn)作,即由瑞波公司完全負(fù)責(zé)。而且,瑞波公司目前持有約三分之二的瑞波幣,完全有能力操縱瑞波幣的價(jià)格,這也是瑞波的一個(gè)隱患。當(dāng)然,瑞波公司也一再發(fā)表聲明,等瑞波發(fā)展成熟之后,會(huì)逐漸退出中心化團(tuán)隊(duì)的影響,比如去掉驗(yàn)證節(jié)點(diǎn),使瑞波真正成為一個(gè)去中心化的區(qū)塊鏈網(wǎng)絡(luò)。

3.4 平臺(tái)類應(yīng)用

平臺(tái)類應(yīng)用大多是基于以太坊設(shè)計(jì)并運(yùn)行的區(qū)塊鏈項(xiàng)目,可以看出以太坊的可擴(kuò)展性,即通過編程可以在它上面實(shí)現(xiàn)很多應(yīng)用。這里介紹三個(gè)平臺(tái)類應(yīng)用:市場預(yù)測平臺(tái)Augur,計(jì)算資源交易平臺(tái)Golem,數(shù)字代幣化平臺(tái)DigixDAO。

市場預(yù)測平臺(tái)Augur是以太坊上的第一個(gè)應(yīng)用。用戶基于數(shù)據(jù)對未來事件的結(jié)果進(jìn)行預(yù)測,預(yù)測正確的用戶會(huì)獲得獎(jiǎng)勵(lì),預(yù)測錯(cuò)誤的用戶會(huì)失去“投注”。用戶參與預(yù)測之前,先要“下注”,即進(jìn)行資金充值,Augur會(huì)將錢存進(jìn)智能合約中,等到結(jié)果出來之后,合約自動(dòng)執(zhí)行,可以有效防止用戶賴賬和中心節(jié)點(diǎn)作弊風(fēng)險(xiǎn)。任何用戶都可以創(chuàng)建一個(gè)市場問題或者選擇參與某個(gè)市場問題。事件結(jié)果來自于所有持有代幣的人共同決定。注意Augur的代幣叫REP,并不是以太幣,用戶可以用以太幣購買REP。

計(jì)算交易平臺(tái)Golem允許用戶通過網(wǎng)絡(luò)交易計(jì)算資源,可以把它看做是目前共享經(jīng)濟(jì)的一個(gè)案例。兩類用戶:一類為算力資源賣家,另一類為買家。買家創(chuàng)建任務(wù)并將任務(wù)上傳到網(wǎng)絡(luò)。Golem的代幣是GNT,用于買方購買算力時(shí)支付酬勞。

數(shù)字代幣化平臺(tái)DigixDAO是一個(gè)基于以太坊區(qū)塊鏈構(gòu)建的資產(chǎn)代幣化平臺(tái)。DigixDAO的一大貢獻(xiàn)是在區(qū)塊鏈虛擬資產(chǎn)和黃金之類的實(shí)物資產(chǎn)之間建立了一種對應(yīng)關(guān)系,為實(shí)物資產(chǎn)的代幣化和文檔化提供了思路,為之后其它實(shí)體資產(chǎn)上鏈提供了一個(gè)范例。DigixDAO中的名詞“上鏈”,也就是實(shí)物資產(chǎn)上到區(qū)塊鏈上,變成區(qū)塊鏈資產(chǎn)。上鏈顯然是區(qū)塊鏈項(xiàng)目能夠與其它領(lǐng)域結(jié)合、落地到真實(shí)場景的必經(jīng)步驟。那DigixDAO是如何將實(shí)體資產(chǎn)上鏈的呢?主要是設(shè)計(jì)了一個(gè)證明資產(chǎn)存在和所有權(quán)的制度,并且證明記錄會(huì)通過星際文件系統(tǒng)(目標(biāo)取代HTTP協(xié)議的P2P分布式文件系統(tǒng))和以太坊永久性地發(fā)布和保護(hù)。DigixDAO獨(dú)創(chuàng)了PoA資產(chǎn)證明(Proof of Assets, PoA)。

可以通過DigixDAO的鑄幣來認(rèn)識(shí)PoA。比如現(xiàn)在要對黃金上鏈,一克黃金的價(jià)值,由黃金供應(yīng)商、托管商、審計(jì)商之類的“監(jiān)管鏈”參與者通過連續(xù)數(shù)字簽名進(jìn)行認(rèn)證,將這一克黃金的信息注冊成資產(chǎn)證明(PoA)資產(chǎn)卡,永久性地上傳到去中心化數(shù)據(jù)庫中。PoA卡被保存在以太坊錢包里,當(dāng)PoA資產(chǎn)卡被發(fā)送到鑄幣智能合約時(shí),DigixDAO的代幣DGX就生成了。每個(gè)DGX代幣代表1克被倫敦金銀市場協(xié)會(huì)認(rèn)可的金條黃金。這就是DigixDAO的鑄幣過程。


4 總結(jié)

區(qū)塊鏈技術(shù)的核心是它能解決去中心化條件下的信任問題。并不是所有的行業(yè)都適合應(yīng)用區(qū)塊鏈,區(qū)塊鏈也不能包治百病。非常適合區(qū)塊鏈技術(shù)應(yīng)用的領(lǐng)域有以下特征:(1)目前沒有一個(gè)信任中心;(2)建立一個(gè)信任中心的成本非常高;(3)需要有顯示映射機(jī)制保障實(shí)施。

由于很多消耗了大量時(shí)間和資源成本的社會(huì)機(jī)制,都是為了在參與方之間建立信任關(guān)系,而區(qū)塊鏈可以讓人們在相互無信任的情況下,無地域限制地進(jìn)行大規(guī)模協(xié)作。顯然,區(qū)塊鏈給社會(huì)帶來了一種新的提升效率和降低成本的技術(shù)手段。目前,雖然大家對以比特幣為代表的加密數(shù)字貨幣的未來看法不一,但對區(qū)塊鏈的未來大家卻一致看好,認(rèn)為區(qū)塊鏈?zhǔn)且豁?xiàng)革命性的技術(shù)。

目前區(qū)塊鏈在各行業(yè)的應(yīng)用已經(jīng)逐步展開,重點(diǎn)應(yīng)用領(lǐng)域如圖4-1所示。在具體的行業(yè)應(yīng)用中,區(qū)塊鏈能產(chǎn)生明顯效益的地方在于優(yōu)化業(yè)務(wù)流程、降低運(yùn)營成本、提升協(xié)作效率。

圖4-1 區(qū)塊鏈當(dāng)前重點(diǎn)應(yīng)用領(lǐng)域  

作者:longlee
鏈接:點(diǎn)擊這里

該文章在 2018/3/30 9:02:12 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 精品区一区二区三 | www.xxx国产| 欧美一区二区经典 | 成人免费一区二区 | 91福利社区视频 | 国产你懂 | 午夜视频体内 | 琪琪色18 | 老熟女毛茸茸 | 成人影片免费观看 | 日本乱码一区二 | 日韩视频网 | 丝袜视频国产一区 | 欧美日韩在线视频 | 国内在线视频观看 | 老司机精品福 | 国产欧美三级亚洲 | 91高清影院 | 日韩色婷 | 欧美综合自拍中文 | 国产xxxx色视 | 国产欧美日韩专区 | 国产精品天天看 | 国语自产精品 | 日韩丶不卡影视 | 国产精品电影久 | 国产色a在线观看 | 日本在线国产 | 欧洲亚洲一区二 | 无码不卡精品 | 中文字幕热久 | 精品一区| 91传媒在线| 国产一区在线免费 | 午夜影片| 国产一aⅴ最 | 国产乱辈通伦 | 国产精品自拍喷水 | 日本欧洲亚洲免费 | 国产在线拍 | 国产香蕉尹人视频 |