區(qū)塊鏈?zhǔn)鞘裁?,如何簡單易懂地介紹區(qū)塊鏈?
1,區(qū)塊鏈的應(yīng)用。
首先先說央行數(shù)字貨幣——央行數(shù)字貨幣的技術(shù)其實(shí)早就成熟了,都用不到區(qū)塊鏈,因?yàn)閰^(qū)塊鏈的目的是去中心化,而央行數(shù)字貨幣用不到這個。當(dāng)然,采用區(qū)塊鏈的央行數(shù)字貨幣技術(shù)也早就有了(參見RSCoin),這里面可能會在某些環(huán)節(jié)采用區(qū)塊鏈技術(shù)去中心化——例如貨幣的發(fā)行仍舊是中心化的,但是流轉(zhuǎn)中的管理和驗(yàn)證可以通過區(qū)塊鏈技術(shù)去中心化到其他銀行。同時,據(jù)我所知,官方早就有一個數(shù)字貨幣研究所在研究這個很久了。我在很早就寫過,從大勢上,貨幣的數(shù)字化是必然的,但這和比特幣是兩碼事,看起來可能會更像支付寶。然后,現(xiàn)在facebook來了一出libra(請參見我關(guān)于libra的文章https://zhuanlan.zhihu.com/p/69941436),我覺得從很大程度上推動了這次區(qū)塊鏈的新聞,也推動了央行數(shù)字貨幣的推出。libra本身只代表facebook的野心,目前來看,他們的野心很有可能不會成功,但是也許是這種野心和指明的技術(shù)方向讓國家產(chǎn)生了緊迫感——因?yàn)榫退悻F(xiàn)在libra的所有成員都退出得差不多了,libra本身也前途未卜,但是萬一類似的框架被搭起來又吸引了其他的重量級成員加入,那么國家在這上面就失去了主導(dǎo)權(quán)。因此,根據(jù)最近的新聞,央行的數(shù)字貨幣應(yīng)該已經(jīng)非常接近了。
但這點(diǎn),并不足以突然讓“區(qū)塊鏈”成為國家戰(zhàn)略,這里說的區(qū)塊鏈,一定是包含數(shù)字貨幣之外的其他應(yīng)用的。
區(qū)塊鏈最引人遐想的應(yīng)用,無疑是以“以太坊”為代表的,用區(qū)塊鏈來做一個“全球計算機(jī)”,然后,用“智能合約”來編寫在這臺全球計算機(jī)上運(yùn)行的軟件(又被稱為Dapp,即去中心化應(yīng)用)。簡單來說,這個全球計算機(jī)的好處在于,你可以把一切想要“去掉中間商賺差價”的事情,全都搬到這上面來做,而不需要依賴于某個大企業(yè)作為可信中心,例如銀行或者互聯(lián)網(wǎng)巨頭。關(guān)于這個問題,可參見這篇https://zhuanlan.zhihu.com/p/28930323
然而,這種全球計算機(jī)的設(shè)想在這兩年間暴露出了非常多的問題,讓人看不到短期的解決希望。
于是,從這次區(qū)塊鏈的新聞中透露出來的應(yīng)用方向,“不可篡改”這個區(qū)塊鏈的特點(diǎn),以及它在存證、溯源、防偽、征信等方面的作用。這個,是目前在落地上做的最成熟,也是能夠?qū)嵈驅(qū)嵉乜闯鰜韰^(qū)塊鏈對比于傳統(tǒng)中心化系統(tǒng)優(yōu)勢的應(yīng)用。
2,區(qū)塊鏈技術(shù)
這次戰(zhàn)略中最主要提出的,是“要掌握區(qū)塊鏈核心技術(shù)”,那么區(qū)塊鏈的核心技術(shù)是什么呢?
區(qū)塊鏈相關(guān)技術(shù)有很多方面,我可以把它大致分成4類:1),共識算法;2),隱私保護(hù)技術(shù)和相應(yīng)密碼學(xué)技術(shù);3),智能合約相關(guān)技術(shù);4),面向應(yīng)用相關(guān)技術(shù)。其中,前三者可以認(rèn)為是底層,后兩者是上層。
1),其中,共識算法是區(qū)塊鏈最核心,也是整個技術(shù)發(fā)展和學(xué)術(shù)界最熱衷的領(lǐng)域:大量的公鏈項(xiàng)目都追求共識算法的創(chuàng)新,同時,大量的研究者也投身于這個領(lǐng)域,然而,大多在國外(我之前主要研究方向也是這個領(lǐng)域)。這點(diǎn)其實(shí)并不意外——眾所周知,國內(nèi)很少人愿意基礎(chǔ)理論研究。
但是共識算法中的涵蓋面非常廣,其中有一個概念非常重要——有許可和無許可,有許可共識算法要求所有參與節(jié)點(diǎn)的身份已知,主要采用類BFT算法。而無許可共識算法則允許任何節(jié)點(diǎn)只要達(dá)到某些條件就能進(jìn)入,無需事先在任何系統(tǒng)中注冊身份,而POW和后來衍生出的POS以及其他許多POx類算法都在此列。前者,多用于聯(lián)盟鏈,而后者多用于公有鏈。其中,兩者發(fā)展至今日,在速度和延遲上的差異已經(jīng)不大了,歸根結(jié)底的差別就是前面說的有無許可的差別。而無許可共識算法由于無許可的特性,又引出了一個很重要的概念叫“激勵機(jī)制”,比如比特幣的挖礦,于是,又衍生出了“貨幣”。于是,就又衍生出許多非常有趣的方向,例如:ASIC礦機(jī),鏈上治理,加密經(jīng)濟(jì)學(xué)等等。
以上,哪些方向可能會被認(rèn)為是這次戰(zhàn)略中的“核心技術(shù)”呢?
我個人更看好許可共識算法的相關(guān)技術(shù),而且,這類共識算法也可能布上支付寶的道路,會摒棄很多意識形態(tài)方面的需求,追求速度更快,規(guī)模更大,使用更方便,更標(biāo)準(zhǔn)化。而非許可類的共識算法,則面臨著更高的風(fēng)險——首先,對于“幣”這個事的政策并不明確;其次,在之前所說的應(yīng)用方向上,公有鏈相對于聯(lián)盟鏈并沒有顯著的優(yōu)勢。
2),其實(shí)區(qū)塊鏈技術(shù)本身采用的密碼學(xué)技術(shù)并不高深也不復(fù)雜,無非是哈希函數(shù)和數(shù)字簽名這兩個非常經(jīng)典和簡單的密碼學(xué)工具而已。然而,由于區(qū)塊鏈技術(shù)和密碼學(xué)天生的契合性(大部分早期研究區(qū)塊鏈的學(xué)者都來自于密碼學(xué)領(lǐng)域),同時,由于“加密貨幣”這個詞,即:cryptocurrency,(注:在英文中,這個詞被用來指代所有類似于比特幣之類的貨幣,而不是中文領(lǐng)域中常用的“數(shù)字貨幣”),導(dǎo)致大部分人都認(rèn)為密碼學(xué)天生和區(qū)塊鏈?zhǔn)锹?lián)系到一起的。
區(qū)塊鏈技術(shù)本身并用不到特別先進(jìn)的密碼學(xué)工具(當(dāng)然,一些新的共識算法中采用了一些新的密碼學(xué)工具)。
但是,其中最重要的密碼學(xué)挑戰(zhàn),是隱私保護(hù)技術(shù),而其中,可能會用到的,包括零知識證明,同態(tài)加密等目前還在發(fā)展之中的密碼學(xué)工具。這點(diǎn),其實(shí)并不是區(qū)塊鏈本身的需求,但又和區(qū)塊鏈緊緊聯(lián)系在一起——原因,還得說回之前區(qū)塊鏈的性質(zhì)和區(qū)塊鏈的應(yīng)用上:
區(qū)塊鏈最大的特點(diǎn)是所有上鏈的數(shù)據(jù)必須通過所有節(jié)點(diǎn)的驗(yàn)證,然而,如果區(qū)塊鏈得到了大規(guī)模應(yīng)用,這就代表了所有的節(jié)點(diǎn)都會獲取所有的數(shù)據(jù)。好吧,我們現(xiàn)在不信任中心,有很大的一部分原因是中心獲取了我們所有的數(shù)據(jù),而現(xiàn)在倒好,用了區(qū)塊鏈去中心之后,所有人都可以獲取我們所有的數(shù)據(jù)了。
如何在能夠保證隱私的同時還可以享受區(qū)塊鏈帶來的去中心化優(yōu)勢呢?這需要所有節(jié)點(diǎn)能夠在不知道數(shù)據(jù)內(nèi)容的情況下,還能夠?qū)?shù)據(jù)的有效性進(jìn)行驗(yàn)證,例如:在不知道你是誰,具體有多少錢,你想要支出多少錢的情況下,驗(yàn)證你確實(shí)有一筆錢可以來完成這筆支出……
這聽起來像是天方夜譚,然而,實(shí)際上我們有一種密碼學(xué)工具可以實(shí)現(xiàn)它——叫做零知識證明。
目前零知識證明盡管一直在發(fā)展,但是目前仍存在很大的局限性,這種局限性是效率——我們有了一些高效的證明方式,例如:我們可以很快地證明某個未知的數(shù)比另一個已知數(shù)大,或者我們可以證明某個未知的值來自于某個集合。然而,這些高效的零知識證明,還不足以覆蓋區(qū)塊鏈的所有應(yīng)用。因此,可想而知,這些新加密技術(shù),盡管不是區(qū)塊鏈技術(shù)中的必須品,卻是區(qū)塊鏈技術(shù)能夠得到廣泛應(yīng)用的必需品,所以一定是“核心技術(shù)”中的一部分。
3),智能合約相關(guān)的技術(shù),實(shí)際上包括語言,包括編譯……這些,實(shí)際上相當(dāng)于是當(dāng)我們已經(jīng)有了區(qū)塊鏈作為底層之后,如何使用它的問題。在這上面目前還沒有一個非常明確的方向,因?yàn)?,其?shí)目前在嘗試的思路有幾種:
i,以太坊式的,高度自由的圖靈完備的系統(tǒng)。然而問題是,寫程序太容易出錯了,而且出錯的代價太大。
ii,Hyperledger-fabric式的,高度模塊化的系統(tǒng),然而,極度復(fù)雜,復(fù)雜到想要采用HF的公司,要么放棄,要么花錢請IBM的人幫他們做。
iii,Libra式的,專注于某項(xiàng)應(yīng)用的系統(tǒng),例如libra的move語言就明白地說了,我們不追求圖靈完備,我們的目標(biāo)是做一個更方便于實(shí)現(xiàn)各種金融場景的語言——這可能是個趨勢,但是還沒有經(jīng)過足夠的檢驗(yàn)。
這些方向,在目前的嘗試還很少。大部分區(qū)塊鏈項(xiàng)目仍舊采用以太坊式的系統(tǒng),或者加以改進(jìn)。然而,我認(rèn)為這一點(diǎn)很有可能成為“區(qū)塊鏈的核心技術(shù)”中最重要的部分——因?yàn)橐坏﹨^(qū)塊鏈上升到了國家戰(zhàn)略的高度,那么勢必會誕生大量的需求、場景和用戶,于是才會有充分的嘗試和實(shí)現(xiàn)的平臺。由此,可能會衍生出一個最適合區(qū)塊鏈的語言和開發(fā)工具,而這個,會如同OS一樣,成為一個新的世界范圍內(nèi)的標(biāo)準(zhǔn)。而從目前來看,在其他的區(qū)塊鏈項(xiàng)目都在掙扎著尋求落地的時候,可能只有中國有這樣的土壤能夠誕生出這樣的標(biāo)準(zhǔn)。這大概就是把區(qū)塊鏈作為國家戰(zhàn)略的原因。
4),應(yīng)用相關(guān)的技術(shù)。其實(shí)在區(qū)塊鏈應(yīng)用方面最大的技術(shù)難點(diǎn)并不在技術(shù)上。例如:區(qū)塊鏈存證,如果我們做一條聯(lián)盟鏈將相關(guān)各方作為共識節(jié)點(diǎn)然后把證據(jù)上鏈,那么,這個證據(jù)就是無法篡改的了。
這道理大家都懂,然而問題在于:誰來做這個事呢?證據(jù)怎么數(shù)字化?怎么運(yùn)行區(qū)塊鏈?給出數(shù)據(jù)我的好處在哪里?最重要的是,誰掏錢?
區(qū)塊鏈目前落地最大的難點(diǎn),在于其相比傳統(tǒng)的中心化方案,除了在存證,溯源方面的一些場景下,找不到明顯的優(yōu)勢,也就找不到可行的商業(yè)模式。
于是,也就很難通過市場的方式推行出去,近兩年幣市的低迷已經(jīng)證明了這一點(diǎn)。然而,這一切都會在國家的支持下產(chǎn)生變化,于是,就如同中國互聯(lián)網(wǎng)產(chǎn)業(yè)從模仿學(xué)習(xí)國外到開始向外輸出抖音一樣,中國希望能在區(qū)塊鏈領(lǐng)域,能夠激發(fā)出更多的嘗試和場景。
于是,在這些場景中,我們會積累相關(guān)的經(jīng)驗(yàn)、技術(shù)和商業(yè)模式,從而將這種模式在出口到國外去,而這點(diǎn),也會是區(qū)塊鏈核心技術(shù)中非常重要的部分。
——————
首先要搞清一個問題——比特幣是區(qū)塊鏈,但是區(qū)塊鏈并不是比特幣。
于是,在區(qū)塊鏈的這個問題回答里,提到“礦工”,“挖礦”,“最長鏈”,“分叉”等等詞的,其實(shí)都不準(zhǔn)確。
寫一點(diǎn)上個月講課的內(nèi)容——個人覺得大部分的回答,包括google搜出來的或者wiki的,都不能很好地解釋區(qū)塊鏈?zhǔn)莻€什么東西。因?yàn)橹v比特幣的人很多,懂比特幣的人也很多,但是具體到區(qū)塊鏈,現(xiàn)在并沒有一個很清楚的定義說什么是區(qū)塊鏈,基本上所有的介紹里都是這樣的:
比特幣——〉區(qū)塊鏈?zhǔn)潜忍貛诺牡讓蛹夹g(shù)。
或者
比特幣——〉比特幣是一種區(qū)塊鏈。
具體到什么是區(qū)塊鏈的問題,目前沒有看到很好的定義和介紹,更多的是大而化之地講區(qū)塊鏈的意義在哪里的空泛文章,要不然就是一水的礦工和挖礦。
所以我來從純理論角度說一下我個人對區(qū)塊鏈的定義:
1,區(qū)塊鏈?zhǔn)且粋€放在非安全環(huán)境中的分布式數(shù)據(jù)庫(系統(tǒng))。
2,區(qū)塊鏈采用密碼學(xué)的方法來保證已有數(shù)據(jù)不可能被篡改。
3,區(qū)塊鏈采用共識算法來對于新增數(shù)據(jù)達(dá)成共識。
具有以上三個性質(zhì)的系統(tǒng),就是區(qū)塊鏈。
1,區(qū)塊鏈?zhǔn)且粋€放在非安全環(huán)境中的分布式數(shù)據(jù)庫(系統(tǒng))。
這里的要點(diǎn)有兩個:(1)分布式,(2)非安全環(huán)境。
首先,這是一個分布式的,去中心化的系統(tǒng)。所以,有一個中心服務(wù)器或者節(jié)點(diǎn)的,不是區(qū)塊鏈。節(jié)點(diǎn)都是安全的,無惡意的,那這不是區(qū)塊鏈。同理,從應(yīng)用的角度講,如果你的應(yīng)用必須要使用中心節(jié)點(diǎn)(例如要用超級計算機(jī)做深度學(xué)習(xí))或者沒必要考慮節(jié)點(diǎn)不安全的情況(例如某個安全的工廠里的傳感器),那么并不需要考慮區(qū)塊鏈技術(shù)。
至于后面的詞“數(shù)據(jù)庫”,目前大部分成熟的區(qū)塊鏈都是數(shù)據(jù)庫,例如比特幣就是一個分布式賬本,而賬本其實(shí)就是數(shù)據(jù)。然后,根據(jù)數(shù)據(jù)的格式,又可以分三種——1,數(shù)據(jù)是完全不相關(guān)的,只是達(dá)成的共識,沒有有效無效之分;2,數(shù)據(jù)有某些邏輯結(jié)構(gòu),例如賬本中,一筆交易實(shí)際上除了金額,還有輸入和輸出,連接到之前的交易,這些數(shù)據(jù)需要通過邏輯驗(yàn)證(例如交易中,節(jié)點(diǎn)需要驗(yàn)證輸入的交易是否有效);3,數(shù)據(jù)擁有圖靈完備的邏輯,而驗(yàn)證的時候需要通過節(jié)點(diǎn)使用算力運(yùn)算,每筆交易可以有不同的輸出和狀態(tài),每個節(jié)點(diǎn)要做的不僅僅是驗(yàn)證交易的真實(shí)性和輸入的正確性,還要根據(jù)交易里的邏輯讀入數(shù)值,進(jìn)行驗(yàn)算然后再驗(yàn)證結(jié)果。
比特幣的系統(tǒng)就是第二種,又叫分布式賬本;
以太坊是第三種。第三種可以支持智能合約。
用比特幣舉例的話,
1,它是一個完全去中心化的系統(tǒng),
2,它放在一個非安全的環(huán)境,它并不要求所有使用比特幣的人都沒有惡意。
3,區(qū)塊鏈采用密碼學(xué)的方法來保證已有數(shù)據(jù)不可能被篡改。
這個是誤解最多的部分,因?yàn)楹芏嗳艘惶岬絽^(qū)塊鏈就只覺得是這個。誠然,這部分很重要,而且確實(shí)區(qū)塊鏈也因此得名,但這只是區(qū)塊鏈的定義的一部分。
這個部分的兩個核心要點(diǎn)是:
(1)密碼學(xué)哈希函數(shù),(2)非對稱加密。
兩個都是密碼學(xué)的基礎(chǔ)概念,網(wǎng)上都有非常清晰的定義,我只簡單說下:
(密碼學(xué))哈希函數(shù):一個函數(shù)Y=H(X),
有如下性質(zhì):
1,有X可以很容易算出Y;
2,有Y不可能算出X;
3,有Y不可能找到另一個X'使得H(X')=Y;
4,如果X和X'相差很小,H(X)和H(X')則完全不相關(guān)。
這東西主要用于驗(yàn)證信息完整性——在一個信息后面放上這個信息的哈希值,這個值很小,例如256bit,而且計算方便。收到信息之后收信人再算一遍哈希值,對比兩者就知道這條信息是否被篡改過了。如果被篡改過,哪怕只有一bit,整個哈希值也會截然不同。而根據(jù)哈希函數(shù)的性質(zhì),沒有人能夠偽造出另一個消息具有同樣的哈希值,也就是說篡改過的數(shù)據(jù)完全不可能通過哈希校驗(yàn)。
非對稱加密:這東西很好理解——對稱加密就是有個密鑰,可以理解成保險箱鑰匙,你把消息加密變成密文,沒有人能看懂這是啥,然后同一把鑰匙解密成原來的消息。
非對稱加密就是有兩把鑰匙,一把叫公鑰,一把叫私鑰,用其中一把加密的話,只能用另一把解密,反之亦然。另一個重要的性質(zhì)是,給你密文,明文和其中一把鑰匙,你還是解不出來另一把鑰匙是啥。原理基本上是基于一些困難數(shù)學(xué)問題,例如因數(shù)分解和離散對數(shù),常用的有RSA,Diffie-Hellman和ECC(橢圓曲線),比特幣用的是橢圓曲線。
非對稱加密除了和對稱加密一樣用于信息加密之外,還有另一個用途,就是身份驗(yàn)證。因?yàn)橥ǔG闆r我們假設(shè)一對公私鑰,公鑰是公開的,而私鑰只有本人有,于是一個人如果有對應(yīng)的私鑰,我們就可以認(rèn)定他是本人。其中一個重要的應(yīng)用就是數(shù)字簽名——某個消息后面,發(fā)信人對這個消息做哈希運(yùn)算,然后用私鑰加密。接著收信人首先對消息進(jìn)行哈希運(yùn)算,接著用相應(yīng)的公鑰解密數(shù)字簽名,再對比兩個哈希值,如果相同,就代表這個消息是本人發(fā)出的而且沒有被篡改過。
以上是基礎(chǔ)知識,至于區(qū)塊鏈怎么實(shí)現(xiàn)的,很簡單:
交易(數(shù)據(jù))寫在區(qū)塊里。
第一個區(qū)塊叫創(chuàng)世區(qū)塊,寫啥都行。
從第二個區(qū)塊開始,每個區(qū)塊的第一部分有前一區(qū)塊的哈希值。此外,區(qū)塊里的每一筆交易(數(shù)據(jù)),都有發(fā)起人的數(shù)字簽名來保證真實(shí)性和合法性。于是,先前區(qū)塊里的任何數(shù)據(jù)都不可被篡改,原因見上。
到這為止有人可能會問:為什么要弄個鏈???直接所有數(shù)據(jù)加個哈希值不就行了?
因?yàn)?mdash;—這個數(shù)據(jù)庫并不是靜止的啊。
數(shù)據(jù)庫的數(shù)據(jù)是會增加的,而每次增加的數(shù)據(jù),就是一個區(qū)塊,于是這些生成時間不同的區(qū)塊,就以這種形式鏈在一起了。
至于如何增加區(qū)塊,就涉及到第三個部分——共識算法。
3,區(qū)塊鏈采用共識算法來對于新增數(shù)據(jù)達(dá)成共識。
共識算法的目的,就是讓所有節(jié)點(diǎn)對于新增區(qū)塊達(dá)成共識,也就是說,所有人都要認(rèn)可新增的區(qū)塊。對于有中心的系統(tǒng),這事很簡單,中心說什么大家同意就好了,但是放到去中心化系統(tǒng)里,尤其是當(dāng)有些節(jié)點(diǎn)有惡意的時候,這東西非常復(fù)雜,計算機(jī)科學(xué)里有個相應(yīng)的問題,叫做“拜占庭將軍問題”或者“拜占庭容錯”(BFT)。
有很多用Lamport給出的那個例子來講BFT的東西,我在這里換一個角度。
Lamport大神當(dāng)年提出這個問題的時候在斯坦福研究中心給NASA做項(xiàng)目,他提出這個問題的原因并不是考慮類似比特幣的應(yīng)用場景(整個互聯(lián)網(wǎng)成千上萬個用戶),而是考慮特殊背景下的一個簡單的系統(tǒng)——
航天飛機(jī)的控制系統(tǒng)。
如果有航空背景的同學(xué)可能知道,飛機(jī)有三套獨(dú)立的控制系統(tǒng),為什么呢?因?yàn)槿魏蜗到y(tǒng)都不可能完全不出故障,就算飛機(jī)控制系統(tǒng)的故障率已經(jīng)極低了,還是有飛到一半這東西壞了的可能。于是我們可以弄兩套獨(dú)立的系統(tǒng),同時壞掉的幾率就會大大降低。
可是兩套獨(dú)立的系統(tǒng)還是不足以容下一個系統(tǒng)的錯誤——一架飛機(jī)迎面飛來,兩套系統(tǒng)一個說要躲,一個說不躲,那到底是躲還是不躲呢?所以我們需要三臺、獨(dú)立的系統(tǒng),這樣,如果有一個系統(tǒng)有故障了,還有兩臺能正常工作,能少數(shù)服從多數(shù)給出正確的結(jié)果。學(xué)過糾錯碼的同學(xué)對這個應(yīng)該不陌生,這個系統(tǒng)的輸出之間的漢明間距是3,所以可以糾正一位的錯誤。
然而,對于航天飛機(jī),在冷戰(zhàn)的背景下,萬一某個系統(tǒng)不是壞掉了,而是被敵人控制了呢?三套系統(tǒng)還夠嗎?
答案是否定的,因?yàn)椴煌趩渭冎皇菈牡舻墓?jié)點(diǎn),惡意節(jié)點(diǎn)可以做一些別的事來阻止整個系統(tǒng)達(dá)成共識。
這個部分略復(fù)雜要講的話要單開一帖,所以我們只說最簡單的情況(無簽名同步系統(tǒng))。
我們管三個系統(tǒng)叫ABC,正常工作流程是三個人每次得出結(jié)果就互相告訴一下,然后每個人選多數(shù)人同意的結(jié)果。這是個沒有中央節(jié)點(diǎn)的分布式系統(tǒng),也就是說三人不能聚在一起開個會啥的,仨人只能兩兩通信。這個時候,假設(shè)C有惡意,它的目標(biāo)是破壞這個系統(tǒng)。于是,假設(shè)正確的讀數(shù)是1,A和B都得出了1這個結(jié)果,這個時候C這個小婊砸告訴A說“我的結(jié)果是0,B也覺得是0”,同時打個電話跟B說“哎我覺得是0,A也這么說”,于是A和B就懵逼了。假設(shè)你是A,你聽到了兩個不同版本的B的答案,B說自己選了1,C說B選了0,可是A這個時候沒法知道B和C誰才是那個騙了自己的小婊砸,因?yàn)槿绻鸅真的告訴A選了1然后告訴C是0,他聽到的結(jié)果和現(xiàn)在是一模一樣的。
于是結(jié)論是,拜占庭容錯,也就是需要容下一個惡意系統(tǒng)而非錯誤系統(tǒng),需要4個獨(dú)立系統(tǒng)。
(當(dāng)然,簽名可以解決這個問題,但是這只是同步系統(tǒng)的情況,在異步系統(tǒng)里這問題會變得更加復(fù)雜,原因是正常節(jié)點(diǎn)的回答有延遲,而惡意節(jié)點(diǎn)可以不回復(fù),所以,正常節(jié)點(diǎn)一方面要等另一個節(jié)點(diǎn)的回復(fù),但是它又不知道對方會不會回復(fù)因?yàn)閷Ψ接锌赡軙袗阂?,而在收到回?fù)之前,它完全沒法判斷對方是正常節(jié)點(diǎn)還是惡意節(jié)點(diǎn),這個問題叫異步BFT,也是BFT的最復(fù)雜的情況,這里不再做更多的解釋,下文提到的BFT算法,其實(shí)都是異步BFT的算法)
Lamport提出這個問題之后,有無數(shù)的算法被提出來,統(tǒng)稱BFT(拜占庭容錯)算法,其中最有代表性的叫PBFT,然后由于最近區(qū)塊鏈的熱度,無數(shù)針對區(qū)塊鏈應(yīng)用場景優(yōu)化過的BFT算法也涌現(xiàn)出來,但是一個重要的問題是,所有目前的BFT算法,都只能應(yīng)用在小型網(wǎng)絡(luò)里。原因很簡單——因?yàn)锽FT這個問題是設(shè)計給類似于航天飛機(jī)控制系統(tǒng)這樣的場景的,早期的算法考慮的也主要是這種場景。PBFT論文里考慮的就是一個5個節(jié)點(diǎn)的系統(tǒng)。就算算上新提出的BFT算法,也最多應(yīng)用在不超過100個節(jié)點(diǎn)的網(wǎng)絡(luò)里。
這個問題被擱置了很久,直到比特幣的誕生——中本聰從某種意義上簡化了這個問題,在比特幣中,同樣是共識問題,中本聰引入了一個重要的假設(shè)——獎勵,他之所以能這樣做的原因是,他考慮的是一個數(shù)字貨幣,也就是說共識這個東西是有價值的。
于是在這樣的系統(tǒng)上,他提出了工作證明機(jī)制。
所有挖礦,礦工,最長鏈,分叉等等等等,都可以歸結(jié)為一句話:
說話是要有代價的,說真話是有好處的,說假話是要扣錢的……
這就是目前兩類共識算法的核心區(qū)別:
BFT共識模型:惡意節(jié)點(diǎn)可以干任何事。
比特幣共識模型:模型中有公認(rèn)的“價值”,每個節(jié)點(diǎn)說話都需要一定代價,誠實(shí)節(jié)點(diǎn)會受到獎勵,而惡意節(jié)點(diǎn)由于只付出代價而收不到獎勵,變相受到了懲罰。
也就是說,BFT共識模型其實(shí)涵蓋了比特幣共識模型的場景,比特幣共識其實(shí)放寬了BFT共識模型的限制。
比特幣共識對于BFT的優(yōu)勢在于,由于給惡意節(jié)點(diǎn)的能力做了限制,惡意節(jié)點(diǎn)所能造成的破壞大大降低了,尤其是對于異步系統(tǒng)——BFT共識里惡意節(jié)點(diǎn)可以一直拒絕相應(yīng)而誠實(shí)節(jié)點(diǎn)還需要一直等它(因?yàn)椴恢浪遣皇菒阂獾模?,而對于比特幣共識,隨你便,你不響應(yīng)就沒有獎勵可拿。于是,比特幣共識算法可以應(yīng)用于成千上萬個節(jié)點(diǎn),而且,任何人隨時都可以加入,不需要預(yù)先在網(wǎng)絡(luò)里注冊自己的身份(而BFT算法里,網(wǎng)絡(luò)中節(jié)點(diǎn)的數(shù)量和身份都必須是已知的)。
但比特幣共識的缺陷在于,首先,得有個有價值的東西,也就是說放在比特幣里這東西還行,以太坊的話現(xiàn)在可能也湊合,但是其他數(shù)字貨幣嘛……BFT共識有個嚴(yán)格的限定,就是惡意節(jié)點(diǎn)不能超過總數(shù)的1/3,然而其實(shí)比特幣共識沒有這樣的限制,唯一的限制就是假定大部分節(jié)點(diǎn)都是理性的,是逐利的,也就是會采用最佳的策略來賺取最大的價值。所以,嚴(yán)格來說,自私挖礦這種行為在比特幣共識里是允許的,而多數(shù)攻擊,其實(shí)也算不上一種攻擊,因?yàn)檫@些都沒有突破比特幣共識的框架——如果這個價值無限大,比特幣共識是非??煽康?。然而這并不是事實(shí),因?yàn)椴⒉皇敲總€虛擬貨幣都和比特幣一樣值錢,而在價值不高的情況下,比特幣共識的前提就站不住腳了——當(dāng)損失可能是幾千上萬塊錢的時候,假定每個人都是理性的是合理,但是如果損失就幾分錢這個假設(shè)就相當(dāng)扯淡了,事實(shí)上也發(fā)生過一個比特幣礦池跑到另一個貨幣惡意挖礦搞垮對手的情況。
此外,比特幣共識是最長鏈共識,也就是說最長鏈-->大多數(shù)-->理性,于是分叉是允許的。于是導(dǎo)致了一些附帶的問題,例如,如果網(wǎng)絡(luò)有延遲,你怎么知道你手里那條鏈?zhǔn)钦麄€網(wǎng)絡(luò)里當(dāng)前的最長鏈呢?于是,如果需要傳輸?shù)臄?shù)據(jù)多,那么延遲加大。延遲加大,那么越多的人手里的鏈并不是全網(wǎng)絡(luò)的最長鏈。于是,全網(wǎng)絡(luò)的最長鏈,就沒法代表大多數(shù)。這就打破了比特幣共識的根本,這也是為什么比特幣區(qū)塊頻率是10分鐘一塊的原因。比特幣目前有個著名的7幣交易每秒的上限,而現(xiàn)在擴(kuò)容鬧得很厲害,以太坊的交易格式不同,也用了新的工作證明,想要改成權(quán)益證明,但這些都不本質(zhì)。真正本質(zhì)的是,在目前的網(wǎng)絡(luò)條件下,如果適用全網(wǎng)的話,比特幣共識的交易量基本上超不過100筆交易每秒這個量級。
上面這幾段有可能太深了,簡單來說,BFT共識和比特幣共識的區(qū)別可以這么理解:
BFT共識:來,大家開個會討論一下集思廣益啊,討論出大家都滿意的結(jié)果為止。
問題:開會的效率大家都懂,人越多越不容易出結(jié)果。只能用于少數(shù)節(jié)點(diǎn),用于上千個節(jié)點(diǎn)的話……大家想象一下一天開一次人大的場景。
比特幣共識:你的詩念得不錯,組織已經(jīng)決定了,今天就你來當(dāng)領(lǐng)導(dǎo)了,做得好有獎,做不好扣錢。
問題:獎勵幾千塊錢還好,獎勵幾分錢誰好好干?
而區(qū)塊鏈也就因此被分成了涇渭分明的兩類,很多人都聽過什么公有鏈私有鏈聯(lián)盟鏈,但是,如果你們以為這是根據(jù)應(yīng)用區(qū)分的就大錯特錯,其實(shí),這兩種區(qū)塊鏈最本質(zhì)的區(qū)別,還是因?yàn)楣沧R模型或者說算法不同——BFT算法沒法應(yīng)用于大量節(jié)點(diǎn),所以用BFT算法的就沒法做公有鏈。而比特幣共識得有個價值體系,這東西去做私有鏈聯(lián)盟鏈就很不靠譜,因?yàn)橐粋€單純逐利的人的假設(shè)還算靠譜,但是如果對象是公司的話,公司的利益就太復(fù)雜了,不能簡單認(rèn)為他們只追逐區(qū)塊鏈上那點(diǎn)價值。
1,公有鏈,以比特幣,以太坊和所有虛擬貨幣為代表,都采用比特幣共識,共識算法基本上都采用工作證明機(jī)制,也就是挖礦那些,這種機(jī)制其他回答里已經(jīng)講得夠清楚了,就略過。工作證明一切都好,除了費(fèi)電……費(fèi)多少電呢?差不多和一個百萬人級別的城市那么多。此外以太坊的創(chuàng)始人特別喜歡權(quán)益證明,似乎很快要小范圍投入使用(100個區(qū)塊里一個用權(quán)益證明)。但是目前為止,大家對這東西的可靠性還持觀望態(tài)度。
2,私有鏈和聯(lián)盟鏈。以IBM的hyperledger-fabric,以及一大堆其他的類似于tendermint,甚至R3 corda和ripple為代表,都用BFT共識。其實(shí)這方面的應(yīng)用已經(jīng)很多了,問題是,1,目前基本上所有應(yīng)用給人的感覺都還是為了做區(qū)塊鏈而區(qū)塊鏈,真的覺得這東西好到不可或缺的應(yīng)用還基本沒有。2,由于為了區(qū)塊鏈而區(qū)塊鏈,其實(shí)很多場景的安全性和可靠性還值得懷疑,這點(diǎn)經(jīng)常被被公有鏈的支持者詬病。
以上就是區(qū)塊鏈?zhǔn)鞘裁?,如何簡單易懂地介紹區(qū)塊鏈?的詳細(xì)內(nèi)容,更多關(guān)于至于區(qū)塊鏈怎么實(shí)現(xiàn)的的資料請關(guān)注腳本之家其它相關(guān)文章!
你可能感興趣的文章
-
加密貨幣空投有哪些類型?如何安全領(lǐng)取空投代幣?完整指南
隨著區(qū)塊鏈技術(shù)的不斷發(fā)展,空投(Airdrop)已成為加密項(xiàng)推廣的重要式,簡單來說,空投就是免費(fèi)發(fā)放加密貨幣,的是吸引更多戶關(guān)注項(xiàng)目并參與其中,對新來說,空投是種低檻的 …
2025-09-23 -
區(qū)塊瀏覽器怎么用?怎么查看鏈上數(shù)據(jù)和轉(zhuǎn)賬狀態(tài)?
區(qū)塊瀏覽器是一種專門用于查詢和瀏覽區(qū)塊鏈信息的工具,本質(zhì)上是區(qū)塊鏈的 “搜索引擎”, 它能實(shí)時瀏覽和查詢區(qū)塊鏈上的區(qū)塊高度、交易記錄、地址、代幣等信息,將復(fù)雜的鏈…
2025-09-23 -
2025年如何挖掘萊特幣 (LTC)幣?挖礦教程、收益分析
萊特幣誕生于 2011 年,是比特幣的一個分叉,旨在成為更輕量、更快速的支付網(wǎng)絡(luò),它采用 Scrypt 算法,這是一種不同于比特幣 SHA-256 的哈希算法,最初的設(shè)計目的是降低挖礦…
2025-09-23 -
什么是跨鏈橋?市面上有哪些跨鏈橋?一文介紹
什么是跨鏈橋?跨鏈橋在加密貨幣領(lǐng)域發(fā)揮著至關(guān)重要的作用,它實(shí)現(xiàn)了不同區(qū)塊鏈網(wǎng)絡(luò)之間的資產(chǎn)轉(zhuǎn)移,這是必要的,因?yàn)槊總€區(qū)塊鏈都按照自己的規(guī)則獨(dú)立運(yùn)行,因此無法直接在…
2025-09-23 -
DeFi 3.0是什么?DeFi 3.0 代幣、功能、工作原理介紹
去中心化金融 (DeFi) 已經(jīng)徹底改變了人們對貨幣、借貸和投資的認(rèn)知,從早期簡單的借貸協(xié)議到如今高度復(fù)雜的收益挖礦方法,DeFi 不斷發(fā)展演變,這種演變的最新階段就是人們所…
2025-09-23 -
DePINFi是什么?有哪些分類?DePINFi的趨勢的優(yōu)勢和挑戰(zhàn)介紹
DePINFi 是“去中心化物理基礎(chǔ)設(shè)施網(wǎng)絡(luò)金融”的縮寫,是去中心化物理基礎(chǔ)設(shè)施網(wǎng)絡(luò) (DePIN) 與去中心化金融 (DeFi) 的交匯點(diǎn),下面小編就為大家詳細(xì)介紹一下它吧…
2025-09-22 -
Base生態(tài)核心項(xiàng)目有哪些?一文速覽值得關(guān)注的20個Base生態(tài)項(xiàng)目
本文將推薦Base生態(tài)中值得關(guān)注的20個項(xiàng)目,通過梳理這些項(xiàng)目的市場定位和資本表現(xiàn),來判斷Base生態(tài)的真實(shí)厚度,并進(jìn)一步揭示其未來增長的動力來源,這不僅是對Base App轉(zhuǎn)型…
2025-09-22 -
一文盤點(diǎn)Web3 AI的11個潛力項(xiàng)目:不要錯過的造富列車
Web3 AI為普通人提供了參與AI財富創(chuàng)造的機(jī)會,不同于傳統(tǒng)AI的精英化,以下是我們精選的 Web3 AI領(lǐng)域最具潛力的項(xiàng)目和方向,Web3 AI的造富列車已經(jīng)啟動,現(xiàn)在上車還來得及…
2025-09-22 -
什么是加密貨幣完全稀釋估值FDV?怎么算?為何代幣解鎖可能意味著上漲
什么是加密貨幣完全稀釋估值FDV?為何代幣解鎖可能意味著上漲?FDV 考慮的是代幣的總供應(yīng)量,而流通供應(yīng)量指的是當(dāng)前市場上實(shí)際交易的代幣,理解 FDV 有助于全面評估一個項(xiàng)…
2025-09-20 -
什么是加密貨幣市值?市值為何重要?如何影響加密貨幣價格?
市值,通常被稱為“市值”,是一個反映加密貨幣總價值的財務(wù)指標(biāo),它是通過將加密貨幣的當(dāng)前價格乘以其總流通供應(yīng)量來計算的,本文深入探討了加密貨幣市值的含義、計算方法以…
2025-09-19