在這篇文章中我們探一探區(qū)塊鏈技術(shù)背后的歷史,從上世紀80年代的拜占庭將軍問題到今天的復(fù)雜的智慧契約,區(qū)塊鏈?zhǔn)侨绾我徊讲阶叩浇裉斓哪兀?/p>
區(qū)塊鏈基礎(chǔ)
區(qū)塊鏈?zhǔn)请S著比特幣等數(shù)字加密貨幣的日益普及而逐漸興起的一種全新技術(shù),它提供了一種去中心化的、無需信任積累的信用建立范式,目前已經(jīng)引起金融行業(yè)、科研機構(gòu)、政府部門和投資公司的高度重視與廣泛關(guān)注。
區(qū)塊鏈技術(shù)通過建立一個共同維護且不可被篡改的數(shù)據(jù)庫來記錄過去的所有交易記錄和歷史數(shù)據(jù),所有的數(shù)據(jù)都是分布式存儲且公開透明的。在這種技術(shù)下,任何互不相識的網(wǎng)絡(luò)用戶都可以通過合約、點對點記賬、數(shù)字加密等方式達成信用共識,而不需要任何的中央信任機構(gòu)。在這種技術(shù)下,我們可以建立數(shù)字貨幣、數(shù)字資產(chǎn)、智能財產(chǎn)以及智能合約等。
通過上一章的介紹,相信大家已經(jīng)對區(qū)塊鏈和比特幣有了初步的認識,在本章中,我們將繼續(xù)探討區(qū)塊鏈的技術(shù)細節(jié)。
本章將首先介紹區(qū)塊鏈的相關(guān)基本概念及其運作原理,然后介紹區(qū)塊鏈上可以進行的操作和相關(guān)細節(jié),最后再討論區(qū)塊鏈上的交易流程和它的驗證過程。
區(qū)塊鏈技術(shù)
區(qū)塊鏈本質(zhì)上是一個對等網(wǎng)絡(luò)(peer-to-peer)的分布式賬本數(shù)據(jù)庫。比特幣的底層就采用了區(qū)塊鏈的技術(shù)架構(gòu)。
區(qū)塊鏈本身其實是一串鏈接的數(shù)據(jù)區(qū)塊,其鏈接指針是采用密碼學(xué)哈希算法對區(qū)塊頭進行處理所產(chǎn)生的區(qū)塊頭哈希值。每一個數(shù)據(jù)塊中記錄了一組采用哈希算法組成的樹狀交易狀態(tài)信息,這樣保證了每個區(qū)塊內(nèi)的交易數(shù)據(jù)不可篡改,區(qū)塊鏈里鏈接的區(qū)塊也不可篡改。
1.基本概念
一個完整的區(qū)塊鏈系統(tǒng)包含了很多技術(shù),其中有存儲數(shù)據(jù)的數(shù)據(jù)區(qū)塊及其之上的數(shù)字簽名、時間戳等技術(shù),有作為支撐的P2P網(wǎng)絡(luò)和維護系統(tǒng)的共識算法,有挖礦和工作量證明機制,有匿名交易機制和比特幣錢包,還有鏈齡、UTXO、Merkle樹、雙花等相關(guān)技術(shù)概念。
正是這些技術(shù),使得區(qū)塊鏈在無中心的網(wǎng)絡(luò)上形成了運轉(zhuǎn)不息的引擎,為區(qū)塊鏈的交易、驗證、鏈接等功能提供了源源不斷的動力。
2.數(shù)據(jù)區(qū)塊
比特幣的交易記錄會保存在數(shù)據(jù)區(qū)塊之中,比特幣系統(tǒng)中大約每10分鐘會產(chǎn)生一個區(qū)塊,每個數(shù)據(jù)區(qū)塊一般包含區(qū)塊頭(Header)和區(qū)塊體(Body)兩部分
區(qū)塊頭封裝了當(dāng)前的版本號(Version)、前一區(qū)塊地址(Prev-block)、時間戳(Timestamp)、隨機數(shù)(Nonce)、當(dāng)前區(qū)塊的目標(biāo)哈希值(Bits)、Merkle樹的根值(Merkle-root)等信息。
區(qū)塊體中則主要包含交易計數(shù)和交易詳情。交易詳情就是比特幣系統(tǒng)中的記賬本,每一筆交易都會被永久地記入數(shù)據(jù)區(qū)塊中,而且任何人都可以查詢。
區(qū)塊體中的Merkle樹將會對每一筆交易進行數(shù)字簽名,如此可以確保每一筆交易都不可偽造且沒有重復(fù)交易。所有的交易將通過Merkle樹的Hash過程產(chǎn)生一個唯一Merkle根值記入?yún)^(qū)塊頭。關(guān)于Merkle樹本章后面將詳細介紹。
如果你使用的是比特幣核心錢包(Bitcoin core),那么每當(dāng)你打開客戶端時,區(qū)塊數(shù)據(jù)文件都會被同步到電腦硬盤中,可以在blocks文件夾下找到它們。
我們還可以使用hexdump指令在終端上將數(shù)據(jù)區(qū)塊以十六進制的方式顯示出來。我們可以通過解析這些數(shù)據(jù)得出交易記錄、區(qū)塊大小等基本信息,因此我們說區(qū)塊鏈中的數(shù)據(jù)是完全公開透明的。我們使用指令hexdump -n 10000 -C blk00000.dat打開了編號為00000的創(chuàng)世區(qū)塊(比特幣中的第一塊區(qū)塊鏈)。
3.挖礦與分叉問題
區(qū)塊在挖礦過程中產(chǎn)生。所謂挖礦,實際上是窮舉隨機數(shù)算法,把上個區(qū)塊的哈希值加上10分鐘內(nèi)的全部交易單打包,再加上一個隨機數(shù),算出一個256位的字符串哈希值,輸入的隨機數(shù)Nonce使哈希值滿足一定條件就獲得這個區(qū)塊的交易記賬權(quán)。
新產(chǎn)生的區(qū)塊需要快速廣播出去,以便其他節(jié)點進行對其驗證,以防造假。每個區(qū)塊存著上一個區(qū)塊的哈希值,可以溯源到源頭,只有經(jīng)過驗證后才最終獲得區(qū)塊的交易記賬權(quán)。比特幣系統(tǒng)會讓挖礦的礦工競爭記賬權(quán)(在主鏈上鏈接區(qū)塊的權(quán)利),這個競爭機制就是工作量證明機制。
挖礦需要付出大量的能源和時間,誰付出的工作量多就能以更大的概率獲得一個區(qū)塊的記賬權(quán)。獲取記賬權(quán)的礦工會將當(dāng)前區(qū)塊鏈接到前一區(qū)塊,形成最新的區(qū)塊主鏈,該礦工也會得到系統(tǒng)獎勵的一定數(shù)量(2009~2013年每10鐘產(chǎn)生50個比特幣,2014年至今每10分鐘產(chǎn)生的比特幣將減半成25個)的比特幣。所有的區(qū)塊鏈接在一起形成了區(qū)塊鏈的主鏈,從創(chuàng)世區(qū)塊到當(dāng)前區(qū)塊,在區(qū)塊鏈之上的所有數(shù)據(jù)歷史都可以被追溯和查詢。
需要說明的是,可能會出現(xiàn)不同地區(qū)的兩個礦工同時“挖出”兩個新區(qū)塊加以鏈接的情況,這時主鏈上就會出現(xiàn)“分叉”。系統(tǒng)并不會馬上確認哪個區(qū)塊不合理,而是約定后續(xù)礦工總是選擇累計工作量證明最大的區(qū)塊鏈。因此,當(dāng)主鏈分叉以后,后續(xù)區(qū)塊的礦工將通過計算和比較,將其區(qū)塊鏈接到當(dāng)前累計工作量證明最大化的備選鏈上,形成更長的新主鏈,并自動拋棄分叉處的短鏈,從而解決分叉問題。
4.時間戳和不可篡改性
時間戳是指從格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現(xiàn)在的總秒數(shù),通常是一個字符序列,唯一地標(biāo)識某一刻的時間。在比特幣系統(tǒng)中,獲得記賬權(quán)的節(jié)點在鏈接區(qū)塊時需要在區(qū)塊頭中加蓋時間戳,用于記錄當(dāng)前區(qū)塊數(shù)據(jù)的寫入時間。
每一個隨后區(qū)塊中的時間戳都會對前一個時間戳進行增強,形成一個時間遞增的鏈條。時間戳技術(shù)本身并沒有多復(fù)雜,但在區(qū)塊鏈技術(shù)中應(yīng)用時間戳卻是一個重大創(chuàng)新,時間戳為未來基于區(qū)塊鏈的互聯(lián)網(wǎng)和大數(shù)據(jù)增加了一個時間維度,使得數(shù)據(jù)更容易追溯,重現(xiàn)歷史也成為可能。
同時,時間戳可以作為存在性證明(Proof of Existence)的重要參數(shù),它能夠證實特定數(shù)據(jù)必然在某特定時刻是的確存在的,這保證了區(qū)塊鏈數(shù)據(jù)庫是不可篡改和不可偽造的,這也為區(qū)塊鏈技術(shù)應(yīng)用于公證、知識產(chǎn)權(quán)注冊等時間敏感領(lǐng)域提供了可能。
5.分布式數(shù)據(jù)庫
比特幣系統(tǒng)中的區(qū)塊就像一個記賬本一樣,記錄了所有比特幣的交易信息,每一個比特幣用戶的比特幣收支情況都被永久地嵌入了數(shù)據(jù)區(qū)塊中以供別人查詢。這些數(shù)據(jù)區(qū)塊中的交易數(shù)據(jù)存放在每一個比特幣用戶的客戶端節(jié)點中,所有的這些節(jié)點則組成了比特幣及其堅韌的分布式數(shù)據(jù)庫系統(tǒng)。任何一個節(jié)點的數(shù)據(jù)被破壞都不會影響整個數(shù)據(jù)庫的正常運轉(zhuǎn),因為其他的健康節(jié)點中都保存了完整的數(shù)據(jù)庫。
6.UTXO交易模式
UTXO(Unspent Transaction Outputs)是未花費的交易輸出,它是比特幣交易過程中的基本單位。除創(chuàng)世區(qū)塊以外,所有區(qū)塊中的交易(Tx)會存在若干個輸入(Tx_in,也稱資金來源)和若干個輸出(Tx_out,也稱資金去向),創(chuàng)世區(qū)塊和后來挖礦產(chǎn)生的區(qū)塊中給礦工獎勵的交易沒有輸入,除此之外,在比特幣系統(tǒng)中,某筆交易的輸入必須是另一筆交易未被使用的輸出,同時這筆輸入也需要上一筆輸出地址所對應(yīng)的私鑰進行簽名。
當(dāng)前整個區(qū)塊鏈網(wǎng)絡(luò)中的UTXO會被儲存在每個節(jié)點中,只有滿足了來源于UTXO和數(shù)字簽名條件的交易才是合法的。所以區(qū)塊鏈系統(tǒng)中的新交易并不需要追溯整個交易歷史,就可以確認當(dāng)前交易是否合法。
7.哈希函數(shù)
哈希函數(shù)在比特幣系統(tǒng)中也有著重要的應(yīng)用,區(qū)塊鏈中的數(shù)據(jù)并不只是原始數(shù)據(jù)或者交易記錄,還包括它們的哈希函數(shù)值,即將原始數(shù)據(jù)編碼為特定長度的、由數(shù)字和字母組成的字符串后,記入?yún)^(qū)塊鏈。哈希函數(shù)有著很多適合存儲區(qū)塊鏈數(shù)據(jù)的
優(yōu)點:
1)哈希函數(shù)處理過的數(shù)據(jù)是單向性的,通過處理過的輸出值幾乎不可能計算出原始的輸入值;
2)哈希函數(shù)處理不同長度的數(shù)據(jù)所耗費的時間是一致的,輸出值也是定長的;
3)哈希函數(shù)的輸入值即使只相差一個字節(jié),輸出值的結(jié)果也會迥然不同。比特幣系統(tǒng)中最常采用的哈希函數(shù)是雙SHA256哈希函數(shù),通俗來說就是將不同長度的原始數(shù)據(jù)用兩次SHA256哈希函數(shù)進行處理,再輸出長度為256的二進制數(shù)字來進行統(tǒng)一的識別和存儲。
總之,哈希函數(shù)是比特幣系統(tǒng)中的關(guān)鍵技術(shù),為比特幣系統(tǒng)提供了很多便利。本書后面的章節(jié)將會對哈希函數(shù)做詳細介紹,此處不贅述。
8.Merkle樹
Merkle樹是數(shù)據(jù)結(jié)構(gòu)中的一種樹,可以是二叉樹,也可以是多叉樹,它具有樹結(jié)構(gòu)的所有特點。如圖2-4所示,比特幣區(qū)塊鏈系統(tǒng)中的采用的是Merkle二叉樹,它的作用主要是快速歸納和校驗區(qū)塊數(shù)據(jù)的完整性,它會將區(qū)塊鏈中的數(shù)據(jù)分組進行哈希運算,向上不斷遞歸運算產(chǎn)生新的哈希節(jié)點,最終只剩下一個Merkle根存入?yún)^(qū)塊頭中,每個哈希節(jié)點總是包含兩個相鄰的數(shù)據(jù)塊或其哈希值。
在比特幣系統(tǒng)中使用Merkle樹有諸多優(yōu)點:首先是極大地提高了區(qū)塊鏈的運行效率和可擴展性,使得區(qū)塊頭只需包含根哈希值而不必封裝所有底層數(shù)據(jù),這使得哈希運算可以高效地運行在智能手機甚至物聯(lián)網(wǎng)設(shè)備上;其次是Merkle樹可支持“簡化支付驗證協(xié)議”(SPV),即在不運行完整區(qū)塊鏈網(wǎng)絡(luò)節(jié)點的情況下,也能夠?qū)灰讛?shù)據(jù)進行檢驗。所以,在區(qū)塊鏈中使用Merkle樹這種數(shù)據(jù)結(jié)構(gòu)是非常具有意義的。本書后面的章節(jié)將會對Merkle樹做詳細介紹。
9.雙重支付
雙重支付問題又稱為“雙花”問題,即利用貨幣的數(shù)字特性用“同一筆錢”完成兩次或者多次支付。在傳統(tǒng)的金融和貨幣體系中,由于金錢貨幣是物理實體,具有客觀唯一存在的屬性,所以可以避免雙重支付的情況。但在其他的電子貨幣系統(tǒng)中,則需要可信的第三方管理機構(gòu)提供保證。
區(qū)塊鏈技術(shù)則在去中心化的系統(tǒng)中不借助任何第三方機構(gòu)而只通過分布式節(jié)點之間的相互驗證和共識機制,有效地解決了雙重支付問題,在信息傳輸?shù)耐瑫r完成了價值轉(zhuǎn)移。區(qū)塊鏈技術(shù)通過區(qū)塊鏈接形成的時間戳技術(shù)加上驗證比特幣是否滿足UTXO(未花費交易)和數(shù)字簽名,有效避免了雙重支付的問題。如果有人用同一筆UTXO構(gòu)造了兩筆付給不同交易方的交易,則比特幣客戶端只會轉(zhuǎn)發(fā)最先被偵聽到的那個。礦工會選擇將那筆交易包入未來區(qū)塊,當(dāng)其中一筆交易所在的區(qū)塊后有5個鏈接的區(qū)塊,這筆交易已經(jīng)得到了6次確認。在比特幣區(qū)塊鏈上,6次確認后可以基本上保證比特幣不被雙花。
10.P2P網(wǎng)絡(luò)
P2P網(wǎng)絡(luò)(peer-to-peer network,對等網(wǎng)絡(luò))是一種在對等者(peer)之間分配任務(wù)和工作負載的分布式應(yīng)用架構(gòu),是對等計算模型在應(yīng)用層形成的一種組網(wǎng)或網(wǎng)絡(luò)形式。因此,從字面上,P2P可以理解為對等計算或?qū)Φ染W(wǎng)絡(luò),P2P網(wǎng)絡(luò)示意圖如圖2-5所示。國內(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é)點具有同等的地位,不存在任何特殊化的中心節(jié)點和層級結(jié)構(gòu),每個節(jié)點均會承擔(dān)網(wǎng)絡(luò)路由、驗證數(shù)據(jù)區(qū)塊等功能。網(wǎng)絡(luò)的節(jié)點根據(jù)存儲數(shù)據(jù)量的不同可以分為全節(jié)點和輕量級節(jié)點,全節(jié)點存儲了從創(chuàng)世區(qū)塊以來的所有區(qū)塊鏈數(shù)據(jù)(比特幣網(wǎng)絡(luò)現(xiàn)在大約有幾十GB,且還在不斷增長中)。
全節(jié)點的優(yōu)點是進行數(shù)據(jù)校驗時不需要依靠別的節(jié)點,僅依靠自身就可以完成校驗更新等操作,缺點是硬件成本較高。輕量級節(jié)點只需要存儲部分數(shù)據(jù)信息,當(dāng)需要別的數(shù)據(jù)時可以通過簡易支付驗證方式(Simplif?ied Payment Verif?ication,SPV)向鄰近節(jié)點請求所需數(shù)據(jù)來完成驗證更新。
11.加密算法
除了哈希算法以外,比特幣中還存在一種為交易加密的非對稱加密算法(橢圓曲線加密算法)。非對稱加密算法指的就是存在一對數(shù)學(xué)相關(guān)的密鑰,使用其中一個密鑰進行加密的數(shù)據(jù)信息,只有使用另一個密鑰才能對該信息進行解密。這對密鑰中,對外公開的密鑰叫作公鑰,不公開的密鑰就叫作私鑰。打個比方來說,公鑰就像銀行的賬戶,私鑰就像是該賬戶的密碼或者賬戶所有者的簽名。
區(qū)塊鏈之上的有效交易有一個用于交易發(fā)起方私鑰簽名有效的數(shù)字簽名,而該交易的簽名可以通過使用交易發(fā)起方的公鑰進行驗證。公鑰可以通過算法從私鑰中計算得出,但私鑰卻不能從公鑰中推出。比特幣系統(tǒng)中使用的就是一種非常典型的非對稱加密算法——橢圓曲線加密算法(ECC)。
比特幣系統(tǒng)一般從操作系統(tǒng)底層的一個密碼學(xué)安全的隨機源中取出一個256位隨機數(shù)作為私鑰,私鑰總數(shù)為2256個,所以很難通過遍歷所有可能的私鑰得出與公鑰的對應(yīng)的私鑰。用戶使用的私鑰還會通過SHA256和Base58轉(zhuǎn)換成易書寫和識別的50位長度的私鑰,公鑰則首先由私鑰和Secp256k1橢圓曲線算法生成65字節(jié)長度的隨機數(shù)。
一般情況下,比特幣錢包的地址也由公鑰所生成,其生成過程為首先將公鑰進行SHA256和RIPEMD160雙哈希運算,并生成20字節(jié)長度的摘要結(jié)果(即Hash160結(jié)果),這個將作為比特幣地址的主體(body)信息,再在前面加上版本前綴0x00,在后面添加4個字節(jié)的地址校驗碼。地址校驗碼通過對摘要結(jié)果進行兩次SHA256運算,取哈希值的前4位產(chǎn)生。最后通過Base58處理把連在一起的版本前綴、主體信息和校驗碼轉(zhuǎn)換成可以容易讓人識別的比特幣字符地址。
12.數(shù)字簽名
數(shù)字簽名就是在信息后面加上另一段內(nèi)容,作為發(fā)送者的證明并且證明信息沒有被篡改。一般是發(fā)送者將信息用哈希算法處理得出一個哈希值,然后用私鑰對該哈希值進行加密,得出一個簽名。然后發(fā)送者再將信息和簽名一起發(fā)送給接收者。接收者使用發(fā)送者的公鑰對簽名進行解密,還原出哈希值,再通過哈希算法來驗證信息的哈希值和解密簽名還原出來的哈希值是否一致,從而可以鑒定信息是否來自發(fā)送者或驗證信息是否被篡改。
13.比特幣的隱私模型
傳統(tǒng)隱私模型為交易的參與者提供了一定程度的隱私保護,第三方不會交出交易者的個人身份信息,公眾所得知的只是某個人將一定數(shù)量的貨幣發(fā)給了另外一個人,但是難以將該交易與某個特定身份的人聯(lián)系起來,公眾無法知道這人到底是誰。這同股票交易所發(fā)布的信息是類似的,每一手股票買賣發(fā)生的時間、交易量是記錄在案且可供查詢的,但是交易雙方的身份信息卻不予透露。但實際上,交易雙方的個人信息是存放在第三方機構(gòu),所以一定程度上交易參與者的隱私信息還是會有泄露的風(fēng)險。
在比特幣的隱私模型中,所有的交易不需要第三方的操控,也不需要提供任何身份信息,只需要提供比特幣的地址就可以跟任何人完成一次準(zhǔn)匿名的交易。在一定程度上,交易不可追溯到交易者本身,因此比特幣上的交易可以在一定程度上擺脫監(jiān)管。但通過對區(qū)塊鏈上交易的地址以及交易額做關(guān)聯(lián)分析,也可以獲得有關(guān)交易者的蛛絲馬跡。因此,比特幣的交易還不是純粹的匿名交易機制,而是準(zhǔn)匿名(pseudo-anonymous)交易機制。
框架與特點
1.框架簡介
目前大多數(shù)區(qū)塊鏈技術(shù)的應(yīng)用與比特幣類似,大部分是在比特幣架構(gòu)基礎(chǔ)上的擴展。目前,區(qū)塊鏈技術(shù)在金融行業(yè)得到廣泛關(guān)注,被認為可以用來從最底層重構(gòu)傳統(tǒng)金融業(yè)現(xiàn)有的IT基礎(chǔ)架構(gòu)。我們將區(qū)塊鏈的基礎(chǔ)架構(gòu)分為三層來進行講解。
首先,在網(wǎng)絡(luò)層之上,區(qū)塊鏈?zhǔn)墙⒃贗P通信協(xié)議和對等網(wǎng)絡(luò)的基礎(chǔ)上的一個分布式系統(tǒng),和傳統(tǒng)帶中心的分布式系統(tǒng)不一樣,它不依靠中心化的服務(wù)器節(jié)點來轉(zhuǎn)發(fā)消息,而是每一個節(jié)點都參與消息的轉(zhuǎn)發(fā)。因此P2P網(wǎng)絡(luò)比傳統(tǒng)網(wǎng)絡(luò)具有更高的安全性,任何一個節(jié)點被攻擊都不會影響整個網(wǎng)絡(luò),所有的節(jié)點都保存著整個系統(tǒng)的狀態(tài)信息。
其次,在數(shù)據(jù)層面上,區(qū)塊鏈就是一個只可追加、不可更改的分布式數(shù)據(jù)庫系統(tǒng),是一個分布式賬本。如果是公開的區(qū)塊鏈,也就是公有鏈,那么這個賬本可以被任何人在任何地方進行查詢,完全公開透明。在區(qū)塊鏈網(wǎng)絡(luò)中,節(jié)點通過使用共識算法來維持網(wǎng)絡(luò)中賬本數(shù)據(jù)庫的一致性。
同時采用密碼學(xué)的簽名和哈希算法來確保這個數(shù)據(jù)庫不可篡改,不能作偽,并且可追溯。例如,在比特幣系統(tǒng)中,只有在控制了51%的網(wǎng)絡(luò)算力時才有可能對區(qū)塊鏈進行重組以修改賬本信息。由于比特幣系統(tǒng)的設(shè)計者中本聰在系統(tǒng)設(shè)計中巧妙地加入了帶有經(jīng)濟激勵的挖礦工作量證明(PoW)機制,使得即使擁有網(wǎng)絡(luò)51%以上算力的人也不會損害其自身利益而發(fā)起對網(wǎng)絡(luò)的攻擊。因此,比特幣系統(tǒng)自上線7年多來一直持續(xù)不斷地正常運行,沒有出現(xiàn)過因為比特幣系統(tǒng)本身缺陷而造成的安全故障。
再次,在應(yīng)用層面,我們可以用區(qū)塊鏈代替?zhèn)鹘y(tǒng)的登記、清算系統(tǒng)。2016年6月22日,波士頓咨詢公司指出,到2030年,全球支付業(yè)務(wù)收入預(yù)計將會達到8070億美元?;趨^(qū)塊鏈技術(shù)的匯兌和支付屬于區(qū)塊鏈的1.0應(yīng)用版,其安全性、交易時間、成本都會對傳統(tǒng)支付業(yè)務(wù)進行顛覆式改進?;ㄆ煦y行也明確指出,到2020年,如果各大金融機構(gòu)都使用區(qū)塊鏈技術(shù),每年能夠節(jié)省超過200億美元的成本。
國信證券分析報告指出,通過區(qū)塊鏈的點對點分布式的時間戳服務(wù)器來生成依照時間前后排列并加以記錄的電子交易證明,可以解決雙重支付問題,從而帶來結(jié)算成本趨零的可能性。根據(jù)德國銀行的一份引用波士頓咨詢的研究報告,歐洲銀行的IT成本支出平均占據(jù)銀行整體運行成本的16%[5]。一個重要原因就是傳統(tǒng)銀行在賬本的維護、支付交易的結(jié)算和清算方面的架構(gòu)過于復(fù)雜,維護成本過高。
在應(yīng)用方面,區(qū)塊鏈平臺能夠提供編程環(huán)境讓用戶編寫智能合約。通過智能合約,可以把業(yè)務(wù)規(guī)則轉(zhuǎn)化成在區(qū)塊鏈平臺自動執(zhí)行的合約,該合約的執(zhí)行不依賴可信任的第三方,也不受人為的干預(yù)。
理論上只要一旦部署,一旦符合合約執(zhí)行的條件就會自動執(zhí)行。執(zhí)行結(jié)果也可以在區(qū)塊鏈上供公開檢查,提供了合約的公正性和透明性。因此,智能合約可以降低合約建立、執(zhí)行和仲裁中所涉及的中間機構(gòu)成本。區(qū)塊鏈的智能合約奠定了未來建立可編程貨幣、可編程金融,甚至是可編程社會的基礎(chǔ)。
2.架構(gòu)特點
區(qū)塊鏈具有去中心化、可靠數(shù)據(jù)庫、開源可編程、集體維護、安全可信、交易準(zhǔn)匿名性等特點。如果一個系統(tǒng)不具有以上特征,將不能被視為基于區(qū)塊鏈技術(shù)的應(yīng)用。
(1)去中心化
區(qū)塊鏈數(shù)據(jù)的存儲、傳輸、驗證等過程均基于分布式的系統(tǒng)結(jié)構(gòu),整個網(wǎng)絡(luò)中不依賴一個沒有中心化的硬件或管理機構(gòu)。作為區(qū)塊鏈一種部署模式,公共鏈網(wǎng)絡(luò)中所有參與的節(jié)點都可以具有同等的權(quán)利和義務(wù)。
(2)可靠數(shù)據(jù)庫
區(qū)塊鏈系統(tǒng)的數(shù)據(jù)庫采用分布式存儲,任一參與節(jié)點都可以擁有一份完整的數(shù)據(jù)庫拷貝。除非能控制系統(tǒng)中超過一半以上的算力,否則在節(jié)點上對數(shù)據(jù)庫的修改都將是無效的。
參與系統(tǒng)的節(jié)點越多,數(shù)據(jù)庫的安全性就越高。并且區(qū)塊鏈數(shù)據(jù)的存儲還帶有時間戳,從而為數(shù)據(jù)添加了時間維度,具有極高的可追溯性。
(3)開源可編程
區(qū)塊鏈系統(tǒng)通常是開源的,代碼高度透明公共鏈的數(shù)據(jù)和程序?qū)λ腥斯_,任何人都可以通過接口查詢系統(tǒng)中的數(shù)據(jù)。并且區(qū)塊鏈平臺還提供靈活的腳本代碼系統(tǒng),支持用戶創(chuàng)建高級的智能合約、貨幣和去中心化應(yīng)用。
例如,以太坊(Ethereum)平臺即提供了圖靈完備的腳本語言,供用戶來構(gòu)建任何可以精確定義的智能合約或交易類型。關(guān)于以太坊的更多內(nèi)容請參考2.2節(jié)。
(4)集體維護
系統(tǒng)中的數(shù)據(jù)塊由整個系統(tǒng)中所有具有記賬功能的節(jié)點來共同維護,任一節(jié)點的損壞或失去都不會影響整個系統(tǒng)的運作。
(5)安全可信
區(qū)塊鏈技術(shù)采用非對稱密碼學(xué)原理對交易進行簽名,使得交易不能被偽造;同時利用哈希算法保證交易數(shù)據(jù)不能被輕易篡改,最后借助分布式系統(tǒng)各節(jié)點的工作量證明等共識算法形成強大的算力來抵御破壞者的攻擊,保證區(qū)塊鏈中的區(qū)塊以及區(qū)塊內(nèi)的交易數(shù)據(jù)不可篡改和不可偽造,因此具有極高的安全性。
(6)準(zhǔn)匿名性
區(qū)塊鏈系統(tǒng)采用與用戶公鑰掛鉤的地址來做用戶標(biāo)識,不需要傳統(tǒng)的基于PKI(Public Key Infrastructure)的第三方認證中心(Certif?icate Authority,CA)頒發(fā)數(shù)字證書來確認身份。通過在全網(wǎng)節(jié)點運行共識算法,建立網(wǎng)絡(luò)中誠實節(jié)點對全網(wǎng)狀態(tài)的共識,間接地建立了節(jié)點間的信任。
用戶只需要公開地址,不需要公開真實身份,而且同一個用戶可以不斷變換地址。因此,在區(qū)塊鏈上的交易不和用戶真實身份掛鉤,只是和用戶的地址掛鉤,具有交易的準(zhǔn)匿名性。。
區(qū)塊鏈技術(shù)的核心優(yōu)勢是去中心化,能夠通過運用哈希算法、數(shù)字簽名、時間戳、分布式共識和經(jīng)濟激勵等手段,在節(jié)點無需互相信任的分布式系統(tǒng)中建立信用,實現(xiàn)點對點交易和協(xié)作,從而為中心化機構(gòu)普遍存在的高成本、低效率和數(shù)據(jù)存儲不安全等問題提供了解決方案。
近年來,伴隨著國內(nèi)外研究機構(gòu)對區(qū)塊鏈技術(shù)的研究與應(yīng)用,區(qū)塊鏈的應(yīng)用前景受到各行各業(yè)的高度重視,被認為是繼大型機、個人電腦、互聯(lián)網(wǎng)、移動/社交網(wǎng)絡(luò)之后計算范式的第5次顛覆式創(chuàng)新,是人類信用進化史上繼血親信用、貴金屬信用、央行紙幣信用之后的第4個里程碑。它被視為下一代云計算的雛形,有望徹底重塑人類社會活動形態(tài),并實現(xiàn)從現(xiàn)在的信息互聯(lián)網(wǎng)到價值互聯(lián)網(wǎng)的轉(zhuǎn)變。
區(qū)塊鏈運作的核心技術(shù)
1.區(qū)塊鏈的鏈接
顧名思義,區(qū)塊鏈即由一個個區(qū)塊組成的鏈。每個區(qū)塊分為區(qū)塊頭和區(qū)塊體(含交易數(shù)據(jù))兩個部分。區(qū)塊頭包括用來實現(xiàn)區(qū)塊鏈接的前一區(qū)塊的哈希(PrevHash)值(又稱散列值)和用于計算挖礦難度的隨機數(shù)(nonce)。前一區(qū)塊的哈希值實際是上一個區(qū)塊頭部的哈希值,而計算隨機數(shù)規(guī)則決定了哪個礦工可以獲得記錄區(qū)塊的權(quán)力。
2.共識機制
區(qū)塊鏈?zhǔn)前殡S比特幣誕生的,是比特幣的基礎(chǔ)技術(shù)架構(gòu)??梢詫^(qū)塊鏈理解為一個基于互聯(lián)網(wǎng)的去中心化記賬系統(tǒng)。類似比特幣這樣的去中心化數(shù)字貨幣系統(tǒng),要求在沒有中心節(jié)點的情況下保證各個誠實節(jié)點記賬的一致性,就需要區(qū)塊鏈來完成。所以區(qū)塊鏈技術(shù)的核心是在沒有中心控制的情況下,在互相沒有信任基礎(chǔ)的個體之間就交易的合法性等達成共識的共識機制。
區(qū)塊鏈的共識機制目前主要有4類:PoW、PoS、DPoS、分布式一致性算法。
(1)PoW
PoW(工作量證明),也就是像比特幣的挖礦機制,礦工通過把網(wǎng)絡(luò)尚未記錄的現(xiàn)有交易打包到一個區(qū)塊,然后不斷遍歷嘗試來尋找一個隨機數(shù),使得新區(qū)塊加上隨機數(shù)的哈希值滿足一定的難度條件,例如前面10位是零。找到滿足條件的隨機數(shù),就相當(dāng)于確定了區(qū)塊鏈最新的一個區(qū)塊,也相當(dāng)于獲得了區(qū)塊鏈的本輪記賬權(quán)。
礦工把滿足挖礦難度條件的區(qū)塊在網(wǎng)絡(luò)中廣播出去,全網(wǎng)其他節(jié)點在驗證該區(qū)塊滿足挖礦難度條件,同時區(qū)塊里的交易數(shù)據(jù)符合協(xié)議規(guī)范后,將各自把該區(qū)塊鏈接到自己版本的區(qū)塊鏈上,從而在全網(wǎng)形成對當(dāng)前網(wǎng)絡(luò)狀態(tài)的共識。
優(yōu)點:完全去中心化,節(jié)點自由進出,避免了建立和維護中心化信用機構(gòu)的成本。只要網(wǎng)絡(luò)破壞者的算力不超過網(wǎng)絡(luò)總算力的50%,網(wǎng)絡(luò)的交易狀態(tài)就能達成一致。
缺點:目前比特幣挖礦造成大量的資源浪費;另外挖礦的激勵機制也造成礦池算力的高度集中,背離了當(dāng)初去中心化設(shè)計的初衷。更大的問題是PoW機制的共識達成的周期較長,每秒只能最多做7筆交易,不適合商業(yè)應(yīng)用。
(2)PoS
PoS權(quán)益證明,要求節(jié)點提供擁有一定數(shù)量的代幣證明來獲取競爭區(qū)塊鏈記賬權(quán)的一種分布式共識機制。如果單純依靠代幣余額來決定記賬者必然使得富有者勝出,導(dǎo)致記賬權(quán)的中心化,降低共識的公正性,因此不同的PoS機制在權(quán)益證明的基礎(chǔ)上,采用不同方式來增加記賬權(quán)的隨機性來避免中心化。
例如點點幣(PeerCoin)PoS機制中,擁有最多鏈齡長的比特幣獲得記賬權(quán)的幾率就越大。NXT和Blackcoin則采用一個公式來預(yù)測下一個記賬的節(jié)點。擁有多的代幣被選為記賬節(jié)點的概率就會大。未來以太坊也會從目前的PoW機制轉(zhuǎn)換到PoS機制,從目前看到的資料看,以太坊的PoS機制將采用節(jié)點下賭注來賭下一個區(qū)塊,賭中者有額外以太幣獎,賭不中者會被扣以太幣的方式來達成下一區(qū)塊的共識。
優(yōu)點:在一定程度上縮短了共識達成的時間,降低了PoW機制的資源浪費。
缺點:破壞者對網(wǎng)絡(luò)攻擊的成本低,網(wǎng)絡(luò)的安全性有待驗證。另外擁有代幣數(shù)量大的節(jié)點獲得記賬權(quán)的幾率更大,會使得網(wǎng)絡(luò)的共識受少數(shù)富裕賬戶支配,從而失去公正性。
(3)DPoS
DPoS(股份授權(quán)證明)機制,類似于董事會投票。比特股(bitshares)采用的PoS機制是持股者投票選出一定數(shù)量的見證人,每個見證人按序有兩秒的權(quán)限時間生成區(qū)塊,若見證人在給定的時間片不能生成區(qū)塊,區(qū)塊生成權(quán)限交給下一個時間片對應(yīng)的見證人。持股人可以隨時通過投票更換這些見證人。DPoS的這種設(shè)計使得區(qū)塊的生成更為快速,也更加節(jié)能。
優(yōu)點:大幅縮小參與驗證和記賬節(jié)點的數(shù)量,可以達到秒級的共識驗證。
缺點:選舉固定數(shù)量的見證人作為記賬候選人有可能不適合于完全去中心化的場景。另外在網(wǎng)絡(luò)節(jié)點數(shù)少的場景,選舉的見證人的代表性也不強。
(4)分布式一致性算法
分布式一致性算法是基于傳統(tǒng)的分布式一致性技術(shù)。其中有分為解決拜占庭將軍問題的拜占庭容錯算法,如PBFT。另外解決非拜占庭問題的分布式一致性算法(Pasox、Raft),詳細見本書第5章的共識算法。該類算法目前是聯(lián)盟鏈和私有鏈鏈場景中常用的共識機制。
優(yōu)點:實現(xiàn)秒級的快速共識機制,保證一致性。
缺點:去中心化程度不如公有鏈上的共識機制;更適合多方參與的多中心商業(yè)模式。
3.解鎖腳本
腳本是區(qū)塊鏈上實現(xiàn)自動驗證、自動執(zhí)行合約的重要技術(shù)。每一筆交易的每一項輸出嚴格意義上并不是指向一個地址,而是指向一個腳本。腳本類似一套規(guī)則,它約束著接收方怎樣才能花掉這個輸出上鎖定的資產(chǎn)。
交易的合法性驗證也依賴于腳本。目前它依賴于兩類腳本:鎖定腳本與解鎖腳本。鎖定腳本是在輸出交易上加上的條件,通過一段腳本語言來實現(xiàn),位于交易的輸出。解鎖腳本與鎖定腳本相對應(yīng),只有滿足鎖定腳本要求的條件,才能花掉這個腳本上對應(yīng)的資產(chǎn),位于交易的輸入。通過腳本語言可以表達很多靈活的條件。解釋腳本是通過類似我們編程領(lǐng)域里的“虛擬機”,它分布式運行在區(qū)塊鏈網(wǎng)絡(luò)里的每一個節(jié)點。
比特幣的腳本目前常用的主要分為兩種,一種是普通的P2PKH(Pay-to-Public-Key-Hash),即支付給公鑰的哈希地址,接收方只需要使用地址對應(yīng)的私鑰對該輸出進行簽名,即可花掉該輸出。另一種是P2SH(Pay-to-Script-Hash),即支付腳本的哈希。以多重簽名來舉例,它要求該輸出要有N把私鑰中的M把私鑰(M≤N)同時簽名才能花掉該資產(chǎn),它類似于現(xiàn)實生活中需要多把鑰匙才能同時打開的保險柜,或是多人簽名才能使條約生效一樣,只是它是自動執(zhí)行。
比如在比特幣中,P2PKH的腳本規(guī)則如下:
Pubkey script: OP_DUP OP_HASH160
Signature script:
P2SH的腳本規(guī)則如下:
Pubkey script: OP_HASH160
Signature script:
在上述的兩種腳本規(guī)則里,Pubkey script代表鎖定腳本,Signature script代表解鎖腳本。OP_開頭的單詞是相關(guān)的腳本命令,也是“虛擬機”所能解析的指令。這些命令規(guī)則根據(jù)Pubkey script的不同來進行劃分,它也決定解鎖腳本的規(guī)則。
比特幣中的腳本機制相對簡單,只是一個基于堆棧式的、解釋相關(guān)OP指令的引擎,能夠解析的腳本規(guī)則并不是太多,不能實現(xiàn)很復(fù)雜的邏輯。但它為區(qū)塊鏈可編程提供了一個原型,后續(xù)一些可編程區(qū)塊鏈項目其實是基于腳本的原理發(fā)展起來的,比如以太坊就是深入增強了腳本機制,腳本機制里不再單單是簡單的OP指令,而是支持腳本的一套圖靈完備語言,該腳本語言可以通過“虛擬機”去執(zhí)行。以太坊實現(xiàn)了一個支持圖靈完備腳本語言的區(qū)塊鏈平臺。
腳本的機制對于區(qū)塊鏈來說非常重要,它類似于區(qū)塊鏈技術(shù)提供的一個擴展接口,任何人都可以基于這個接口開發(fā)基于區(qū)塊鏈技術(shù)的應(yīng)用,比如智能合約的功能。腳本機制也讓區(qū)塊鏈技術(shù)作為一項底層協(xié)議成為可能。未來很多基于區(qū)塊鏈的顛覆性應(yīng)用,都有可能通過區(qū)塊鏈的腳本語言來完成。
4.交易規(guī)則
區(qū)塊鏈的交易就是構(gòu)成區(qū)塊的基本單位,也是區(qū)塊鏈負責(zé)記錄的實際有效內(nèi)容。一個區(qū)塊鏈交易可以是一次轉(zhuǎn)賬,也可以是智能合約的部署等其他事務(wù)。
就比特幣而言,交易即指一次支付轉(zhuǎn)賬。其交易規(guī)則如下:
1)交易的輸入和輸出不能為空。
2)對交易的每個輸入,如果其對應(yīng)的UTXO輸出能在當(dāng)前交易池中找到,則拒絕該交易。因為當(dāng)前交易池是未被記錄在區(qū)塊鏈中的交易,而交易的每個輸入,應(yīng)該來自確認的UTXO。如果在當(dāng)前交易池中找到,那就是雙花交易。
3)交易中的每個輸入,其對應(yīng)的輸出必須是UTXO。
4)每個輸入的解鎖腳本(unlocking script)必須和相應(yīng)輸出的鎖定腳本(locking script)共同驗證交易的合規(guī)性。
對于以太坊來說,交易還可能是智能合約的部署。交易規(guī)則就確定了符合一定語法規(guī)則的合約才能被部署在區(qū)塊鏈上。
5.交易優(yōu)先級
區(qū)塊鏈交易的優(yōu)先級由區(qū)塊鏈協(xié)議規(guī)則決定。對于比特幣而言,交易被區(qū)塊包含的優(yōu)先次序由交易廣播到網(wǎng)絡(luò)上的時間和交易額的大小決定。隨著交易廣播到網(wǎng)絡(luò)上的時間的增長,交易的鏈齡增加,交易的優(yōu)先級就被提高,最終會被區(qū)塊包含。對于以太坊而言,交易的優(yōu)先級還與交易的發(fā)布者愿意支付的交易費用有關(guān),發(fā)布者愿意支付的交易費用越高,交易被包含進區(qū)塊的優(yōu)先級就越高。
6.Merkle證明
Merkle證明的原始應(yīng)用是比特幣系統(tǒng)(Bitcoin),它是由中本聰(Satoshi Nakamoto)在2009年描述并且創(chuàng)造的。比特幣區(qū)塊鏈?zhǔn)褂昧薓erkle證明,為的是將交易存儲在每一個區(qū)塊中。使得交易不能被篡改,同時也容易驗證交易是否包含在一個特定區(qū)塊中,Merkle樹說明詳見4.2節(jié)。
Merkle樹的一個重要使用場景就是快速支付驗證,也就是中本聰描述的“簡化支付驗證”(SPV)的概念:輕量級節(jié)點(light client)不用下載每一筆交易以及每一個區(qū)塊,可以僅下載鏈的區(qū)塊頭,每個區(qū)塊中僅包含下述5項內(nèi)容,數(shù)據(jù)塊大小為80字節(jié)。
(1)上一區(qū)塊頭的哈希值
(2)時間戳
(3)挖礦難度值
(4)工作量證明隨機數(shù)(nonce)
(5)包含該區(qū)塊交易的Merkle樹的根哈希
如果一個輕客戶端希望確定一筆交易的狀態(tài),它可以簡單地要求一個Merkle證明,顯示出一個在Merkle樹特定的交易,其根是在主鏈(main chain,非分叉鏈)上的區(qū)塊頭。
Merkle證明可以讓區(qū)塊鏈得到更廣闊的應(yīng)用,但比特幣的輕客戶有其局限性。雖然可以證明包含的交易,但無法證明任何當(dāng)前的狀態(tài)(例如:數(shù)字資產(chǎn)的持有,名稱注冊,金融合約的狀態(tài)等)。一筆交易影響的確切性質(zhì)(precise nature)可以取決于此前的幾筆交易,而這些交易本身則依賴于更為前面的交易,所以最終你需要驗證整個鏈上的每一筆交易。為了解決這個問題,以太坊進行了更進一步的創(chuàng)新。
以太坊的每一個區(qū)塊頭中并非只包含一棵Merkle樹,而是包含了3棵Merkle樹),分別對應(yīng)了以下3種對象:
(1)交易(Transactions)
(2)收據(jù)(Receipts,基本上,它是展示每一筆交易影響的數(shù)據(jù)條)
(3)狀態(tài)(State)
這三棵樹允許輕客戶端輕松地進行并核實以下類型的查詢答案:
(1)這筆交易被包含在特定的區(qū)塊中了嗎?
(2)告訴我這個地址在過去30天中,發(fā)出X類型事件的所有實例(例如,一個眾籌合約完成了它的目標(biāo))。
(3)目前我的賬戶余額是多少?
(4)這個賬戶是否存在?
(5)假裝在這個合約中運行這筆交易,它的輸出會是什么?
第一種是由交易樹(transaction tree)來處理的;第3和第4種則是由狀態(tài)樹(state tree)負責(zé)處理,第2種則由收據(jù)樹(receipt tree)處理。計算前4個查詢?nèi)蝿?wù)是相當(dāng)簡單的。在服務(wù)器簡單地找到對象,獲取梅克爾分支,并通過分支來回復(fù)輕客戶端。第5種查詢?nèi)蝿?wù)同樣也是由狀態(tài)樹處理。
7.RLP
RLP(Recursive Length Pref?ix,遞歸長度前綴編碼)是Ethereum中對象序列化的一個主要編碼方式,其目的是對任意嵌套的二進制數(shù)據(jù)的序列進行編碼。
以太坊中的所有數(shù)據(jù)都以“遞歸長度前綴編碼”(Recursive Length Pref?ix encoding,RLP)形式存儲,這種編碼格式將任意長度和維度的字符串構(gòu)成的數(shù)組串連接成字符串。例如,['dog', 'cat']被串接(以字節(jié)數(shù)組格式)為[130,67,100,111,103,67,99,97,116];其基本的思想是把數(shù)據(jù)類型和長度編碼成一個單獨的字節(jié)放在實際數(shù)據(jù)的前面(例如‘dog’的字節(jié)數(shù)組編碼為[100,111,103],于是串接后就成了[67,100,111,103])。
注意RLP編碼正如其名字表示的一樣,是遞歸的;當(dāng)RLP編碼一個數(shù)組時,實際上是在對每一個元素的RLP編碼級聯(lián)成的字符串編碼。需要進一步提請注意的是,以太坊中所有數(shù)據(jù)都是整數(shù);所以,如果有任何的以一個或多個0字節(jié)開頭的哈?;蛘叩刂?,這些0字節(jié)應(yīng)該在計算出現(xiàn)問題的時候去除。以太坊中沒有串接數(shù)據(jù)結(jié)構(gòu)包含任何以0開頭的數(shù)值。整數(shù)以大端基礎(chǔ)(Big Endian)256格式存儲(例如32767字節(jié)數(shù)組格式為[127,255])。
區(qū)塊鏈交易流程
以比特幣的交易為例,區(qū)塊鏈的交易并不是通常意義上的一手交錢一手交貨的交易,而是轉(zhuǎn)賬。如果每一筆轉(zhuǎn)賬都需要構(gòu)造一筆交易數(shù)據(jù)會比較笨拙,為了使得價值易于組合與分割,比特幣的交易被設(shè)計為可以納入多個輸入和輸出,即一筆交易可以轉(zhuǎn)賬給多個人。從生成到在網(wǎng)絡(luò)中傳播,再到通過工作量證明、整個網(wǎng)絡(luò)節(jié)點驗證,最終記錄到區(qū)塊鏈,就是區(qū)塊鏈交易的整個生命周期。
交易的生成。所有者A利用他的私鑰對前一次交易和下一位所有者B簽署一個數(shù)字簽名,并將這個簽名附加在這枚貨幣的末尾,制作成交易單。
交易的傳播。A將交易單廣播至全網(wǎng),每個節(jié)點都將收到的交易信息納入一個區(qū)塊中。
工作量證明。每個節(jié)點通過相當(dāng)于解一道數(shù)學(xué)題的工作量證明機制,從而獲得創(chuàng)建新區(qū)塊的權(quán)力,并爭取得到數(shù)字貨幣的獎勵。
整個網(wǎng)絡(luò)節(jié)點驗證。當(dāng)一個節(jié)點找到解時,它就向全網(wǎng)廣播該區(qū)塊記錄的所有蓋時間戳交易,并由全網(wǎng)其他節(jié)點核對。
記錄到區(qū)塊鏈。全網(wǎng)其他節(jié)點核對該區(qū)塊記賬的正確性,沒有錯誤后他們將在該合法區(qū)塊之后競爭下一個區(qū)塊,這樣就形成了一個合法記賬的區(qū)塊鏈。
-
P2P網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
23瀏覽量
11201 -
區(qū)塊鏈
+關(guān)注
關(guān)注
111文章
15562瀏覽量
106047 -
挖礦
+關(guān)注
關(guān)注
6文章
448瀏覽量
16059
原文標(biāo)題:區(qū)塊鏈技術(shù)的發(fā)展歷史
文章出處:【微信號:gh_ecbcc3b6eabf,微信公眾號:人工智能和機器人研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論