網(wǎng)上有很多關(guān)于pos機(jī)解技術(shù),最全的區(qū)塊鏈技術(shù)原理的知識,也有很多人為大家解答關(guān)于pos機(jī)解技術(shù)的問題,今天pos機(jī)之家(m.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機(jī)解技術(shù)
一、區(qū)塊鏈的基本概念
區(qū)塊鏈(Blockchain)技術(shù)的產(chǎn)生和發(fā)展離不開比特幣。首先,因為隨著比特幣的誕生,區(qū)塊鏈技術(shù)才得以公布于眾;其次,比特幣是截至目前區(qū)塊鏈技術(shù)最成功、最成熟的應(yīng)用案例。比特幣的概念由中本聰在2008年發(fā)表的論文《比特幣:一種點(diǎn)對點(diǎn)的電子現(xiàn)金系統(tǒng)》中首次提出。文中,中本聰將區(qū)塊鏈技術(shù)作為構(gòu)建比特幣數(shù)據(jù)結(jié)構(gòu)及交易體系的基礎(chǔ)技術(shù),將比特幣打造為一種數(shù)字貨幣和在線支付系統(tǒng),利用加密技術(shù)實現(xiàn)資金轉(zhuǎn)移,而不再依賴于中央銀行。比特幣使用公鑰地址發(fā)送和接收比特幣,并進(jìn)行交易記錄,從而實現(xiàn)個人身份信息的匿名。交易確認(rèn)的過程則需要用戶貢獻(xiàn)算力,共同對交易進(jìn)行共識確認(rèn),從而將交易記錄到全網(wǎng)公開賬本中。用戶可以利用電腦、手機(jī)等發(fā)送或接收比特幣,并選擇交易費(fèi)用?,F(xiàn)有逾百種加密數(shù)字貨幣(未來幣、點(diǎn)點(diǎn)幣、萊特幣、狗狗幣等),比特幣約占所有加密數(shù)字貨幣市值的90%。
比特幣的區(qū)塊鏈畢竟是為比特幣體系的設(shè)計而定制,因此比特幣的區(qū)塊鏈技術(shù)并不等于區(qū)塊鏈技術(shù)。區(qū)塊鏈技術(shù)應(yīng)該是可以有更多種形態(tài)、更多種體系、更多種用途、更多種規(guī)格的技術(shù),其概念為:區(qū)塊鏈?zhǔn)且粋€去中心化的分布式數(shù)據(jù)庫,該數(shù)據(jù)庫由一串使用密碼學(xué)方法產(chǎn)生的數(shù)據(jù)區(qū)塊有序鏈接而成,區(qū)塊中包含有一定時間內(nèi)產(chǎn)生的無法被篡改的數(shù)據(jù)記錄信息。區(qū)塊中包含數(shù)據(jù)記錄、當(dāng)前區(qū)塊根哈希(Hash)、前一區(qū)塊根哈希、時間戳以及其他信息(圖2-1)。數(shù)據(jù)記錄的類型可以根據(jù)場景決定,比如資產(chǎn)交易記錄、資產(chǎn)發(fā)行記錄、清算記錄、智能合約記錄甚至物聯(lián)網(wǎng)數(shù)據(jù)記錄等。數(shù)據(jù)記錄在存儲過程中,通常組織為樹形式,比如默克爾樹,而區(qū)塊根哈希實際就是數(shù)據(jù)記錄樹的根節(jié)點(diǎn)哈希,為根據(jù)數(shù)據(jù)記錄樹自下而上逐步通過SHA-256等哈希算法計算得出。時間戳為區(qū)塊的生成時間。其他信息包括區(qū)塊簽名信息、隨機(jī)值等信息,也可根據(jù)具體應(yīng)用場景靈活定義。區(qū)塊鏈技術(shù)不是一種單一的技術(shù),而是多種技術(shù)整合的結(jié)果,包括密碼學(xué)、數(shù)學(xué)、經(jīng)濟(jì)學(xué)、網(wǎng)絡(luò)科學(xué)等。這些技術(shù)以特定方式組合在一起,形成了一種新的去中心化數(shù)據(jù)記錄與存儲體系,并給存儲數(shù)據(jù)的區(qū)塊打上時間戳使其形成一個連續(xù)的、前后關(guān)聯(lián)的誠實數(shù)據(jù)記錄存儲結(jié)構(gòu),最終目的是建立一個保證誠實的數(shù)據(jù)系統(tǒng),可將其稱為能夠保證系統(tǒng)誠實的分布式數(shù)據(jù)庫。在這個系統(tǒng)中,只有系統(tǒng)本身是值得信任的,所以數(shù)據(jù)記錄、存儲與更新規(guī)則是為建立人們對區(qū)塊鏈系統(tǒng)的信任而設(shè)計。誠實意味著系統(tǒng)可以被信任,正是商業(yè)活動和應(yīng)用推廣的前提,所以區(qū)塊鏈技術(shù)已經(jīng)被很多領(lǐng)域主流機(jī)構(gòu)看中并非是沒有理由的。因為有了區(qū)塊鏈技術(shù),在一個誠信的系統(tǒng)里,可以省去許多煩瑣的審查手續(xù),許多因數(shù)據(jù)缺乏透明度而無法開展的業(yè)務(wù)可以開展,甚至社會的自動化程度也將大幅提升。
近年來,包括高盛、摩根大通和納斯達(dá)克等金融機(jī)構(gòu)開始展開對區(qū)塊鏈技術(shù)的重點(diǎn)研究。這些機(jī)構(gòu)的金融業(yè)務(wù)大都具有標(biāo)準(zhǔn)化程度高、連續(xù)性強(qiáng)、自動化需求大、業(yè)務(wù)對信用度要求高等特點(diǎn),跟區(qū)塊鏈的優(yōu)勢高度契合。同時,在供應(yīng)鏈金融中,由于物流、資金流和信息流的復(fù)雜安排會涉及眾多單據(jù),因此使用電子商務(wù)平臺記賬會大大節(jié)省紙質(zhì)單據(jù)所需要的時間和成本,然而使用誰的電子商務(wù)平臺就成為一個大問題。如果使用利益相關(guān)各方自建的電子商務(wù)平臺,數(shù)據(jù)的真實性就很容易受到質(zhì)疑,而自建電子商務(wù)平臺往往耗資不菲;如果使用第三方的電子商務(wù)平臺,第三方的經(jīng)營穩(wěn)定性和信息安全性又難以保證,比如因財務(wù)、政策、網(wǎng)絡(luò)攻擊等各種情況引起不穩(wěn)定問題等,溝通協(xié)調(diào)成本和風(fēng)險也會大幅增加。區(qū)塊鏈技術(shù)的安全性、不可逆、不可篡改性和透明性都已經(jīng)得到了證明,如果能把供應(yīng)鏈金融業(yè)務(wù)直接建立在這樣已被證明其可靠性的區(qū)塊鏈上,將極大地降低安全和信用成本。所以,盡管目前電子商務(wù)平臺的使用已經(jīng)大大節(jié)約了成本,但如果能有一個具有公信力的類似區(qū)塊鏈公共信用系統(tǒng),成本仍有進(jìn)一步節(jié)約的空間。從政府層面來說,這一點(diǎn)也很重要,因為提供值得大眾信任的系統(tǒng)本身就是政府職能的一部分。中國的資本運(yùn)用效率遠(yuǎn)低于美國的一個非常重要的原因就是社會的信用體系不健全、信息不透明、部門協(xié)調(diào)成本過高,且利益保護(hù)現(xiàn)象嚴(yán)重。如果能從技術(shù)上應(yīng)用區(qū)塊鏈,就可以用較低的成本打破這些阻礙,建立一個公開的社會公共信用系統(tǒng),整個社會成本都將大幅降低,效率也將大幅提升,還便于監(jiān)管。透明的數(shù)據(jù)不僅將大大降低監(jiān)管部門的工作量(很大一部分工作量轉(zhuǎn)移給了社會監(jiān)督,任何異動都很難逃過眾人的眼睛),而且使得監(jiān)管部門的主要工作轉(zhuǎn)向治理,提升治理人性化和效率。
盡管使用區(qū)塊鏈技術(shù)所建立的系統(tǒng)本身是誠實可信的,但這并不意味著來自系統(tǒng)以外的輸入信息就是誠實的,更多的時候只是意味著區(qū)塊鏈誠實記錄并儲存了這些外部數(shù)據(jù)。比如認(rèn)證,認(rèn)證工作往往是在線下完成,即使區(qū)塊鏈能夠存儲文字、圖片甚至多媒體信息,也并不意味著那些信息都是真實的。這只意味著區(qū)塊鏈真實記錄并存儲了這些信息,防止被篡改,如果發(fā)生業(yè)務(wù)糾紛時可以作為憑證??赡茉S多人沒有注意到這一點(diǎn),自動化是區(qū)塊鏈技術(shù)的一個非常重要的特性,區(qū)塊鏈網(wǎng)絡(luò)實際上就是一個接近于自動化或存在完全自動化可能性的網(wǎng)絡(luò)。這一點(diǎn)之所以重要,一方面,是因為自動化是金融機(jī)構(gòu)青睞區(qū)塊鏈技術(shù)的重要原因,金融交易需要網(wǎng)絡(luò)能夠自動記錄和存儲交易數(shù)據(jù),也能夠允許參與者通過設(shè)置條件在網(wǎng)絡(luò)上自動進(jìn)行和完成交易;另一方面,區(qū)塊鏈技術(shù)在這方面提供的可能性為社會生產(chǎn)效率的大幅提升留下了廣闊的空間,也為智能合約等一系列高級應(yīng)用留下了充足的余地。在理想情況下,區(qū)塊鏈技術(shù)最終能夠同物聯(lián)網(wǎng)結(jié)合起來。
總體而言,區(qū)塊鏈的發(fā)展體系可以劃分為四個象限。第一象限是比特幣區(qū)塊鏈;
第二象限是使用比特幣區(qū)塊鏈協(xié)議,但不使用比特幣貨幣的系統(tǒng),比如萬事達(dá)幣、彩色幣、合約幣,以及采用合并挖礦的域名幣等;第三象限是同時使用獨(dú)立貨幣和獨(dú)立區(qū)塊鏈的系統(tǒng),比如以太坊、瑞波、萊特幣和未來幣等;第四象限是側(cè)鏈,采用獨(dú)立的網(wǎng)絡(luò)但以比特幣作為底層貨幣的系統(tǒng),如BTC Relay等。
(一)區(qū)塊鏈的分類
目前已知的區(qū)塊鏈技術(shù)應(yīng)用大致分為三類。
1. 公共區(qū)塊鏈(Public Blockchain):是指全世界任何人都可讀取、可發(fā)送交易進(jìn)行有效性確認(rèn),任何人都能參與其共識過程的區(qū)塊鏈(共識過程是維持區(qū)塊鏈這種分布式數(shù)據(jù)庫一致性、準(zhǔn)確性的關(guān)鍵技術(shù),將在后續(xù)章節(jié)詳細(xì)介紹)。區(qū)塊鏈上的數(shù)據(jù)記錄公開,所有人都可以訪問,都可以發(fā)出交易請求,并通過驗證被寫入?yún)^(qū)塊鏈。共識過程的參與者通過密碼學(xué)技術(shù)共同維護(hù)公共區(qū)塊鏈數(shù)據(jù)的安全、透明、不可篡改。公共區(qū)塊鏈的典型應(yīng)用包括比特幣、以太坊等。
公共區(qū)塊鏈?zhǔn)峭耆植际降膮^(qū)塊鏈,區(qū)塊鏈數(shù)據(jù)公開,用戶參與程度高,同時易于產(chǎn)生網(wǎng)絡(luò)效應(yīng),便于應(yīng)用推廣。然而,系統(tǒng)的運(yùn)行需要依賴于內(nèi)建的激勵機(jī)制。公共區(qū)塊鏈上試圖保存的數(shù)據(jù)越有價值,越要審視其安全性以及安全性帶來的交易成本、系統(tǒng)可擴(kuò)展性問題。
2. 共同體區(qū)塊鏈(Consortium Blockchains):又稱聯(lián)盟鏈,是指參與區(qū)塊鏈的節(jié)點(diǎn)是事先選擇好的,節(jié)點(diǎn)間通常有良好的網(wǎng)絡(luò)連接等合作關(guān)系,區(qū)塊鏈上的數(shù)據(jù)可以是公開的也可以是內(nèi)部的,為部分意義上的分布式,可視為“部分去中心化”。比如有若干家金融機(jī)構(gòu)之間建立了某個共同體區(qū)塊鏈,每個機(jī)構(gòu)都運(yùn)行著一個節(jié)點(diǎn),而且為了使每個區(qū)塊生效需要獲得至少其中10個機(jī)構(gòu)的確認(rèn)。區(qū)塊鏈可以允許每個機(jī)構(gòu)可讀取,或者只受限于共識驗證參與者,或走混合型路線,例如區(qū)塊的根哈希及應(yīng)用程序接口對外公開,允許外界用來進(jìn)行區(qū)塊鏈數(shù)據(jù)和區(qū)塊鏈狀態(tài)信息查詢等。其典型應(yīng)用包括超級賬本(Hyperledger)、區(qū)塊鏈聯(lián)盟R3CEV等。
共同體區(qū)塊鏈的參與節(jié)點(diǎn)間的連接狀態(tài)較好、驗證效率較高,只需較低的成本即可維持運(yùn)行,提供高速交易處理的同時降低交易費(fèi)用,有很好的擴(kuò)展性,數(shù)據(jù)可以保持一定的隱私性。但是這也意味著在共識達(dá)成的前提下,參與節(jié)點(diǎn)可以一起篡改數(shù)據(jù)。
3. 私有區(qū)塊鏈(Private Blockchain):參與的節(jié)點(diǎn)只有有限的范圍,比如特定機(jī)構(gòu)的自身用戶等,數(shù)據(jù)的訪問及使用有嚴(yán)格的權(quán)限管理。完全私有的區(qū)塊鏈中寫入權(quán)限僅在參與者手里,讀取權(quán)限可以對外開放,也可以進(jìn)行任意程度的限制。相關(guān)的應(yīng)用囊括數(shù)據(jù)庫管理、數(shù)據(jù)庫審計甚至公司管理,盡管在有些情況下希望私有區(qū)塊鏈可以具有公共的可審計性,但在更多的情況下,沒有公共的可讀性。由于是私有用戶說了算,里面的數(shù)據(jù)沒有無法篡改的特性,對于第三方的保障力度大大降低。因此,目前很多私有區(qū)塊鏈會通過依附在比特幣等已有區(qū)塊鏈的方式存在,定期將系統(tǒng)快照數(shù)據(jù)記錄到比特幣等系統(tǒng)中。其典型應(yīng)用如Eris Industries。
私有區(qū)塊鏈可以帶來規(guī)則的改變。如果需要的話,運(yùn)行著私有區(qū)塊鏈的機(jī)構(gòu)可以很容易地修改區(qū)塊鏈的規(guī)則、回滾交易。這一點(diǎn)似乎略有違背區(qū)塊鏈的本質(zhì),但是卻適用于一些特殊場景需求。由于私有區(qū)塊鏈驗證者是內(nèi)部公開的,所以并不存在部分驗證節(jié)點(diǎn)共謀進(jìn)行51%攻擊的風(fēng)險。私有區(qū)塊鏈交易成本更低。交易只需被幾個受信的高算力節(jié)點(diǎn)驗證即可,而不是需要數(shù)萬個節(jié)點(diǎn)的確認(rèn),因此交易成本會低。但從長遠(yuǎn)來看,隨著區(qū)塊鏈技術(shù)的進(jìn)步,公共區(qū)塊鏈的成本將可能降低1~2個數(shù)量級,大致與高效的私有區(qū)塊鏈系統(tǒng)類似。私有區(qū)塊鏈節(jié)點(diǎn)間連接情況好、故障可以迅速通過人工干預(yù)來修復(fù),從而提升交易速度并可以更好地保護(hù)隱私。
公共區(qū)塊鏈、共同體區(qū)塊鏈和私有區(qū)塊鏈各有優(yōu)勢。公共區(qū)塊鏈很難實現(xiàn)得很完美,共同體區(qū)塊鏈、私有區(qū)塊鏈需要找到實際迫切需求的應(yīng)用需求和場景。至于具體選擇哪套方案取決于具體需求,有時使用公共區(qū)塊鏈會更好,但有時又需要一定的私有控制,適用于使用共同體區(qū)塊鏈或私有區(qū)塊鏈。(二)區(qū)塊鏈的特征
1. 去中心化
去中心化是區(qū)塊鏈最基本的特征,意味著區(qū)塊鏈不再依賴于中央處理節(jié)點(diǎn),實現(xiàn)了數(shù)據(jù)的分布式記錄、存儲和更新。由于使用分布式存儲和算力,不存在中心化的硬件或管理機(jī)構(gòu),全網(wǎng)節(jié)點(diǎn)的權(quán)利和義務(wù)均等,系統(tǒng)中的數(shù)據(jù)本質(zhì)是由全網(wǎng)節(jié)點(diǎn)共同維護(hù)的。由于每個區(qū)塊鏈節(jié)點(diǎn)都必須遵循同一規(guī)則,而該規(guī)則基于密碼算法而非信用,同時每次數(shù)據(jù)更新需要網(wǎng)絡(luò)內(nèi)其他用戶的批準(zhǔn),所以不需要一套第三方中介結(jié)構(gòu)或信任機(jī)構(gòu)背書。在傳統(tǒng)的中心化網(wǎng)絡(luò)中,對一個中心節(jié)點(diǎn)實行攻擊即可破壞整個系統(tǒng),而在一個去中心化的區(qū)塊鏈網(wǎng)絡(luò)中,攻擊單個節(jié)點(diǎn)無法控制或破壞整個網(wǎng)絡(luò),掌握網(wǎng)內(nèi)超過51%的節(jié)點(diǎn)只是獲得控制權(quán)的開始而已。
2. 透明性
區(qū)塊鏈系統(tǒng)的數(shù)據(jù)記錄對全網(wǎng)節(jié)點(diǎn)是透明的,數(shù)據(jù)記錄的更新操作對全網(wǎng)節(jié)點(diǎn)也是透明的,這是區(qū)塊鏈系統(tǒng)值得信任的基礎(chǔ)。由于區(qū)塊鏈系統(tǒng)使用開源的程序、開放的規(guī)則和高參與度,區(qū)塊鏈數(shù)據(jù)記錄和運(yùn)行規(guī)則可以被全網(wǎng)節(jié)點(diǎn)審查、追溯,具有很高的透明度。
3. 開放性
區(qū)塊鏈系統(tǒng)是開放的,除了數(shù)據(jù)直接相關(guān)各方的私有信息被加密外,區(qū)塊鏈的數(shù)據(jù)對所有人公開(具有特殊權(quán)限要求的區(qū)塊鏈系統(tǒng)除外)。任何人或參與節(jié)點(diǎn)都可以通過公開的接口查詢區(qū)塊鏈數(shù)據(jù)記錄或者開發(fā)相關(guān)應(yīng)用,因此整個系統(tǒng)信息高度透明。
4. 自治性
區(qū)塊鏈采用基于協(xié)商一致的規(guī)范和協(xié)議,使整個系統(tǒng)中的所有節(jié)點(diǎn)能夠在去信任的環(huán)境自由安全地交換數(shù)據(jù)、記錄數(shù)據(jù)、更新數(shù)據(jù),把對個人或機(jī)構(gòu)的信任改成對體系的信任,任何人為的干預(yù)都將不起作用。
5. 信息不可篡改
區(qū)塊鏈系統(tǒng)的信息一旦經(jīng)過驗證并添加至區(qū)塊鏈后,就會得到永久存儲,無法更改(具備特殊更改需求的私有區(qū)塊鏈等系統(tǒng)除外)。除非能夠同時控制系統(tǒng)中超過51%的節(jié)點(diǎn),否則單個節(jié)點(diǎn)上對數(shù)據(jù)庫的修改是無效的,因此區(qū)塊鏈的數(shù)據(jù)穩(wěn)定性和可靠性極高。
6. 匿名性
區(qū)塊鏈技術(shù)解決了節(jié)點(diǎn)間信任的問題,因此數(shù)據(jù)交換甚至交易均可在匿名的情況下進(jìn)行。由于節(jié)點(diǎn)之間的數(shù)據(jù)交換遵循固定且預(yù)知的算法,因而其數(shù)據(jù)交互是無須信任的,可以基于地址而非個人身份進(jìn)行,因此交易雙方無須通過公開身份的方式讓對方產(chǎn)生信任。
二、區(qū)塊鏈的工作原理
(一)拜占庭將軍問題
拜占庭將軍問題是容錯計算中的一個老問題,由萊斯利·蘭伯特(Leslie Lamport)等人在1982年提出。拜占庭帝國是5~15世紀(jì)的東羅馬帝國,即現(xiàn)在的土耳其。拜占庭城邦擁有巨大的財富,使它的十個鄰邦垂涎已久。但是拜占庭高墻聳立,固若金湯,沒有一個單獨(dú)的鄰邦能夠成功入侵。任何單個城邦的入侵行動都會失敗,而入侵者的軍隊也會被殲滅,使其自身反而容易遭到其他九個城邦的入侵。這十個鄰邦之間也互相覬覦對方的財富并經(jīng)常爆發(fā)戰(zhàn)爭。拜占庭的防御能力如此之強(qiáng),十個鄰邦中的至少一半同時進(jìn)攻,才能攻破。也就是說,如果六個或者更多的鄰邦一起進(jìn)攻,就會成功并獲得拜占庭的財富。然而,如果其中有一個或者更多鄰邦發(fā)生背叛,答應(yīng)一起入侵但在其他人進(jìn)攻的時候又不干了,會導(dǎo)致只有五支或者更少的軍隊在同時進(jìn)攻,那么所有的進(jìn)攻軍隊都會被殲滅,并隨后被其他鄰邦所劫掠。因此,這是一個由不互相信任的各個鄰邦構(gòu)成的分布式網(wǎng)絡(luò),每一方都小心行事,因為稍有不慎,就會給自己帶來災(zāi)難。為了獲取拜占庭的巨額財富,這些鄰邦分散在拜占庭的周圍,依靠士兵相互通信來協(xié)商進(jìn)攻目標(biāo)及進(jìn)攻時間。這些鄰邦將軍想要攻克拜占庭,都面臨著一個困擾,也就是拜占庭將軍問題。
鄰邦將軍不確定他們中是否有叛徒,叛徒可能擅自變更進(jìn)攻意向或者進(jìn)攻時間。在這種狀態(tài)下,將軍們能否找到一種分布式協(xié)議進(jìn)行遠(yuǎn)程協(xié)商,進(jìn)而贏取拜占庭城堡攻克戰(zhàn)役的勝利呢?這就是拜占庭將軍問題。
針對拜占庭將軍問題的解決方法包括:口頭協(xié)議算法、書面協(xié)議算法等??陬^協(xié)議算法的核心思想如下:要求每個被發(fā)送的消息都能被正確投遞,信息接收者知道消息的發(fā)送者身份,知道缺少的消息信息。采用口頭協(xié)議算法,若叛徒數(shù)少于1/3,則拜占庭將軍問題可解。也就是說,若叛徒數(shù)為m,當(dāng)將軍總數(shù)n至少為3m+1時,問題可解。然而,口頭協(xié)議算法存在明顯的缺點(diǎn),那就是消息不能追根溯源。為解決該問題,提出了書面協(xié)議算法。該算法要求簽名不可偽造,一旦被篡改即可發(fā)現(xiàn),同時任何人都可以驗證簽名的可靠性。書面協(xié)議算法也不能完全解決拜占庭將軍問題。因為該算法沒有考慮信息傳輸時延、其簽名體系難以實現(xiàn)且簽名消息記錄的保存難以擺脫中心化機(jī)構(gòu)。
與已有方法相比,區(qū)塊鏈技術(shù)將是更完美的解決方案。區(qū)塊鏈?zhǔn)窃鯓觼斫鉀Q這個問題的呢?它為發(fā)送信息加入了成本,降低了信息傳遞的速率,并加入了一個隨機(jī)數(shù)以保證在一段時間內(nèi)只有一個礦工可以進(jìn)行傳播。它加入的成本就是“工作量”,區(qū)塊鏈礦工必須完成一個隨機(jī)哈希算法的計算工作量才能向各城邦傳播消息。
當(dāng)用戶向網(wǎng)絡(luò)輸入一筆交易的時候,他們使用內(nèi)嵌在客戶端的標(biāo)準(zhǔn)公鑰加密工具為這筆交易簽名,這好比拜占庭將軍問題中他們用來簽名和驗證消息時使用的“印章”。因此,哈希計算速率的限制,加上公鑰加密,使一個不可信網(wǎng)絡(luò)變成了一個可信的網(wǎng)絡(luò),使所有參與者可以在某些事情上達(dá)成一致。拜占庭將軍問題的區(qū)塊鏈解決方案可以推廣到任何在分布式網(wǎng)絡(luò)上缺乏信任的領(lǐng)域,比如說域名、投票選舉或其他需要分布式協(xié)議的地方[插圖]。
(二)區(qū)塊鏈工作流程
區(qū)塊鏈的工作流程主要包括如下步驟。
①發(fā)送節(jié)點(diǎn)將新的數(shù)據(jù)記錄向全網(wǎng)進(jìn)行廣播。
②接收節(jié)點(diǎn)對收到的數(shù)據(jù)記錄信息進(jìn)行檢驗,比如記錄信息是否合法,通過檢驗后,數(shù)據(jù)記錄將被納入一個區(qū)塊中。③全網(wǎng)所有接收節(jié)點(diǎn)對區(qū)塊執(zhí)行共識算法(工作量證明、權(quán)益證明等。
④區(qū)塊通過共識算法過程后被正式納入?yún)^(qū)塊鏈中存儲,全網(wǎng)節(jié)點(diǎn)均表示接受該區(qū)塊,而表示接受的方法,就是將該區(qū)塊的隨機(jī)散列值視為最新的區(qū)塊散列值,新區(qū)塊的制造將以該區(qū)塊鏈為基礎(chǔ)進(jìn)行延長。
節(jié)點(diǎn)始終都將最長的區(qū)塊鏈視為正確的鏈,并持續(xù)以此為基礎(chǔ)驗證和延長它。如果有兩個節(jié)點(diǎn)同時廣播不同版本的新區(qū)塊,那么其他節(jié)點(diǎn)在接收到該區(qū)塊的時間上將存在先后差別,它們將在先收到的區(qū)塊基礎(chǔ)上進(jìn)行工作,但也會保留另外一個鏈條,以防后者變成長的鏈條。該僵局的打破需要共識算法的進(jìn)一步運(yùn)行,當(dāng)其中的一條鏈條被證實為是較長的一條,那么在另一條分支鏈條上工作的節(jié)點(diǎn)將轉(zhuǎn)換陣營,開始在較長的鏈條上工作。以上就是防止區(qū)塊鏈分叉的整個過程。
所謂“新的數(shù)據(jù)記錄廣播”,實際上不需要抵達(dá)全部的節(jié)點(diǎn)。只要數(shù)據(jù)記錄信息能夠抵達(dá)足夠多的節(jié)點(diǎn),那么將很快地被整合進(jìn)一個區(qū)塊中。而區(qū)塊的廣播對被丟棄的信息是具有容錯能力的。如果一個節(jié)點(diǎn)沒有收到某特定區(qū)塊,那么該節(jié)點(diǎn)將會發(fā)現(xiàn)自己缺失了某個區(qū)塊,也就可以提出自己下載該區(qū)塊的請求。現(xiàn)在我們都知道了區(qū)塊鏈網(wǎng)絡(luò)里的記賬者是節(jié)點(diǎn),節(jié)點(diǎn)負(fù)責(zé)把數(shù)據(jù)記錄記到數(shù)據(jù)區(qū)塊里,為了鼓勵節(jié)點(diǎn)記賬,系統(tǒng)會按照規(guī)則隨機(jī)地對記賬的節(jié)點(diǎn)進(jìn)行獎勵。那么如何保證不會有人制造假數(shù)據(jù)記錄或者說如何保證造假數(shù)據(jù)記錄不被通過驗證?這就涉及時間戳。這也正是區(qū)塊鏈與眾不同的地方。區(qū)塊鏈不僅關(guān)注數(shù)據(jù)區(qū)塊里的內(nèi)容,也關(guān)注數(shù)據(jù)區(qū)塊本身,把數(shù)據(jù)區(qū)塊的內(nèi)容與數(shù)據(jù)區(qū)塊本身通過時間戳聯(lián)系起來。時間戳為什么會出現(xiàn)?這是由區(qū)塊鏈的性質(zhì)規(guī)定的。節(jié)點(diǎn)把數(shù)據(jù)記入了區(qū)塊,因此一個區(qū)塊就相當(dāng)于一頁賬簿,每筆數(shù)據(jù)在賬簿中的記錄可以自動按時間先后排列,那么賬簿的頁與頁怎么銜接起來?也就是說,這一個區(qū)塊與下一個區(qū)塊的繼承關(guān)系如何斷定就成為問題。于是時間戳就出現(xiàn)了。
時間戳的重要意義在于其使數(shù)據(jù)區(qū)塊形成了新的結(jié)構(gòu)。這個新的結(jié)構(gòu)使各個區(qū)塊通過時間線有序連接起來,形成了一個區(qū)塊的鏈條,因此才稱為區(qū)塊鏈。區(qū)塊按時間的先后順序排列使賬簿的頁與頁的記錄也具有了連續(xù)性。通過給數(shù)據(jù)記錄印上時間標(biāo)簽,使每一條數(shù)據(jù)記錄都具有唯一性,從而使數(shù)據(jù)記錄本身在區(qū)塊和區(qū)塊上的哪個位置上發(fā)生可以被精確定位且可回溯,也給其他的校驗機(jī)制協(xié)同發(fā)揮作用提供了極大的便利和確定性,使整個區(qū)塊鏈網(wǎng)絡(luò)能夠確定性地驗證某條數(shù)據(jù)記錄是否真實。由于區(qū)塊鏈網(wǎng)絡(luò)是公開的,意味著系統(tǒng)知道過去發(fā)生的所有數(shù)據(jù)記錄,而任何新的數(shù)據(jù)記錄都繼承于過去的數(shù)據(jù)記錄,因為過去的數(shù)據(jù)記錄是真實的,而且鏈條的各個區(qū)塊記錄由時間戳連接起來使之環(huán)環(huán)相扣,所以如果想要制造一個假的數(shù)據(jù)記錄,就必須在區(qū)塊鏈上修改過去的所有數(shù)據(jù)記錄。盡管在挖礦的過程中,形成了多個鏈條,但因為最長的那個被誠實的節(jié)點(diǎn)所控制,所以想要修改過去的數(shù)據(jù)記錄,首先就要從頭構(gòu)造出一個長度比之前最長的那個還要長的鏈條,在這個新的鏈條超過原來的那個鏈條后,才能制造雙重支付的虛假數(shù)據(jù)。然而隨著時間推移,制造新鏈條的難度和成本都是呈指數(shù)級上升的,而且隨著鏈條越來越長,其難度也變得越來越大,成本也就越來越高。同時,因為去中心化的設(shè)置,區(qū)塊鏈的各個核心客戶端同時又是服務(wù)器,保存了區(qū)塊鏈網(wǎng)絡(luò)的完整數(shù)據(jù),因此使對區(qū)塊鏈網(wǎng)絡(luò)的攻擊很難像對傳統(tǒng)的中央處理節(jié)點(diǎn)那樣有效,一般情況下很難對區(qū)塊鏈網(wǎng)絡(luò)構(gòu)成重大沖擊。最終,區(qū)塊鏈網(wǎng)絡(luò)成為一個難以攻破的、公開的、不可篡改數(shù)據(jù)記錄和制造虛假數(shù)據(jù)的誠實可信系統(tǒng)。
區(qū)塊鏈保證數(shù)據(jù)安全、不可篡改以及透明性的關(guān)鍵技術(shù)包括兩個方面:一是數(shù)據(jù)加密簽名機(jī)制;二是共識算法。在數(shù)據(jù)加密簽名機(jī)制中,首先,要有一個私鑰,私鑰是證明個人所有權(quán)的關(guān)鍵,比如證明某人有權(quán)從一個特定的錢包消費(fèi)數(shù)字貨幣,是通過數(shù)字簽名來實現(xiàn)的。其次,要使用哈希(Hash)算法。哈希散列是密碼學(xué)里的經(jīng)典技術(shù),把任意長度的輸入通過哈希算法計算,變換成固定長度的由字母和數(shù)字組成的輸出,具有不可逆性。共識算法是區(qū)塊鏈中節(jié)點(diǎn)保持區(qū)塊數(shù)據(jù)一致、準(zhǔn)確的基礎(chǔ),現(xiàn)有的主流共識算法包括工作量證明(PoW)、權(quán)益證明(PoS)、瑞波共識協(xié)議(RCP)等。以PoW為例,是指通過消耗節(jié)點(diǎn)算力形成新的區(qū)塊,是節(jié)點(diǎn)利用自身的計算機(jī)硬件為網(wǎng)絡(luò)做數(shù)學(xué)計算進(jìn)行交易確認(rèn)和提高安全性的過程。交易支持者(礦工)在電腦上運(yùn)行比特幣軟件不斷計算軟件提供的復(fù)雜的密碼學(xué)問題來保證交易的進(jìn)行。作為對他們服務(wù)的獎勵,礦工可以得到他們所確認(rèn)的交易中包含的手續(xù)費(fèi),以及新產(chǎn)生的比特幣。
三、區(qū)塊鏈共識機(jī)制
區(qū)塊鏈要成為一個難以攻破的、公開的、不可篡改數(shù)據(jù)記錄的去中心化誠實可信系統(tǒng),需要在盡可能短的時間內(nèi)做到分布式數(shù)據(jù)記錄的安全、明確及不可逆,提供一個最堅實且去中心化的系統(tǒng)。在實踐中,該流程分為兩個方面:一是選擇一個獨(dú)特的節(jié)點(diǎn)來產(chǎn)生一個區(qū)塊;二是使分布式數(shù)據(jù)記錄不可逆。實現(xiàn)上述流程的技術(shù)核心就是:共識機(jī)制。共識機(jī)制是區(qū)塊鏈節(jié)點(diǎn)就區(qū)塊信息達(dá)成全網(wǎng)一致共識的機(jī)制,可以保證最新區(qū)塊被準(zhǔn)確添加至區(qū)塊鏈、節(jié)點(diǎn)存儲的區(qū)塊鏈信息一致不分叉甚至可以抵御惡意攻擊。
當(dāng)前主流的共識機(jī)制包括:工作量證明、權(quán)益證明、工作量證明與權(quán)益證明混合(PoS+PoW)、股份授權(quán)證明、瑞波共識協(xié)議等。
(一)工作量證明
工作量證明(Proof of Work),顧名思義,即指工作量的證明。PoW機(jī)制的基本步驟如下:①節(jié)點(diǎn)監(jiān)聽全網(wǎng)數(shù)據(jù)記錄,通過基本合法性驗證的數(shù)據(jù)記錄將進(jìn)行暫存;②節(jié)點(diǎn)消耗自身算力嘗試不同的隨機(jī)數(shù),進(jìn)行指定哈希計算,并不斷重復(fù)該過程直至找到合理的隨機(jī)數(shù);③找到合理的隨機(jī)數(shù)后,生成區(qū)塊信息,首先輸入?yún)^(qū)塊頭信息,然后是數(shù)據(jù)記錄信息;④接單對外部廣播出新產(chǎn)生的區(qū)塊,其他節(jié)點(diǎn)驗證通過后,連接至區(qū)塊鏈中,主鏈高度加一,然后所有節(jié)點(diǎn)切換至新區(qū)塊后面繼續(xù)進(jìn)行工作量證明和區(qū)塊PoW叫工作量證明體現(xiàn)在步驟②中,節(jié)點(diǎn)需要不斷消耗算力工作,進(jìn)行哈希計算,以找到期望的隨機(jī)數(shù)。以比特幣區(qū)塊鏈為例,通過PoW機(jī)制維護(hù)區(qū)塊鏈的整體運(yùn)行及其安全性。驗證節(jié)點(diǎn)通過隨機(jī)的散列運(yùn)算,爭奪比特幣區(qū)塊鏈的記賬權(quán),防止欺詐交易,避免“雙重支付”,這一過程需要消耗電力、算力來完成。因此,驗證節(jié)點(diǎn)也成為“礦工”,隨機(jī)數(shù)計算查找過程稱為“挖礦”。每一個比特幣區(qū)塊鏈中的區(qū)塊都包含著一個由無意義數(shù)據(jù)構(gòu)成的短字符串(稱為隨機(jī)數(shù)),找到一個合適的隨機(jī)數(shù)唯一已知的方法是不停地隨機(jī)試探直到搜索到一個有效的數(shù)。比特幣的PoW中,平均每10分鐘有一個節(jié)點(diǎn)找到一個區(qū)塊。如果兩個節(jié)點(diǎn)在同一個時間找到區(qū)塊,那么網(wǎng)絡(luò)將根據(jù)后續(xù)節(jié)點(diǎn)和區(qū)塊生成情況來確定哪個區(qū)塊構(gòu)建最終區(qū)塊鏈。一般情況下,需要6個區(qū)塊的生成時間進(jìn)行確認(rèn),因為一般交易在6個區(qū)塊(約1個小時)后被認(rèn)為是安全確認(rèn)且不可逆的。其工作量主要體現(xiàn)在:一個符合要求的區(qū)塊隨機(jī)數(shù)由N個前導(dǎo)零構(gòu)成,零的個數(shù)取決于網(wǎng)絡(luò)的難度值。要得到合理的隨機(jī)數(shù)需要經(jīng)過大量嘗試計算,計算時間取決于機(jī)器的哈希運(yùn)算速度。當(dāng)某個節(jié)點(diǎn)提供出一個合理的隨機(jī)數(shù)值,說明該節(jié)點(diǎn)確實經(jīng)過了大量的嘗試計算。當(dāng)然,這并不能得出計算次數(shù)的絕對值,因為尋找合理隨機(jī)數(shù)值是一個概率事件。工作量證明機(jī)制看似很神秘,其實在社會中的應(yīng)用非常廣泛。例如,畢業(yè)證、學(xué)位證、律師證等證書就是工作證明,擁有證書即表明在過去付出了努力。挖礦為整個系統(tǒng)的運(yùn)轉(zhuǎn)提供原動力,挖礦有三個重要功能:一是發(fā)行新的貨幣;二是維系系統(tǒng)的支付功能;三是通過算力保障系統(tǒng)安全。首先,挖礦消耗資源將黃金注入流通經(jīng)濟(jì),比特幣通過“挖礦”完成相同的事情,只不過消耗的是CPU時間與電力。其次,挖礦用于產(chǎn)量調(diào)節(jié),區(qū)塊的產(chǎn)量為大約每兩周2016個,即每10分鐘一塊。第三,通過算力保障系統(tǒng)安全。算力攻擊的概率難度呈指數(shù)上升(泊松分布),每個區(qū)塊都必須指向前一個區(qū)塊,否則無法驗證通過。追根溯源便是高度為零的創(chuàng)世區(qū)塊。PoW機(jī)制存在兩方面明顯的缺陷。一是算力的消耗與浪費(fèi)。在PoW中,盡管區(qū)塊鏈節(jié)點(diǎn)是用來幫區(qū)塊鏈進(jìn)行分布式數(shù)據(jù)記錄的,但是它們實際所做的大部分工作是尋找正確的隨機(jī)數(shù)而與數(shù)據(jù)記錄無關(guān)。用來尋找隨機(jī)數(shù)的能量和資源將永遠(yuǎn)地消失,這顯然是一種浪費(fèi)。二是算力集中化凸顯。PoW機(jī)制自然地導(dǎo)致了算力集中問題。由于作為一個普通的個體或者幾十、幾百臺規(guī)模的礦機(jī)目前都很難挖到區(qū)塊了,因此大家必須聯(lián)合起來挖礦,就誕生了算力集中的地方——礦池。其中最著名的是比特幣Ghash礦池,它因為數(shù)次接近甚至達(dá)到了50%比特幣的算力,從而引起了比特幣社區(qū)的廣泛擔(dān)憂。
(二)權(quán)益證明+工作量證明
2012年8月,一個化名Sunny King的極客推出了Peercoin(PPC),采用工作量證明機(jī)制PoW發(fā)行新幣,采用權(quán)益證明機(jī)制PoS維護(hù)網(wǎng)絡(luò)安全,即PoW+PoS機(jī)制。該機(jī)制中,區(qū)塊被分成兩種形式——PoW區(qū)塊及PoS區(qū)塊。在這種新型區(qū)塊鏈體系里,區(qū)塊持有人可以消耗他的幣天獲得利息,同時獲得為網(wǎng)絡(luò)產(chǎn)生一個區(qū)塊和用PoS造幣的優(yōu)先權(quán)。PoS的第一次輸入被稱為權(quán)益核心,需要符合某一哈希目標(biāo)協(xié)議。因此,PoS區(qū)塊的產(chǎn)生具有隨機(jī)性,其過程與PoW相似。但有一個重要的區(qū)別在于,PoS隨機(jī)散列運(yùn)算是在一個有限制的空間里完成的,而不是PoW那樣在無限制的空間里尋找,因此無須大量的能源消耗。權(quán)益核心所要符合的隨機(jī)散列目標(biāo)是以在核心中消耗的幣天的目標(biāo)值(幣×天),這與PoW是不同的,PoW的每個節(jié)點(diǎn)都具有相同的目標(biāo)值。因此,核心消耗的幣天越多,就越容易符合目標(biāo)協(xié)議。PoS中還有一種新型的造幣過程。PoS區(qū)塊將根據(jù)所消耗的幣天產(chǎn)生利息幣,設(shè)計時設(shè)定了每幣一年將產(chǎn)生1分利息,以避免將來的通脹。在造幣初期時保留了PoW,使最初的造幣更加方便。
在區(qū)塊鏈中誰是主鏈的問題是解決分叉的關(guān)鍵。PoS判斷主鏈的標(biāo)準(zhǔn)已經(jīng)轉(zhuǎn)化為對消耗幣天的判斷。每個區(qū)塊的交易都會將其消耗的幣天提交給該區(qū)塊,以提高該區(qū)塊的得分。獲得最高消耗幣天的區(qū)塊將被選中為主鏈。此設(shè)計減少了部分對于51%攻擊的憂慮,因為在PoS區(qū)塊中,要進(jìn)行51%攻擊,首先,要控制數(shù)量眾多的幣天,成本可能要高于獲得51%的算力,這樣就提高了攻擊的成本;其次,攻擊者在攻擊網(wǎng)絡(luò)時,其幣天也會消耗,這將使攻擊者阻止交易進(jìn)入主鏈的行為變得更加困難。
為抵御分布式拒絕服務(wù)攻擊,在PoW+PoS機(jī)制中,每個區(qū)塊都必須由其擁有者簽名,以避免受到復(fù)制并被攻擊者使用。為了抵御攻擊者復(fù)制產(chǎn)生多個區(qū)塊進(jìn)行分布式拒絕服務(wù)攻擊,每個節(jié)點(diǎn)都會收集其接觸到的(核心,時間戳)配對信息。假如一個已接收到的區(qū)塊包含與其他之前收到的區(qū)塊中的配對信息(核心,時間戳)是重復(fù)的,會忽略此區(qū)塊直到后者被孤立出去。
在PoW+POS機(jī)制下,只要持有幣的人,不論持有的數(shù)量多少,都可以挖到數(shù)據(jù)塊,而不用采用任何的礦池導(dǎo)致算力集中。同時,由于多采用幣天生成區(qū)塊,而不是算力,降低了資源消耗,解決了單純PoW機(jī)制在維護(hù)網(wǎng)絡(luò)安全方面先天不足的問題。
(三)權(quán)益證明除了結(jié)合PoW使用外,能否單獨(dú)利用PoS機(jī)制進(jìn)行區(qū)塊鏈系統(tǒng)設(shè)計運(yùn)行呢?答案是肯定的。簡單來說,PoS就是一個根據(jù)持有貨幣的量和時間,進(jìn)行利息發(fā)放和區(qū)塊產(chǎn)生的機(jī)制。在權(quán)益證明PoS模式下,有一個名詞叫幣天。例如,每個幣每天產(chǎn)生1幣天,比如持有100個幣,總共持有了30天,那么此時幣天就為3000。這個時候,如果發(fā)現(xiàn)了一個新PoS區(qū)塊,幣天就會被清空為0。每被清空365幣天,將會從區(qū)塊中獲得0.05個幣的利息(可理解為年利率5%)。
PoS的典型應(yīng)用就是未來幣。同其他加密貨幣一樣,未來幣體系的總賬是建立和儲存在一系列區(qū)塊里的,也就是區(qū)塊鏈中。每個區(qū)塊鏈的備份都存放在未來幣網(wǎng)絡(luò)的每個節(jié)點(diǎn)里,而且在每個節(jié)點(diǎn)上沒有加密的每個賬戶都能夠生成區(qū)塊,只要至少一個新入賬戶的交易已經(jīng)確認(rèn)了1440次。任何賬戶只要達(dá)到了這個標(biāo)準(zhǔn)就會被視為“激活賬戶”。在未來幣里,每個區(qū)塊都包含著255個交易,每個交易都是由包含識別參數(shù)的192字節(jié)的數(shù)據(jù)頭開始的。一個區(qū)塊里的每個交易量都是由128個字節(jié)所代表著。總共加在一起就意味著最大的區(qū)塊大小有32K字節(jié)。每個區(qū)塊都有一個“生成簽名”的參數(shù)。激活賬戶用自己的私鑰在原先的區(qū)塊上簽署“生成簽名”。這就產(chǎn)生了一個64字節(jié)的簽名,之后通過SHA256散列該簽名。哈希產(chǎn)生的前八個字節(jié)給出了一個數(shù)字,作為一個“hit”?!癶it”與目前的目標(biāo)值相比較,如果計算出的“hit”值要比“目標(biāo)值”低,那么就可以生成下一個區(qū)塊了。對于每個活動賬戶來講,“目標(biāo)值”都是與它自身所確認(rèn)的余額成比例的。一個持有1000個幣的賬戶得到的目標(biāo)值是持有20個幣賬戶所得到目標(biāo)值的50倍。因此,擁有1000個幣的持有者產(chǎn)生的區(qū)塊數(shù)是持有20個幣的人產(chǎn)生的50倍。同時,“目標(biāo)值”并不是固定的,隨著先前區(qū)塊的時間戳的流逝時刻都在增長。如果在最初的一秒鐘內(nèi)沒有哪個賬戶的“hit”值是低于“目標(biāo)值”的,則下一秒鐘“目標(biāo)值”就會翻倍?!澳繕?biāo)值”會連續(xù)地翻倍,直到一個活動賬戶的“hit”值有一個較低的數(shù)值。還有一個“基本目標(biāo)”值,它以60秒的間隔設(shè)定為目標(biāo)值。正是這個原因,一個區(qū)塊平均產(chǎn)生的時間會在60秒。即使在網(wǎng)絡(luò)上只有很少的激活賬戶,它們其中的一個最終會產(chǎn)生一個區(qū)塊因為“目標(biāo)”值會變得相當(dāng)大。通過將你賬戶的“hit”值與目前的“目標(biāo)”值相比,你就可以估算出你的“hit”值還有多久能成功。
當(dāng)一個激活賬戶贏得產(chǎn)生區(qū)塊的權(quán)利時,就能將任何可獲得的且未確認(rèn)的交易放入?yún)^(qū)塊中,并用所有需要的參數(shù)來填充該區(qū)塊。然后,這個區(qū)塊就會被傳播到網(wǎng)絡(luò)中作為一個區(qū)塊鏈的備選。每一個區(qū)塊中的負(fù)載值、“hit”、產(chǎn)生的賬戶以及簽名都能被網(wǎng)絡(luò)上接收到它的節(jié)點(diǎn)所確認(rèn)。每個區(qū)塊參考之前的區(qū)塊,區(qū)塊形成的區(qū)塊鏈可以用來追溯和查詢網(wǎng)絡(luò)中素有的交易歷史,所有這些都會追溯到創(chuàng)世源區(qū)。上述完整地展示了利用幣天進(jìn)行區(qū)塊產(chǎn)生和驗證共識的過程,體現(xiàn)了PoS的核心思想。
(四)股份授權(quán)證明PoS機(jī)制使用一個確定性算法以隨機(jī)選擇一個股東來產(chǎn)生下一個區(qū)塊,該算法中,賬戶余額決定了節(jié)點(diǎn)被選中的可能性。然而,該系統(tǒng)并未使區(qū)塊鏈變得越來越安全而不可逆,因為最終區(qū)塊鏈的區(qū)塊產(chǎn)生權(quán)掌握在賬戶余額最多的少數(shù)節(jié)點(diǎn)手中。同時,PoS面臨的挑戰(zhàn)是如何通過及時而高效的方法達(dá)成共識。為達(dá)到這個目標(biāo),每個持幣節(jié)點(diǎn)可以將其投票權(quán)授予一名代表。獲票數(shù)最多的前100位代表按既定時間表輪流產(chǎn)生區(qū)塊。每名代表被分配到一個時間段生產(chǎn)區(qū)塊。所有的代表將收到等同于一個平均水平的區(qū)塊所含交易費(fèi)的1%作為報酬。如果一個平均水平的區(qū)塊含有100股作為交易費(fèi),一名代表將獲得1股作為報酬,即可大大提高共識效率。這就是DPoS的核心思想。網(wǎng)絡(luò)延遲有可能使某些代表沒能及時廣播他們的區(qū)塊,而這將導(dǎo)致區(qū)塊鏈分叉。然而,這發(fā)生的概率較小,因為制造區(qū)塊的代表可以與制造前后區(qū)塊的代表建立直接連接。在DPoS中,第一個步驟是成為一名代表,必須在網(wǎng)絡(luò)上注冊公鑰,然后分配到一個32位的特有標(biāo)識符。然后該標(biāo)識符會被每筆交易數(shù)據(jù)的“頭部”引用。第二個步驟是授權(quán)選票。每個錢包有一個參數(shù)設(shè)置窗口,在該窗口里用戶可以選擇一個或更多的代表,并將其分級。一經(jīng)設(shè)定,用戶所做的每筆交易將把選票從“輸入代表”轉(zhuǎn)移至“輸出代表”。一般情況下,用戶不會創(chuàng)建特別以投票為目的的交易,因為那將耗費(fèi)他們一筆交易費(fèi)。但在緊急情況下,某些用戶可能覺得通過支付費(fèi)用這一更積極的方式來改變他們的投票是值得的。每個錢包將顯示一個狀態(tài)指示器,讓用戶知道代表的表現(xiàn)如何。如果某代表錯過了太多的區(qū)塊,那么系統(tǒng)將會推薦用戶去換一個新的代表。如果任何代表被發(fā)現(xiàn)簽發(fā)了一個無效的區(qū)塊,那么所有標(biāo)準(zhǔn)錢包將在每個錢包進(jìn)行更多交易前要求選出一個新代表。與PoW系統(tǒng)及其他PoS系統(tǒng)一樣,最佳區(qū)塊鏈?zhǔn)亲铋L的有效區(qū)塊鏈。在任何時候,一名代表錯過簽發(fā)一個區(qū)塊的機(jī)會,該區(qū)塊鏈將比潛在競爭對手短。只要交易被寫入?yún)^(qū)塊后的100個區(qū)塊中的51%被生產(chǎn)出來了,那么你就可以安全地認(rèn)為在主區(qū)塊鏈上。也許,在防止區(qū)塊鏈分叉所導(dǎo)致的損失方面,最重要的事是在事發(fā)后第一時間得知消息。如果10區(qū)塊中有超過5個錯過生產(chǎn),那么這意味著你很可能在一條支鏈上,因此應(yīng)該停止所有交易,直到分叉得到解決。以一種及時的方式(少于5分鐘)簡單地發(fā)現(xiàn)并警示用戶網(wǎng)絡(luò)分叉,是可以最小化潛在損失的非常重要的能力。
(五)瑞波共識協(xié)議
瑞波共識協(xié)議(Ripple Consensus Protocol,RCP),使一組節(jié)點(diǎn)能夠基于特殊節(jié)點(diǎn)列表達(dá)成共識。初始特殊節(jié)點(diǎn)列表就像一個俱樂部,要接納一個新成員,必須由一定比例的該俱樂部會員投票通過。RCP機(jī)制的工作原理如下。
①驗證節(jié)點(diǎn)接收存儲待驗證交易。首先,驗證節(jié)點(diǎn)接收待驗證交易,將其存儲在本地;其次,本輪共識過程中新到的交易需要等待,在下次共識時再確認(rèn)。
②活躍信任節(jié)點(diǎn)發(fā)送提議:首先,信任節(jié)點(diǎn)列表是驗證池的一個子集,其信任節(jié)點(diǎn)來源于驗證池;其次,參與共識過程的信任節(jié)點(diǎn)須處于活躍狀態(tài),驗證節(jié)點(diǎn)與信任節(jié)點(diǎn)間存在?;顧C(jī)制,長期不活躍節(jié)點(diǎn)將被從信任節(jié)點(diǎn)列表刪除;最后,信任節(jié)點(diǎn)根據(jù)自身掌握的交易雙方額度、交易歷史等信息對交易做出判斷,并加入到提議中進(jìn)行發(fā)送。
③本驗證節(jié)點(diǎn)檢查收到的提議是否來自信任節(jié)點(diǎn)列表中的合法信任節(jié)點(diǎn),如果是,則存儲;如果不是,則丟棄。
④驗證節(jié)點(diǎn)根據(jù)提議確定認(rèn)可交易列表的步驟如下:首先,令信任節(jié)點(diǎn)列表中活躍的信任節(jié)點(diǎn)個數(shù)為M(比如5個),本輪中交易認(rèn)可閾值為N(百分比,比如50%),則每一個超過M×N個信任節(jié)點(diǎn)認(rèn)可的交易將被本驗證節(jié)點(diǎn)認(rèn)可;其次,本驗證節(jié)點(diǎn)生成認(rèn)可交易列表。系統(tǒng)為驗證節(jié)點(diǎn)設(shè)置一個計數(shù)器,如果計數(shù)器時間已到,本信任節(jié)點(diǎn)需要發(fā)送自己的認(rèn)可交易列表。
⑤賬本共識達(dá)成的步驟如下:首先,本驗證節(jié)點(diǎn)仍然在接收來自信任節(jié)點(diǎn)列表中信任節(jié)點(diǎn)的提議,并持續(xù)更新認(rèn)可交易列表;其次,驗證節(jié)點(diǎn)認(rèn)可列表的生成并不代表最終賬本的形成以及共識的達(dá)成,賬本共識只有在每筆交易都獲得至少超過一定閾值(比如80%)的信任節(jié)點(diǎn)列表認(rèn)可才能達(dá)成。如果賬本中每筆交易都獲得至少超過一定閾值(比如80%)的信任節(jié)點(diǎn)列表認(rèn)可,則共識達(dá)成,交易驗證結(jié)束,否則繼續(xù)上述過程。
⑥共識過程結(jié)束后,已經(jīng)形成最新的賬本,現(xiàn)將上輪剩余的待確認(rèn)交易以及新交易納入待確認(rèn)交易列表,開始新一輪共識過程。
除上述機(jī)制外,還有恒星共識協(xié)議(Stellar Consensus Protocol,SCP)、改進(jìn)型實用拜占庭容錯機(jī)制(Practical Byzantine Fault Tolerance,PBFT)和Pool驗證池機(jī)制等共識機(jī)制被提出,甚至已經(jīng)應(yīng)用在區(qū)塊鏈系統(tǒng)中,不同共識機(jī)制各有其應(yīng)用場景和優(yōu)勢。
以上就是關(guān)于pos機(jī)解技術(shù),最全的區(qū)塊鏈技術(shù)原理的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機(jī)解技術(shù)的知識,希望能夠幫助到大家!