在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探一探區(qū)塊鏈技術(shù)背后的歷史,如何一步步走到今天的呢?

人工智能和機(jī)器人研究院 ? 來源:未知 ? 作者:李倩 ? 2018-05-04 14:33 ? 次閱讀

在這篇文章中我們探一探區(qū)塊鏈技術(shù)背后的歷史,從上世紀(jì)80年代的拜占庭將軍問題到今天的復(fù)雜的智慧契約,區(qū)塊鏈?zhǔn)侨绾我徊讲阶叩浇裉斓哪兀?/p>

區(qū)塊鏈基礎(chǔ)

區(qū)塊鏈?zhǔn)请S著比特幣等數(shù)字加密貨幣的日益普及而逐漸興起的一種全新技術(shù),它提供了一種去中心化的、無需信任積累的信用建立范式,目前已經(jīng)引起金融行業(yè)、科研機(jī)構(gòu)、政府部門和投資公司的高度重視與廣泛關(guān)注。

區(qū)塊鏈技術(shù)通過建立一個(gè)共同維護(hù)且不可被篡改的數(shù)據(jù)庫來記錄過去的所有交易記錄和歷史數(shù)據(jù),所有的數(shù)據(jù)都是分布式存儲(chǔ)且公開透明的。在這種技術(shù)下,任何互不相識(shí)的網(wǎng)絡(luò)用戶都可以通過合約、點(diǎn)對(duì)點(diǎn)記賬、數(shù)字加密等方式達(dá)成信用共識(shí),而不需要任何的中央信任機(jī)構(gòu)。在這種技術(shù)下,我們可以建立數(shù)字貨幣、數(shù)字資產(chǎn)、智能財(cái)產(chǎn)以及智能合約等。

通過上一章的介紹,相信大家已經(jīng)對(duì)區(qū)塊鏈和比特幣有了初步的認(rèn)識(shí),在本章中,我們將繼續(xù)探討區(qū)塊鏈的技術(shù)細(xì)節(jié)。

本章將首先介紹區(qū)塊鏈的相關(guān)基本概念及其運(yùn)作原理,然后介紹區(qū)塊鏈上可以進(jìn)行的操作和相關(guān)細(xì)節(jié),最后再討論區(qū)塊鏈上的交易流程和它的驗(yàn)證過程。

區(qū)塊鏈技術(shù)

區(qū)塊鏈本質(zhì)上是一個(gè)對(duì)等網(wǎng)絡(luò)(peer-to-peer)的分布式賬本數(shù)據(jù)庫。比特幣的底層就采用了區(qū)塊鏈的技術(shù)架構(gòu)。

區(qū)塊鏈本身其實(shí)是一串鏈接的數(shù)據(jù)區(qū)塊,其鏈接指針是采用密碼學(xué)哈希算法對(duì)區(qū)塊頭進(jìn)行處理所產(chǎn)生的區(qū)塊頭哈希值。每一個(gè)數(shù)據(jù)塊中記錄了一組采用哈希算法組成的樹狀交易狀態(tài)信息,這樣保證了每個(gè)區(qū)塊內(nèi)的交易數(shù)據(jù)不可篡改,區(qū)塊鏈里鏈接的區(qū)塊也不可篡改。

1.基本概念

一個(gè)完整的區(qū)塊鏈系統(tǒng)包含了很多技術(shù),其中有存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)區(qū)塊及其之上的數(shù)字簽名、時(shí)間戳等技術(shù),有作為支撐的P2P網(wǎng)絡(luò)和維護(hù)系統(tǒng)的共識(shí)算法,有挖礦和工作量證明機(jī)制,有匿名交易機(jī)制和比特幣錢包,還有鏈齡、UTXO、Merkle樹、雙花等相關(guān)技術(shù)概念。

正是這些技術(shù),使得區(qū)塊鏈在無中心的網(wǎng)絡(luò)上形成了運(yùn)轉(zhuǎn)不息的引擎,為區(qū)塊鏈的交易、驗(yàn)證、鏈接等功能提供了源源不斷的動(dòng)力。

2.數(shù)據(jù)區(qū)塊

比特幣的交易記錄會(huì)保存在數(shù)據(jù)區(qū)塊之中,比特幣系統(tǒng)中大約每10分鐘會(huì)產(chǎn)生一個(gè)區(qū)塊,每個(gè)數(shù)據(jù)區(qū)塊一般包含區(qū)塊頭(Header)和區(qū)塊體(Body)兩部分

區(qū)塊頭封裝了當(dāng)前的版本號(hào)(Version)、前一區(qū)塊地址(Prev-block)、時(shí)間戳(Timestamp)、隨機(jī)數(shù)(Nonce)、當(dāng)前區(qū)塊的目標(biāo)哈希值(Bits)、Merkle樹的根值(Merkle-root)等信息。

區(qū)塊體中則主要包含交易計(jì)數(shù)和交易詳情。交易詳情就是比特幣系統(tǒng)中的記賬本,每一筆交易都會(huì)被永久地記入數(shù)據(jù)區(qū)塊中,而且任何人都可以查詢。

區(qū)塊體中的Merkle樹將會(huì)對(duì)每一筆交易進(jìn)行數(shù)字簽名,如此可以確保每一筆交易都不可偽造且沒有重復(fù)交易。所有的交易將通過Merkle樹的Hash過程產(chǎn)生一個(gè)唯一Merkle根值記入?yún)^(qū)塊頭。關(guān)于Merkle樹本章后面將詳細(xì)介紹。

如果你使用的是比特幣核心錢包(Bitcoin core),那么每當(dāng)你打開客戶端時(shí),區(qū)塊數(shù)據(jù)文件都會(huì)被同步到電腦硬盤中,可以在blocks文件夾下找到它們。

我們還可以使用hexdump指令在終端上將數(shù)據(jù)區(qū)塊以十六進(jìn)制的方式顯示出來。我們可以通過解析這些數(shù)據(jù)得出交易記錄、區(qū)塊大小等基本信息,因此我們說區(qū)塊鏈中的數(shù)據(jù)是完全公開透明的。我們使用指令hexdump -n 10000 -C blk00000.dat打開了編號(hào)為00000的創(chuàng)世區(qū)塊(比特幣中的第一塊區(qū)塊鏈)。

3.挖礦與分叉問題

區(qū)塊在挖礦過程中產(chǎn)生。所謂挖礦,實(shí)際上是窮舉隨機(jī)數(shù)算法,把上個(gè)區(qū)塊的哈希值加上10分鐘內(nèi)的全部交易單打包,再加上一個(gè)隨機(jī)數(shù),算出一個(gè)256位的字符串哈希值,輸入的隨機(jī)數(shù)Nonce使哈希值滿足一定條件就獲得這個(gè)區(qū)塊的交易記賬權(quán)。

新產(chǎn)生的區(qū)塊需要快速廣播出去,以便其他節(jié)點(diǎn)進(jìn)行對(duì)其驗(yàn)證,以防造假。每個(gè)區(qū)塊存著上一個(gè)區(qū)塊的哈希值,可以溯源到源頭,只有經(jīng)過驗(yàn)證后才最終獲得區(qū)塊的交易記賬權(quán)。比特幣系統(tǒng)會(huì)讓挖礦的礦工競(jìng)爭(zhēng)記賬權(quán)(在主鏈上鏈接區(qū)塊的權(quán)利),這個(gè)競(jìng)爭(zhēng)機(jī)制就是工作量證明機(jī)制。

挖礦需要付出大量的能源和時(shí)間,誰付出的工作量多就能以更大的概率獲得一個(gè)區(qū)塊的記賬權(quán)。獲取記賬權(quán)的礦工會(huì)將當(dāng)前區(qū)塊鏈接到前一區(qū)塊,形成最新的區(qū)塊主鏈,該礦工也會(huì)得到系統(tǒng)獎(jiǎng)勵(lì)的一定數(shù)量(2009~2013年每10鐘產(chǎn)生50個(gè)比特幣,2014年至今每10分鐘產(chǎn)生的比特幣將減半成25個(gè))的比特幣。所有的區(qū)塊鏈接在一起形成了區(qū)塊鏈的主鏈,從創(chuàng)世區(qū)塊到當(dāng)前區(qū)塊,在區(qū)塊鏈之上的所有數(shù)據(jù)歷史都可以被追溯和查詢。

需要說明的是,可能會(huì)出現(xiàn)不同地區(qū)的兩個(gè)礦工同時(shí)“挖出”兩個(gè)新區(qū)塊加以鏈接的情況,這時(shí)主鏈上就會(huì)出現(xiàn)“分叉”。系統(tǒng)并不會(huì)馬上確認(rèn)哪個(gè)區(qū)塊不合理,而是約定后續(xù)礦工總是選擇累計(jì)工作量證明最大的區(qū)塊鏈。因此,當(dāng)主鏈分叉以后,后續(xù)區(qū)塊的礦工將通過計(jì)算和比較,將其區(qū)塊鏈接到當(dāng)前累計(jì)工作量證明最大化的備選鏈上,形成更長(zhǎng)的新主鏈,并自動(dòng)拋棄分叉處的短鏈,從而解決分叉問題。

4.時(shí)間戳和不可篡改性

時(shí)間戳是指從格林威治時(shí)間1970年01月01日00時(shí)00分00秒(北京時(shí)間1970年01月01日08時(shí)00分00秒)起至現(xiàn)在的總秒數(shù),通常是一個(gè)字符序列,唯一地標(biāo)識(shí)某一刻的時(shí)間。在比特幣系統(tǒng)中,獲得記賬權(quán)的節(jié)點(diǎn)在鏈接區(qū)塊時(shí)需要在區(qū)塊頭中加蓋時(shí)間戳,用于記錄當(dāng)前區(qū)塊數(shù)據(jù)的寫入時(shí)間。

每一個(gè)隨后區(qū)塊中的時(shí)間戳都會(huì)對(duì)前一個(gè)時(shí)間戳進(jìn)行增強(qiáng),形成一個(gè)時(shí)間遞增的鏈條。時(shí)間戳技術(shù)本身并沒有多復(fù)雜,但在區(qū)塊鏈技術(shù)中應(yīng)用時(shí)間戳卻是一個(gè)重大創(chuàng)新,時(shí)間戳為未來基于區(qū)塊鏈的互聯(lián)網(wǎng)和大數(shù)據(jù)增加了一個(gè)時(shí)間維度,使得數(shù)據(jù)更容易追溯,重現(xiàn)歷史也成為可能。

同時(shí),時(shí)間戳可以作為存在性證明(Proof of Existence)的重要參數(shù),它能夠證實(shí)特定數(shù)據(jù)必然在某特定時(shí)刻是的確存在的,這保證了區(qū)塊鏈數(shù)據(jù)庫是不可篡改和不可偽造的,這也為區(qū)塊鏈技術(shù)應(yīng)用于公證、知識(shí)產(chǎn)權(quán)注冊(cè)等時(shí)間敏感領(lǐng)域提供了可能。

5.分布式數(shù)據(jù)庫

比特幣系統(tǒng)中的區(qū)塊就像一個(gè)記賬本一樣,記錄了所有比特幣的交易信息,每一個(gè)比特幣用戶的比特幣收支情況都被永久地嵌入了數(shù)據(jù)區(qū)塊中以供別人查詢。這些數(shù)據(jù)區(qū)塊中的交易數(shù)據(jù)存放在每一個(gè)比特幣用戶的客戶端節(jié)點(diǎn)中,所有的這些節(jié)點(diǎn)則組成了比特幣及其堅(jiān)韌的分布式數(shù)據(jù)庫系統(tǒng)。任何一個(gè)節(jié)點(diǎn)的數(shù)據(jù)被破壞都不會(huì)影響整個(gè)數(shù)據(jù)庫的正常運(yùn)轉(zhuǎn),因?yàn)槠渌慕】倒?jié)點(diǎn)中都保存了完整的數(shù)據(jù)庫。

6.UTXO交易模式

UTXO(Unspent Transaction Outputs)是未花費(fèi)的交易輸出,它是比特幣交易過程中的基本單位。除創(chuàng)世區(qū)塊以外,所有區(qū)塊中的交易(Tx)會(huì)存在若干個(gè)輸入(Tx_in,也稱資金來源)和若干個(gè)輸出(Tx_out,也稱資金去向),創(chuàng)世區(qū)塊和后來挖礦產(chǎn)生的區(qū)塊中給礦工獎(jiǎng)勵(lì)的交易沒有輸入,除此之外,在比特幣系統(tǒng)中,某筆交易的輸入必須是另一筆交易未被使用的輸出,同時(shí)這筆輸入也需要上一筆輸出地址所對(duì)應(yīng)的私鑰進(jìn)行簽名。

當(dāng)前整個(gè)區(qū)塊鏈網(wǎng)絡(luò)中的UTXO會(huì)被儲(chǔ)存在每個(gè)節(jié)點(diǎn)中,只有滿足了來源于UTXO和數(shù)字簽名條件的交易才是合法的。所以區(qū)塊鏈系統(tǒng)中的新交易并不需要追溯整個(gè)交易歷史,就可以確認(rèn)當(dāng)前交易是否合法。

7.哈希函數(shù)

哈希函數(shù)在比特幣系統(tǒng)中也有著重要的應(yīng)用,區(qū)塊鏈中的數(shù)據(jù)并不只是原始數(shù)據(jù)或者交易記錄,還包括它們的哈希函數(shù)值,即將原始數(shù)據(jù)編碼為特定長(zhǎng)度的、由數(shù)字和字母組成的字符串后,記入?yún)^(qū)塊鏈。哈希函數(shù)有著很多適合存儲(chǔ)區(qū)塊鏈數(shù)據(jù)的

優(yōu)點(diǎn):

1)哈希函數(shù)處理過的數(shù)據(jù)是單向性的,通過處理過的輸出值幾乎不可能計(jì)算出原始的輸入值;

2)哈希函數(shù)處理不同長(zhǎng)度的數(shù)據(jù)所耗費(fèi)的時(shí)間是一致的,輸出值也是定長(zhǎng)的;

3)哈希函數(shù)的輸入值即使只相差一個(gè)字節(jié),輸出值的結(jié)果也會(huì)迥然不同。比特幣系統(tǒng)中最常采用的哈希函數(shù)是雙SHA256哈希函數(shù),通俗來說就是將不同長(zhǎng)度的原始數(shù)據(jù)用兩次SHA256哈希函數(shù)進(jìn)行處理,再輸出長(zhǎng)度為256的二進(jìn)制數(shù)字來進(jìn)行統(tǒng)一的識(shí)別和存儲(chǔ)。

總之,哈希函數(shù)是比特幣系統(tǒng)中的關(guān)鍵技術(shù),為比特幣系統(tǒng)提供了很多便利。本書后面的章節(jié)將會(huì)對(duì)哈希函數(shù)做詳細(xì)介紹,此處不贅述。

8.Merkle樹

Merkle樹是數(shù)據(jù)結(jié)構(gòu)中的一種樹,可以是二叉樹,也可以是多叉樹,它具有樹結(jié)構(gòu)的所有特點(diǎn)。如圖2-4所示,比特幣區(qū)塊鏈系統(tǒng)中的采用的是Merkle二叉樹,它的作用主要是快速歸納和校驗(yàn)區(qū)塊數(shù)據(jù)的完整性,它會(huì)將區(qū)塊鏈中的數(shù)據(jù)分組進(jìn)行哈希運(yùn)算,向上不斷遞歸運(yùn)算產(chǎn)生新的哈希節(jié)點(diǎn),最終只剩下一個(gè)Merkle根存入?yún)^(qū)塊頭中,每個(gè)哈希節(jié)點(diǎn)總是包含兩個(gè)相鄰的數(shù)據(jù)塊或其哈希值。

在比特幣系統(tǒng)中使用Merkle樹有諸多優(yōu)點(diǎn):首先是極大地提高了區(qū)塊鏈的運(yùn)行效率和可擴(kuò)展性,使得區(qū)塊頭只需包含根哈希值而不必封裝所有底層數(shù)據(jù),這使得哈希運(yùn)算可以高效地運(yùn)行在智能手機(jī)甚至物聯(lián)網(wǎng)設(shè)備上;其次是Merkle樹可支持“簡(jiǎn)化支付驗(yàn)證協(xié)議”(SPV),即在不運(yùn)行完整區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)的情況下,也能夠?qū)灰讛?shù)據(jù)進(jìn)行檢驗(yàn)。所以,在區(qū)塊鏈中使用Merkle樹這種數(shù)據(jù)結(jié)構(gòu)是非常具有意義的。本書后面的章節(jié)將會(huì)對(duì)Merkle樹做詳細(xì)介紹。

9.雙重支付

雙重支付問題又稱為“雙花”問題,即利用貨幣的數(shù)字特性用“同一筆錢”完成兩次或者多次支付。在傳統(tǒng)的金融和貨幣體系中,由于金錢貨幣是物理實(shí)體,具有客觀唯一存在的屬性,所以可以避免雙重支付的情況。但在其他的電子貨幣系統(tǒng)中,則需要可信的第三方管理機(jī)構(gòu)提供保證。

區(qū)塊鏈技術(shù)則在去中心化的系統(tǒng)中不借助任何第三方機(jī)構(gòu)而只通過分布式節(jié)點(diǎn)之間的相互驗(yàn)證和共識(shí)機(jī)制,有效地解決了雙重支付問題,在信息傳輸?shù)耐瑫r(shí)完成了價(jià)值轉(zhuǎn)移。區(qū)塊鏈技術(shù)通過區(qū)塊鏈接形成的時(shí)間戳技術(shù)加上驗(yàn)證比特幣是否滿足UTXO(未花費(fèi)交易)和數(shù)字簽名,有效避免了雙重支付的問題。如果有人用同一筆UTXO構(gòu)造了兩筆付給不同交易方的交易,則比特幣客戶端只會(huì)轉(zhuǎn)發(fā)最先被偵聽到的那個(gè)。礦工會(huì)選擇將那筆交易包入未來區(qū)塊,當(dāng)其中一筆交易所在的區(qū)塊后有5個(gè)鏈接的區(qū)塊,這筆交易已經(jīng)得到了6次確認(rèn)。在比特幣區(qū)塊鏈上,6次確認(rèn)后可以基本上保證比特幣不被雙花。

10.P2P網(wǎng)絡(luò)

P2P網(wǎng)絡(luò)(peer-to-peer network,對(duì)等網(wǎng)絡(luò))是一種在對(duì)等者(peer)之間分配任務(wù)和工作負(fù)載的分布式應(yīng)用架構(gòu),是對(duì)等計(jì)算模型在應(yīng)用層形成的一種組網(wǎng)或網(wǎng)絡(luò)形式。因此,從字面上,P2P可以理解為對(duì)等計(jì)算或?qū)Φ染W(wǎng)絡(luò),P2P網(wǎng)絡(luò)示意圖如圖2-5所示。國(guó)內(nèi)的迅雷軟件采用的就是P2P技術(shù)。

區(qū)塊鏈系統(tǒng)是建立在IP通信協(xié)議和分布式網(wǎng)絡(luò)的基礎(chǔ)上的,它不依靠傳統(tǒng)的電路交換,而是建立于網(wǎng)絡(luò)通信之上,完全通過互聯(lián)網(wǎng)去交換信息。網(wǎng)絡(luò)中所有的節(jié)點(diǎn)具有同等的地位,不存在任何特殊化的中心節(jié)點(diǎn)和層級(jí)結(jié)構(gòu),每個(gè)節(jié)點(diǎn)均會(huì)承擔(dān)網(wǎng)絡(luò)路由、驗(yàn)證數(shù)據(jù)區(qū)塊等功能。網(wǎng)絡(luò)的節(jié)點(diǎn)根據(jù)存儲(chǔ)數(shù)據(jù)量的不同可以分為全節(jié)點(diǎn)和輕量級(jí)節(jié)點(diǎn),全節(jié)點(diǎn)存儲(chǔ)了從創(chuàng)世區(qū)塊以來的所有區(qū)塊鏈數(shù)據(jù)(比特幣網(wǎng)絡(luò)現(xiàn)在大約有幾十GB,且還在不斷增長(zhǎng)中)。

全節(jié)點(diǎn)的優(yōu)點(diǎn)是進(jìn)行數(shù)據(jù)校驗(yàn)時(shí)不需要依靠別的節(jié)點(diǎn),僅依靠自身就可以完成校驗(yàn)更新等操作,缺點(diǎn)是硬件成本較高。輕量級(jí)節(jié)點(diǎn)只需要存儲(chǔ)部分?jǐn)?shù)據(jù)信息,當(dāng)需要?jiǎng)e的數(shù)據(jù)時(shí)可以通過簡(jiǎn)易支付驗(yàn)證方式(Simplif?ied Payment Verif?ication,SPV)向鄰近節(jié)點(diǎn)請(qǐng)求所需數(shù)據(jù)來完成驗(yàn)證更新。

11.加密算法

除了哈希算法以外,比特幣中還存在一種為交易加密的非對(duì)稱加密算法(橢圓曲線加密算法)。非對(duì)稱加密算法指的就是存在一對(duì)數(shù)學(xué)相關(guān)的密鑰,使用其中一個(gè)密鑰進(jìn)行加密的數(shù)據(jù)信息,只有使用另一個(gè)密鑰才能對(duì)該信息進(jìn)行解密。這對(duì)密鑰中,對(duì)外公開的密鑰叫作公鑰,不公開的密鑰就叫作私鑰。打個(gè)比方來說,公鑰就像銀行的賬戶,私鑰就像是該賬戶的密碼或者賬戶所有者的簽名。

區(qū)塊鏈之上的有效交易有一個(gè)用于交易發(fā)起方私鑰簽名有效的數(shù)字簽名,而該交易的簽名可以通過使用交易發(fā)起方的公鑰進(jìn)行驗(yàn)證。公鑰可以通過算法從私鑰中計(jì)算得出,但私鑰卻不能從公鑰中推出。比特幣系統(tǒng)中使用的就是一種非常典型的非對(duì)稱加密算法——橢圓曲線加密算法(ECC)。

比特幣系統(tǒng)一般從操作系統(tǒng)底層的一個(gè)密碼學(xué)安全的隨機(jī)源中取出一個(gè)256位隨機(jī)數(shù)作為私鑰,私鑰總數(shù)為2256個(gè),所以很難通過遍歷所有可能的私鑰得出與公鑰的對(duì)應(yīng)的私鑰。用戶使用的私鑰還會(huì)通過SHA256和Base58轉(zhuǎn)換成易書寫和識(shí)別的50位長(zhǎng)度的私鑰,公鑰則首先由私鑰和Secp256k1橢圓曲線算法生成65字節(jié)長(zhǎng)度的隨機(jī)數(shù)。

一般情況下,比特幣錢包的地址也由公鑰所生成,其生成過程為首先將公鑰進(jìn)行SHA256和RIPEMD160雙哈希運(yùn)算,并生成20字節(jié)長(zhǎng)度的摘要結(jié)果(即Hash160結(jié)果),這個(gè)將作為比特幣地址的主體(body)信息,再在前面加上版本前綴0x00,在后面添加4個(gè)字節(jié)的地址校驗(yàn)碼。地址校驗(yàn)碼通過對(duì)摘要結(jié)果進(jìn)行兩次SHA256運(yùn)算,取哈希值的前4位產(chǎn)生。最后通過Base58處理把連在一起的版本前綴、主體信息和校驗(yàn)碼轉(zhuǎn)換成可以容易讓人識(shí)別的比特幣字符地址。

12.數(shù)字簽名

數(shù)字簽名就是在信息后面加上另一段內(nèi)容,作為發(fā)送者的證明并且證明信息沒有被篡改。一般是發(fā)送者將信息用哈希算法處理得出一個(gè)哈希值,然后用私鑰對(duì)該哈希值進(jìn)行加密,得出一個(gè)簽名。然后發(fā)送者再將信息和簽名一起發(fā)送給接收者。接收者使用發(fā)送者的公鑰對(duì)簽名進(jìn)行解密,還原出哈希值,再通過哈希算法來驗(yàn)證信息的哈希值和解密簽名還原出來的哈希值是否一致,從而可以鑒定信息是否來自發(fā)送者或驗(yàn)證信息是否被篡改。

13.比特幣的隱私模型

傳統(tǒng)隱私模型為交易的參與者提供了一定程度的隱私保護(hù),第三方不會(huì)交出交易者的個(gè)人身份信息,公眾所得知的只是某個(gè)人將一定數(shù)量的貨幣發(fā)給了另外一個(gè)人,但是難以將該交易與某個(gè)特定身份的人聯(lián)系起來,公眾無法知道這人到底是誰。這同股票交易所發(fā)布的信息是類似的,每一手股票買賣發(fā)生的時(shí)間、交易量是記錄在案且可供查詢的,但是交易雙方的身份信息卻不予透露。但實(shí)際上,交易雙方的個(gè)人信息是存放在第三方機(jī)構(gòu),所以一定程度上交易參與者的隱私信息還是會(huì)有泄露的風(fēng)險(xiǎn)。

在比特幣的隱私模型中,所有的交易不需要第三方的操控,也不需要提供任何身份信息,只需要提供比特幣的地址就可以跟任何人完成一次準(zhǔn)匿名的交易。在一定程度上,交易不可追溯到交易者本身,因此比特幣上的交易可以在一定程度上擺脫監(jiān)管。但通過對(duì)區(qū)塊鏈上交易的地址以及交易額做關(guān)聯(lián)分析,也可以獲得有關(guān)交易者的蛛絲馬跡。因此,比特幣的交易還不是純粹的匿名交易機(jī)制,而是準(zhǔn)匿名(pseudo-anonymous)交易機(jī)制。

框架與特點(diǎn)

1.框架簡(jiǎn)介

目前大多數(shù)區(qū)塊鏈技術(shù)的應(yīng)用與比特幣類似,大部分是在比特幣架構(gòu)基礎(chǔ)上的擴(kuò)展。目前,區(qū)塊鏈技術(shù)在金融行業(yè)得到廣泛關(guān)注,被認(rèn)為可以用來從最底層重構(gòu)傳統(tǒng)金融業(yè)現(xiàn)有的IT基礎(chǔ)架構(gòu)。我們將區(qū)塊鏈的基礎(chǔ)架構(gòu)分為三層來進(jìn)行講解。

首先,在網(wǎng)絡(luò)層之上,區(qū)塊鏈?zhǔn)墙⒃贗P通信協(xié)議和對(duì)等網(wǎng)絡(luò)的基礎(chǔ)上的一個(gè)分布式系統(tǒng),和傳統(tǒng)帶中心的分布式系統(tǒng)不一樣,它不依靠中心化的服務(wù)器節(jié)點(diǎn)來轉(zhuǎn)發(fā)消息,而是每一個(gè)節(jié)點(diǎn)都參與消息的轉(zhuǎn)發(fā)。因此P2P網(wǎng)絡(luò)比傳統(tǒng)網(wǎng)絡(luò)具有更高的安全性,任何一個(gè)節(jié)點(diǎn)被攻擊都不會(huì)影響整個(gè)網(wǎng)絡(luò),所有的節(jié)點(diǎn)都保存著整個(gè)系統(tǒng)的狀態(tài)信息。

其次,在數(shù)據(jù)層面上,區(qū)塊鏈就是一個(gè)只可追加、不可更改的分布式數(shù)據(jù)庫系統(tǒng),是一個(gè)分布式賬本。如果是公開的區(qū)塊鏈,也就是公有鏈,那么這個(gè)賬本可以被任何人在任何地方進(jìn)行查詢,完全公開透明。在區(qū)塊鏈網(wǎng)絡(luò)中,節(jié)點(diǎn)通過使用共識(shí)算法來維持網(wǎng)絡(luò)中賬本數(shù)據(jù)庫的一致性。

同時(shí)采用密碼學(xué)的簽名和哈希算法來確保這個(gè)數(shù)據(jù)庫不可篡改,不能作偽,并且可追溯。例如,在比特幣系統(tǒng)中,只有在控制了51%的網(wǎng)絡(luò)算力時(shí)才有可能對(duì)區(qū)塊鏈進(jìn)行重組以修改賬本信息。由于比特幣系統(tǒng)的設(shè)計(jì)者中本聰在系統(tǒng)設(shè)計(jì)中巧妙地加入了帶有經(jīng)濟(jì)激勵(lì)的挖礦工作量證明(PoW)機(jī)制,使得即使擁有網(wǎng)絡(luò)51%以上算力的人也不會(huì)損害其自身利益而發(fā)起對(duì)網(wǎng)絡(luò)的攻擊。因此,比特幣系統(tǒng)自上線7年多來一直持續(xù)不斷地正常運(yùn)行,沒有出現(xiàn)過因?yàn)楸忍貛畔到y(tǒng)本身缺陷而造成的安全故障。

再次,在應(yīng)用層面,我們可以用區(qū)塊鏈代替?zhèn)鹘y(tǒng)的登記、清算系統(tǒng)。2016年6月22日,波士頓咨詢公司指出,到2030年,全球支付業(yè)務(wù)收入預(yù)計(jì)將會(huì)達(dá)到8070億美元。基于區(qū)塊鏈技術(shù)的匯兌和支付屬于區(qū)塊鏈的1.0應(yīng)用版,其安全性、交易時(shí)間、成本都會(huì)對(duì)傳統(tǒng)支付業(yè)務(wù)進(jìn)行顛覆式改進(jìn)。花旗銀行也明確指出,到2020年,如果各大金融機(jī)構(gòu)都使用區(qū)塊鏈技術(shù),每年能夠節(jié)省超過200億美元的成本。

國(guó)信證券分析報(bào)告指出,通過區(qū)塊鏈的點(diǎn)對(duì)點(diǎn)分布式的時(shí)間戳服務(wù)器來生成依照時(shí)間前后排列并加以記錄的電子交易證明,可以解決雙重支付問題,從而帶來結(jié)算成本趨零的可能性。根據(jù)德國(guó)銀行的一份引用波士頓咨詢的研究報(bào)告,歐洲銀行的IT成本支出平均占據(jù)銀行整體運(yùn)行成本的16%[5]。一個(gè)重要原因就是傳統(tǒng)銀行在賬本的維護(hù)、支付交易的結(jié)算和清算方面的架構(gòu)過于復(fù)雜,維護(hù)成本過高。

在應(yīng)用方面,區(qū)塊鏈平臺(tái)能夠提供編程環(huán)境讓用戶編寫智能合約。通過智能合約,可以把業(yè)務(wù)規(guī)則轉(zhuǎn)化成在區(qū)塊鏈平臺(tái)自動(dòng)執(zhí)行的合約,該合約的執(zhí)行不依賴可信任的第三方,也不受人為的干預(yù)。

理論上只要一旦部署,一旦符合合約執(zhí)行的條件就會(huì)自動(dòng)執(zhí)行。執(zhí)行結(jié)果也可以在區(qū)塊鏈上供公開檢查,提供了合約的公正性和透明性。因此,智能合約可以降低合約建立、執(zhí)行和仲裁中所涉及的中間機(jī)構(gòu)成本。區(qū)塊鏈的智能合約奠定了未來建立可編程貨幣、可編程金融,甚至是可編程社會(huì)的基礎(chǔ)。

2.架構(gòu)特點(diǎn)

區(qū)塊鏈具有去中心化、可靠數(shù)據(jù)庫、開源可編程、集體維護(hù)、安全可信、交易準(zhǔn)匿名性等特點(diǎn)。如果一個(gè)系統(tǒng)不具有以上特征,將不能被視為基于區(qū)塊鏈技術(shù)的應(yīng)用。

(1)去中心化

區(qū)塊鏈數(shù)據(jù)的存儲(chǔ)、傳輸、驗(yàn)證等過程均基于分布式的系統(tǒng)結(jié)構(gòu),整個(gè)網(wǎng)絡(luò)中不依賴一個(gè)沒有中心化的硬件或管理機(jī)構(gòu)。作為區(qū)塊鏈一種部署模式,公共鏈網(wǎng)絡(luò)中所有參與的節(jié)點(diǎn)都可以具有同等的權(quán)利和義務(wù)。

(2)可靠數(shù)據(jù)庫

區(qū)塊鏈系統(tǒng)的數(shù)據(jù)庫采用分布式存儲(chǔ),任一參與節(jié)點(diǎn)都可以擁有一份完整的數(shù)據(jù)庫拷貝。除非能控制系統(tǒng)中超過一半以上的算力,否則在節(jié)點(diǎn)上對(duì)數(shù)據(jù)庫的修改都將是無效的。

參與系統(tǒng)的節(jié)點(diǎn)越多,數(shù)據(jù)庫的安全性就越高。并且區(qū)塊鏈數(shù)據(jù)的存儲(chǔ)還帶有時(shí)間戳,從而為數(shù)據(jù)添加了時(shí)間維度,具有極高的可追溯性。

(3)開源可編程

區(qū)塊鏈系統(tǒng)通常是開源的,代碼高度透明公共鏈的數(shù)據(jù)和程序?qū)λ腥斯_,任何人都可以通過接口查詢系統(tǒng)中的數(shù)據(jù)。并且區(qū)塊鏈平臺(tái)還提供靈活的腳本代碼系統(tǒng),支持用戶創(chuàng)建高級(jí)的智能合約、貨幣和去中心化應(yīng)用。

例如,以太坊(Ethereum)平臺(tái)即提供了圖靈完備的腳本語言,供用戶來構(gòu)建任何可以精確定義的智能合約或交易類型。關(guān)于以太坊的更多內(nèi)容請(qǐng)參考2.2節(jié)。

(4)集體維護(hù)

系統(tǒng)中的數(shù)據(jù)塊由整個(gè)系統(tǒng)中所有具有記賬功能的節(jié)點(diǎn)來共同維護(hù),任一節(jié)點(diǎn)的損壞或失去都不會(huì)影響整個(gè)系統(tǒng)的運(yùn)作。

(5)安全可信

區(qū)塊鏈技術(shù)采用非對(duì)稱密碼學(xué)原理對(duì)交易進(jìn)行簽名,使得交易不能被偽造;同時(shí)利用哈希算法保證交易數(shù)據(jù)不能被輕易篡改,最后借助分布式系統(tǒng)各節(jié)點(diǎn)的工作量證明等共識(shí)算法形成強(qiáng)大的算力來抵御破壞者的攻擊,保證區(qū)塊鏈中的區(qū)塊以及區(qū)塊內(nèi)的交易數(shù)據(jù)不可篡改和不可偽造,因此具有極高的安全性。

(6)準(zhǔn)匿名性

區(qū)塊鏈系統(tǒng)采用與用戶公鑰掛鉤的地址來做用戶標(biāo)識(shí),不需要傳統(tǒng)的基于PKI(Public Key Infrastructure)的第三方認(rèn)證中心(Certif?icate Authority,CA)頒發(fā)數(shù)字證書來確認(rèn)身份。通過在全網(wǎng)節(jié)點(diǎn)運(yùn)行共識(shí)算法,建立網(wǎng)絡(luò)中誠實(shí)節(jié)點(diǎn)對(duì)全網(wǎng)狀態(tài)的共識(shí),間接地建立了節(jié)點(diǎn)間的信任。

用戶只需要公開地址,不需要公開真實(shí)身份,而且同一個(gè)用戶可以不斷變換地址。因此,在區(qū)塊鏈上的交易不和用戶真實(shí)身份掛鉤,只是和用戶的地址掛鉤,具有交易的準(zhǔn)匿名性。。

區(qū)塊鏈技術(shù)的核心優(yōu)勢(shì)是去中心化,能夠通過運(yùn)用哈希算法、數(shù)字簽名、時(shí)間戳、分布式共識(shí)和經(jīng)濟(jì)激勵(lì)等手段,在節(jié)點(diǎn)無需互相信任的分布式系統(tǒng)中建立信用,實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)交易和協(xié)作,從而為中心化機(jī)構(gòu)普遍存在的高成本、低效率和數(shù)據(jù)存儲(chǔ)不安全等問題提供了解決方案。

近年來,伴隨著國(guó)內(nèi)外研究機(jī)構(gòu)對(duì)區(qū)塊鏈技術(shù)的研究與應(yīng)用,區(qū)塊鏈的應(yīng)用前景受到各行各業(yè)的高度重視,被認(rèn)為是繼大型機(jī)、個(gè)人電腦、互聯(lián)網(wǎng)、移動(dòng)/社交網(wǎng)絡(luò)之后計(jì)算范式的第5次顛覆式創(chuàng)新,是人類信用進(jìn)化史上繼血親信用、貴金屬信用、央行紙幣信用之后的第4個(gè)里程碑。它被視為下一代云計(jì)算的雛形,有望徹底重塑人類社會(huì)活動(dòng)形態(tài),并實(shí)現(xiàn)從現(xiàn)在的信息互聯(lián)網(wǎng)到價(jià)值互聯(lián)網(wǎng)的轉(zhuǎn)變。

區(qū)塊鏈運(yùn)作的核心技術(shù)

1.區(qū)塊鏈的鏈接

顧名思義,區(qū)塊鏈即由一個(gè)個(gè)區(qū)塊組成的鏈。每個(gè)區(qū)塊分為區(qū)塊頭和區(qū)塊體(含交易數(shù)據(jù))兩個(gè)部分。區(qū)塊頭包括用來實(shí)現(xiàn)區(qū)塊鏈接的前一區(qū)塊的哈希(PrevHash)值(又稱散列值)和用于計(jì)算挖礦難度的隨機(jī)數(shù)(nonce)。前一區(qū)塊的哈希值實(shí)際是上一個(gè)區(qū)塊頭部的哈希值,而計(jì)算隨機(jī)數(shù)規(guī)則決定了哪個(gè)礦工可以獲得記錄區(qū)塊的權(quán)力。

2.共識(shí)機(jī)制

區(qū)塊鏈?zhǔn)前殡S比特幣誕生的,是比特幣的基礎(chǔ)技術(shù)架構(gòu)。可以將區(qū)塊鏈理解為一個(gè)基于互聯(lián)網(wǎng)的去中心化記賬系統(tǒng)。類似比特幣這樣的去中心化數(shù)字貨幣系統(tǒng),要求在沒有中心節(jié)點(diǎn)的情況下保證各個(gè)誠實(shí)節(jié)點(diǎn)記賬的一致性,就需要區(qū)塊鏈來完成。所以區(qū)塊鏈技術(shù)的核心是在沒有中心控制的情況下,在互相沒有信任基礎(chǔ)的個(gè)體之間就交易的合法性等達(dá)成共識(shí)的共識(shí)機(jī)制。

區(qū)塊鏈的共識(shí)機(jī)制目前主要有4類:PoW、PoS、DPoS、分布式一致性算法。

(1)PoW

PoW(工作量證明),也就是像比特幣的挖礦機(jī)制,礦工通過把網(wǎng)絡(luò)尚未記錄的現(xiàn)有交易打包到一個(gè)區(qū)塊,然后不斷遍歷嘗試來尋找一個(gè)隨機(jī)數(shù),使得新區(qū)塊加上隨機(jī)數(shù)的哈希值滿足一定的難度條件,例如前面10位是零。找到滿足條件的隨機(jī)數(shù),就相當(dāng)于確定了區(qū)塊鏈最新的一個(gè)區(qū)塊,也相當(dāng)于獲得了區(qū)塊鏈的本輪記賬權(quán)。

礦工把滿足挖礦難度條件的區(qū)塊在網(wǎng)絡(luò)中廣播出去,全網(wǎng)其他節(jié)點(diǎn)在驗(yàn)證該區(qū)塊滿足挖礦難度條件,同時(shí)區(qū)塊里的交易數(shù)據(jù)符合協(xié)議規(guī)范后,將各自把該區(qū)塊鏈接到自己版本的區(qū)塊鏈上,從而在全網(wǎng)形成對(duì)當(dāng)前網(wǎng)絡(luò)狀態(tài)的共識(shí)。

優(yōu)點(diǎn):完全去中心化,節(jié)點(diǎn)自由進(jìn)出,避免了建立和維護(hù)中心化信用機(jī)構(gòu)的成本。只要網(wǎng)絡(luò)破壞者的算力不超過網(wǎng)絡(luò)總算力的50%,網(wǎng)絡(luò)的交易狀態(tài)就能達(dá)成一致。

缺點(diǎn):目前比特幣挖礦造成大量的資源浪費(fèi);另外挖礦的激勵(lì)機(jī)制也造成礦池算力的高度集中,背離了當(dāng)初去中心化設(shè)計(jì)的初衷。更大的問題是PoW機(jī)制的共識(shí)達(dá)成的周期較長(zhǎng),每秒只能最多做7筆交易,不適合商業(yè)應(yīng)用。

(2)PoS

PoS權(quán)益證明,要求節(jié)點(diǎn)提供擁有一定數(shù)量的代幣證明來獲取競(jìng)爭(zhēng)區(qū)塊鏈記賬權(quán)的一種分布式共識(shí)機(jī)制。如果單純依靠代幣余額來決定記賬者必然使得富有者勝出,導(dǎo)致記賬權(quán)的中心化,降低共識(shí)的公正性,因此不同的PoS機(jī)制在權(quán)益證明的基礎(chǔ)上,采用不同方式來增加記賬權(quán)的隨機(jī)性來避免中心化。

例如點(diǎn)點(diǎn)幣(PeerCoin)PoS機(jī)制中,擁有最多鏈齡長(zhǎng)的比特幣獲得記賬權(quán)的幾率就越大。NXT和Blackcoin則采用一個(gè)公式來預(yù)測(cè)下一個(gè)記賬的節(jié)點(diǎn)。擁有多的代幣被選為記賬節(jié)點(diǎn)的概率就會(huì)大。未來以太坊也會(huì)從目前的PoW機(jī)制轉(zhuǎn)換到PoS機(jī)制,從目前看到的資料看,以太坊的PoS機(jī)制將采用節(jié)點(diǎn)下賭注來賭下一個(gè)區(qū)塊,賭中者有額外以太幣獎(jiǎng),賭不中者會(huì)被扣以太幣的方式來達(dá)成下一區(qū)塊的共識(shí)。

優(yōu)點(diǎn):在一定程度上縮短了共識(shí)達(dá)成的時(shí)間,降低了PoW機(jī)制的資源浪費(fèi)。

缺點(diǎn):破壞者對(duì)網(wǎng)絡(luò)攻擊的成本低,網(wǎng)絡(luò)的安全性有待驗(yàn)證。另外擁有代幣數(shù)量大的節(jié)點(diǎn)獲得記賬權(quán)的幾率更大,會(huì)使得網(wǎng)絡(luò)的共識(shí)受少數(shù)富裕賬戶支配,從而失去公正性。

(3)DPoS

DPoS(股份授權(quán)證明)機(jī)制,類似于董事會(huì)投票。比特股(bitshares)采用的PoS機(jī)制是持股者投票選出一定數(shù)量的見證人,每個(gè)見證人按序有兩秒的權(quán)限時(shí)間生成區(qū)塊,若見證人在給定的時(shí)間片不能生成區(qū)塊,區(qū)塊生成權(quán)限交給下一個(gè)時(shí)間片對(duì)應(yīng)的見證人。持股人可以隨時(shí)通過投票更換這些見證人。DPoS的這種設(shè)計(jì)使得區(qū)塊的生成更為快速,也更加節(jié)能。

優(yōu)點(diǎn):大幅縮小參與驗(yàn)證和記賬節(jié)點(diǎn)的數(shù)量,可以達(dá)到秒級(jí)的共識(shí)驗(yàn)證。

缺點(diǎn):選舉固定數(shù)量的見證人作為記賬候選人有可能不適合于完全去中心化的場(chǎng)景。另外在網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)少的場(chǎng)景,選舉的見證人的代表性也不強(qiáng)。

(4)分布式一致性算法

分布式一致性算法是基于傳統(tǒng)的分布式一致性技術(shù)。其中有分為解決拜占庭將軍問題的拜占庭容錯(cuò)算法,如PBFT。另外解決非拜占庭問題的分布式一致性算法(Pasox、Raft),詳細(xì)見本書第5章的共識(shí)算法。該類算法目前是聯(lián)盟鏈和私有鏈鏈場(chǎng)景中常用的共識(shí)機(jī)制。

優(yōu)點(diǎn):實(shí)現(xiàn)秒級(jí)的快速共識(shí)機(jī)制,保證一致性。

缺點(diǎn):去中心化程度不如公有鏈上的共識(shí)機(jī)制;更適合多方參與的多中心商業(yè)模式。

3.解鎖腳本

腳本是區(qū)塊鏈上實(shí)現(xiàn)自動(dòng)驗(yàn)證、自動(dòng)執(zhí)行合約的重要技術(shù)。每一筆交易的每一項(xiàng)輸出嚴(yán)格意義上并不是指向一個(gè)地址,而是指向一個(gè)腳本。腳本類似一套規(guī)則,它約束著接收方怎樣才能花掉這個(gè)輸出上鎖定的資產(chǎn)。

交易的合法性驗(yàn)證也依賴于腳本。目前它依賴于兩類腳本:鎖定腳本與解鎖腳本。鎖定腳本是在輸出交易上加上的條件,通過一段腳本語言來實(shí)現(xiàn),位于交易的輸出。解鎖腳本與鎖定腳本相對(duì)應(yīng),只有滿足鎖定腳本要求的條件,才能花掉這個(gè)腳本上對(duì)應(yīng)的資產(chǎn),位于交易的輸入。通過腳本語言可以表達(dá)很多靈活的條件。解釋腳本是通過類似我們編程領(lǐng)域里的“虛擬機(jī)”,它分布式運(yùn)行在區(qū)塊鏈網(wǎng)絡(luò)里的每一個(gè)節(jié)點(diǎn)。

比特幣的腳本目前常用的主要分為兩種,一種是普通的P2PKH(Pay-to-Public-Key-Hash),即支付給公鑰的哈希地址,接收方只需要使用地址對(duì)應(yīng)的私鑰對(duì)該輸出進(jìn)行簽名,即可花掉該輸出。另一種是P2SH(Pay-to-Script-Hash),即支付腳本的哈希。以多重簽名來舉例,它要求該輸出要有N把私鑰中的M把私鑰(M≤N)同時(shí)簽名才能花掉該資產(chǎn),它類似于現(xiàn)實(shí)生活中需要多把鑰匙才能同時(shí)打開的保險(xiǎn)柜,或是多人簽名才能使條約生效一樣,只是它是自動(dòng)執(zhí)行。

比如在比特幣中,P2PKH的腳本規(guī)則如下:

Pubkey script: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

Signature script:

P2SH的腳本規(guī)則如下:

Pubkey script: OP_HASH160 OP_EQUAL

Signature script: [sig] [sig...]

在上述的兩種腳本規(guī)則里,Pubkey script代表鎖定腳本,Signature script代表解鎖腳本。OP_開頭的單詞是相關(guān)的腳本命令,也是“虛擬機(jī)”所能解析的指令。這些命令規(guī)則根據(jù)Pubkey script的不同來進(jìn)行劃分,它也決定解鎖腳本的規(guī)則。

比特幣中的腳本機(jī)制相對(duì)簡(jiǎn)單,只是一個(gè)基于堆棧式的、解釋相關(guān)OP指令的引擎,能夠解析的腳本規(guī)則并不是太多,不能實(shí)現(xiàn)很復(fù)雜的邏輯。但它為區(qū)塊鏈可編程提供了一個(gè)原型,后續(xù)一些可編程區(qū)塊鏈項(xiàng)目其實(shí)是基于腳本的原理發(fā)展起來的,比如以太坊就是深入增強(qiáng)了腳本機(jī)制,腳本機(jī)制里不再單單是簡(jiǎn)單的OP指令,而是支持腳本的一套圖靈完備語言,該腳本語言可以通過“虛擬機(jī)”去執(zhí)行。以太坊實(shí)現(xiàn)了一個(gè)支持圖靈完備腳本語言的區(qū)塊鏈平臺(tái)。

腳本的機(jī)制對(duì)于區(qū)塊鏈來說非常重要,它類似于區(qū)塊鏈技術(shù)提供的一個(gè)擴(kuò)展接口,任何人都可以基于這個(gè)接口開發(fā)基于區(qū)塊鏈技術(shù)的應(yīng)用,比如智能合約的功能。腳本機(jī)制也讓區(qū)塊鏈技術(shù)作為一項(xiàng)底層協(xié)議成為可能。未來很多基于區(qū)塊鏈的顛覆性應(yīng)用,都有可能通過區(qū)塊鏈的腳本語言來完成。

4.交易規(guī)則

區(qū)塊鏈的交易就是構(gòu)成區(qū)塊的基本單位,也是區(qū)塊鏈負(fù)責(zé)記錄的實(shí)際有效內(nèi)容。一個(gè)區(qū)塊鏈交易可以是一次轉(zhuǎn)賬,也可以是智能合約的部署等其他事務(wù)。

就比特幣而言,交易即指一次支付轉(zhuǎn)賬。其交易規(guī)則如下:

1)交易的輸入和輸出不能為空。

2)對(duì)交易的每個(gè)輸入,如果其對(duì)應(yīng)的UTXO輸出能在當(dāng)前交易池中找到,則拒絕該交易。因?yàn)楫?dāng)前交易池是未被記錄在區(qū)塊鏈中的交易,而交易的每個(gè)輸入,應(yīng)該來自確認(rèn)的UTXO。如果在當(dāng)前交易池中找到,那就是雙花交易。

3)交易中的每個(gè)輸入,其對(duì)應(yīng)的輸出必須是UTXO。

4)每個(gè)輸入的解鎖腳本(unlocking script)必須和相應(yīng)輸出的鎖定腳本(locking script)共同驗(yàn)證交易的合規(guī)性。

對(duì)于以太坊來說,交易還可能是智能合約的部署。交易規(guī)則就確定了符合一定語法規(guī)則的合約才能被部署在區(qū)塊鏈上。

5.交易優(yōu)先級(jí)

區(qū)塊鏈交易的優(yōu)先級(jí)由區(qū)塊鏈協(xié)議規(guī)則決定。對(duì)于比特幣而言,交易被區(qū)塊包含的優(yōu)先次序由交易廣播到網(wǎng)絡(luò)上的時(shí)間和交易額的大小決定。隨著交易廣播到網(wǎng)絡(luò)上的時(shí)間的增長(zhǎng),交易的鏈齡增加,交易的優(yōu)先級(jí)就被提高,最終會(huì)被區(qū)塊包含。對(duì)于以太坊而言,交易的優(yōu)先級(jí)還與交易的發(fā)布者愿意支付的交易費(fèi)用有關(guān),發(fā)布者愿意支付的交易費(fèi)用越高,交易被包含進(jìn)區(qū)塊的優(yōu)先級(jí)就越高。

6.Merkle證明

Merkle證明的原始應(yīng)用是比特幣系統(tǒng)(Bitcoin),它是由中本聰(Satoshi Nakamoto)在2009年描述并且創(chuàng)造的。比特幣區(qū)塊鏈?zhǔn)褂昧薓erkle證明,為的是將交易存儲(chǔ)在每一個(gè)區(qū)塊中。使得交易不能被篡改,同時(shí)也容易驗(yàn)證交易是否包含在一個(gè)特定區(qū)塊中,Merkle樹說明詳見4.2節(jié)。

Merkle樹的一個(gè)重要使用場(chǎng)景就是快速支付驗(yàn)證,也就是中本聰描述的“簡(jiǎn)化支付驗(yàn)證”(SPV)的概念:輕量級(jí)節(jié)點(diǎn)(light client)不用下載每一筆交易以及每一個(gè)區(qū)塊,可以僅下載鏈的區(qū)塊頭,每個(gè)區(qū)塊中僅包含下述5項(xiàng)內(nèi)容,數(shù)據(jù)塊大小為80字節(jié)。

(1)上一區(qū)塊頭的哈希值

(2)時(shí)間戳

(3)挖礦難度值

(4)工作量證明隨機(jī)數(shù)(nonce)

(5)包含該區(qū)塊交易的Merkle樹的根哈希

如果一個(gè)輕客戶端希望確定一筆交易的狀態(tài),它可以簡(jiǎn)單地要求一個(gè)Merkle證明,顯示出一個(gè)在Merkle樹特定的交易,其根是在主鏈(main chain,非分叉鏈)上的區(qū)塊頭。

Merkle證明可以讓區(qū)塊鏈得到更廣闊的應(yīng)用,但比特幣的輕客戶有其局限性。雖然可以證明包含的交易,但無法證明任何當(dāng)前的狀態(tài)(例如:數(shù)字資產(chǎn)的持有,名稱注冊(cè),金融合約的狀態(tài)等)。一筆交易影響的確切性質(zhì)(precise nature)可以取決于此前的幾筆交易,而這些交易本身則依賴于更為前面的交易,所以最終你需要驗(yàn)證整個(gè)鏈上的每一筆交易。為了解決這個(gè)問題,以太坊進(jìn)行了更進(jìn)一步的創(chuàng)新。

以太坊的每一個(gè)區(qū)塊頭中并非只包含一棵Merkle樹,而是包含了3棵Merkle樹),分別對(duì)應(yīng)了以下3種對(duì)象:

(1)交易(Transactions)

(2)收據(jù)(Receipts,基本上,它是展示每一筆交易影響的數(shù)據(jù)條)

(3)狀態(tài)(State)

這三棵樹允許輕客戶端輕松地進(jìn)行并核實(shí)以下類型的查詢答案:

(1)這筆交易被包含在特定的區(qū)塊中了嗎?

(2)告訴我這個(gè)地址在過去30天中,發(fā)出X類型事件的所有實(shí)例(例如,一個(gè)眾籌合約完成了它的目標(biāo))。

(3)目前我的賬戶余額是多少?

(4)這個(gè)賬戶是否存在?

(5)假裝在這個(gè)合約中運(yùn)行這筆交易,它的輸出會(huì)是什么?

第一種是由交易樹(transaction tree)來處理的;第3和第4種則是由狀態(tài)樹(state tree)負(fù)責(zé)處理,第2種則由收據(jù)樹(receipt tree)處理。計(jì)算前4個(gè)查詢?nèi)蝿?wù)是相當(dāng)簡(jiǎn)單的。在服務(wù)器簡(jiǎn)單地找到對(duì)象,獲取梅克爾分支,并通過分支來回復(fù)輕客戶端。第5種查詢?nèi)蝿?wù)同樣也是由狀態(tài)樹處理。

7.RLP

RLP(Recursive Length Pref?ix,遞歸長(zhǎng)度前綴編碼)是Ethereum中對(duì)象序列化的一個(gè)主要編碼方式,其目的是對(duì)任意嵌套的二進(jìn)制數(shù)據(jù)的序列進(jìn)行編碼。

以太坊中的所有數(shù)據(jù)都以“遞歸長(zhǎng)度前綴編碼”(Recursive Length Pref?ix encoding,RLP)形式存儲(chǔ),這種編碼格式將任意長(zhǎng)度和維度的字符串構(gòu)成的數(shù)組串連接成字符串。例如,['dog', 'cat']被串接(以字節(jié)數(shù)組格式)為[130,67,100,111,103,67,99,97,116];其基本的思想是把數(shù)據(jù)類型和長(zhǎng)度編碼成一個(gè)單獨(dú)的字節(jié)放在實(shí)際數(shù)據(jù)的前面(例如‘dog’的字節(jié)數(shù)組編碼為[100,111,103],于是串接后就成了[67,100,111,103])。

注意RLP編碼正如其名字表示的一樣,是遞歸的;當(dāng)RLP編碼一個(gè)數(shù)組時(shí),實(shí)際上是在對(duì)每一個(gè)元素的RLP編碼級(jí)聯(lián)成的字符串編碼。需要進(jìn)一步提請(qǐng)注意的是,以太坊中所有數(shù)據(jù)都是整數(shù);所以,如果有任何的以一個(gè)或多個(gè)0字節(jié)開頭的哈希或者地址,這些0字節(jié)應(yīng)該在計(jì)算出現(xiàn)問題的時(shí)候去除。以太坊中沒有串接數(shù)據(jù)結(jié)構(gòu)包含任何以0開頭的數(shù)值。整數(shù)以大端基礎(chǔ)(Big Endian)256格式存儲(chǔ)(例如32767字節(jié)數(shù)組格式為[127,255])。

區(qū)塊鏈交易流程

以比特幣的交易為例,區(qū)塊鏈的交易并不是通常意義上的一手交錢一手交貨的交易,而是轉(zhuǎn)賬。如果每一筆轉(zhuǎn)賬都需要構(gòu)造一筆交易數(shù)據(jù)會(huì)比較笨拙,為了使得價(jià)值易于組合與分割,比特幣的交易被設(shè)計(jì)為可以納入多個(gè)輸入和輸出,即一筆交易可以轉(zhuǎn)賬給多個(gè)人。從生成到在網(wǎng)絡(luò)中傳播,再到通過工作量證明、整個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)驗(yàn)證,最終記錄到區(qū)塊鏈,就是區(qū)塊鏈交易的整個(gè)生命周期。

交易的生成。所有者A利用他的私鑰對(duì)前一次交易和下一位所有者B簽署一個(gè)數(shù)字簽名,并將這個(gè)簽名附加在這枚貨幣的末尾,制作成交易單。

交易的傳播。A將交易單廣播至全網(wǎng),每個(gè)節(jié)點(diǎn)都將收到的交易信息納入一個(gè)區(qū)塊中。

工作量證明。每個(gè)節(jié)點(diǎn)通過相當(dāng)于解一道數(shù)學(xué)題的工作量證明機(jī)制,從而獲得創(chuàng)建新區(qū)塊的權(quán)力,并爭(zhēng)取得到數(shù)字貨幣的獎(jiǎng)勵(lì)。

整個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)驗(yàn)證。當(dāng)一個(gè)節(jié)點(diǎn)找到解時(shí),它就向全網(wǎng)廣播該區(qū)塊記錄的所有蓋時(shí)間戳交易,并由全網(wǎng)其他節(jié)點(diǎn)核對(duì)。

記錄到區(qū)塊鏈。全網(wǎng)其他節(jié)點(diǎn)核對(duì)該區(qū)塊記賬的正確性,沒有錯(cuò)誤后他們將在該合法區(qū)塊之后競(jìng)爭(zhēng)下一個(gè)區(qū)塊,這樣就形成了一個(gè)合法記賬的區(qū)塊鏈。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • P2P網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    11414
  • 區(qū)塊鏈
    +關(guān)注

    關(guān)注

    112

    文章

    15565

    瀏覽量

    107985
  • 挖礦
    +關(guān)注

    關(guān)注

    6

    文章

    448

    瀏覽量

    16343

原文標(biāo)題:區(qū)塊鏈技術(shù)的發(fā)展歷史

文章出處:【微信號(hào):gh_ecbcc3b6eabf,微信公眾號(hào):人工智能和機(jī)器人研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    虛擬現(xiàn)實(shí)正一步步向我們走來

    顯然,虛擬現(xiàn)實(shí)大發(fā)展的春天正在到來,虛擬現(xiàn)實(shí)正一步步走向消費(fèi)者。那么,虛擬現(xiàn)實(shí)究竟涉及哪些重點(diǎn)技術(shù)領(lǐng)域?又將對(duì)整個(gè)產(chǎn)業(yè)帶來怎樣的影響?未來的“抓手”又有哪些?
    發(fā)表于 10-26 16:38 ?963次閱讀

    【迅為電子】一步步教你完成iTOP-RK3568 EDP屏幕適配

    【迅為電子】一步步教你完成iTOP-RK3568 EDP屏幕適配
    的頭像 發(fā)表于 04-23 15:08 ?860次閱讀
    【迅為電子】<b class='flag-5'>一步步</b>教你完成iTOP-RK3568 EDP屏幕適配

    外國(guó)牛人教你一步步快速打造首臺(tái)機(jī)器人(超詳細(xì))

    外國(guó)牛人教你一步步快速打造首臺(tái)機(jī)器人(超詳細(xì))
    發(fā)表于 08-15 19:30

    一步步寫嵌入式操作系統(tǒng)—ARM編程的方法與實(shí)踐ch02

    一步步寫嵌入式操作系統(tǒng)—ARM編程的方法與實(shí)踐ch02
    發(fā)表于 08-20 20:54

    CC2530一步步演示程序燒寫

    CC2530一步步演示程序燒寫第一步——先安裝IAR開發(fā)環(huán)境第二歩——安裝CC2530燒寫工具第三歩——CC2530串口配置軟件使用具體完整步驟看下面文檔
    發(fā)表于 03-03 14:33

    一步步建立_STM32_UCOS_模板

    一步步建立_STM32_UCOS_模板
    發(fā)表于 09-29 11:46

    菜鳥一步步入門SAM4S-XPLAINED--IAR開發(fā)環(huán)境

    菜鳥一步步入門SAM4S-XPLAINED--IAR開發(fā)環(huán)境
    發(fā)表于 01-25 10:55

    一步步進(jìn)行調(diào)試GPRS模塊

    背景:在不知道硬件是否正確情況下,一步步進(jìn)行調(diào)試,最終完成調(diào)試。以下是自己調(diào)試步驟。1、從gprs模塊TX ,RX 單獨(dú)焊接兩個(gè)線出來,通過上位機(jī)發(fā)送AT指令,是否能正常工作。
    發(fā)表于 01-25 07:33

    stm32是如何一步步實(shí)現(xiàn)設(shè)置地址匹配接收喚醒中斷功能的

    為什么要設(shè)置地址匹配接收喚醒中斷?stm32是如何一步步實(shí)現(xiàn)設(shè)置地址匹配接收喚醒中斷功能的?
    發(fā)表于 02-28 08:07

    一步步寫嵌入式操作系統(tǒng)

    一步步寫嵌入式操作系統(tǒng)_ARM編程的方法與實(shí)踐
    發(fā)表于 07-14 11:32 ?0次下載

    看電工技術(shù)是如何一步步淪為勤雜工的

    相信很多的電工老師傅也都聽說過這種話,那電工究竟是不是勤雜工?電工技術(shù)工種是如何一步步的淪為勤雜工的,我們今天就重點(diǎn)來看看。
    的頭像 發(fā)表于 02-18 15:47 ?4365次閱讀

    阿里巴巴是如何一步步走到今天這個(gè)規(guī)模的?

    不是利己的。 阿里巴巴從1999年成立到現(xiàn)在21年了,我們是如何一步步走到今天這個(gè)規(guī)模? 回望過去,我們發(fā)現(xiàn)阿里巴巴逐漸形成了套獨(dú)有的
    的頭像 發(fā)表于 01-13 09:13 ?2773次閱讀

    汽車是如何一步步學(xué)會(huì)自我升級(jí)的?

    不同的應(yīng)用方式對(duì)汽車的影響。到今天,發(fā)展車載OTA正成為越來越多車企的共識(shí),汽車行業(yè)掀起了新輪的技術(shù)浪潮。你知道汽車是如何一步步學(xué)會(huì)自我升級(jí)的嗎?評(píng)論區(qū)等你! 智能汽車的軟件功能會(huì)像
    的頭像 發(fā)表于 06-18 17:08 ?2207次閱讀

    一步步重新演繹汽車駕駛體驗(yàn)

    一步步重新演繹汽車駕駛體驗(yàn)
    發(fā)表于 11-04 09:52 ?0次下載
    <b class='flag-5'>一步步</b>重新演繹汽車駕駛體驗(yàn)

    基于一步步蒸餾(Distilling step-by-step)機(jī)制

    為優(yōu)化LLM為“小模型/少數(shù)據(jù)/好效果”,提供了種新思路:”一步步蒸餾”(Distilling step-by-step)
    的頭像 發(fā)表于 05-16 10:24 ?1624次閱讀
    基于<b class='flag-5'>一步步</b>蒸餾(Distilling step-by-step)機(jī)制
    主站蜘蛛池模板: 午夜国产| 夜夜操夜夜骑 | 天天干干 | 亚洲午夜精品久久久久久人妖 | 亚洲黄色色图 | 速度与激情10 | 色综合激情丁香七月色综合 | 成人网在线 | 天天摸天天碰成人免费视频 | 国产精品美女在线 | 免费一级欧美在线观看视频片 | 久久夜色精品国产飘飘 | 人人添 | 久久久精品久久久久久久久久久 | 色第一页 | 中文字幕天堂网 | 免费jlzzjlzz在线播放视频 | 亚洲欧美一区二区三区麻豆 | 五月婷婷六月综合 | 伊人伊成久久人综合网777 | 中文字幕成人乱码在线电影 | 国产精品青草久久久久福利99 | 久青草免费在线视频 | 国产精品久久久久久久免费大片 | a级黄色毛片三个搞一 | 两性色午夜视频免费老司机 | 女张腿男人桶羞羞漫画 | 亚洲 欧美 视频 | 一级毛片在线播放 | 深夜大尺度视频在线观看 | 久草毛片 | 午夜美女久久久久爽久久 | 国产成人啪精品午夜在线观看 | 日本免费黄色小视频 | 国产成人亚洲精品77 | 免费啪视频观在线视频在线 | 国产伦理一区二区三区 | 中文字幕天天干 | 久久福利青草精品资源 | aaa在线观看高清免费 | 黄色软件入口 |