從經(jīng)濟(jì)學(xué)角度看區(qū)塊鏈
提到區(qū)塊鏈,大家都會(huì)提到“拜占庭將軍問題”這個(gè)分布式系統(tǒng)中的著名問題。
拜占庭將軍問題大概講的是:拜占庭N個(gè)在不同地方的將軍圍攻一個(gè)敵人,忠誠的將軍希望通過某種協(xié)議達(dá)成某個(gè)命令的一致(比如約定某個(gè)時(shí)間一起進(jìn)攻),但其中一些背叛的將軍會(huì)通過發(fā)送錯(cuò)誤的消息阻撓忠誠的將軍達(dá)成命令上的一致。如果同時(shí)發(fā)起進(jìn)攻的將軍數(shù)量少于M個(gè),那么不足以殲滅敵人反而容易被敵人全部殲滅。怎樣做才能保證有多于M個(gè)將軍在同一時(shí)間一起發(fā)起進(jìn)攻?
拜占庭將軍問題是分布式系統(tǒng)的一個(gè)經(jīng)典模型,當(dāng)分布式系統(tǒng)沒有可靠的中心協(xié)調(diào)所有節(jié)點(diǎn)時(shí),如何確保大多數(shù)節(jié)點(diǎn)的數(shù)據(jù)是一致的?拜占庭將軍模型就是描述的這個(gè)問題。一個(gè)區(qū)塊鏈系統(tǒng)能夠解決拜占庭將軍問題,那么我們就說這個(gè)區(qū)塊鏈系統(tǒng)滿足拜占庭容錯(cuò)。
需要注意一點(diǎn):
在拜占庭將軍問題模型中,將軍們被分成了“忠誠的”和“背叛的”兩種。這種分類事實(shí)上是以將軍們是否遵守“共識(shí)協(xié)議”來區(qū)分的。在區(qū)塊鏈系統(tǒng)中,當(dāng)一個(gè)節(jié)點(diǎn)不遵守共識(shí)協(xié)議,篡改正確的數(shù)據(jù)等行為,可以被看作是“背叛的”節(jié)點(diǎn)。
作為一個(gè)信息系統(tǒng),從“拜占庭將軍問題”角度(即分布式系統(tǒng)的數(shù)據(jù)一致性角度)分析就足夠了。然而我在本系列的第一篇文章中就提到過,區(qū)塊鏈不僅僅是一個(gè)信息化的工具,區(qū)塊鏈?zhǔn)巧钊氲綐I(yè)務(wù)內(nèi)部,能夠?qū)ι虡I(yè)模式起到?jīng)Q定性作用的一種技術(shù)。區(qū)塊鏈技術(shù)不僅僅是一個(gè)信息技術(shù),更是一個(gè)“經(jīng)濟(jì)技術(shù)”。因此,我們就不能只從信息技術(shù)角度來分析區(qū)塊鏈了。
回到本章的正題,我們?cè)趺磸慕?jīng)濟(jì)學(xué)角度來看區(qū)塊鏈?這個(gè)題目太大了,并且我本人不是經(jīng)濟(jì)學(xué)專業(yè)的,只能嘗試著從經(jīng)濟(jì)學(xué)角度簡單分析一下比特幣區(qū)塊鏈系統(tǒng)。
從經(jīng)濟(jì)學(xué)角度來看,僅僅是遵守共識(shí)協(xié)議并不能保證一個(gè)經(jīng)濟(jì)系統(tǒng)的穩(wěn)定性。事實(shí)上,“中本聰”在設(shè)計(jì)比特幣系統(tǒng)時(shí),已經(jīng)考慮到了很多經(jīng)濟(jì)學(xué)方面的問題,因此比特幣系統(tǒng)中對(duì)礦工有挖礦獎(jiǎng)勵(lì),礦工還可以獲得轉(zhuǎn)賬手續(xù)費(fèi),以確保有足夠的算力能夠參與整個(gè)比特幣系統(tǒng)的維護(hù)。
經(jīng)濟(jì)學(xué)的最基本假設(shè):礦工是要追求利益最大化的
首先,對(duì)于礦工來說,遵守整個(gè)比特幣系統(tǒng)技術(shù)協(xié)議,有可能獲得比特幣。不遵守,則直接就會(huì)被排除在系統(tǒng)之外,沒有收益。因此,從“拜占庭將軍問題”分類來說,比特幣的礦工都是“忠誠的”,這就能夠使得整個(gè)比特幣系統(tǒng)是趨于穩(wěn)定的。
然而,在遵守比特幣系統(tǒng)技術(shù)協(xié)議的前提下,其實(shí)還有很多種策略可以選擇。這些策略都是在不違背技術(shù)協(xié)議的行動(dòng),但是對(duì)整個(gè)比特幣系統(tǒng)的經(jīng)濟(jì)學(xué)運(yùn)行穩(wěn)定性有影響。比如礦工可以選擇對(duì)其他礦工發(fā)起DDOS攻擊,拖慢競(jìng)爭(zhēng)者的網(wǎng)絡(luò),以提高自己挖到區(qū)塊的概率等。這種情況可以讓礦工獲得更高的收益,但是一旦所有礦工之間都在相互DDOS攻擊,會(huì)造成整個(gè)比特幣網(wǎng)絡(luò)不可用,交易無法提交生效,進(jìn)而導(dǎo)致整個(gè)比特幣的價(jià)值降低。
還要注意一點(diǎn),礦工的身份有時(shí)候不僅僅是礦工,同時(shí)也是比特幣的交易者。在這種情況下,礦工如果發(fā)起“雙花攻擊”,則礦工有可能獲取到大量的利益。
舉例來說,如果一個(gè)礦工Alice需要轉(zhuǎn)賬給Bob 1000比特幣,此時(shí)Alice在比特幣網(wǎng)絡(luò)上廣播一個(gè)Alice轉(zhuǎn)賬給Bob賬戶 1000比特幣的交易,被其他礦工接收到,記入了他們的區(qū)塊中。然而Alice自己則在區(qū)塊中記錄了另一筆交易——Alice轉(zhuǎn)賬給Alice_new賬戶1000比特幣,也就是說,Alice人為制造了一個(gè)分叉,在這個(gè)分叉點(diǎn),制造了一筆雙花交易(一筆錢花了兩次)。
之后Alice一直默默的挖礦,直到產(chǎn)生了6個(gè)區(qū)塊后再次廣播挖礦結(jié)果。如果Alice能夠掌握全網(wǎng)51%以上的算力,那么這筆雙花交易最終被全網(wǎng)承認(rèn)的將是Alice轉(zhuǎn)給Alice_new的這筆交易,而轉(zhuǎn)給Bob的將失效。這時(shí)如果1比特幣的價(jià)格是3000美元,那么Bob有可能損失掉了三百萬美元。這是一筆非常大的數(shù)字。這也就是我們經(jīng)常提到的比特幣中的“51%攻擊”。
由于整個(gè)比特幣系統(tǒng)是無中心化的,也就是說,我們沒有辦法記錄Alice這個(gè)礦工的信用,因此,即便發(fā)生了51%攻擊,Alice也得不到任何懲罰,相反,Alice還能夠繼續(xù)參與挖礦,并且繼續(xù)制造51%攻擊。當(dāng)然,如果這種事情頻繁發(fā)生,整個(gè)比特幣系統(tǒng)就會(huì)變得一文不值,因此,具有超級(jí)算力的礦工在發(fā)起51%攻擊時(shí),也需要考慮是否會(huì)把整個(gè)比特幣系統(tǒng)拖垮。
其實(shí)不僅僅是算力超過51%的礦工可以發(fā)起雙花攻擊,如果一個(gè)礦工掌握了45%的算力,那么他依然可以發(fā)起雙花攻擊,在我們通常認(rèn)為6個(gè)區(qū)塊可以確認(rèn)交易成功的概念下,45%算力發(fā)起雙花攻擊的成功率為(0.45/(1-0.45))的6次方——30%,(考慮到他掌握了45%的算力,那么他單獨(dú)自己挖自己的分叉,另一個(gè)分叉就只有55%的算力了,所以是0.45/(1-0.45))也就是說,如果這個(gè)雙花交易的額度是1000比特幣,那么他收益的期望是300比特幣,這種情況下,從博弈論角度來看,礦工發(fā)起雙花攻擊的可能性是極大的。
由于比特幣區(qū)塊鏈系統(tǒng)的設(shè)計(jì)中,挖礦難度的變化率是比較慢的,因此,對(duì)于算力很高的礦工來說,在準(zhǔn)備大幅增加硬件提高算力的同時(shí)發(fā)起雙花攻擊,這樣的行為有可能讓礦工獲得很高的收益。當(dāng)然,這種行為也同樣會(huì)導(dǎo)致比特幣的價(jià)值受到損害。
綜合上面的分析,我們可以得出結(jié)論:雖然比特幣區(qū)塊鏈系統(tǒng)在技術(shù)設(shè)計(jì)上已經(jīng)非常成熟,但是一旦采用經(jīng)濟(jì)學(xué)分析,仍然可以發(fā)現(xiàn)無中心化的比特幣系統(tǒng)依然存在很高的經(jīng)濟(jì)風(fēng)險(xiǎn),這種風(fēng)險(xiǎn)來源于算力的中心化。目前整個(gè)比特幣網(wǎng)絡(luò)中,幾個(gè)大的礦池已經(jīng)占有了非常高的算力比例,在這種情況下,比特幣系統(tǒng)的價(jià)值已經(jīng)很大程度上依賴于這些礦池的道德水平了。不過,上面的所有分析是假設(shè)礦工發(fā)起了大額轉(zhuǎn)賬交易。而目前由于比特幣價(jià)格非常高,大額交易是比較罕見的,因此,出現(xiàn)上述風(fēng)險(xiǎn)的概率是很低。