比特幣的潛在激勵
本文目錄:
- 1 比特幣協(xié)議快速入門(A Quick Primer on the Bitcoin Protocol)
- 2 比特幣經(jīng)濟學方法論:難度調(diào)整與挖礦經(jīng)濟均衡(Bitcoin Economics 101: Difficulty Adjustment and the Economic Equilibrium of Mining)
- 3 挖礦的去中心化(Mining Decentralization)
- 3.1 ASIC挖礦(ASIC mining)
- 3.2 非ASIC的挖礦系統(tǒng)(Alternative systems with no ASIC mining)
- 3.3 ASICBoost算法(ASICBOOST)
- 3.4 通信基礎設施(Communication)
- 3.5 規(guī)模經(jīng)濟(Economies of scale)
- 4 礦池和風險規(guī)避(Mining Pools and Risk Aversion)
- 4.1 礦池的形成(The formation of pools)
- 4.2 礦池報酬分配和篡改可能(Reward distribution within pools and possible manipulations)
- 4.3 消除礦池(Eliminating pools)
- 5 攻擊和違反規(guī)則的經(jīng)濟學原理(The Economics of Attacks and Deviations from the Rules)
- 5.1 校驗(Validation)
- 5.2 交易傳播(Transaction propagation)
- 5.3 私自挖礦(Selfish mining)
- 5.4 雙重支出(Double spending)
- 6 結論(Conclusion)
- 7 作者簡介
- 8 參考文獻(References)
除了作為理財和轉賬的協(xié)議之外,比特幣還創(chuàng)建了一個支配其內(nèi)部運行的復雜經(jīng)濟激勵機制(incentives)。這些激勵機制強烈影響了協(xié)議的能力、安全保證,以及未來發(fā)展的道路。本文探討了比特幣協(xié)議的經(jīng)濟暗流、優(yōu)勢缺陷,以及它們?nèi)绾畏催^來影響協(xié)議本身。
比特幣,這個建立在開放P2P(點對點)網(wǎng)絡結構之上的貨幣,繼續(xù)享受人們的追捧。比特幣系統(tǒng)是“無許可的”——任何人都可以選擇加入網(wǎng)絡,轉賬,甚至參與授權交易。比特幣安全的關鍵之處在于它能夠抵御攻擊者以多重虛假身份加入系統(tǒng)的操縱行為。畢竟,任何人都可以下載比特幣的源代碼,成為一個比特幣節(jié)點,并根據(jù)需要為網(wǎng)絡添加盡可能多的計算機,而無需向其他人表明其身份。為了解決這個問題,該協(xié)議要求加入系統(tǒng)的節(jié)點展示出 “工作量證明”:付出算力破解密碼學難題以獲得參與比特幣協(xié)議的資格。
從事這種“工作量證明”的節(jié)點被稱為礦工。系統(tǒng)向礦工獎勵比特幣作為工作量的“證明”,從而也為這樣的“算力投資”設定了“激勵機制”。
通過在自己電腦上運行軟件就可以獲利(比特幣)——這帶來的第一個也是最明顯的影響是:一旦比特幣具有足夠的價值,人們就開始大肆挖礦。事實上,為了增強挖礦力度,大部分挖礦工作很快都轉移到專用的計算機農(nóng)場。這些計算機農(nóng)場使用定制工具來實現(xiàn)其目的:開始,GPU被用于大規(guī)模并行工挖礦;之后,特需設計的芯片——專門針對比特幣核心協(xié)議計算特征而量身定制的芯片——ASICs(專用集成電路)開始出現(xiàn)(在挖礦時, ASICs機器比普通PC快一百萬倍)。比特幣網(wǎng)絡迅速發(fā)展并變得更加安全,為了獲利的競爭也變得更加激烈(利益由比特幣協(xié)議周期性放出)。
比特幣的安全性和經(jīng)濟性是相互作用的。在討論這個主題之前,讓我們快速回顧協(xié)議本身的規(guī)則——正是這些規(guī)則產(chǎn)生了這種復雜的相互作用。
1 比特幣協(xié)議快速入門(A Quick Primer on the Bitcoin Protocol)
持有比特幣并希望轉賬的用戶可以將交易信息(通過他們安裝在計算機或智能手機上的軟件)發(fā)送到比特幣網(wǎng)絡上的一個節(jié)點。比特幣網(wǎng)絡中的活躍節(jié)點從用戶那里收集這些交易信息并將它們分發(fā)到網(wǎng)絡中的對等節(jié)點——分發(fā)方式是每個節(jié)點僅通知那些與請求轉賬所關聯(lián)的節(jié)點。交易信息被批量的匯聚,稱為區(qū)塊,而區(qū)塊又被鏈接在一起形成區(qū)塊鏈,從而形成所有被接受的比特幣交易記錄。區(qū)塊鏈中的每個區(qū)塊都通過一個加密哈希值(實際上也是前驅區(qū)塊的唯一標識符)引用其前驅區(qū)塊。比特幣網(wǎng)絡中的每個節(jié)點都保存著完整的區(qū)塊鏈副本。區(qū)塊創(chuàng)建的過程被稱為挖礦,挖礦的作用之一相當于新幣的印刷,也就是所謂的造幣。
比特幣的協(xié)議規(guī)則使區(qū)塊的創(chuàng)建非常困難:只有當區(qū)塊包含密碼學難題的答案時,才被認為是合法的。作為報酬,每當?shù)V工成功創(chuàng)建區(qū)塊時,他們都會得到比特幣獎勵。報酬由兩部分組成:一部分是新造比特幣,一部分是從區(qū)塊所包含的交易中抽取的挖礦手續(xù)費。目前的造幣率是12.5比特幣每區(qū)塊,這一數(shù)額大約每四年減半。隨著這一數(shù)額的減少,比特幣開始越來越依賴挖礦手續(xù)費來支付礦工。
因此比特幣運行的關鍵是讓所有節(jié)點就區(qū)塊鏈的內(nèi)容(區(qū)塊鏈記錄系統(tǒng)內(nèi)的所有轉賬信息)達成一致。因此,區(qū)塊更新會迅速傳播到網(wǎng)絡中的所有節(jié)點。不過,節(jié)點有時可能會收到兩個不同版本的區(qū)塊鏈。例如,如果兩個節(jié)點同時創(chuàng)建了一個區(qū)塊,則它們可能會持有區(qū)塊鏈的兩個不同更新(鏈的增長chang)。這些區(qū)塊可能包含不同的支付操作,因此比特幣系統(tǒng)必須決定要接受哪個版本。
比特幣協(xié)議規(guī)定每個節(jié)點只接受最長鏈作為交易事件的正確版本(主鏈),如圖1所示(更確切地說,節(jié)點選擇包含最多累積計算工作的鏈作為主鏈,這通常也是最長鏈)。這條著名的“最長鏈規(guī)則”為比特幣提供了安全性。一個攻擊者——如果試圖愚弄其他節(jié)點,讓他們相信系統(tǒng)發(fā)生了不同的支付事件——需要產(chǎn)生比網(wǎng)絡其余部分更長的區(qū)塊鏈。由于“工作量證明”是一個區(qū)塊一個區(qū)塊的創(chuàng)建出來的,“產(chǎn)生更長區(qū)塊鏈”的任務將是異乎尋常的困難。事實上,只要攻擊者的計算能力低于整個比特幣網(wǎng)絡的總和,區(qū)塊鏈中的區(qū)塊和交易將越來越難以取代(因為攻擊者和整個比特幣網(wǎng)絡的鏈一起增長chang)。
替換主鏈的困難性意味著攻擊者需要多次嘗試才能夠偷天換日。這些失敗的嘗試意味著巨大的代價——在最長鏈之外挖礦,不會得到任何挖礦報酬。對于攻擊者來說,初級的攻擊確實代價昂貴(稍后將討論更高級的攻擊)。
圖1展示區(qū)塊鏈的演變情況:分叉開始出現(xiàn),直到其中一個鏈比另一個鏈更長才能解決。解決的辦法是丟棄最長鏈之外的區(qū)塊:被丟棄的區(qū)塊不再增長(chang);其內(nèi)容(紅色部分)也被忽略;創(chuàng)建它們的礦工也不會得到任何報酬。在時間點1,由于一個區(qū)塊在創(chuàng)建時沒有鏈接到最新的區(qū)塊,導致產(chǎn)生兩個可選的鏈,即發(fā)生了分叉。在時間點2,分叉被解決,因為一個鏈比另一個鏈長。在時間點3,有另一個持續(xù)時間更長的分叉,在時間點4第二個分叉被解決。
2 比特幣經(jīng)濟學方法論:難度調(diào)整與挖礦經(jīng)濟均衡(Bitcoin Economics 101: Difficulty Adjustment and the Economic Equilibrium of Mining)
根據(jù)比特幣協(xié)議,區(qū)塊創(chuàng)建速率大致保持不變,也就是期望區(qū)塊的創(chuàng)建間隔大約為10分鐘。如果塊創(chuàng)建得太快,則生成區(qū)塊所需的工作量證明的難度會自動增加。這種機制已經(jīng)存在,以確保區(qū)塊不會因為系統(tǒng)算力的增加而在節(jié)點之間“洪泛”。因此系統(tǒng)以相對恒定的速率向礦工提供報酬,和投資于挖礦的算力總量無關。
顯然,隨著比特幣的價值上升(以美元計),挖礦生意(產(chǎn)生面值為比特幣的支付)變得更加有利可圖。隨著更多的人為了利益加入礦工群體,區(qū)塊的創(chuàng)建難度持續(xù)增加。而難度增加又導致挖礦代價變得更加昂貴。在理想情況下,當區(qū)塊的創(chuàng)建成本等于所得的報酬時,系統(tǒng)將達到平衡。事實上,挖礦總是微利的,有風險的——而且還需要對設備進行初始投資,報酬中的一些盈余也必須補償這些投資。因此,比特幣協(xié)議的安全性可以根據(jù)價值調(diào)整自身:更高的價值也意味著更高的安全性。
由于挖礦報酬持續(xù)下降(根據(jù)比特幣協(xié)議的挖礦時間表),預計創(chuàng)建區(qū)塊的動機將更多依賴于交易費用。如果比特幣交易量突然下降,這些交易費用將不足以補償?shù)V工的計算資源。一些礦工可能因此暫時停止他們的區(qū)塊創(chuàng)建。這可能會危及整個系統(tǒng),因為交易的安全性取決于所有誠實的礦工積極參與。(關于挖礦人數(shù)下降后的比特幣激勵機制,參見Carlsten等人的文獻3)
許多人抱怨說,創(chuàng)建區(qū)塊的算力是在浪費資源(特別是電力):為系統(tǒng)投入大筆費用,除了防范潛在攻擊者之外,沒有任何經(jīng)濟目標。工作量證明的確是在求解毫無用處的密碼學難題——當然,除了為比特幣網(wǎng)絡安全保駕護航。但是,如果某些工作可能有用呢?或者可能以更高效的方式工作?如果挖礦不浪費每個節(jié)點的資源,那么攻擊者也不會為攻擊系統(tǒng)付出任何代價。事實上,如果工作量證明的成本較低,隨著更多誠實參與者加入挖礦群體(獲得報酬),難度調(diào)整機制將再次提高難度系數(shù)。因此,從某種意義上說,比特幣的工作量證明機制就是為了“浪費”一定數(shù)量的資源,而不管個體礦工的效率如何。為了從挖礦中獲得實質(zhì)性收益而又不會因為成本的增加而抵消,就需要“工作量證明”——這對整個社會是有用的,但對個體礦工毫無價值。(更多使用其他難題作為工作量證明基礎的嘗試,參見Ball等人,Miller等人和Zhang等人的文獻:2,8,13)
3 挖礦的去中心化(Mining Decentralization)
比特幣協(xié)議的關鍵是其去中心化:對于整個系統(tǒng),沒有單一的實體先驗地具有比其他人更多的權威或控制。這增強了系統(tǒng)的抗毀能力:沒有單一的信任錨點或單一故障點;礦工之間采用競爭的方式獲得挖礦手續(xù)費。
為了保持這種去中心化,最重要的是要保證挖礦活動是由許多小型實體完成,并且沒有一個礦工的算力明顯超過其他礦工。理想情況下,給予礦工的報酬應反映他們投入的工作量:貢獻了計算資源α%的礦工創(chuàng)建一個區(qū)塊的α%,并因此按比例抽取所有分配手續(xù)費和區(qū)塊報酬的α%。
在實踐中,出于幾個不同的原因,礦工可能從挖礦中獲得不成比例的報酬。這種報酬分配的不平衡讓利益偏向具有更多算力的大型礦工(使大型礦工獲得比小型同行更多的利潤),并為系統(tǒng)的中心化創(chuàng)造了持續(xù)不斷的經(jīng)濟暗流。哪怕微弱的不平衡也可以危及系統(tǒng):由于礦工可以使用額外回報來購買更多的算力,并因此而變得更加強大,繼而提升挖礦的難度,最終將其他小型(因而利潤較低)礦工排擠出這場游戲。由此產(chǎn)生的“贏家通吃”“動力學過程”將不可避免地導致系統(tǒng)的中心化,然后整個系統(tǒng)將受到優(yōu)勢礦工的支配,安全性也無法保證。
3.1 ASIC挖礦(ASIC mining)
ASIC的首次出現(xiàn)讓比特幣社區(qū)感到驚慌和擔憂。在挖掘比特幣方面,ASIC的效率比以前的系統(tǒng)高幾個數(shù)量級。最初,這種特殊的硬件并不容易獲得,因此它為擁有者提供了比其他礦工更大的優(yōu)勢——以更低的成本挖礦。那些擁有這種優(yōu)勢的人為系統(tǒng)添加基于ASIC的工作量證明,直到難度級別高到其他人都放棄挖礦。當時的風險是:一個能夠訪問ASIC的大型礦工將最終主宰比特幣系統(tǒng)。一段時間以后,隨著ASIC的商業(yè)化并廣泛分布,擔憂逐漸消退。
事實上,ASIC挖礦的實際影響(對安全性的貢獻)是深遠的。本文稍后將討論礦工如何進行雙重支付(雙花)和私自挖礦攻擊,以獲取利益。然而,有人可能會爭辯說,即使是自私和投機性的礦工也最好避免這種攻擊。事實上,一位礦工投資數(shù)百萬美元購買挖礦設備(比如ASIC),相當于重金投資了比特幣的未來價值:期望設備將在未來帶來比特幣回報。如果礦工使用這種設備攻擊該系統(tǒng),那么會降低人們對該貨幣的信心,并且降低比特幣的價值和未來的回報。因此,礦工的利益在某種意義上與整個系統(tǒng)的健康保持一致。
總而言之,ASIC挖礦提高了系統(tǒng)的準入門檻:普通人無法輕易地加入挖礦工作,也因此減少了系統(tǒng)的去中心化。另一方面,ASIC挖礦也引入了一種退出的“門檻”:礦工無法將他們的設備用于其他經(jīng)濟活動,因此有助于提供系統(tǒng)的安全性。
加密貨幣(例如萊特幣Litecoin,本質(zhì)上是比特幣的克?。┲g出現(xiàn)的相互競爭——其中一些使用與比特幣相同的工作量證明機制——為想要轉移挖礦算力的礦工提供了選擇方案。這讓市場的“動力學過程”更為復雜。例如,當特定貨幣失去價值時,礦工會將挖礦算力轉移到另一個加密貨幣,直到挖礦難度級別被提高。這可能會導致區(qū)塊創(chuàng)建的波動,使礦工較少的加密貨幣系統(tǒng)變得不穩(wěn)定。
3.2 非ASIC的挖礦系統(tǒng)(Alternative systems with no ASIC mining)
有趣的是,一些加密貨幣系統(tǒng)使用不同的難題求解(工作量證明)機制。這些難題難以設計成專用硬件,因而對ASIC挖礦更具抵抗性。例如,以太坊使用的Ethash難題。這通常是通過設計需要大量訪問其他資源(例如內(nèi)存等商用硬件)的算法難題來實現(xiàn)。
這些替代系統(tǒng)原則上更加去中心化,但另一方面它們?nèi)狈?ldquo;退出門檻”及其對安全的貢獻。
當云挖礦服務變得高度可用時,也會產(chǎn)生類似去中心化的效果。一些實體通過云服務出租他們的挖礦設備。租賃云挖礦服務的客戶才是真正的礦工,并且他們在系統(tǒng)中沒有長期利益。隨著這些云挖礦服務變得更加便宜和易于訪問,任何人都可以輕松成為臨時礦工。類似的是,云挖礦服務同樣缺乏“退出門檻”及其對安全的貢獻。
3.3 ASICBoost算法(ASICBOOST)
回想一下,創(chuàng)建一個區(qū)塊需要解決特定于該區(qū)塊的密碼學難題。這相當于猜測加密哈希函數(shù)的輸入。求解這樣的難題主要是通過強力枚舉不同的輸入來完成的。
礦工可以采用比同行更高效創(chuàng)建區(qū)塊的方法來獲得優(yōu)勢。除了采用更好的硬件外,算法是獲得優(yōu)勢的主要形式。事實上,一個被ASICBoost的算法“trick”最近成為頭條新聞。ASICBoost使礦工能夠重用一個輸入猜測的算力到另外一個輸入猜測。該算法是專有的,目前正在申請專利,尚不清楚誰可以用,誰不可以用。這樣的算法帶來的優(yōu)勢是可以降低每個哈希的算力消耗。ASIC挖礦的大型制造商Bitmain最近被指控秘密部署ASICBoost的硬件變體以增加其利潤。指控說,該公司在政治上阻礙了一些協(xié)議的改進,而這些改進很可能會讓他們無法使用ASICBoost。
3.4 通信基礎設施(Communication)
另外一種提高礦工效率的方法是投資通信基礎設施。通過更快地傳播區(qū)塊,并通過更快地接收其他區(qū)塊,礦工可以減少其區(qū)塊不屬于最長鏈并被丟棄(“成為孤兒”)的機會。由于脫離主鏈的區(qū)塊無法獲得報酬,更好的網(wǎng)絡通信意味著降低損失。無可否認,在比特幣區(qū)塊目前的創(chuàng)建速度下,這種優(yōu)勢微乎其微。 區(qū)塊并不經(jīng)常創(chuàng)建,并且交付加速幾秒只能帶來很小的優(yōu)勢。盡管如此,更好的網(wǎng)絡通信是獲得更多利潤的一種相對便宜的方式。
此外,當比特幣協(xié)議覆蓋節(jié)點數(shù)增大并且交易處理加速時,通信優(yōu)化帶來的效果變得更加明顯。目前比特幣系統(tǒng)平均每秒處理三到七筆交易。改變比特幣系統(tǒng)的參數(shù)——每秒處理更多的交易——將會增加孤兒區(qū)塊的比率,并且會放大網(wǎng)絡通信更好的礦工的優(yōu)勢。
3.5 規(guī)模經(jīng)濟(Economies of scale)
與任何大型實體一樣,大型礦工可以享受規(guī)模經(jīng)濟效益。隨著大規(guī)模挖礦業(yè)務的發(fā)展,大型礦工很可能投資于各種不同的優(yōu)化方案,比如尋找成本更低的電力來源;或將挖礦設備放置在寒冷地區(qū),為其設備提供更高效的冷卻系統(tǒng)(挖礦帶來大量電力消耗和機器冷卻成為真正的挑戰(zhàn))。大型礦工也可以以更低的價格批量購買ASIC硬件設備。所有這些都轉化為規(guī)模的自然優(yōu)勢——這種現(xiàn)象并非特定于比特幣,而實際上出現(xiàn)在許多行業(yè)中。這些效應為大型礦工帶來了優(yōu)勢,并慢慢地,將系統(tǒng)拉向中心化。
許多人擔心,目前大部分比特幣挖礦是由中國礦工完成的。與其他地區(qū)的挖礦相比,他們享有更好的ASIC訪問,更便宜的電力和更低的監(jiān)管。中國政府嚴格控制進出中國的互聯(lián)網(wǎng)流量,并可能會破壞比特幣系統(tǒng),甚至沒收境內(nèi)的挖礦設備。
4 礦池和風險規(guī)避(Mining Pools and Risk Aversion)
比特幣挖礦產(chǎn)生非常高的回報,但小礦工獲得回報的可能性非常低。一個全時運行的ASIC設備挖掘到下一個區(qū)塊的概率不到六十萬分之一,這意味著幾年內(nèi)發(fā)現(xiàn)不了一個區(qū)塊。這種高風險/高回報的收益并不適合大多數(shù)人。許多人會選擇較長時期的小規(guī)模固定收入(這實質(zhì)上是風險規(guī)避,文獻6)。例如,可以使用固定收入來支付挖礦的電費。
4.1 礦池的形成(The formation of pools)
礦池是礦工聯(lián)盟。聯(lián)盟將礦工的計算資源整合在一起,挖礦報酬在成員之間共享。由于礦池比每個礦工單打獨斗挖掘到的區(qū)塊要多得多,聯(lián)盟能夠更經(jīng)常地向每個礦工支付小額的報酬。
從比特幣網(wǎng)絡的角度來看,礦池也只是一個挖礦節(jié)點。礦池成員與礦池服務器交互,礦池服務器將正在處理的下一個區(qū)塊頭發(fā)送給所有成員。每個成員都試圖求解相應區(qū)塊的密碼學難題(事實上,他們使用同一個區(qū)塊的變體,并且工量證明也略有不同,以避免重復工作)。每當成員找到一個區(qū)塊的難題答案時,就會將該區(qū)塊發(fā)送給礦池管理節(jié)點,管理節(jié)點又將該區(qū)塊發(fā)布到比特幣網(wǎng)絡。該區(qū)塊向礦池提供報酬,管理節(jié)點隨后將報酬分配給礦池中的所有成員(扣除一部分小額費用)。
4.2 礦池報酬分配和篡改可能(Reward distribution within pools and possible manipulations)
大多數(shù)礦池是公開礦池,并向任何有意愿參與的人開放。顯然,礦池必須采取措施,確保只有真正貢獻算力的成員才能享受相應的回報。為此,每個礦池成員發(fā)送部分難題求解答案(工作量證明)給礦池—— 這些部分答案“接近”成為區(qū)塊的完整難題求解答案。部分答案比完整答案更加普遍,而且任何求解這個難題的成員都可以提供持續(xù)穩(wěn)定的算力(低于目標)。這可以表明成員確實在工作,并且可以評估每個成員能夠貢獻的算力。因此,礦池按照份額數(shù)量占比支付成員報酬(每份提交的部分難題求解答案都會獲得一定份額)。
幸運的是,找到難題求解答案的礦池成員無法竊取報酬。密碼學難題取決于區(qū)塊頭,該區(qū)塊頭由礦池的管理員控制。密碼學難題對區(qū)塊本身的內(nèi)容(通過加密哈希)進行編碼,包括區(qū)塊報酬的接收者。在找到特定區(qū)塊頭的難題求解答案之后,除非使難題求解答案失效,否則不能篡改區(qū)塊頭。
盡管如此,礦池還是可能被策略礦工的篡改。
跳池(Pool hopping)。在比特幣的早期階段,礦池分局每個礦工提交的部分難題求解答案數(shù)量的份額,簡單地將所有礦工挖掘的最新塊的報酬按比例分配給所有礦工。份額數(shù)量是通過對同一個池創(chuàng)建的前一區(qū)塊進行測量得到的。
一些礦工提出了一種提高報酬的方法:如果一個礦池運氣不好,并且一段時間沒有挖到區(qū)塊,那么很多部分難題求解答案(份額)就會積累起來。如果礦池發(fā)現(xiàn)一個區(qū)塊,它的報酬將被分成許多小份。產(chǎn)生額外的份額的工作量與以前一樣,但由于這個原因產(chǎn)生更低的預期回報。相反,礦工可以跳到最近找到一個區(qū)塊的另一個礦池,并且每個額外的份額都會獲得更高的預期回報。如果這種行為被大量采用,那么實際上,暫時不成功的礦池會被所有理性的礦工完全拋棄。對抗跳池的報酬計劃很快被開發(fā)出來,并被大多數(shù)礦池所采用(文獻10)。
區(qū)塊發(fā)布抑制攻擊(Block-withholding attacks)。雖然礦工無法竊取難題求解答案的區(qū)塊報酬,但他/她仍然可以否決對礦池中其他礦工的報酬。礦工可以選擇只向礦池管理者提交部分難題求解答案,但放棄所有成功的難題求解答案。因此,當其他人找到難題求解答案時,礦工會收到一定比例的獎勵,但不會為該礦池提供任何實際貢獻。拋棄成功的難題求解答案破壞了礦池,攻擊者僅損失少量的收入作為代價。
盡管攻擊者蒙受了損失,但在某些情況下,礦池有必要利用自己的一些挖礦能力破壞競爭對手:攻擊礦池通過將其中一些礦工注冊為受害礦池中的工人,滲透到受害礦池中。這些工人然后執(zhí)行區(qū)塊發(fā)布抑制攻擊。通過成本和報酬的詳細計算,表明在某些情況下(取決于攻擊礦池和受害礦池的大?。?,攻擊礦池是有利可圖的(文獻4)。為了防止這種攻擊,人們已經(jīng)提出了對挖礦協(xié)議的輕微修改。在修改后的版本中,礦工無法辨別部分難題求解答案和完整難題求解答案,以解決工作量證明問題,并且無法選擇性地抑制完整的難題求解答案。
4.3 消除礦池(Eliminating pools)
雖然礦池適合小型礦工,可以減少礦工的風險和不確定性,但礦池會給系統(tǒng)引入一些中心化。礦池管理員本質(zhì)上是大量礦工的整合計算資源的控制者,因此權力非常大。一些研究人員提出挖礦協(xié)議的技術修改方案,徹底破壞公共礦池的存在(文獻7)。在該方案下,在找到區(qū)塊有效的難題求解答案后,挖掘該區(qū)塊的礦池成員仍然可以將報酬重定向到自己(而不會使難題求解答案失效)。假設大量礦工會為自己申請報酬,那么礦池將不會有利可圖,因此會解散。
5 攻擊和違反規(guī)則的經(jīng)濟學原理(The Economics of Attacks and Deviations from the Rules)
本文前面描述了一種礦工在比特幣協(xié)議中取得支配地位的方法——既可以獲利超過他/她應得的份額,也可以在鏈中產(chǎn)生更多的區(qū)塊。迄今為止討論的方法沒有違反協(xié)議的任何規(guī)則;從某種意義上說,允許礦工充分利用他們的硬件和基礎設施。本節(jié)討論直接違反協(xié)議規(guī)則的行為——礦工謀取自身利益以犧牲他人利益為代價。從某種意義上說,這種策略的存在意味著協(xié)議的激勵結構中存在根本性的缺陷:為了利潤最大化的理性參與者不會遵循比特幣協(xié)議。
非正式地,協(xié)議規(guī)定任何節(jié)點:(1)驗證它接收的每個新消息(區(qū)塊/交易);(2)將所有有效消息傳播給其對等節(jié)點; (3)新區(qū)塊一旦創(chuàng)建立即廣播出去; (4)在節(jié)點本地已知的最長鏈上構建新區(qū)塊。對協(xié)議的攻擊對應于這些規(guī)定中的一個或多個偏差/違反。
5.1 校驗(Validation)
不校驗傳入消息的礦工是脆弱的——下一個區(qū)塊可能包含他/她未校驗的無效交易,或無效的前驅塊引用。其他節(jié)點會認為這個新區(qū)塊是無效的并忽略它。這明確地激勵礦工在他們的區(qū)塊中只嵌入有效的交易并在接受之前校驗每個新區(qū)塊。
有趣的是,盡管有這樣的邏輯,但有時礦工會在一個區(qū)塊之上挖掘,而沒有完全校驗該區(qū)塊。這種做法被稱為SPV挖礦(SPV:simplified payment verification,代表簡化的支付校驗,通常指使用不讀取區(qū)塊完整內(nèi)容的瘦客戶端)。
為什么礦工會在未經(jīng)校驗的區(qū)塊上創(chuàng)建新區(qū)塊?答案還是在于激勵機制。甚至在接收到區(qū)塊全部內(nèi)容之前,一些礦工采用這樣的方法來得到新創(chuàng)建區(qū)塊的哈希ID(一種稱為間諜挖礦spy-mining的方法:加入另一個礦池來檢測區(qū)塊創(chuàng)建事件)。即使接收到一個區(qū)塊,校驗其包含的交易也需要時間。在此期間,礦工意識到區(qū)塊鏈已經(jīng)長了一個區(qū)塊。因此,為了避免挖礦設備在該區(qū)塊校驗完成之前(極有可能是有效的)處于閑置狀態(tài),礦工決定在該區(qū)塊之上繼續(xù)挖礦, 為了避免下一個區(qū)塊與未驗證區(qū)塊的交易沖突的風險,礦工不會在下一個塊中嵌入新的交易,以期仍然能夠收集區(qū)塊的報酬。
確實有證據(jù)表明有礦工正在采取這種方法。首先,被挖掘的區(qū)塊中有一小部分是空的(即使許多交易正在等待批準)。另一個證據(jù)與2015年7月發(fā)生的一起不幸事件有關。一個無效區(qū)塊(無意)由于bug而被挖掘,SPV礦工在其上增加了五塊額外的塊,而未做校驗。當然,其他校驗礦工拒絕該區(qū)塊和任何引用它的區(qū)塊,導致網(wǎng)絡中有六塊長的分叉。在分叉中丟棄的區(qū)塊可能包含雙重支出的交易。
這個事件顯示了SPV挖礦的危險之處:SPV挖礦降低了比特幣的安全性,并可能在區(qū)塊鏈中引發(fā)分叉。幸運的是,礦工大大提高了區(qū)塊的傳播和校驗時間,所以SPV挖礦效果越來越差??罩脜^(qū)塊獎勵的下降(計劃中)也會降低礦工參與此類行為的動機。
5.2 交易傳播(Transaction propagation)
比特幣協(xié)議的第二個重要方面與信息傳播有關:新的交易和區(qū)塊應發(fā)送給網(wǎng)絡中所有對等節(jié)點。這里對遵守協(xié)議規(guī)定的激勵并不那么清楚。礦工甚至可能會抑制發(fā)送尚未被納入?yún)^(qū)塊的未確認交易,特別是交易費用較高的交易(文獻1)。礦工有很強的動力來保持這種交易,直到他們成功創(chuàng)建一個區(qū)塊。向他人發(fā)送交易允許他們搶先獲得交易提供的報酬。迄今為止,大多數(shù)交易費用相對較低,而且沒有證據(jù)表明高手續(xù)費交易以這種方式被扣留。
接下來,讓我們把注意力轉到有意操縱區(qū)塊鏈的協(xié)議違反/偏差上。
5.3 私自挖礦(Selfish mining)
每當?shù)V工創(chuàng)建一個新區(qū)塊時,比特幣協(xié)議表示新區(qū)塊應該在礦工觀察到的最長鏈條的頂部(即,最長鏈的頂端為前驅),并且礦工應該立即將新區(qū)塊發(fā)送給網(wǎng)絡中的對等節(jié)點。
不幸的是,礦工可以通過違反這些規(guī)則并有策略的行動而受益(文獻5,11)。礦工的總體策略是不發(fā)布區(qū)塊并私自延伸公共鏈作為其私鏈。同時,公共鏈也被其他(誠實)節(jié)點延伸。策略礦工只有在其私鏈長度不能勝出的概率較低時才發(fā)布其私鏈。當策略礦工這樣做時,所有節(jié)點都采用礦工突然釋放的較長的鏈,如協(xié)議所規(guī)定的那樣,并且他們放棄了以前的公共鏈。
重要的是,這種行為增加了礦工在最長鏈中的份額——也就是說,它增加了最終產(chǎn)生的最長鏈上的區(qū)塊的百分比?;叵胍幌?,比特幣系統(tǒng)會自動調(diào)整工作量證明的難度,以保持區(qū)塊的創(chuàng)建速率不變。因此,從長遠來看,在區(qū)塊鏈中占有相對較大的塊數(shù)比例意味著礦工絕對報酬的增加。
沒有準確的辦法來驗證礦工是否從事私自挖礦。鑒于只有極少數(shù)區(qū)塊是孤立的,似乎私自挖礦還沒有被孤立區(qū)塊采納,至少沒有被大型礦工采納(能夠從私自挖礦中獲利最多的礦工)。一種解釋是,長期嘗試這種操縱的礦工可能會損失他們的聲譽并引起社區(qū)的憤慨。另一種解釋是,這種方案需要在最初失去一些自己的區(qū)塊,并且只有長期運行才能盈利(協(xié)議重新調(diào)整難度級別大約需要兩周)。
5.4 雙重支出(Double spending)
雙重支出是對比特幣用戶的基本攻擊:攻擊者向網(wǎng)絡發(fā)布合法支付,等待它嵌入?yún)^(qū)塊鏈并讓受害者確認,然后發(fā)布更長的私自挖掘區(qū)塊鏈不包含這筆款項。這筆款項不再是最長鏈條的一部分,就像“從未發(fā)生過”。
這種攻擊會帶來一定的風險:如果攻擊者的區(qū)塊不能成為最長鏈的尾部,則可能失去對他/她的數(shù)據(jù)塊的報酬。令人驚訝,而且不幸的是,持久的攻擊者可以通過遵循更復雜的攻擊方案來消除這種風險(文獻12)。這些方案通過頻繁的放棄攻擊,發(fā)布私有的攻擊鏈,并為它的區(qū)塊收集報酬。通過在每次失去報酬的風險過高時重置攻擊,攻擊者可以彌補攻擊成本,甚至長期盈利。這些方案本質(zhì)上是私自挖礦和雙重支出攻擊的組合。
目前,網(wǎng)絡中的雙重支出并不常見。這可能是因為成功執(zhí)行的雙重支出是非常困難的,或者因為能夠成功執(zhí)行此類攻擊的礦工也對系統(tǒng)聲譽擁有重大利益。
6 結論(Conclusion)
激勵機制確實在比特幣協(xié)議中發(fā)揮著重要作用。激勵機制對于比特幣協(xié)議的安全性、及其日常運行的有效性至關重要。正如本文所指出的,礦工為了最大限度地增加收入而費盡心機,并且經(jīng)常會找到一些創(chuàng)造性的方法,而這些方法與比特幣協(xié)議并不符合。
加密貨幣的協(xié)議應該建立在更加堅實的激勵基礎之上。還有很多領域需要改進,包括基本的挖礦報酬機制,交互共識機制,礦池的報酬分配機制,以及交易手續(xù)費市場本身的方方面面。
7 作者簡介
Dr. Aviv Zohar is a faculty member at the School of Computer Science and Engineering at the Hebrew University of Jerusalem, and a cofounder and chief scientist of QED-it. He has been researching the scalability, security, and underlying incentives of cryptocurrencies for several years.
Yonatan Sompolinsky is a Ph.D. student (final year) at the School of Computer Science and Engineering at the Hebrew University of Jerusalem, under the supervision of Dr. Aviv Zohar. He obtained an M.Sc. in computer science and a B.Sc. in mathematics from the Hebrew University. He is cofounder and chief scientist of DAGlabs.
8 參考文獻(References)
1. Babaioff, M., et al. 2012. On Bitcoin and Red Balloons. Proceedings of the 13th ACM Conference on Electronic Commerce: 56-73.
2. Ball, M., et al. 2017. Proofs of Useful Work. IACR Cryptology ePrint Archive: 203.
3. Carlsten, M., et al. 2016. On the Instability of Bitcoin Without the Block Reward. Proceedings of the ACM SIGSAC Conference on Computer and Communications Security: 154-167.
4. Eyal, I. 2015. The Miner's Dilemma. IEEE Symposium on Security and Privacy.
5. Eyal, I., Sirer, E. G. 2014. Majority is not Enough: Bitcoin Mining is Vulnerable. International Conference on Financial Cryptography and Data Security. Springer Berlin.
6. Fisch, B. A., Pass, R., Shelat, A. 2017. Socially Optimal Mining Pools. arXiv preprint.
7. Miller, A., et al. 2015. Nonoutsourceable Scratch-off Puzzles to Discourage Bitcoin Mining Coalitions. Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security.
8. Miller, A., et al. 2014. Permacoin: Repurposing Bitcoin Work for Data Preservation. IEEE Symposium on Security and Privacy.
9. Nakamoto, S. 2008. Bitcoin: A Peer-to-peer Electronic Cash System. Bitcoin.org; https://bitcoin.org/bitcoin.pdf.
10. Rosenfeld, M. 2011. Analysis of Bitcoin Pooled Mining Reward Systems. arXiv preprint.
11. Sapirshtein, A., Sompolinsky, Y., Zohar, A. 2016. Optimal Selfish Mining Strategies in Bitcoin. International Conference on Financial Cryptography and Data Security. Springer Berlin.
12. Sompolinsky, Y., Zohar, A. 2017. Bitcoin's Security Model Revisited. International Joint Conference on Artificial Intelligence, Workshop on A.I. in Security. Melbourne.
13. Zhang, F., et al. 2017. REM: Resource-Efficient Mining for Blockchains. Cryptology ePrint Archive. https://eprint.iacr.org/2017/179.
【本文是51CTO專欄作者石頭的原創(chuàng)文章,轉載請通過作者微信公眾號補天遺石(butianys)獲取授權】