如今的區(qū)塊鏈還不完美。比特幣在10多年前首次發(fā)布,但它仍然面臨著低吞吐量和高交易費(fèi)用的問題。以太坊多年來一直在推動(dòng)更新,但在可擴(kuò)展性
如今的區(qū)塊鏈還不完美。比特幣在10多年前首次發(fā)布,但它仍然面臨著低吞吐量和高交易費(fèi)用的問題。以太坊多年來一直在推動(dòng)更新,但在可擴(kuò)展性方面幾乎沒有比特幣做得好。這個(gè)問題的發(fā)生是由于區(qū)塊鏈還存在所謂的三難困境。
在本文中,我將介紹區(qū)塊鏈的三難困境是什么,Algorand是什么,以及他們?nèi)绾螄L試以一種高層次的方式解決它。本文假設(shè)您對區(qū)塊鏈及其相關(guān)術(shù)語有一定的基礎(chǔ)知識(shí)。
區(qū)塊鏈三難困境是什么?
三難困境是指有三種選擇,但最多同時(shí)只有兩種可能。在區(qū)塊鏈三難困境的情況下,有三種選擇:
· 安全
· 可擴(kuò)展性
· 去中心化
如果三難困境成立,只有兩個(gè)選項(xiàng)為真就意味著沒有好事發(fā)生。
沒有去中心化,我們基本上仍然處于今天已經(jīng)存在的同一系統(tǒng)中:排他性和神秘性。這包括有少量“代表”的項(xiàng)目——這不是真正的去中心化。
沒有安全性,交易可能會(huì)憑空消失。你本可以從別人那里拿到錢,然后給他們提供產(chǎn)品或服務(wù),但過了一段時(shí)間,你意識(shí)到你根本就沒有拿到錢。
最后,如果沒有可擴(kuò)展性,網(wǎng)絡(luò)就會(huì)很慢,很容易阻塞(還記得加密貓蓬勃發(fā)展時(shí)以太坊發(fā)生了什么嗎?)這是不利的,因?yàn)槲覀円⒁粋€(gè)全球即時(shí)的網(wǎng)絡(luò)。
區(qū)塊鏈應(yīng)該做什么?
區(qū)塊鏈本質(zhì)上有兩個(gè)需求:
· 使其防篡改和可跟蹤。這是通過單向哈希技術(shù)實(shí)現(xiàn)的,包括最新塊中的最后一個(gè)塊的哈希值。幾乎所有的區(qū)塊鏈都是這樣做的,在這種情況下并沒有太大的不同。
· 產(chǎn)生新的塊。如何選擇將哪個(gè)塊添加到鏈上?這是一個(gè)棘手的問題,不同的區(qū)塊鏈?zhǔn)褂貌煌墓沧R(shí)性算法來確定。
解決三難問題歸結(jié)于開發(fā)一種共識(shí)算法,它可以同時(shí)做這三件事。
流行的共識(shí)算法及其缺陷
工作量證明(PoW)
PoW因中本聰(Satoshi Nakamoto)將其用作比特幣的共識(shí)算法而臭名昭著。在撰寫本文時(shí),以太坊也仍然使用著PoW。雖然該算法已經(jīng)被證明是可靠的,因?yàn)樗呀?jīng)運(yùn)行了10多年,但它也有相當(dāng)多的問題。
· 不可擴(kuò)展: 在PoW中,“礦工”需要在他們的機(jī)器上解決一個(gè)非常復(fù)雜的密碼難題。世界上第一個(gè)這樣做的人有權(quán)在鏈上附加一個(gè)新塊。這個(gè)過程是昂貴的,因?yàn)榻鉀Q這個(gè)難題需要大量的計(jì)算能力和電力。除了獲勝的礦工之外,實(shí)際上所有人都在賠錢,因?yàn)樗麄冎皇腔〞r(shí)間試圖解決一個(gè)謎題而已。
· 事實(shí)上的集中化: 雖然PoW本身并不是一個(gè)集中化的共識(shí)機(jī)制,但由于成本高昂,隨著時(shí)間的推移,比特幣開采實(shí)際上已經(jīng)變得集中化。當(dāng)今世界的采礦業(yè)使用的是一架又一架的專用硬件,耗電量極其的大。在個(gè)人電腦或筆記本電腦上采礦是完全沒有價(jià)值的,而且很有可能會(huì)賠錢。由于盈利需要巨額投資,比特幣的區(qū)塊鏈主要由三個(gè)礦池控制。
· 易受51%攻擊:如果一個(gè)PoW鏈的主要礦商串通,或者某個(gè)惡意行動(dòng)者以某種方式能夠控制51%的網(wǎng)絡(luò)礦商哈希率,他們可以同意“假塊”并自己控制整個(gè)鏈。另外49%的人是否同意他們的決定并不重要。這使得事實(shí)上的集中點(diǎn)非??膳?。
· 分叉: 網(wǎng)絡(luò)現(xiàn)在看到下一個(gè)塊的多個(gè)候選對象,由于傳播該信息的延遲。這種分支稱為分叉,分叉可以存在一段時(shí)間,甚至可以通過添加新的塊繼續(xù)延長。但最終,除了一個(gè)叉外,所有的叉都會(huì)消失。這將導(dǎo)致交易的不確定性和延遲,因?yàn)槟荒芡耆_定您的交易是否已經(jīng)完成。對于比特幣,人們建議等待6個(gè)區(qū)塊以確保交易是最終的,因?yàn)樵谔砑恿?個(gè)區(qū)塊之后,它進(jìn)入叉鏈的幾率極低。但是,這可能需要一個(gè)小時(shí),這并不好。
委托權(quán)益證明(DPoS)
在DPoS中,社區(qū)授權(quán)一組稱為“委托”的用戶選擇下一個(gè)塊。該算法在EOS中得到了應(yīng)用。但也有一些缺陷:
· DPoS本質(zhì)上是直接集中化的。當(dāng)您希望網(wǎng)絡(luò)為數(shù)百萬用戶運(yùn)行時(shí),選擇將哪個(gè)塊附加到鏈后面的固定數(shù)量的委托是沒有意義的。長期依賴選定的代表是非常危險(xiǎn)的。
· 可以停滯不前。因?yàn)橹挥杏邢薜膸讉€(gè)節(jié)點(diǎn)可以完成所有的艱苦工作,所以攻擊者可以識(shí)別它們并停止網(wǎng)絡(luò)的運(yùn)行,例如通過DDoS對委托節(jié)點(diǎn)執(zhí)行操作。
Bonded權(quán)益證明(BPoS)
正如許多人愿意做的那樣,BPoS允許網(wǎng)絡(luò)用戶將一些錢以一種他們無法觸及的“債券”形式放在桌面上。這給了他們一些網(wǎng)絡(luò)上的權(quán)力,這些用戶驗(yàn)證并向鏈添加新的塊即可。他們的想法是,如果他們惡意行事,就會(huì)失去他們的保證金。這有一個(gè)非常明顯的缺陷:
· 網(wǎng)絡(luò)的普通用戶沒有足夠的可支配資金來購買債券。惡意行為者更容易將巨額資金投入他們的賭注中,這將使他們能夠完全控制區(qū)塊鏈。如果回報(bào)是數(shù)十億或數(shù)萬億美元,他們完全可以承受幾百萬美元的損失。
Algorand的純粹股權(quán)證明(PPoS)
Algorand解決這些問題的方法是他們的PPoS算法。PPoS不要求用戶在債券上投資,只要求他們首先持有債券。這并不是試圖通過擔(dān)心罰款來讓用戶保持誠實(shí),而是讓“一小部分錢作弊成為不可能,而大部分錢作弊又是愚蠢的”。當(dāng)大部分錢都在誠實(shí)的人手中時(shí),這種算法就是安全的。
實(shí)施純粹股權(quán)證明
在高層,Algorand分兩個(gè)階段構(gòu)建一個(gè)新的塊:
在階段1中,隨機(jī)選擇一個(gè)代幣,并選擇該代幣的所有者來提議下一個(gè)塊。
在階段2中,從網(wǎng)絡(luò)中的所有代幣中隨機(jī)選擇幾千個(gè)代幣。選擇這些代幣的所有者組成一個(gè)階段2委員會(huì),該委員會(huì)將驗(yàn)證和批準(zhǔn)階段1中提議的塊。由于代幣是隨機(jī)選擇的,而不是所有者,所以一些成員可能會(huì)被選擇k > 1次,并在委員會(huì)中擁有k票。
這是如何安全的?
這個(gè)問題的答案有點(diǎn)哲學(xué)意味。核心假設(shè)是,在任何社會(huì)中,都有少數(shù)壞人。也許是1%也許是2%,如果一個(gè)人生活在一個(gè)特別危險(xiǎn)的社會(huì),甚至可能是10%或20%。但是,在任何社會(huì)中都不會(huì)有大多數(shù)的壞人,否則社會(huì)就不會(huì)存在。
把算法和網(wǎng)絡(luò)看作一個(gè)社會(huì)。讓我們假設(shè)最壞的情況,并考慮網(wǎng)絡(luò)上20%的代幣屬于惡意參與者。然后,1/5次,為階段1選擇的代幣將由一個(gè)壞參與者擁有。假設(shè)他們告訴一些用戶塊是X而他們告訴另一些用戶塊是Y,就會(huì)試圖引起社會(huì)上的分歧。
Algorand網(wǎng)絡(luò)上的代幣數(shù)是非常大,接近2²?? (這取決于總投票權(quán)的股份)。代幣的概率被選中投票塊~ 2990/2²??。因此,對區(qū)塊進(jìn)行投票的委員會(huì)的規(guī)模近平均值為2990。達(dá)成共識(shí)的門檻是2267票。由于對手持有20%的股份,預(yù)計(jì)投給壞人的選票數(shù)量約為2990/5 = 598(實(shí)際數(shù)字基于Poisson分布),而誠實(shí)選民的預(yù)期數(shù)量約為2990 *(4/5)= 2239。
如果對手能夠?yàn)閮蓚€(gè)不同的值獲得超過閾值的選票,從而劃分鏈并在網(wǎng)絡(luò)上引起分歧,那么他們將獲勝。
舉個(gè)例子,讓我們來看看在誠實(shí)投票的數(shù)目恰好是期望2239的平均情況下會(huì)發(fā)生什么。要使對手獲勝,他們需要[(2 * 2267)-2239]/2票才能獲勝——或1147.5票。因?yàn)橥镀睌?shù)是整數(shù),所以他們需要≥1148票才能獲勝。然而,如上所述,投給對手的選票的期望值是598。計(jì)算的概率≥1148票在Poisson分布大致與E (X) = 598(5/10??)這是非常非常小的。
不過,這個(gè)算法最有趣的問題還有待回答。誰確定這個(gè)委員會(huì)?
如何選擇使用者成為委員會(huì)成員
如果我告訴你,委員會(huì)是由Algorand(公司)自己選擇的,這將是一個(gè)高度集中的解決方案,并擁有三難困境。
如果我告訴你,用戶彼此討論,直到他們決定誰是成員,這是一個(gè)超級慢的系統(tǒng),因?yàn)槟闳绾未_定你信任別人,可能永遠(yuǎn)不會(huì)導(dǎo)致選擇。
這就是有趣的地方。委員會(huì)成員自己選擇。為了成為委員會(huì)的成員,這些節(jié)點(diǎn)在所有帳戶上運(yùn)行一個(gè)密碼可驗(yàn)證的“彩票”,如果它們的任何代幣中了彩票,它們將被選為委員會(huì)的成員。此彩票是獨(dú)立運(yùn)行的,不與網(wǎng)絡(luò)上的其他節(jié)點(diǎn)通信。因?yàn)樗强梢酝ㄟ^密碼驗(yàn)證的,所以沒有人能改變他們中彩票的機(jī)會(huì)。不管你有多少計(jì)算能力,你都不能改變被選中的機(jī)會(huì)。
當(dāng)用戶運(yùn)行彩票時(shí),有兩種可能的場景:
1. 他們的代幣都沒有中彩票,在這種情況下,他們對街區(qū)的看法就被忽略了。
2. 如果一些k≥1的代幣中了彩票,在這種情況下,用戶獲得一張“中獎(jiǎng)彩票”(一個(gè)簡短的密碼證明),以證明他們中了彩票。然后,他們將這張票連同他們對塊的看法傳播到網(wǎng)絡(luò)的其他部分。
回顧三難困境
安全
假設(shè)一個(gè)強(qiáng)大的惡意對手想要賄賂委員會(huì)成員,并影響他們對下一個(gè)街區(qū)的投票。我們甚至假設(shè),如果他們知道委員會(huì)成員是誰,他們就能做到這一點(diǎn)。
這就是警告的由來,他們不知道委員會(huì)成員是誰。由于彩票是獨(dú)立運(yùn)行的,只有成員才知道他們是否被選中,直到他們將自己對區(qū)塊的證明和意見傳播到網(wǎng)絡(luò)的其他部分。
一旦他們傳播了自己的觀點(diǎn),其他節(jié)點(diǎn)就會(huì)知道委員會(huì)成員是誰,但現(xiàn)在要想腐化他們已經(jīng)太晚了。他們已經(jīng)說了他們必須說的話,他們的意見已經(jīng)被廣播到網(wǎng)絡(luò)上。誰也不能保證他們什么時(shí)候會(huì)再次成為委員會(huì)成員。因此,惡意的對手現(xiàn)在不能做任何事情來讓他們閉嘴。
所以基本上,Algorand是安全的,因?yàn)槭紫?,對手不知道委員會(huì)成員是誰。當(dāng)他們發(fā)現(xiàn)的時(shí)候,已經(jīng)太晚了。
此外,由于沒有人知道委員會(huì)成員最初是誰,所以他們也不能使用DDoS之類的方法攻擊自己的節(jié)點(diǎn)。
可擴(kuò)展性
任何用戶只要一微秒就可以運(yùn)行“彩票”,不管他們有多少代幣。此外,由于所有彩票都是彼此獨(dú)立運(yùn)行的,所以節(jié)點(diǎn)不需要等待其他節(jié)點(diǎn)先完成某些操作。這可以在所有節(jié)點(diǎn)上并發(fā)發(fā)生。
一旦選中,成員將向網(wǎng)絡(luò)的其他部分傳播一條短消息。因此,無論網(wǎng)絡(luò)上有多少用戶,只需要在網(wǎng)絡(luò)上傳播幾千條消息。這是高度可伸縮的。
去中心化
沒有幾個(gè)用戶可以決定下一個(gè)塊是什么。也沒有一個(gè)固定的委員會(huì)每次都做這個(gè)決定。委員會(huì)是隨機(jī)而安全地選出來的,根本不需要太多的計(jì)算能力。這使得網(wǎng)絡(luò)上的每個(gè)人都有機(jī)會(huì)成為委員會(huì)的一員,對下一個(gè)區(qū)塊進(jìn)行投票。
獎(jiǎng)勵(lì): 基本上不會(huì)分叉
在Algorand,一次只有一個(gè)區(qū)塊可以獲得所需的委員會(huì)投票門檻。因此,所有交易都是最終的,只要它們被添加到一個(gè)塊中。一旦出現(xiàn)一個(gè)塊,您可以指望它永遠(yuǎn)在那里,因此交易將立即結(jié)束。