區(qū)塊鏈技術(shù)指南_第1頁
區(qū)塊鏈技術(shù)指南_第2頁
區(qū)塊鏈技術(shù)指南_第3頁
區(qū)塊鏈技術(shù)指南_第4頁
區(qū)塊鏈技術(shù)指南_第5頁
已閱讀5頁,還剩288頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

區(qū)塊鏈技術(shù)指南目錄\h第1章區(qū)塊鏈和比特幣初體驗(yàn)\h1.1區(qū)塊鏈簡介\h1.1.1區(qū)塊鏈起源——比特幣\h1.1.2區(qū)塊鏈和區(qū)塊鏈技術(shù)的涵義\h1.1.3區(qū)塊鏈分類\h1.1.4區(qū)塊鏈價(jià)值與應(yīng)用\h1.2區(qū)塊鏈體驗(yàn)\h1.2.1獲取比特幣的3種途徑\h1.2.2通過交易所購買比特幣\h1.2.3比特幣錢包和地址\h1.2.4從交易平臺(tái)提取比特幣到錢包\h1.2.5比特幣交易查詢\h1.3本章小結(jié)\h第2章區(qū)塊鏈基礎(chǔ)\h2.1區(qū)塊鏈技術(shù)\h2.1.1基本概念\h2.1.2框架與特點(diǎn)\h2.1.3區(qū)塊鏈運(yùn)作的核心技術(shù)\h2.1.4區(qū)塊鏈交易流程\h2.2以太坊\h2.2.1什么是以太坊\h2.2.2以太坊技術(shù)\h2.2.3以太坊智能合約\h2.2.4以太坊的去中心化應(yīng)用\h2.3基于區(qū)塊鏈的電子貨幣\h2.3.1元幣平臺(tái)\h2.3.2代幣\h2.3.3貨幣的未來\h2.4本章小結(jié)\h第3章區(qū)塊鏈架構(gòu)剖析\h3.1基本定義\h3.2區(qū)塊鏈1.0架構(gòu):比特幣區(qū)塊鏈\h3.2.1比特幣前端\h3.2.2比特幣節(jié)點(diǎn)后端\h3.3區(qū)塊鏈2.0架構(gòu):以太坊區(qū)塊鏈\h3.4區(qū)塊鏈3.0架構(gòu):超越貨幣、金融范圍的區(qū)塊鏈應(yīng)用\h3.5互聯(lián)鏈架構(gòu)剖析\h3.5.1互聯(lián)鏈背景\h3.5.2互聯(lián)賬本\h3.5.3互聯(lián)賬本協(xié)議組\h3.5.4互聯(lián)賬本各層協(xié)議關(guān)系\h3.6本章小結(jié)\h第4章區(qū)塊鏈中的密碼學(xué)技術(shù)\h4.1哈希算法\h4.1.1哈希函數(shù)的性質(zhì)與應(yīng)用\h4.1.2哈希指針鏈\h4.2Merkle樹\h4.3公鑰密碼算法\h4.3.1橢圓曲線密碼算法\h4.3.2secp256k1橢圓曲線\h4.3.3橢圓曲線簽名與驗(yàn)證簽名\h4.4本章小結(jié)\h第5章共識(shí)算法詳解\h5.1拜占庭容錯(cuò)技術(shù)\h5.1.1拜占庭將軍問題\h5.1.2拜占庭容錯(cuò)系統(tǒng)\h5.1.3實(shí)用的拜占庭容錯(cuò)系統(tǒng)\h5.1.4Raft協(xié)議\h5.2PoW機(jī)制\h5.3PoS機(jī)制\h5.4DPoS機(jī)制\h5.5Ripple共識(shí)算法\h5.6小蟻共識(shí)機(jī)制\h5.7本章小結(jié)\h第6章比特幣應(yīng)用開發(fā)指南\h6.1以虛擬機(jī)方式搭建應(yīng)用開發(fā)環(huán)境\h6.1.1下載和安裝OracleVMVirtualBox\h6.1.2以虛擬機(jī)方式安裝Ubuntu14.04\h6.1.3安裝Node.js開發(fā)環(huán)境\h6.1.4安裝Docker運(yùn)行環(huán)境\h6.1.5安裝和運(yùn)行比特幣測試網(wǎng)絡(luò)\h6.1.6運(yùn)行第一個(gè)示例程序\h6.2把握比特幣“交易”數(shù)據(jù)結(jié)構(gòu)\h6.2.1了解比特幣的“交易”數(shù)據(jù)結(jié)構(gòu)\h6.2.2交易記錄的實(shí)例解析\h6.2.3運(yùn)行示例程序\h6.3實(shí)戰(zhàn):多重簽名交易\h6.3.1將ODIN標(biāo)識(shí)注冊到區(qū)塊鏈上的實(shí)例解析\h6.3.2運(yùn)行示例程序\h6.4本章小結(jié)\h第7章智能合約\h7.1智能合約簡介\h7.1.1什么是智能合約\h7.1.2智能合約的歷史\h7.1.3智能合約的優(yōu)點(diǎn)和面臨的風(fēng)險(xiǎn)\h7.2以太坊智能合約詳解\h7.2.1以太坊上的賬戶\h7.2.2以太幣和Gas\h7.2.3合約和交易\h7.3以太坊虛擬機(jī)\h7.4實(shí)例:在以太坊上開發(fā)實(shí)施智能合約\h7.4.1通過以太坊錢包部署智能合約\h7.4.2通過控制臺(tái)部署智能合約\h7.5本章小結(jié)\h第8章超級賬本項(xiàng)目\h8.1超級賬本項(xiàng)目簡介\h8.1.1項(xiàng)目背景\h8.1.2項(xiàng)目管理形式\h8.1.3項(xiàng)目的生命周期管理\h8.1.4項(xiàng)目發(fā)展?fàn)顩r\h8.2Fabric項(xiàng)目\h8.2.1項(xiàng)目概述\h8.2.2應(yīng)用場景\h8.2.3項(xiàng)目架構(gòu)\h8.2.4部署方式\h8.2.5交易的執(zhí)行\(zhòng)h8.3SawtoothLake項(xiàng)目\h8.3.1項(xiàng)目概述\h8.3.2項(xiàng)目架構(gòu)\h8.4本章小結(jié)\h第9章區(qū)塊鏈常見問題\h9.1錢包的安全性問題\h9.2加密貨幣的交易方式\h9.3匿名性和隱私性\h9.4礦池算力集中的問題\h9.551%攻擊問題\h9.6去中心化的自治組織\h9.6.1去中心化的自治組織簡介\h9.6.2TheDAO項(xiàng)目\h9.6.3代碼漏洞分析\h9.6.4解決方案\h9.6.5軟分叉和硬分叉的影響\h9.6.6重放攻擊\h9.7本章小結(jié)\h第10章區(qū)塊鏈應(yīng)用案例分析\h10.1閃電網(wǎng)絡(luò)\h10.1.1閃電網(wǎng)絡(luò)簡介\h10.1.2支付通道的創(chuàng)建\h10.1.3支付通道的更新\h10.1.4支付網(wǎng)絡(luò)的構(gòu)建\h10.1.5支付通道的關(guān)閉\h10.1.6小結(jié)\h10.2ODIN:用區(qū)塊鏈來替代DNS\h10.2.1ODIN簡介\h10.2.2實(shí)現(xiàn)功能\h10.2.3主要特點(diǎn)\h10.2.4ODIN標(biāo)識(shí)編碼格式\h10.2.5ODIN標(biāo)識(shí)技術(shù)規(guī)范\h10.2.6使用示例\h10.2.7開放資源\h10.2.8問題與思考\h10.3本章小結(jié)\h第11章從架構(gòu)變革看IT時(shí)代的演進(jìn)\h11.1架構(gòu)心得\h11.1.1架構(gòu)和技術(shù)的關(guān)系\h11.1.2關(guān)于計(jì)算的觀察\h11.1.3架構(gòu)創(chuàng)新的神奇力量\h11.1.4馮·諾依曼架構(gòu)\h11.1.5哈佛體系架構(gòu)\h11.1.6有影響力架構(gòu)的特點(diǎn)\h11.1.7從非生物計(jì)算到非生物智能\h11.2架構(gòu)創(chuàng)新——IT發(fā)展源源不斷的動(dòng)力\h11.2.1大中型機(jī)時(shí)代\h11.2.2開放時(shí)代的到來\h11.2.3客戶端/服務(wù)端(CS)分布式時(shí)代\h11.2.4互聯(lián)網(wǎng)時(shí)代\h11.2.5云計(jì)算、大數(shù)據(jù)時(shí)代\h11.2.6互聯(lián)網(wǎng)+時(shí)代\h11.2.7區(qū)塊鏈+時(shí)代\h11.3未來展望注:原文檔電子版,非掃描,需要的請下載本文檔后留言謝謝。第1章區(qū)塊鏈和比特幣初體驗(yàn)區(qū)塊鏈(Blockchain)是近年來最具革命性的新興技術(shù)之一。區(qū)塊鏈技術(shù)發(fā)源于比特幣(Bitcoin),其以去中心化方式建立信任等突出特點(diǎn),對金融等諸多行業(yè)來說極具顛覆性,具有非常廣闊的應(yīng)用前景,受到各國政府、金融機(jī)構(gòu)、科技企業(yè)、愛好者和媒體的高度關(guān)注。在本章中,我們首先介紹區(qū)塊鏈的定義和特點(diǎn),然后通過介紹購買、存儲(chǔ)和交易比特幣等實(shí)際使用場景來體驗(yàn)區(qū)塊鏈,最后再探討一些關(guān)于區(qū)塊鏈的常見問題。1.1區(qū)塊鏈簡介2016年1月20日,中國人民銀行官方網(wǎng)站上發(fā)表了一條題為《中國人民銀行數(shù)字貨幣研討會(huì)在京召開》的新聞\h[1],這一消息迅速在各大主流新聞媒體和比特幣、區(qū)塊鏈愛好者社區(qū)中傳播,成為推動(dòng)區(qū)塊鏈技術(shù)在國內(nèi)迅速升溫的“導(dǎo)火線”。這是自從2013年12月5日中國人民銀行、工信部、銀監(jiān)會(huì)、證監(jiān)會(huì)和保監(jiān)會(huì)五部委聯(lián)合發(fā)布《關(guān)于防范比特幣風(fēng)險(xiǎn)的通知》\h[2]以來,相關(guān)首次公開對比特幣底層技術(shù)——區(qū)塊鏈技術(shù)給予了高度評價(jià)。在我們開始區(qū)塊鏈體驗(yàn)之旅之前,讓我們簡要介紹區(qū)塊鏈的定義和其發(fā)展歷程。\h[1]中國人民銀行.中國人民銀行數(shù)字貨幣研討會(huì)在京召開[J/OL].2016,/goutongjiaoliu/113456/113469/3008070/index.html.\h[2]中國人民銀行.中國人民銀行等五部委發(fā)布《關(guān)于防范比特幣風(fēng)險(xiǎn)的通知》【歡迎加入羅友書社,微信羅輯思維,得到APP,樊登讀書會(huì),喜馬拉雅系列海量書籍與您分享】1.1.1區(qū)塊鏈起源——比特幣區(qū)塊鏈的英文是Blockchain,字面意思就是(交易數(shù)據(jù))塊(Block)的鏈(Chain)。區(qū)塊鏈技術(shù)首先被應(yīng)用于比特幣,如圖1-1所示。比特幣本身就是第一個(gè),也是規(guī)模最大、應(yīng)用范圍最廣的區(qū)塊鏈。圖1-1簡化的比特幣區(qū)塊鏈?zhǔn)疽鈭D1.1.2區(qū)塊鏈和區(qū)塊鏈技術(shù)的涵義目前,關(guān)于區(qū)塊鏈沒有統(tǒng)一的定義,綜合來看,區(qū)塊鏈就是基于區(qū)塊鏈技術(shù)形成的公共數(shù)據(jù)庫(或稱公共賬本)。其中區(qū)塊鏈技術(shù)是指多個(gè)參與方之間基于現(xiàn)代密碼學(xué)、分布式一致性協(xié)議、點(diǎn)對點(diǎn)網(wǎng)絡(luò)通信技術(shù)和智能合約編程語言等形成的數(shù)據(jù)交換、處理和存儲(chǔ)的技術(shù)組合。同時(shí),區(qū)塊鏈技術(shù)本身仍在不斷發(fā)展和演化中。1.1.3區(qū)塊鏈分類以參與方分類,區(qū)塊鏈可以分為:公開鏈(PublicBlockchain)、聯(lián)盟鏈(ConsortiumBlockchain)和私有鏈(PrivateBlockchain)。從鏈與鏈的關(guān)系來分,可以分為主鏈和側(cè)鏈。而且,不同區(qū)塊鏈還可以形成網(wǎng)絡(luò),網(wǎng)絡(luò)中鏈與鏈的互聯(lián)互通,產(chǎn)生互聯(lián)鏈(Interchain)的概念。1.公共鏈公共鏈對外公開,用戶不用注冊就能匿名參與,無需授權(quán)即可訪問網(wǎng)絡(luò)和區(qū)塊鏈。節(jié)點(diǎn)可選擇自由出入網(wǎng)絡(luò)。公共鏈上的區(qū)塊可以被任何人查看,任何人也可以在公共鏈上發(fā)送交易,還可以隨時(shí)參與網(wǎng)絡(luò)上形成共識(shí)的過程,即決定哪個(gè)區(qū)塊可以加入?yún)^(qū)塊鏈并記錄當(dāng)前的網(wǎng)絡(luò)狀態(tài)。公共鏈?zhǔn)钦嬲饬x上的完全去中心化的區(qū)塊鏈,它通過密碼學(xué)保證交易不可篡改,同時(shí)也利用密碼學(xué)驗(yàn)證以及經(jīng)濟(jì)上的激勵(lì),在互為陌生的網(wǎng)絡(luò)環(huán)境中建立共識(shí),從而形成去中心化的信用機(jī)制。在公共鏈中的共識(shí)機(jī)制一般是工作量證明(PoW)或權(quán)益證明(PoS),用戶對共識(shí)形成的影響力直接取決于他們在網(wǎng)絡(luò)中擁有資源的占比。公共鏈通常也稱為非許可鏈(PermissionlessBlockchain)。如比特幣和以太坊等都是公共鏈。公共鏈一般適合于虛擬貨幣、面向大眾的電子商務(wù)、互聯(lián)網(wǎng)金融等B2C、C2C或C2B等應(yīng)用場景。2.聯(lián)盟鏈聯(lián)盟鏈(ConsortiumBlockchain)僅限于聯(lián)盟成員參與,區(qū)塊鏈上的讀寫權(quán)限、參與記賬權(quán)限按聯(lián)盟規(guī)則來制定。由40多家銀行參與的區(qū)塊鏈聯(lián)盟R3\h[1]和Linux基金會(huì)支持的超級賬本(Hyperleder)\h[2]項(xiàng)目都屬于聯(lián)盟鏈架構(gòu)。聯(lián)盟鏈?zhǔn)且环N需要注冊許可的區(qū)塊鏈,這種區(qū)塊鏈也稱為許可鏈(PermissionedBlockchain)。聯(lián)盟鏈的共識(shí)過程由預(yù)先選好的節(jié)點(diǎn)控制。一般來說,它適合于機(jī)構(gòu)間的交易、結(jié)算或清算等B2B場景。例如在銀行間進(jìn)行支付、結(jié)算、清算的系統(tǒng)就可以采用聯(lián)盟鏈的形式,將各家銀行的網(wǎng)關(guān)節(jié)點(diǎn)作為記賬節(jié)點(diǎn),當(dāng)網(wǎng)絡(luò)上有超過2/3的節(jié)點(diǎn)確認(rèn)一個(gè)區(qū)塊,該區(qū)塊記錄的交易將得到全網(wǎng)確認(rèn)。聯(lián)盟鏈可以根據(jù)應(yīng)用場景來決定對公眾的開放程度。由于參與共識(shí)的節(jié)點(diǎn)比較少,聯(lián)盟鏈一般不采用工作量證明的挖礦機(jī)制,而是多采用權(quán)益證明或PBFT(PracticalByzantineFaultTolerant)、RAFT等共識(shí)算法。聯(lián)盟鏈對交易的確認(rèn)時(shí)間、每秒交易數(shù)都與公共鏈有較大的區(qū)別,對安全和性能的要求也比公共鏈高。聯(lián)盟鏈網(wǎng)絡(luò)由成員機(jī)構(gòu)共同維護(hù),網(wǎng)絡(luò)接入一般通過成員機(jī)構(gòu)的網(wǎng)關(guān)節(jié)點(diǎn)接入。聯(lián)盟鏈平臺(tái)應(yīng)提供成員管理、認(rèn)證、授權(quán)、監(jiān)控、審計(jì)等安全管理功能。2015年成立的R3聯(lián)盟,旨在建立銀行同業(yè)的一個(gè)聯(lián)盟鏈,目前已經(jīng)吸引了40多個(gè)成員,包括世界著名的銀行(如摩根大通、高盛、瑞信、伯克萊、匯豐銀行等),IT巨頭(如IBM、微軟)。銀行間結(jié)算是非常碎片化的流程,每個(gè)銀行各自有一套賬本,對賬困難,有些交易有時(shí)要花幾天才能校驗(yàn)和確認(rèn)。同時(shí),其流動(dòng)性風(fēng)險(xiǎn)很高,在監(jiān)管報(bào)送方面非常繁瑣,也容易出現(xiàn)人為錯(cuò)誤,結(jié)算成本很高。針對這種情況,R3聯(lián)盟構(gòu)建了一個(gè)銀行同業(yè)的聯(lián)盟鏈以解決這些問題。利用區(qū)塊鏈技術(shù),銀行同業(yè)間可以共享一個(gè)統(tǒng)一的賬本,省掉對賬的繁瑣工作,交易可以做到接近實(shí)時(shí)的校驗(yàn)和確認(rèn)、自動(dòng)結(jié)算,同時(shí)監(jiān)管者可以利用密碼學(xué)的安全保證來審計(jì)不可篡改的日志記錄。R3聯(lián)盟將開發(fā)Corda分布式賬本來實(shí)現(xiàn)未來愿景。Corda的名字來源有兩個(gè),該名字前半部分聽起來像accord(協(xié)議),后半部分來自于chord(弦,即圓上兩點(diǎn)間最短的直線)的定義。這個(gè)圓就代表R3聯(lián)盟中的銀行機(jī)構(gòu)。從目前公開的資料來看,Corda具有以下特點(diǎn):·數(shù)據(jù)不一定要全局共享,只有滿足合法需求的一方才能在一個(gè)協(xié)議里訪問數(shù)據(jù);·Corda不用一個(gè)中心化的控制就可以編排聯(lián)盟成員的工作流;·Corda對聯(lián)盟成員之間的每筆交易形成共識(shí),而不是在聯(lián)盟機(jī)構(gòu)的系統(tǒng)層面形成共識(shí);·Corda的設(shè)計(jì)直接支持監(jiān)管者監(jiān)督和合規(guī)性監(jiān)控;·交易由參與交易的機(jī)構(gòu)進(jìn)行驗(yàn)證,而不會(huì)報(bào)告與交易無關(guān)的機(jī)構(gòu);·支持不同的共識(shí)機(jī)制;·明確記錄智能合約與用書面語言撰寫的法律文件之間的關(guān)聯(lián);·采用工業(yè)標(biāo)準(zhǔn)的工具來構(gòu)建Corda平臺(tái);·不設(shè)虛擬貨幣。Corda平臺(tái)注重互操作性和漸進(jìn)部署,不會(huì)將保密信息發(fā)布給第三方。一個(gè)機(jī)構(gòu)可以和對手機(jī)構(gòu)看到一組協(xié)議,并可以保證對手機(jī)構(gòu)看到的是同樣內(nèi)容,同時(shí)報(bào)送給監(jiān)管機(jī)構(gòu)。Corda包括共識(shí)、校驗(yàn)、獨(dú)一性、永恒性和認(rèn)證等功能。3.私有鏈私有鏈則僅在私有組織使用,區(qū)塊鏈上的讀寫權(quán)限、參與記賬權(quán)限按私有組織規(guī)則來制定。私有鏈的應(yīng)用場景一般是企業(yè)內(nèi)部的應(yīng)用,如數(shù)據(jù)庫管理、審計(jì)等。也有一些比較特殊的組織情況,比如在政府行業(yè)的一些應(yīng)用:政府的預(yù)算和執(zhí)行,或者政府的行業(yè)統(tǒng)計(jì)數(shù)據(jù),這個(gè)一般來說由政府登記,但公眾有權(quán)力監(jiān)督。私有鏈的價(jià)值主要是提供安全、可追溯、不可篡改、自動(dòng)執(zhí)行的運(yùn)算平臺(tái),可以同時(shí)防范來自內(nèi)部和外部對數(shù)據(jù)的安全攻擊,這個(gè)在傳統(tǒng)的系統(tǒng)是很難做到的。根據(jù)資料[1]的解讀,央行發(fā)行數(shù)字貨幣可能就是一種私有鏈。和聯(lián)盟鏈類似,私有鏈也是一種許可鏈。幣科學(xué)(CoinScience)公司推出供企業(yè)建立私鏈的多鏈(Multichain)平臺(tái)。它提供保護(hù)隱私和權(quán)限控制的區(qū)塊鏈平臺(tái),來克服在金融行業(yè)里碰到的推廣區(qū)塊鏈技術(shù)的障礙。多鏈的目標(biāo)有以下3個(gè):1)保證區(qū)塊鏈上的活動(dòng)只能由選擇的參與者看到;2)引入機(jī)制來控制哪些交易是被允許的交易;3)提供安全的挖礦機(jī)制,同時(shí)不需要工作量證明以及與其相關(guān)的成本。多鏈把挖礦權(quán)限制在一組實(shí)名的礦工范圍,解決了一直困擾私有鏈解決方案中的一方壟斷挖礦過程的問題。它的解決辦法是限制在同一個(gè)時(shí)間窗口同一礦工能產(chǎn)生的區(qū)塊鏈數(shù)。不像比特幣那樣只支持一條區(qū)塊鏈,多鏈可以方便地配置多條區(qū)塊鏈,并讓用戶同時(shí)用多條鏈。這樣的話,機(jī)構(gòu)用戶可以讓管理員配置區(qū)塊鏈而不需要由區(qū)塊鏈專業(yè)開發(fā)者來做。多鏈讓用戶在一個(gè)配置文件中配置區(qū)塊鏈的所有參數(shù),這些參數(shù)包括:·區(qū)塊鏈的協(xié)議,例如是私有鏈還是像比特幣那樣的公共鏈;·目標(biāo)區(qū)塊產(chǎn)生時(shí)間,例如1分鐘;·權(quán)限,例如所有人能連接,只有一些人能發(fā)送或接收交易;·挖礦的不同形式(只適合于私有鏈);·建立、移除管理員和礦工所需要的共識(shí)的程度,以及在建立期不需要強(qiáng)制執(zhí)行的期限(只適合于私有鏈);·礦工的報(bào)酬,例如每區(qū)塊50個(gè)幣,然后每210000個(gè)區(qū)塊減半付酬;·鄰節(jié)點(diǎn)連接和JSONRPCAPI的IP端口,例如8571、8570;·允許的交易類型,例如paytoaddress、paytomultisig、paytoscripthash等;·最大的區(qū)塊大小,例如1MB;·每個(gè)交易的最大元數(shù)據(jù)(OP_RETURN),例如4KB。多鏈在節(jié)點(diǎn)的“握手”連接過程如下:1)每個(gè)節(jié)點(diǎn)提供它的公共地址,使其他節(jié)點(diǎn)能將它的地址包括在允許連接的清單中;2)每個(gè)節(jié)點(diǎn)驗(yàn)證鄰節(jié)點(diǎn)的地址是在它的授權(quán)連接的節(jié)點(diǎn)清單里;3)每個(gè)節(jié)點(diǎn)發(fā)一個(gè)盤問(Challenge)消息給其他節(jié)點(diǎn);4)每個(gè)節(jié)點(diǎn)發(fā)回一個(gè)回復(fù)盤問信息的簽名,證明擁有他們的對應(yīng)公共地址的私鑰;5)如果雙方對對方回復(fù)不滿意,可隨時(shí)中斷連接。在多鏈里,所有的權(quán)限的授予和回收都是通過包含特殊元數(shù)據(jù)的網(wǎng)絡(luò)交易來實(shí)現(xiàn)的。找到創(chuàng)世區(qū)塊的礦工被自動(dòng)授予所有的權(quán)限,包括管理其他用戶的管理員權(quán)限。管理員通過發(fā)交易給其他用戶,并在交易的輸出中包含授權(quán)用戶的地址以及授權(quán)信息的元數(shù)據(jù)來給其他用戶授予相應(yīng)的權(quán)限。當(dāng)要改變其他用戶的管理和挖礦權(quán)限的時(shí)候,一個(gè)額外的限制條件是要由現(xiàn)有的管理員投票來決定。這些管理員的投票需要登記在不同的交易中,只有當(dāng)足夠的共識(shí)形成之后才能通過改變。多鏈在很多方面的設(shè)計(jì)是為了使得用戶在私鏈和比特幣區(qū)塊鏈能夠進(jìn)行雙向遷移。多鏈?zhǔn)腔诒忍貛藕诵牡囊粋€(gè)分叉。所有的對比特幣的代碼改變都是本地化的改變。未來比特幣的升級功能可以并入多鏈的本地代碼。它基于比特幣的協(xié)議、交易和區(qū)塊鏈架構(gòu),只是在握手協(xié)議上有所改變。其他的功能是通過元數(shù)據(jù),同時(shí)改變交易和區(qū)塊的驗(yàn)證規(guī)則來實(shí)現(xiàn)的。在接口方面與比特幣完全兼容,所有的新功能通過新的命令來提供。它可以做成普通比特幣網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn)。多鏈提供一個(gè)在企業(yè)內(nèi)快速部署私鏈的解決方案??梢杂糜谌缛ブ行幕灰姿?shù)據(jù)庫同步、貨幣結(jié)算、債券發(fā)行和P2P交易、消費(fèi)行業(yè)積分獎(jiǎng)勵(lì)機(jī)制等場景。4.側(cè)鏈比特幣主要是按其設(shè)計(jì)者中本聰?shù)乃枷朐O(shè)計(jì)的一個(gè)虛擬貨幣系統(tǒng),雖然很成功,但是其規(guī)則已經(jīng)相對固定,很難在比特幣上做大的修改,因?yàn)檫@些修改會(huì)引起分叉,影響現(xiàn)有的比特幣用戶。因此,要在比特幣平臺(tái)上做創(chuàng)新或擴(kuò)展是比較困難的。一般來說,大部分代幣系統(tǒng)是通過用比特幣平臺(tái)做基礎(chǔ),重構(gòu)一條區(qū)塊鏈,然后在上面使用新的規(guī)則發(fā)新的虛擬貨幣。這就是目前大部分代幣的做法。然而這些代幣系統(tǒng)要從無到有得到人們的價(jià)值認(rèn)可是非常困難的,通常的辦法是與比特幣掛鉤,相當(dāng)于用比特幣作為儲(chǔ)備來發(fā)行代幣,這樣就可以完成代幣的貨幣價(jià)值認(rèn)可的過程。但隨之而來的問題是,如何自動(dòng)保障代幣和比特幣的掛鉤呢?因?yàn)樘摂M貨幣的一個(gè)特點(diǎn)就是價(jià)格波動(dòng)非常大,一般人都不愿意持有波動(dòng)大、流動(dòng)性差的代幣。一個(gè)直接的想法就是通過比特幣平臺(tái)和代幣平臺(tái)的整合來做到實(shí)時(shí)的掛鉤。2014年,亞當(dāng)·貝克(AdamBack)等作者發(fā)表了一篇論文,題目是《EnablingBlockchainInnovationswithPeggedSidechains》,中文意思是“用與比特幣掛鉤的側(cè)鏈來提供區(qū)塊鏈創(chuàng)新”。其核心觀點(diǎn)是“比特幣”的區(qū)塊鏈在概念上獨(dú)立于作為資產(chǎn)的比特幣。他希望通過技術(shù)能支持在不同的區(qū)塊鏈上轉(zhuǎn)移資產(chǎn),這樣新的系統(tǒng)可以重用原先的比特幣。他提出一個(gè)側(cè)鏈(SideChains)的概念。所謂側(cè)鏈,就是能和比特幣區(qū)塊鏈交互,并與比特幣掛鉤的區(qū)塊鏈。貝克列出了側(cè)鏈的一些屬性:·一個(gè)用戶在一條鏈上的資產(chǎn)被轉(zhuǎn)移到另一條鏈上后,還應(yīng)該可以轉(zhuǎn)移回到原先鏈上的同一用戶名下。·資產(chǎn)轉(zhuǎn)移應(yīng)該沒有對手卷款逃跑的風(fēng)險(xiǎn),也就是不誠實(shí)的用戶沒能力阻礙資產(chǎn)轉(zhuǎn)移的發(fā)生?!べY產(chǎn)的轉(zhuǎn)移必須是原子操作,也就是要么全發(fā)生,要么不發(fā)生。不應(yīng)該出現(xiàn)丟失資產(chǎn)或欺詐性增加資產(chǎn)的情況?!?cè)鏈間應(yīng)該有防火墻。一條側(cè)鏈上的軟件錯(cuò)誤造成鏈上資產(chǎn)的丟失或增加不會(huì)影響另一條鏈上的資產(chǎn)的丟失或增加?!ぜ词乖谫Y產(chǎn)的轉(zhuǎn)移過程中發(fā)生區(qū)塊鏈的重組,也不應(yīng)出現(xiàn)問題。任何因區(qū)塊鏈重組造成的中斷,應(yīng)該局限在本條側(cè)鏈上而不應(yīng)影響其他區(qū)塊鏈。通常側(cè)鏈之間最好能相互獨(dú)立,用戶可以從其他鏈條提供數(shù)據(jù)。只有當(dāng)存在明確的側(cè)鏈的共識(shí)規(guī)則時(shí)才需要去檢查另一條側(cè)鏈來對其驗(yàn)證?!び脩舨粦?yīng)需要跟蹤不經(jīng)常使用的側(cè)鏈。比特幣是大家公認(rèn)的公共鏈,是很多代幣的基礎(chǔ)。但比特幣的設(shè)計(jì)規(guī)則決定了比特幣有一定的局限,例如平均每10分鐘出一個(gè)區(qū)塊,每個(gè)區(qū)塊1MB大小限制,這使得大概每秒才能確認(rèn)7筆交易,這種交易速度而在很多場景下不能滿足業(yè)務(wù)需求。因此,通過側(cè)鏈來提升效率,擴(kuò)展比特幣功能是一個(gè)非常有效的做法。比如,閃電網(wǎng)絡(luò)把很多交易放在側(cè)鏈,只有在做清算時(shí)才用上主鏈,這樣一來可以極大地提升交易速率,又不會(huì)增加主鏈的存儲(chǔ)負(fù)擔(dān)。5.互聯(lián)鏈如圖1-2所示,針對特定領(lǐng)域的應(yīng)用可能會(huì)形成各自垂直領(lǐng)域的區(qū)塊鏈,這些區(qū)塊鏈會(huì)有互聯(lián)互通的需求,這樣這些區(qū)塊鏈也會(huì)通過某種互聯(lián)互通協(xié)議連接起來。與互聯(lián)網(wǎng)一樣,這種區(qū)塊鏈上的互聯(lián)互通就構(gòu)成互聯(lián)鏈,形成區(qū)塊鏈全球網(wǎng)絡(luò)。圖1-2區(qū)塊鏈網(wǎng)絡(luò)示意圖\h[1]R3.2016,/.\h[2]HYPERLEDGER.2016,/.BLOCKSTREAM.2016,/.1.1.4區(qū)塊鏈價(jià)值與應(yīng)用根據(jù)各個(gè)區(qū)塊鏈采取的技術(shù)組合不同,形成的區(qū)塊鏈特點(diǎn)也大不相同。但是需要指出的是,區(qū)塊鏈技術(shù)是一攬子技術(shù),可以根據(jù)業(yè)務(wù)的需要進(jìn)行有針對性的組合和創(chuàng)新。總體來說,去中心化信用機(jī)制是區(qū)塊鏈技術(shù)的核心價(jià)值之一,因此區(qū)塊鏈本身又被稱為“分布式賬本技術(shù)”“去中心化價(jià)值網(wǎng)絡(luò)”等。自古以來,信用和信任機(jī)制就是金融和大部分經(jīng)濟(jì)活動(dòng)的基礎(chǔ),隨著移動(dòng)互聯(lián)網(wǎng)、大數(shù)據(jù)、物聯(lián)網(wǎng)等信息技術(shù)的廣泛應(yīng)用,以及工業(yè)4.0等新一代工業(yè)革命的開啟,網(wǎng)絡(luò)空間的信用作為數(shù)字化社會(huì)的基石的作用顯得更加重要。傳統(tǒng)上,信用機(jī)制是中心化的,而中心化的信任和信用機(jī)制必然導(dǎo)致中心化機(jī)構(gòu)成為價(jià)值鏈的核心,也容易引發(fā)問題。而區(qū)塊鏈技術(shù)則首先在人類歷史上實(shí)現(xiàn)了去中心化的大規(guī)模信用機(jī)制,在消除中心機(jī)構(gòu)“超級信用”的同時(shí),保證信用機(jī)制安全、高效地運(yùn)行。具體來看,區(qū)塊鏈的顛覆性價(jià)值至少包括以下5個(gè)方面。1)簡化流程,提升效率。由于區(qū)塊鏈技術(shù)是參與方之間通過共享共識(shí)的方式建立的公共賬本,形成對網(wǎng)絡(luò)狀態(tài)的共識(shí),因此區(qū)塊鏈中的信息天然就是參與方認(rèn)可的、唯一的、可溯源、不可篡改的信息源,因此原來許多重復(fù)驗(yàn)證的流程和操作就可以簡化,甚至消除,例如銀行間的對賬、結(jié)算、清算等,從而大幅提升操作效率。2)降低交易對手的信用風(fēng)險(xiǎn)。與傳統(tǒng)交易需要信任交易對手不同,區(qū)塊鏈技術(shù)可以使用智能合約等方式,保證交易多方自動(dòng)完成相應(yīng)義務(wù),確保交易安全,從而降低對手的信用風(fēng)險(xiǎn)。3)減少結(jié)算或清算時(shí)間。由于參與方的去中心化信任機(jī)制,區(qū)塊鏈技術(shù)可以實(shí)現(xiàn)實(shí)時(shí)的交易結(jié)算和清算,實(shí)現(xiàn)金融“脫媒”,從而大幅降低結(jié)算和清算成本,減少結(jié)算和清算時(shí)間,提高效率。4)增加資金流動(dòng)性,提升資產(chǎn)利用效率。區(qū)塊鏈的高效性,以及更短的交易結(jié)算和清算時(shí)間,使交易中的資金和資產(chǎn)需要鎖定的時(shí)間減少,從而可以加速資金和資產(chǎn)的流動(dòng),提升價(jià)值的流動(dòng)性。5)提升透明度和監(jiān)管效率,避免欺詐行為。由于區(qū)塊鏈技術(shù)可以更好地將所有交易和智能合約進(jìn)行實(shí)時(shí)監(jiān)控,并且以不可撤銷、不可抵賴、不可篡改方式留存,方便監(jiān)管機(jī)構(gòu)實(shí)現(xiàn)實(shí)時(shí)監(jiān)控和監(jiān)管,也方便參與方實(shí)現(xiàn)自動(dòng)化合規(guī)處理,從而提升透明度,避免欺詐行為,更高效地實(shí)現(xiàn)監(jiān)管。區(qū)塊鏈的創(chuàng)新性最大的特點(diǎn)不在于單點(diǎn)技術(shù),而在于一攬子技術(shù)的組合,在于系統(tǒng)化的創(chuàng)新,在于思維的創(chuàng)新。而正是由于區(qū)塊鏈?zhǔn)欠浅5讓拥摹⑾到y(tǒng)性的創(chuàng)新,區(qū)塊鏈技術(shù)和云計(jì)算、大數(shù)據(jù)、人工智能、量子計(jì)算等新興技術(shù)一起,被認(rèn)為是最具變革性的新興技術(shù)之一。其中,金融服務(wù)領(lǐng)域是即將被顛覆的關(guān)鍵領(lǐng)域之一,除此之外,區(qū)塊鏈還可以被廣泛應(yīng)用于物聯(lián)網(wǎng)、移動(dòng)邊緣計(jì)算等去中心化控制領(lǐng)域,以及智能化資產(chǎn)和共享經(jīng)濟(jì)(如自動(dòng)駕駛汽車、智能門鎖+租賃)等一系列潛在可應(yīng)用的領(lǐng)域。下面我們重點(diǎn)介紹幾類區(qū)塊鏈變革金融服務(wù)的場景。(1)金融領(lǐng)域的結(jié)算和清算以金融領(lǐng)域的結(jié)算和清算為例,全球每年涉及各種類型的金融交易高達(dá)18萬億美元。如圖1-3所示,由于交易雙方互不信任,因此金融機(jī)構(gòu)需要通過處于中心位置的清算結(jié)構(gòu)來完成資產(chǎn)清算和賬本的確認(rèn)。這類涉及多個(gè)交易主體且互不信任的應(yīng)用場景就非常適合使用區(qū)塊鏈技術(shù)。原則上,可以直接在金融之間構(gòu)建聯(lián)盟鏈,那么機(jī)構(gòu)之間只需要共同維護(hù)同一個(gè)聯(lián)盟區(qū)塊鏈,即可實(shí)現(xiàn)資產(chǎn)的轉(zhuǎn)移和交易。圖1-3區(qū)塊鏈去中心化金融服務(wù)示意圖(2)數(shù)字貨幣貨幣是一種價(jià)值存儲(chǔ)和交換的載體,過去都是由中央法定機(jī)構(gòu)集中發(fā)行的。以比特幣為例,正是由于其非中心化的信任機(jī)制,雖然先后經(jīng)歷多次交易所倒閉、“虛擬貨幣”非法使用被查抄、多個(gè)政府禁止使用等危機(jī),但比特幣經(jīng)受住了所有這些考驗(yàn),目前仍能穩(wěn)定運(yùn)行。比特幣的出現(xiàn)和穩(wěn)定運(yùn)行,可以說完全顛覆了人們對于貨幣的認(rèn)識(shí)。相信區(qū)塊鏈技術(shù)或者說分布式賬本技術(shù)會(huì)在數(shù)字貨幣技術(shù)體系中占據(jù)重要地位。(3)跨境支付另一個(gè)區(qū)塊鏈可顛覆的金融服務(wù)就是跨境支付。通??缇持Ц兜劫~時(shí)間長達(dá)幾天甚至一個(gè)星期。除此之外,跨境支付需要雙邊的用戶都向當(dāng)?shù)劂y行提供大量開戶資料和證明,以配合銀行的合規(guī)性要求,參與交易的銀行和中間金融機(jī)構(gòu)還需要定期報(bào)告,以實(shí)現(xiàn)反洗錢等其他合規(guī)性要求。這是一個(gè)典型的涉及多方主題的交易場景,區(qū)塊鏈技術(shù)可以應(yīng)用在多個(gè)環(huán)節(jié)。區(qū)塊鏈技術(shù),一方面可以減少用戶重復(fù)提交證明材料,提升效率,另一方面可以更好地實(shí)現(xiàn)合規(guī)、實(shí)時(shí)性等,大幅提升金融機(jī)構(gòu)的運(yùn)行效率,提升監(jiān)管效率。此外,由于區(qū)塊鏈技術(shù)可以在銀行等金融機(jī)構(gòu)之間直接通過區(qū)塊鏈實(shí)現(xiàn)資金和資產(chǎn)的轉(zhuǎn)移,因此可以去掉高昂的中間費(fèi)用。此外,還可以結(jié)合智能合約等技術(shù),在合約中規(guī)定好實(shí)施支付的條件,在支付的同時(shí)保證義務(wù)的實(shí)施,提升交易的安全性。(4)財(cái)產(chǎn)保險(xiǎn)財(cái)險(xiǎn)是除壽險(xiǎn)之外最大的保險(xiǎn)。傳統(tǒng)上,財(cái)險(xiǎn)理賠是用戶的痛點(diǎn)和成本瓶頸,估計(jì)理賠成本的占比至少高達(dá)保險(xiǎn)公司收入的11%。而且由于理賠過程中用戶需要提供大量的資料,客戶體驗(yàn)往往非常不友好。由于每個(gè)理賠可能會(huì)涉及大量的手工操作,因此需要占用大量的人力、物力來進(jìn)行理賠處理。此外,由于保險(xiǎn)公司各自為政,財(cái)險(xiǎn)理賠還需要對抗保險(xiǎn)欺詐。而區(qū)塊鏈技術(shù)則可以很好地緩解財(cái)險(xiǎn)理賠的用戶痛點(diǎn),降低理賠成本。首先區(qū)塊鏈可以減少客戶提供理賠資料和證明的負(fù)擔(dān),如果資產(chǎn)可以智能化地嵌入智能合約,則資產(chǎn)可具備自動(dòng)啟動(dòng)理賠流程的能力,甚至可以實(shí)現(xiàn)自動(dòng)化理賠,大幅加速理賠過程,改善客戶體驗(yàn),甚至可以在聯(lián)盟成員之間進(jìn)行合理的數(shù)據(jù)共享,有效地發(fā)現(xiàn)和排除保險(xiǎn)欺詐。此外,區(qū)塊鏈技術(shù)的應(yīng)用可以大幅度減少保險(xiǎn)公司對中介代理服務(wù)人員的需求,從而大幅度降低運(yùn)營成本。此外,區(qū)塊鏈還可以廣泛應(yīng)用在物聯(lián)網(wǎng)、邊緣計(jì)算、存在性證明等許多領(lǐng)域,讀者可以參考《Blockchain:Blueprintforaneweconomy》一書。此處,特別強(qiáng)調(diào)的是關(guān)于區(qū)塊鏈的應(yīng)用可能層出不窮,關(guān)鍵還是要理解區(qū)塊鏈技術(shù)的內(nèi)涵和變革原理,深刻體會(huì)區(qū)塊鏈去中心化的系統(tǒng)化思維,從而可以結(jié)合自身對相關(guān)行業(yè)的理解和需求,創(chuàng)造出新的解決方案、新的價(jià)值。1.2區(qū)塊鏈體驗(yàn)區(qū)塊鏈仍然是一個(gè)抽象概念,為了更好地理解區(qū)塊鏈,為本書后續(xù)章節(jié)提供一個(gè)直觀的理解基礎(chǔ),本節(jié)中我們將首先通過交易所購買少量比特幣,然后轉(zhuǎn)移到比特幣錢包中,最后通過錢包實(shí)現(xiàn)比特幣轉(zhuǎn)賬\h[1]。\h[1]體驗(yàn)過程用到的現(xiàn)金可以轉(zhuǎn)回交易所換回現(xiàn)金并提現(xiàn),只會(huì)消耗少量的比特幣作為礦工費(fèi)用。1.2.1獲取比特幣的3種途徑獲取比特幣有3種途徑:一是作為“礦工”挖礦獲得,二是線上“交易所”購買或者線下通過中間人購買,三是作為商家收取比特幣。1.挖礦由于比特幣的獨(dú)特設(shè)計(jì),參與者可以通過計(jì)算能力競爭的方式獲取系統(tǒng)獎(jiǎng)勵(lì)和支付小費(fèi),同時(shí)也維護(hù)著比特幣這個(gè)區(qū)塊鏈的穩(wěn)定運(yùn)轉(zhuǎn),我們把這種算力競爭行為稱為“挖礦”。比特幣價(jià)格的一路攀升。挖礦的設(shè)備和算力也一路升級,如圖1-4所示,從最初的CPU挖礦,到第二代的顯卡挖礦,經(jīng)歷過短暫的FPGA挖礦時(shí)代后,迅速進(jìn)入專用芯片(ASIC)挖礦時(shí)代?!練g迎加入羅友書社,微信羅輯思維,得到APP,樊登讀書會(huì),喜馬拉雅系列海量書籍與您分享】圖1-4比特幣算力增長圖而進(jìn)入ASIC礦機(jī)時(shí)代之后,礦機(jī)芯片的工藝升級速度遠(yuǎn)超摩爾定律的演進(jìn)速度,差不多3個(gè)月時(shí)間就會(huì)進(jìn)化一代,螞蟻礦機(jī)S9是目前新出產(chǎn)的主流挖礦設(shè)備已經(jīng)采用了16nm工藝制造的專用芯片?!巴诘V”今天已經(jīng)成為高度專業(yè)化的細(xì)分產(chǎn)業(yè)。為保證收益,挖礦不僅要求有較高的初始投入,以及更低廉獲取“礦機(jī)”和電力的渠道,還要求有專業(yè)的管理能力。如圖1-5所示,這是一座位于我國西南某處的比特幣礦場。隨著挖礦專業(yè)化程度的提高,礦工往往都是通過聯(lián)合挖礦組成礦池的形式來挖礦的,礦池用來協(xié)調(diào)和分布挖礦的收益,比特幣的算力分布目前前幾大礦池都位于中國。圖1-5比特幣礦場2.線上交易所或者線下撮合獲取比特幣其中線上交易所方面,我國的okcoin、火幣占據(jù)了交易量的絕大多數(shù),兩家交易量占線上交易量的93%以上。線下交易具有更好的匿名性。圖1-6展示的是比特幣歷史交易價(jià)格,可以看到從最初的不到0.1美元到歷史最高點(diǎn)接近1200美元,再到當(dāng)前日期(2016年7月25日)的約660美元。中間經(jīng)歷多次大的價(jià)格波動(dòng)。圖1-6比特幣歷史價(jià)格(對數(shù)坐標(biāo),美元計(jì)價(jià))3.比特幣作為一種支付的手段其優(yōu)勢在于跨境支付等場景下具備非常低的收費(fèi),并且非??旖?。在日常小額支付方面,目前在全球也有一定的市場。目前比特幣作為一種支付手段,主要在歐美等發(fā)達(dá)國家和地區(qū)有比較廣泛的分布。當(dāng)然,由于比特幣價(jià)格的波動(dòng)性,一般商家都會(huì)實(shí)時(shí)將比特幣轉(zhuǎn)換為當(dāng)?shù)刎泿?。比特幣在我國不能作為貨幣支付手段,不能很方便地在銀行匯兌。1.2.2通過交易所購買比特幣在本節(jié)中,我們將通過OKCoin這個(gè)比特幣交易平臺(tái)購買少量比特幣。讀者可以選擇火幣、BTCC等其他平臺(tái)購買獲取比特幣,基本過程是相似的。大部分主流交易平臺(tái)也提供移動(dòng)端App,讀者可以根據(jù)情況選用?!練g迎加入羅友書社,微信羅輯思維,得到APP,樊登讀書會(huì),喜馬拉雅系列海量書籍與您分享】首先,我們需要注冊O(shè)KCoin的賬號(hào),在OKCoin中國站(\h/user/register.do)通過郵箱(或手機(jī)號(hào))注冊即可。如圖1-7所示,填寫郵箱、密碼,并勾選同意服務(wù)條款后,單擊“注冊”按鈕即可完成注冊。注冊成功后可看到注冊成功的頁面,如圖1-8所示。然后開始身份認(rèn)證。根據(jù)相關(guān)條例要求,目前幾乎所有比特幣交易平臺(tái)都會(huì)要求真實(shí)身份認(rèn)證。圖1-7網(wǎng)站注冊頁面圖1-8注冊成功頁面單擊圖1-8中的“開始身份認(rèn)證”按鈕,將會(huì)進(jìn)入如圖1-9所示的提示頁面,可以選擇“個(gè)人用戶”或者“企業(yè)用戶”進(jìn)行認(rèn)證。這里選擇“個(gè)人用戶”這個(gè)類型進(jìn)行認(rèn)證。圖1-9身份認(rèn)證提示頁面如圖1-10所示,正確填寫身份信息并提交就能看到如圖1-11所示的認(rèn)證成功提示。注意,請使用真實(shí)身份信息,如遇到忘記密碼等情形,可能會(huì)需要配合平臺(tái)方提供相關(guān)證明才能進(jìn)行處理。圖1-10個(gè)人身份認(rèn)證頁面單擊“設(shè)置資金密碼”按鈕,就會(huì)進(jìn)入如圖1-12所示的頁面。根據(jù)提示,我們可以選擇手機(jī)認(rèn)證或者Google驗(yàn)證的方式來設(shè)置二次驗(yàn)證的方式。我們選擇Google驗(yàn)證的方式,安裝iOS或者Android版GoogleAuthenticator之后,單擊圖1-13中的“設(shè)置”按鈕,打開App,掃描左邊的條形碼后就能看到OKC的動(dòng)態(tài)密碼了。將App中的動(dòng)態(tài)密碼輸入彈出頁面中,就能看到成功提示頁面,同時(shí)也可看到資金密碼的“設(shè)置”按鈕變?yōu)榭捎?。單擊該按鈕將進(jìn)入如圖1-13所示的資金密碼設(shè)置頁面。圖1-11個(gè)人身份認(rèn)證成功頁面圖1-12二次驗(yàn)證設(shè)置頁面設(shè)置密碼并填寫Google驗(yàn)證的二次驗(yàn)證密碼(如果前面是手機(jī)驗(yàn)證,則是手機(jī)驗(yàn)證碼),就會(huì)看到如圖1-14所示的提示頁面。單擊“前往充值”按鈕進(jìn)入充值頁面,如圖1-15所示。我們選擇“快捷充值”方式,也可以選擇“支付寶充值”或者“網(wǎng)銀匯款充值”的方式。圖1-13資金密碼設(shè)置頁面圖1-14資金密碼設(shè)置成功提示頁面圖1-15充值選擇頁面選擇“快捷充值”后進(jìn)入如圖1-16所示的銀行選擇頁面,根據(jù)個(gè)人情況選擇網(wǎng)銀進(jìn)行充值。我們在這里選擇充值100元用于購買小額的比特幣,未來仍然可以通過交易所換回現(xiàn)金(當(dāng)然可能會(huì)有少量的轉(zhuǎn)賬費(fèi)用和價(jià)格波動(dòng))。圖1-16快捷充值頁面充值成功之后就可以購買比特幣了。我們可以通過“市價(jià)單”快速購買比特幣,如圖1-17所示。圖1-17購買比特幣頁面委托完成后,可以在頁面下方的委托成交記錄中看到交易記錄,如圖1-18所示??梢钥吹剑覀円?389.76元/BTC的價(jià)格成功地通過交易所購買到了0.02個(gè)比特幣。圖1-18委托成交記錄1.2.3比特幣錢包和地址在上節(jié)中,我們通過比特幣交易平臺(tái)購買了少量比特幣。需要指出的是,交易平臺(tái)仍然不屬于中心化的服務(wù)機(jī)構(gòu),在交易平臺(tái)的交易不屬于區(qū)塊鏈(比特幣)之上的交易,其交易和資金的可靠性需要交易平臺(tái)的背書。雖然,目前國內(nèi)運(yùn)營的幾大交易平臺(tái)沒有發(fā)生大的誠信危機(jī),但從比特幣誕生至今也發(fā)生過多次交易所欺詐、倒閉和“跑路”事件,讓不少比特幣擁有者蒙受了巨額經(jīng)濟(jì)損失。為了進(jìn)一步體驗(yàn)比特幣和區(qū)塊鏈的真實(shí)性,我們的體驗(yàn)之旅繼續(xù)。在本節(jié)中,我們將在交易平臺(tái)購買的比特幣轉(zhuǎn)入我們的比特幣“錢包”,并可以在區(qū)塊鏈上查詢到這筆交易。比特幣錢包是一個(gè)形象的概念,比特幣本身由一對數(shù)字密鑰來決定歸屬,因?yàn)閾碛兴借€就能擁有對應(yīng)地址比特幣的處置權(quán),可以說這些私鑰就等于比特幣,我們通常將管理這些數(shù)字密鑰的軟件稱為“錢包”。比特幣錢包,根據(jù)終端類型可以分為桌面錢包、手機(jī)錢包、網(wǎng)頁錢包和硬件錢包。其中硬件錢包(見圖1-19)成本最高,也相對更安全。對于小量比特幣來說,我們可以選用網(wǎng)頁錢包這種輕量級的錢包來存儲(chǔ),而對于較大額度的比特幣,則建議使用更高級的錢包存儲(chǔ)方式。圖1-19比特幣硬件錢包c(diǎn)ase(來源:)我們接下來將選擇開源錢包MultiBitHD桌面版,當(dāng)然讀者也可以選擇其他優(yōu)秀的錢包。在\h/下載對應(yīng)版本的文件后,單擊安裝,并選擇中文作為界面語言。單擊“下一步”按鈕之后,可以進(jìn)入如到圖1-20所示的頁面。圖1-20創(chuàng)建錢包準(zhǔn)備頁面特別需要強(qiáng)調(diào)的是,比特幣不同于銀行賬戶的概念,錢包是幫助我們管理這些私鑰的,同時(shí)也要妥善保管好錢包的恢復(fù)密語和備份數(shù)據(jù)。MulitBitHD錢包使用一種新的密鑰技術(shù),即12個(gè)單詞的密語可以恢復(fù)這個(gè)錢包,如圖1-21所示。所以建議妥善保存這些單詞,而且要離線保存。圖1-21MultiBit錢包密語繼續(xù)按照提示完成后續(xù)操作,包括設(shè)置錢包密碼等。完成之后可以看到如圖1-22所示的創(chuàng)建錢包報(bào)告頁面。圖1-22創(chuàng)建錢包報(bào)告頁面創(chuàng)建完成后打開MultiBit,在發(fā)送/接受頁面選擇接收,可以看到錢包的比特幣地址:1FA97cbn8EbFFRKnVkfFPQ4Z5C8WnFhtpP,如圖1-23所示?;蛘邌螕舻刂窓诤竺娴诙€(gè)圖標(biāo),可以顯示二維碼形式的比特幣地址,這將是我們從交易平臺(tái)購買的比特幣提現(xiàn)地址。圖1-23錢包比特幣地址1.2.4從交易平臺(tái)提取比特幣到錢包首先,我們需要在交易平臺(tái)添加提現(xiàn)地址。登錄OKCoin后,選擇“資金管理”欄目,然后選擇添加地址,正確填寫錢包中的比特幣地址,二次驗(yàn)證碼,如果需要認(rèn)證,則勾選“認(rèn)證地址”復(fù)選框,并填寫資金密碼,如圖1-24所示。單擊“確定”后,平臺(tái)會(huì)向用戶發(fā)送確認(rèn)郵件,確認(rèn)后即可完成提現(xiàn)地址添加。圖1-24添加比特幣提現(xiàn)地址最后一步,在“資金管理”欄目中選擇“BTC提現(xiàn)”選項(xiàng)卡,如圖1-25所示。提現(xiàn)地址可以選擇上面認(rèn)證過的提現(xiàn)地址,數(shù)量為我們能提現(xiàn)的數(shù)量,如0.02BTC(20mBTC)。注意,“網(wǎng)絡(luò)手續(xù)費(fèi)”為網(wǎng)絡(luò)“礦工”維持比特幣區(qū)塊鏈網(wǎng)絡(luò)運(yùn)轉(zhuǎn)的交易費(fèi)獎(jiǎng)勵(lì)。當(dāng)然,為了防止垃圾交易攻擊和提高礦工處理交易的積極性,一般都會(huì)選擇0.1~0.5mBT不等的小費(fèi)(小費(fèi)多少一般根據(jù)交易占用的容量大小而定)。圖1-25比特幣提現(xiàn)頁面目前國內(nèi)的平臺(tái)為了防止被盜,在提現(xiàn)要求提交后,一般都會(huì)由人工處理提現(xiàn)申請,包括電話確認(rèn)提現(xiàn)是本人所操作、確認(rèn)提現(xiàn)的數(shù)量等,確認(rèn)完成后才會(huì)正式處理。等平臺(tái)將交易發(fā)送到比特幣網(wǎng)絡(luò),我們就可以在區(qū)塊鏈上公開看到這筆交易了。我們可以在MultiBit上看到,剛開始的時(shí)候,MultiBit上會(huì)顯示已收到付款,但是是“未確認(rèn)”的,如圖1-26所示。原則上,未確認(rèn)的交易可能存在風(fēng)險(xiǎn),比如發(fā)送者重復(fù)花費(fèi)這部分比特幣,在小額支付的場景下,零確認(rèn)可能也是可以接受的,但是在較大金額的交易中,通常會(huì)選擇等待至少6個(gè)以上的確認(rèn)。圖1-26未確認(rèn)收款1.2.5比特幣交易查詢經(jīng)過比較長的時(shí)間后,我們可以使用和查詢交易的結(jié)果。如圖1-27所示,這筆交易是從一個(gè)有92.22788075的BTC,地址為1EDpd8oYNmKzHJvTrjQnWmkexENB7MXjxK中轉(zhuǎn)出的,剩余的92.20788075BTC轉(zhuǎn)到一個(gè)新地址1KqrkJvjqUmrzzq274wSkMRwbWbXprkNPF。交易在第421416個(gè)區(qū)塊被鎖定,截至寫作時(shí)已經(jīng)經(jīng)歷了1063個(gè)確認(rèn)。圖1-28中的“轉(zhuǎn)入腳本”(也稱為解鎖腳本)和“轉(zhuǎn)出腳本”(也稱為鎖定腳本)就是比特幣的合約腳本,后續(xù)我們將會(huì)在2.1.3節(jié)詳細(xì)介紹。圖1-27BTC提現(xiàn)交易結(jié)果到這里,我們的區(qū)塊鏈(比特幣)初次體驗(yàn)之旅就告一段落了。我們存儲(chǔ)到MultiBit錢包的比特幣可以直接用于支付、捐贈(zèng)、打賞,也可以通過交易平臺(tái)的比特幣充值回流到平臺(tái),再換成人民幣等。1.3本章小結(jié)本章中,我們首先簡單介紹了區(qū)塊鏈的起源和定義,以及區(qū)塊鏈的分類、價(jià)值和應(yīng)用。然后我們通過圖示的方式,以比特幣這個(gè)目前最大的公鏈為例,帶領(lǐng)大家體驗(yàn)比特幣,包括如何獲取比特幣,如何通過交易平臺(tái)購買比特幣,以及如何通過錢包存儲(chǔ)比特幣,最后將交易平臺(tái)的比特幣提取到錢包中,并在區(qū)塊鏈上公開查詢到這筆交易。毋庸置疑,區(qū)塊鏈的發(fā)展已經(jīng)遠(yuǎn)遠(yuǎn)超出了比特幣和數(shù)字貨幣的范疇,可以說,區(qū)塊鏈去中心化的信任機(jī)制和價(jià)值傳遞機(jī)制的變革將極具顛覆性,當(dāng)前區(qū)塊鏈領(lǐng)域的創(chuàng)新才剛剛開始。后續(xù)章節(jié)讓我們一起繼續(xù)關(guān)于區(qū)塊鏈更深入的探索。第2章區(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)對點(diǎn)記賬、數(shù)字加密等方式達(dá)成信用共識(shí),而不需要任何的中央信任機(jī)構(gòu)。在這種技術(shù)下,我們可以建立數(shù)字貨幣、數(shù)字資產(chǎn)、智能財(cái)產(chǎn)以及智能合約等?!練g迎加入羅友書社,微信羅輯思維,得到APP,樊登讀書會(huì),喜馬拉雅系列海量書籍與您分享】通過上一章的介紹,相信大家已經(jīng)對區(qū)塊鏈和比特幣有了初步的認(rèn)識(shí),在本章中,我們將繼續(xù)探討區(qū)塊鏈的技術(shù)細(xì)節(jié)。本章將首先介紹區(qū)塊鏈的相關(guān)基本概念及其運(yùn)作原理,然后介紹區(qū)塊鏈上可以進(jìn)行的操作和相關(guān)細(xì)節(jié),最后再討論區(qū)塊鏈上的交易流程和它的驗(yàn)證過程。2.1區(qū)塊鏈技術(shù)區(qū)塊鏈本質(zhì)上是一個(gè)對等網(wǎng)絡(luò)(peer-to-peer)的分布式賬本數(shù)據(jù)庫。比特幣的底層就采用了區(qū)塊鏈的技術(shù)架構(gòu)。區(qū)塊鏈本身其實(shí)是一串鏈接的數(shù)據(jù)區(qū)塊,其鏈接指針是采用密碼學(xué)哈希算法對區(qū)塊頭進(jìn)行處理所產(chǎn)生的區(qū)塊頭哈希值。每一個(gè)數(shù)據(jù)塊中記錄了一組采用哈希算法組成的樹狀交易狀態(tài)信息,這樣保證了每個(gè)區(qū)塊內(nèi)的交易數(shù)據(jù)不可篡改,區(qū)塊鏈里鏈接的區(qū)塊也不可篡改。2.1.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)力。1.數(shù)據(jù)區(qū)塊比特幣的交易記錄會(huì)保存在數(shù)據(jù)區(qū)塊之中,比特幣系統(tǒng)中大約每10分鐘會(huì)產(chǎn)生一個(gè)區(qū)塊,每個(gè)數(shù)據(jù)區(qū)塊一般包含區(qū)塊頭(Header)和區(qū)塊體(Body)兩部分,如圖2-1所示。圖2-1區(qū)塊結(jié)構(gòu)區(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ì)對每一筆交易進(jìn)行數(shù)字簽名,如此可以確保每一筆交易都不可偽造且沒有重復(fù)交易。所有的交易將通過Merkle樹的Hash過程產(chǎn)生一個(gè)唯一Merkle根值記入?yún)^(qū)塊頭。關(guān)于Merkle樹本章后面將詳細(xì)介紹。如果你使用的是比特幣核心錢包(Bitcoincore),那么每當(dāng)你打開客戶端時(shí),區(qū)塊數(shù)據(jù)文件都會(huì)被同步到電腦硬盤中,可以在blocks文件夾下找到它們。如圖2-2所示的.dat文件就是我們要找的數(shù)據(jù)區(qū)塊文件。圖2-2數(shù)據(jù)區(qū)塊文件我們還可以使用hexdump指令在終端上將數(shù)據(jù)區(qū)塊以十六進(jìn)制的方式顯示出來。我們可以通過解析這些數(shù)據(jù)得出交易記錄、區(qū)塊大小等基本信息,因此我們說區(qū)塊鏈中的數(shù)據(jù)是完全公開透明的。如圖2-3所示,我們使用指令hexdump-n10000-Cblk00000.dat打開了編號(hào)為00000的創(chuàng)世區(qū)塊(比特幣中的第一塊區(qū)塊鏈)。圖2-3用hexdump指令打開的創(chuàng)世區(qū)塊2.挖礦與分叉問題區(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)行對其驗(yàn)證,以防造假。每個(gè)區(qū)塊存著上一個(gè)區(qū)塊的哈希值,可以溯源到源頭,只有經(jīng)過驗(yàn)證后才最終獲得區(qū)塊的交易記賬權(quán)。比特幣系統(tǒng)會(huì)讓挖礦的礦工競爭記賬權(quán)(在主鏈上鏈接區(qū)塊的權(quán)利),這個(gè)競爭機(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ì)工作量證明最大化的備選鏈上,形成更長的新主鏈,并自動(dòng)拋棄分叉處的短鏈,從而解決分叉問題。3.時(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ì)對前一個(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í)間戳可以作為存在性證明(ProofofExistence)的重要參數(shù),它能夠證實(shí)特定數(shù)據(jù)必然在某特定時(shí)刻是的確存在的,這保證了區(qū)塊鏈數(shù)據(jù)庫是不可篡改和不可偽造的,這也為區(qū)塊鏈技術(shù)應(yīng)用于公證、知識(shí)產(chǎn)權(quán)注冊等時(shí)間敏感領(lǐng)域提供了可能。4.分布式數(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ù)庫。5.UTXO交易模式UTXO(UnspentTransactionOutputs)是未花費(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í)這筆輸入也需要上一筆輸出地址所對應(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)前交易是否合法。6.哈希函數(shù)哈希函數(shù)在比特幣系統(tǒng)中也有著重要的應(yīng)用,區(qū)塊鏈中的數(shù)據(jù)并不只是原始數(shù)據(jù)或者交易記錄,還包括它們的哈希函數(shù)值,即將原始數(shù)據(jù)編碼為特定長度的、由數(shù)字和字母組成的字符串后,記入?yún)^(qū)塊鏈。哈希函數(shù)有著很多適合存儲(chǔ)區(qū)塊鏈數(shù)據(jù)的優(yōu)點(diǎn):1)哈希函數(shù)處理過的數(shù)據(jù)是單向性的,通過處理過的輸出值幾乎不可能計(jì)算出原始的輸入值;2)哈希函數(shù)處理不同長度的數(shù)據(jù)所耗費(fèi)的時(shí)間是一致的,輸出值也是定長的;3)哈希函數(shù)的輸入值即使只相差一個(gè)字節(jié),輸出值的結(jié)果也會(huì)迥然不同。比特幣系統(tǒng)中最常采用的哈希函數(shù)是雙SHA256哈希函數(shù),通俗來說就是將不同長度的原始數(shù)據(jù)用兩次SHA256哈希函數(shù)進(jìn)行處理,再輸出長度為256的二進(jìn)制數(shù)字來進(jìn)行統(tǒng)一的識(shí)別和存儲(chǔ)。總之,哈希函數(shù)是比特幣系統(tǒng)中的關(guān)鍵技術(shù),為比特幣系統(tǒng)提供了很多便利。本書后面的章節(jié)將會(huì)對哈希函數(shù)做詳細(xì)介紹,此處不贅述。7.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樹可支持“簡化支付驗(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ì)對Merkle樹做詳細(xì)介紹。圖2-4區(qū)塊中的Merkle樹8.雙重支付雙重支付問題又稱為“雙花”問題,即利用貨幣的數(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)后可以基本上保證比特幣不被雙花。9.P2P網(wǎng)絡(luò)P2P網(wǎng)絡(luò)(peer-to-peernetwork,對等網(wǎng)絡(luò))是一種在對等者(peer)之間分配任務(wù)和工作負(fù)載的分布式應(yīng)用架構(gòu),是對等計(jì)算模型在應(yīng)用層形成的一種組網(wǎng)或網(wǎng)絡(luò)形式。因此,從字面上,P2P可以理解為對等計(jì)算或?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é)點(diǎn)具有同等的地位,不存在任何特殊化的中心節(jié)點(diǎn)和層級結(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)和輕量級節(jié)點(diǎn),全節(jié)點(diǎn)存儲(chǔ)了從創(chuàng)世區(qū)塊以來的所有區(qū)塊鏈數(shù)據(jù)(比特幣網(wǎng)絡(luò)現(xiàn)在大約有幾十GB,且還在不斷增長中)。全節(jié)點(diǎn)的優(yōu)點(diǎn)是進(jìn)行數(shù)據(jù)校驗(yàn)時(shí)不需要依靠別的節(jié)點(diǎn),僅依靠自身就可以完成校驗(yàn)更新等操作,缺點(diǎn)是硬件成本較高。輕量級節(jié)點(diǎn)只需要存儲(chǔ)部分?jǐn)?shù)據(jù)信息,當(dāng)需要?jiǎng)e的數(shù)據(jù)時(shí)可以通過簡易支付驗(yàn)證方式(SimplifiedPaymentVerification,SPV)向鄰近節(jié)點(diǎn)請求所需數(shù)據(jù)來完成驗(yàn)證更新。圖2-5P2P網(wǎng)絡(luò)10.加密算法除了哈希算法以外,比特幣中還存在一種為交易加密的非對稱加密算法(橢圓曲線加密算法)。非對稱加密算法指的就是存在一對數(shù)學(xué)相關(guān)的密鑰,使用其中一個(gè)密鑰進(jìn)行加密的數(shù)據(jù)信息,只有使用另一個(gè)密鑰才能對該信息進(jìn)行解密。這對密鑰中,對外公開的密鑰叫作公鑰,不公開的密鑰就叫作私鑰。打個(gè)比方來說,公鑰就像銀行的賬戶,私鑰就像是該賬戶的密碼或者賬戶所有者的簽名。區(qū)塊鏈之上的有效交易有一個(gè)用于交易發(fā)起方私鑰簽名有效的數(shù)字簽名,而該交易的簽名可以通過使用交易發(fā)起方的公鑰進(jìn)行驗(yàn)證。公鑰可以通過算法從私鑰中計(jì)算得出,但私鑰卻不能從公鑰中推出。比特幣系統(tǒng)中使用的就是一種非常典型的非對稱加密算法——橢圓曲線加密算法(ECC)。如圖2-6所示,比特幣系統(tǒng)一般從操作系統(tǒng)底層的一個(gè)密碼學(xué)安全的隨機(jī)源中取出一個(gè)256位隨機(jī)數(shù)作為私鑰,私鑰總數(shù)為2256個(gè),所以很難通過遍歷所有可能的私鑰得出與公鑰的對應(yīng)的私鑰。用戶使用的私鑰還會(huì)通過SHA256和Base58轉(zhuǎn)換成易書寫和識(shí)別的50位長度的私鑰,公鑰則首先由私鑰和Secp256k1橢圓曲線算法生成65字節(jié)長度的隨機(jī)數(shù)。一般情況下,比特幣錢包的地址也由公鑰所生成,其生成過程為首先將公鑰進(jìn)行SHA256和RIPEMD160雙哈希運(yùn)算,并生成20字節(jié)長度的摘要結(jié)果(即Hash160結(jié)果),這個(gè)將作為比特幣地址的主體(body)信息,再在前面加上版本前綴0x00,在后面添加4個(gè)字節(jié)的地址校驗(yàn)碼。地址校驗(yàn)碼通過對摘要結(jié)果進(jìn)行兩次SHA256運(yùn)算,取哈希值的前4位產(chǎn)生。最后通過Base58處理把連在一起的版本前綴、主體信息和校驗(yàn)碼轉(zhuǎn)換成可以容易讓人識(shí)別的比特幣字符地址。圖2-6比特幣非對稱加密機(jī)制11.數(shù)字簽名數(shù)字簽名就是在信息后面加上另一段內(nèi)容,作為發(fā)送者的證明并且證明信息沒有被篡改。一般是發(fā)送者將信息用哈希算法處理得出一個(gè)哈希值,然后用私鑰對該哈希值進(jìn)行加密,得出一個(gè)簽名。然后發(fā)送者再將信息和簽名一起發(fā)送給接收者。接收者使用發(fā)送者的公鑰對簽名進(jìn)行解密,還原出哈希值,再通過哈希算法來驗(yàn)證信息的哈希值和解密簽名還原出來的哈希值是否一致,從而可以鑒定信息是否來自發(fā)送者或驗(yàn)證信息是否被篡改。12.比特幣的隱私模型傳統(tǒng)隱私模型(見圖2-7)為交易的參與者提供了一定程度的隱私保護(hù),第三方不會(huì)交出交易者的個(gè)人身份信息,公眾所得知的只是某個(gè)人將一定數(shù)量的貨幣發(fā)給了另外一個(gè)人,但是難以將該交易與某個(gè)特定身份的人聯(lián)系起來,公眾無法知道這人到底是誰。這同股票交易所發(fā)布的信息是類似的,每一手股票買賣發(fā)生的時(shí)間、交易量是記錄在案且可供查詢的,但是交易雙方的身份信息卻不予透露。但實(shí)際上,交易雙方的個(gè)人信息是存放在第三方機(jī)構(gòu),所以一定程度上交易參與者的隱私信息還是會(huì)有泄露的風(fēng)險(xiǎn)。圖2-7傳統(tǒng)隱私模型在比特幣的隱私模型(見圖2-8)中,所有的交易不需要第三方的操控,也不需要提供任何身份信息,只需要提供比特幣的地址就可以跟任何人完成一次準(zhǔn)匿名的交易。在一定程度上,交易不可追溯到交易者本身,因此比特幣上的交易可以在一定程度上擺脫監(jiān)管。但通過對區(qū)塊鏈上交易的地址以及交易額做關(guān)聯(lián)分析,也可以獲得有關(guān)交易者的蛛絲馬跡。因此,比特幣的交易還不是純粹的匿名交易機(jī)制,而是準(zhǔn)匿名(pseudo-anonymous)交易機(jī)制?!練g迎加入羅友書社,微信羅輯思維,得到APP,樊登讀書會(huì),喜馬拉雅系列海量書籍與您分享】圖2-8比特幣的隱私模型2.1.2框架與特點(diǎn)1.框架簡介目前大多數(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)行講解,如圖2-9所示。圖2-9區(qū)塊鏈基礎(chǔ)架構(gòu)首先,在網(wǎng)絡(luò)層之上,區(qū)塊鏈?zhǔn)墙⒃贗P通信協(xié)議和對等網(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í)才有可能對區(qū)塊鏈進(jìn)行重組以修改賬本信息。由于比特幣系統(tǒng)的設(shè)計(jì)者中本聰在系統(tǒng)設(shè)計(jì)中巧妙地加入了帶有經(jīng)濟(jì)激勵(lì)的挖礦工作量證明(PoW)機(jī)制,使得即使擁有網(wǎng)絡(luò)51%以上算力的人也不會(huì)損害其自身利益而發(fā)起對網(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ì)對傳統(tǒng)支付業(yè)務(wù)進(jìn)行顛覆式改進(jìn)?;ㄆ煦y行也明確指出,到2020年,如果各大金融機(jī)構(gòu)都使用區(qū)塊鏈技術(shù),每年能夠節(jié)省超過200億美元的成本。國信證券分析報(bào)告指出,通過區(qū)塊鏈的點(diǎn)對點(diǎn)分布式的時(shí)間戳服務(wù)器來生成依照時(shí)間前后排列并加以記錄的電子交易證明,可以解決雙重支付問題,從而帶來結(jié)算成本趨零的可能性。根據(jù)德國銀行的一份引用波士頓咨詢的研究報(bào)告,歐洲銀行的IT成本支出平均占據(jù)銀行整體運(yùn)行成本的16%\h[1]。一個(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)上對數(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)建高級的智能合約、貨幣和去中心化應(yīng)用。例如,以太坊(Ethereum)平臺(tái)即提供了圖靈完備的腳本語言,供用戶來構(gòu)建任何可以精確定義的智能合約或交易類型。關(guān)于以太坊的更多內(nèi)容請參考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ù)采用非對稱密碼學(xué)原理對交易進(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(PublicKeyInfrastructure)的第三方認(rèn)證中心(CertificateAuthority,CA)頒發(fā)數(shù)字證書來確認(rèn)身份。通過在全網(wǎng)節(jié)點(diǎn)運(yùn)行共識(shí)算法,建立網(wǎng)絡(luò)中誠實(shí)節(jié)點(diǎn)對全網(wǎng)狀態(tài)的共識(shí),間接地建立了節(jié)點(diǎn)間的信任。用戶只需要公開地址,不需要公開真實(shí)身份,而且同一個(gè)用戶可以不斷變換地址。因此,在區(qū)塊鏈上的交易不和用戶真實(shí)身份掛鉤,只是和用戶的地址掛鉤,具有交易的準(zhǔn)匿名性。。區(qū)塊鏈技術(shù)的核心優(yōu)勢是去中心化,能夠通過運(yùn)用哈希算法、數(shù)字簽名、時(shí)間戳、分布式共識(shí)和經(jīng)濟(jì)激勵(lì)等手段,在節(jié)點(diǎn)無需互相信任的分布式系統(tǒng)中建立信用,實(shí)現(xiàn)點(diǎn)對點(diǎn)交易和協(xié)作,從而為中心化機(jī)構(gòu)普遍存在的高成本、低效率和數(shù)據(jù)存儲(chǔ)不安全等問題提供了解決方案。近年來,伴隨著國內(nèi)外研究機(jī)構(gòu)對區(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)變。2.1.3區(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)力。區(qū)塊鏈的鏈接模型如圖2-10所示。圖2-10區(qū)塊鏈的鏈接模型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)PoWPoW(工作量證明),也就是像比特幣的挖礦機(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)形成對當(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á)成一致?!と秉c(diǎn):目前比特幣挖礦造成大量的資源浪費(fèi);另外挖礦的激勵(lì)機(jī)制也造成礦池算力的高度集中,背離了當(dāng)初去中心化設(shè)計(jì)的初衷。更大的問題是PoW機(jī)制的共識(shí)達(dá)成的周期較長,每秒只能最多做7筆交易,不適合商業(yè)應(yīng)用。(2)PoSPoS權(quán)益證明,要求節(jié)點(diǎn)提供擁有一定數(shù)量的代幣證明來獲取競爭區(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ī)制中,擁有最多鏈齡長的比特幣獲得記賬權(quán)的幾率就越大。NXT和Blackcoin則采用一個(gè)公式來預(yù)測下一個(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)?!と秉c(diǎn):破壞者對網(wǎng)絡(luò)攻擊的成本低,網(wǎng)絡(luò)的安全性有待驗(yàn)證。另外擁有代幣數(shù)量大的節(jié)點(diǎn)獲得記賬權(quán)的幾率更大,會(huì)使得網(wǎng)絡(luò)的共識(shí)受少數(shù)富裕賬戶支配,從而失去公正性。(3)DPoSDPoS(股份授權(quán)證明)機(jī)制,類似于董事會(huì)投票。比特股(bitshares)采用的PoS機(jī)制是持股者投票選出一定數(shù)量的見證人,每個(gè)見證人按序有兩秒的權(quán)限時(shí)間生成區(qū)塊,若見證人在給定的時(shí)間片不能生成區(qū)塊,區(qū)塊生成權(quán)限交給下一個(gè)時(shí)間片對應(yīng)的見證人。持股人可以隨時(shí)通過投票更換這些見證人。DPoS的這種設(shè)計(jì)使得區(qū)塊的生成更為快速,也更加節(jié)能。·優(yōu)點(diǎn):大幅縮小參與驗(yàn)證和記賬節(jié)點(diǎn)的數(shù)量,可以達(dá)到秒級的共識(shí)驗(yàn)證。·缺點(diǎn):選舉固定數(shù)量的見證人作為記賬候選人有可能不適合于完全去中心化的場景。另外在網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)少的場景,選舉的見證人的代表性也不強(qiáng)。(4)分布式一致性算法分布式一致性算法是基于傳統(tǒng)的分布式一致性技術(shù)。其中有分為解決拜占庭將軍問題的拜占庭容錯(cuò)算法,如PBFT。另外解決非拜占庭問題的分布式一致性算法(Pasox、Raft),詳細(xì)見本書第5章的共識(shí)算法。該類算法目前是聯(lián)盟鏈和私有鏈鏈場景中常用的共識(shí)機(jī)制?!?yōu)點(diǎn):實(shí)現(xiàn)秒級的快速共識(shí)機(jī)制,保證一致性?!と秉c(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),位于交易的輸出。解鎖腳本與鎖定腳本相對應(yīng),只有滿足鎖定腳本要求的條件,才能花掉這個(gè)腳本上對應(yīng)的資產(chǎn),位于交易的輸入。通過腳本語言可以表達(dá)很多靈活的條件。解釋腳本是通過類似我們編程領(lǐng)域里的“虛擬機(jī)”,它分布式運(yùn)行在區(qū)塊鏈網(wǎng)絡(luò)里的每一個(gè)節(jié)點(diǎn)。比特幣的腳本目前常用的主要分為兩種,一種是普通的P2PKH(Pay-to-Public-Key-Hash),即支付給公鑰的哈希地址,接收方只需要使用地址對應(yīng)的私鑰對該輸出進(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ī)則如下:Pubkeyscript:OP_DUPOP_HASH160<Pub

溫馨提示

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

評論

0/150

提交評論