1. 程式人生 > >區塊鏈之比特幣的潛在激勵

區塊鏈之比特幣的潛在激勵

本文目錄:

1 比特幣協議快速入門(A Quick Primer on the Bitcoin Protocol)

2 比特幣經濟學方法論:難度調整與挖礦經濟均衡(Bitcoin Economics 101: Difficulty Adjustment and the Economic Equilibrium of Mining)

3 挖礦的去中心化(Mining Decentralization)

        3.1 ASIC挖礦(ASIC mining)

        3.2 非ASIC的挖礦系統(Alternative systems with no ASIC mining)

        3.3 ASICBoost演算法(ASICBOOST)

        3.4 通訊基礎設施(Communication)

        3.5 規模經濟(Economies of scale)

4 礦池和風險規避(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 攻擊和違反規則的經濟學原理(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)

除了作為理財和轉賬的協議之外,比特幣還建立了一個支配其內部執行的複雜經濟激勵機制(incentives)。這些激勵機制強烈影響了協議的能力、安全保證,以及未來發展的道路。本文探討了比特幣協議的經濟暗流、優勢缺陷,以及它們如何反過來影響協議本身。

比特幣,這個建立在開放P2P(點對點)網路結構之上的貨幣(文獻9),繼續享受人們的追捧。比特幣系統是“無許可的”——任何人都可以選擇加入網路,轉賬,甚至參與授權交易。比特幣安全的關鍵之處在於它能夠抵禦攻擊者以多重虛假身份加入系統的操縱行為。畢竟,任何人都可以下載比特幣的原始碼,成為一個比特幣節點,並根據需要為網路新增儘可能多的計算機,而無需向其他人表明其身份。為了解決這個問題,該協議要求加入系統的節點展示出 “工作量證明”:付出算力破解密碼學難題以獲得參與比特幣協議的資格。

從事這種“工作量證明”的節點被稱為礦工。系統向礦工獎勵比特幣作為工作量的“證明”,從而也為這樣的“算力投資”設定了“激勵機制”。

通過在自己電腦上執行軟體就可以獲利(比特幣)——這帶來的第一個也是最明顯的影響是:一旦比特幣具有足夠的價值,人們就開始大肆挖礦。事實上,為了增強挖礦力度,大部分挖礦工作很快都轉移到專用的計算機農場。這些計算機農場使用定製工具來實現其目的:開始,GPU被用於大規模並行工挖礦;之後,特需設計的晶片——專門針對比特幣核心協議計算特徵而量身定製的晶片——ASICs(專用積體電路)開始出現(在挖礦時, ASICs機器比普通PC快一百萬倍)。比特幣網路迅速發展並變得更加安全,為了獲利的競爭也變得更加激烈(利益由比特幣協議週期性放出)。

比特幣的安全性和經濟性是相互作用的。在討論這個主題之前,讓我們快速回顧協議本身的規則——正是這些規則產生了這種複雜的相互作用。

1 比特幣協議快速入門(A Quick Primer on the Bitcoin Protocol)

持有比特幣並希望轉賬的使用者可以將交易資訊(通過他們安裝在計算機或智慧手機上的軟體)傳送到比特幣網路上的一個節點。比特幣網路中的活躍節點從使用者那裡收集這些交易資訊並將它們分發到網路中的對等節點——分發方式是每個節點僅通知那些與請求轉賬所關聯的節點。交易資訊被批量的匯聚,稱為區塊,而區塊又被連結在一起形成區塊鏈,從而形成所有被接受的比特幣交易記錄。區塊鏈中的每個區塊都通過一個加密雜湊值(實際上也是前驅區塊的唯一識別符號)引用其前驅區塊。比特幣網路中的每個節點都儲存著完整的區塊鏈副本。區塊建立的過程被稱為挖礦,挖礦的作用之一相當於新幣的印刷,也就是所謂的造幣。

比特幣的協議規則使區塊的建立非常困難:只有當區塊包含密碼學難題的答案時,才被認為是合法的。作為報酬,每當礦工成功建立區塊時,他們都會得到比特幣獎勵。報酬由兩部分組成:一部分是新造比特幣,一部分是從區塊所包含的交易中抽取的挖礦手續費。目前的造幣率是12.5比特幣每區塊,這一數額大約每四年減半。隨著這一數額的減少,比特幣開始越來越依賴挖礦手續費來支付礦工。

因此比特幣執行的關鍵是讓所有節點就區塊鏈的內容(區塊鏈記錄系統內的所有轉賬資訊)達成一致。因此,區塊更新會迅速傳播到網路中的所有節點。不過,節點有時可能會收到兩個不同版本的區塊鏈。例如,如果兩個節點同時建立了一個區塊,則它們可能會持有區塊鏈的兩個不同更新(鏈的增長chang)。這些區塊可能包含不同的支付操作,因此比特幣系統必須決定要接受哪個版本。

比特幣協議規定每個節點只接受最長鏈作為交易事件的正確版本(主鏈),如圖1所示(更確切地說,節點選擇包含最多累積計算工作的鏈作為主鏈,這通常也是最長鏈)。這條著名的“最長鏈規則”為比特幣提供了安全性。一個攻擊者——如果試圖愚弄其他節點,讓他們相信系統發生了不同的支付事件——需要產生比網路其餘部分更長的區塊鏈。由於“工作量證明”是一個區塊一個區塊的創建出來的,“產生更長區塊鏈”的任務將是異乎尋常的困難。事實上,只要攻擊者的計算能力低於整個比特幣網路的總和,區塊鏈中的區塊和交易將越來越難以取代(因為攻擊者和整個比特幣網路的鏈一起增長chang)。

替換主鏈的困難性意味著攻擊者需要多次嘗試才能夠偷天換日。這些失敗的嘗試意味著巨大的代價——在最長鏈之外挖礦,不會得到任何挖礦報酬。對於攻擊者來說,初級的攻擊確實代價昂貴(稍後將討論更高階的攻擊)。

圖1展示區塊鏈的演變情況:分叉開始出現,直到其中一個鏈比另一個鏈更長才能解決。解決的辦法是丟棄最長鏈之外的區塊:被丟棄的區塊不再增長(chang);其內容(紅色部分)也被忽略;建立它們的礦工也不會得到任何報酬。在時間點1,由於一個區塊在建立時沒有連結到最新的區塊,導致產生兩個可選的鏈,即發生了分叉。在時間點2,分叉被解決,因為一個鏈比另一個鏈長。在時間點3,有另一個持續時間更長的分叉,在時間點4第二個分叉被解決。

2 比特幣經濟學方法論:難度調整與挖礦經濟均衡(Bitcoin Economics 101: Difficulty Adjustment and the Economic Equilibrium of Mining)

根據比特幣協議,區塊建立速率大致保持不變,也就是期望區塊的建立間隔大約為10分鐘。如果塊建立得太快,則生成區塊所需的工作量證明的難度會自動增加。這種機制已經存在,以確保區塊不會因為系統算力的增加而在節點之間“洪泛”。因此係統以相對恆定的速率向礦工提供報酬,和投資於挖礦的算力總量無關。

顯然,隨著比特幣的價值上升(以美元計),挖礦生意(產生面值為比特幣的支付)變得更加有利可圖。隨著更多的人為了利益加入礦工群體,區塊的建立難度持續增加。而難度增加又導致挖礦代價變得更加昂貴。在理想情況下,當區塊的建立成本等於所得的報酬時,系統將達到平衡。事實上,挖礦總是微利的,有風險的——而且還需要對裝置進行初始投資,報酬中的一些盈餘也必須補償這些投資。因此,比特幣協議的安全性可以根據價值調整自身:更高的價值也意味著更高的安全性。

由於挖礦報酬持續下降(根據比特幣協議的挖礦時間表),預計建立區塊的動機將更多依賴於交易費用。如果比特幣交易量突然下降,這些交易費用將不足以補償礦工的計算資源。一些礦工可能因此暫時停止他們的區塊建立。這可能會危及整個系統,因為交易的安全性取決於所有誠實的礦工積極參與。(關於挖礦人數下降後的比特幣激勵機制,參見Carlsten等人的文獻3)

許多人抱怨說,建立區塊的算力是在浪費資源(特別是電力):為系統投入大筆費用,除了防範潛在攻擊者之外,沒有任何經濟目標。工作量證明的確是在求解毫無用處的密碼學難題——當然,除了為比特幣網路安全保駕護航。但是,如果某些工作可能有用呢?或者可能以更高效的方式工作?如果挖礦不浪費每個節點的資源,那麼攻擊者也不會為攻擊系統付出任何代價。事實上,如果工作量證明的成本較低,隨著更多誠實參與者加入挖礦群體(獲得報酬),難度調整機制將再次提高難度係數。因此,從某種意義上說,比特幣的工作量證明機制就是為了“浪費”一定數量的資源,而不管個體礦工的效率如何。為了從挖礦中獲得實質性收益而又不會因為成本的增加而抵消,就需要“工作量證明”——這對整個社會是有用的,但對個體礦工毫無價值。(更多使用其他難題作為工作量證明基礎的嘗試,參見Ball等人,Miller等人和Zhang等人的文獻:2,8,13)

3 挖礦的去中心化(Mining Decentralization)

比特幣協議的關鍵是其去中心化:對於整個系統,沒有單一的實體先驗地具有比其他人更多的權威或控制。這增強了系統的抗毀能力:沒有單一的信任錨點或單一故障點;礦工之間採用競爭的方式獲得挖礦手續費。

為了保持這種去中心化,最重要的是要保證挖礦活動是由許多小型實體完成,並且沒有一個礦工的算力明顯超過其他礦工。理想情況下,給予礦工的報酬應反映他們投入的工作量:貢獻了計算資源α%的礦工建立一個區塊的α%,並因此按比例抽取所有分配手續費和區塊報酬的α%。

在實踐中,出於幾個不同的原因,礦工可能從挖礦中獲得不成比例的報酬。這種報酬分配的不平衡讓利益偏向具有更多算力的大型礦工(使大型礦工獲得比小型同行更多的利潤),併為系統的中心化創造了持續不斷的經濟暗流。哪怕微弱的不平衡也可以危及系統:由於礦工可以使用額外回報來購買更多的算力,並因此而變得更加強大,繼而提升挖礦的難度,最終將其他小型(因而利潤較低)礦工排擠出這場遊戲。由此產生的“贏家通吃”“動力學過程”將不可避免地導致系統的中心化,然後整個系統將受到優勢礦工的支配,安全性也無法保證。

3.1 ASIC挖礦(ASIC mining)

ASIC的首次出現讓比特幣社群感到驚慌和擔憂。在挖掘比特幣方面,ASIC的效率比以前的系統高几個數量級。最初,這種特殊的硬體並不容易獲得,因此它為擁有者提供了比其他礦工更大的優勢——以更低的成本挖礦。那些擁有這種優勢的人為系統新增基於ASIC的工作量證明,直到難度級別高到其他人都放棄挖礦。當時的風險是:一個能夠訪問ASIC的大型礦工將最終主宰比特幣系統。一段時間以後,隨著ASIC的商業化並廣泛分佈,擔憂逐漸消退。

事實上,ASIC挖礦的實際影響(對安全性的貢獻)是深遠的。本文稍後將討論礦工如何進行雙重支付(雙花)和私自挖礦攻擊,以獲取利益。然而,有人可能會爭辯說,即使是自私和投機性的礦工也最好避免這種攻擊。事實上,一位礦工投資數百萬美元購買挖礦裝置(比如ASIC),相當於重金投資了比特幣的未來價值:期望裝置將在未來帶來比特幣回報。如果礦工使用這種裝置攻擊該系統,那麼會降低人們對該貨幣的信心,並且降低比特幣的價值和未來的回報。因此,礦工的利益在某種意義上與整個系統的健康保持一致。

總而言之,ASIC挖礦提高了系統的准入門檻:普通人無法輕易地加入挖礦工作,也因此減少了系統的去中心化。另一方面,ASIC挖礦也引入了一種退出的“門檻”:礦工無法將他們的裝置用於其他經濟活動,因此有助於提供系統的安全性。

加密貨幣(例如萊特幣Litecoin,本質上是比特幣的克隆)之間出現的相互競爭——其中一些使用與比特幣相同的工作量證明機制——為想要轉移挖礦算力的礦工提供了選擇方案。這讓市場的“動力學過程”更為複雜。例如,當特定貨幣失去價值時,礦工會將挖礦算力轉移到另一個加密貨幣,直到挖礦難度級別被提高。這可能會導致區塊建立的波動,使礦工較少的加密貨幣系統變得不穩定。

3.2 非ASIC的挖礦系統(Alternative systems with no ASIC mining)

有趣的是,一些加密貨幣系統使用不同的難題求解(工作量證明)機制。這些難題難以設計成專用硬體,因而對ASIC挖礦更具抵抗性。例如,以太坊使用的Ethash難題。這通常是通過設計需要大量訪問其他資源(例如記憶體等商用硬體)的演算法難題來實現。

這些替代系統原則上更加去中心化,但另一方面它們缺乏“退出門檻”及其對安全的貢獻。

當雲挖礦服務變得高度可用時,也會產生類似去中心化的效果。一些實體通過雲服務出租他們的挖礦裝置。租賃雲挖礦服務的客戶才是真正的礦工,並且他們在系統中沒有長期利益。隨著這些雲挖礦服務變得更加便宜和易於訪問,任何人都可以輕鬆成為臨時礦工。類似的是,雲挖礦服務同樣缺乏“退出門檻”及其對安全的貢獻。

3.3 ASICBoost演算法(ASICBOOST)

回想一下,建立一個區塊需要解決特定於該區塊的密碼學難題。這相當於猜測加密雜湊函式的輸入。求解這樣的難題主要是通過強力列舉不同的輸入來完成的。

礦工可以採用比同行更高效建立區塊的方法來獲得優勢。除了採用更好的硬體外,演算法是獲得優勢的主要形式。事實上,一個被ASICBoost的演算法“trick”最近成為頭條新聞。ASICBoost使礦工能夠重用一個輸入猜測的算力到另外一個輸入猜測。該演算法是專有的,目前正在申請專利,尚不清楚誰可以用,誰不可以用。這樣的演算法帶來的優勢是可以降低每個雜湊的算力消耗。ASIC挖礦的大型製造商Bitmain最近被指控祕密部署ASICBoost的硬體變體以增加其利潤。指控說,該公司在政治上阻礙了一些協議的改進,而這些改進很可能會讓他們無法使用ASICBoost。

3.4 通訊基礎設施(Communication)

另外一種提高礦工效率的方法是投資通訊基礎設施。通過更快地傳播區塊,並通過更快地接收其他區塊,礦工可以減少其區塊不屬於最長鏈並被丟棄(“成為孤兒”)的機會。由於脫離主鏈的區塊無法獲得報酬,更好的網路通訊意味著降低損失。無可否認,在比特幣區塊目前的建立速度下,這種優勢微乎其微。 區塊並不經常建立,並且交付加速幾秒只能帶來很小的優勢。儘管如此,更好的網路通訊是獲得更多利潤的一種相對便宜的方式。

此外,當比特幣協議覆蓋節點數增大並且交易處理加速時,通訊優化帶來的效果變得更加明顯。目前比特幣系統平均每秒處理三到七筆交易。改變比特幣系統的引數——每秒處理更多的交易——將會增加孤兒區塊的比率,並且會放大網路通訊更好的礦工的優勢。

3.5 規模經濟(Economies of scale)

與任何大型實體一樣,大型礦工可以享受規模經濟效益。隨著大規模挖礦業務的發展,大型礦工很可能投資於各種不同的優化方案,比如尋找成本更低的電力來源;或將挖礦裝置放置在寒冷地區,為其裝置提供更高效的冷卻系統(挖礦帶來大量電力消耗和機器冷卻成為真正的挑戰)。大型礦工也可以以更低的價格批量購買ASIC硬體裝置。所有這些都轉化為規模的自然優勢——這種現象並非特定於比特幣,而實際上出現在許多行業中。這些效應為大型礦工帶來了優勢,並慢慢地,將系統拉向中心化。

許多人擔心,目前大部分比特幣挖礦是由中國礦工完成的。與其他地區的挖礦相比,他們享有更好的ASIC訪問,更便宜的電力和更低的監管。中國政府嚴格控制進出中國的網際網路流量,並可能會破壞比特幣系統,甚至沒收境內的挖礦裝置。

4 礦池和風險規避(Mining Pools and Risk Aversion)

比特幣挖礦產生非常高的回報,但小礦工獲得回報的可能性非常低。一個全時執行的ASIC裝置挖掘到下一個區塊的概率不到六十萬分之一,這意味著幾年內發現不了一個區塊。這種高風險/高回報的收益並不適合大多數人。許多人會選擇較長時期的小規模固定收入(這實質上是風險規避,文獻6)。例如,可以使用固定收入來支付挖礦的電費。

4.1 礦池的形成(The formation of pools)

礦池是礦工聯盟。聯盟將礦工的計算資源整合在一起,挖礦報酬在成員之間共享。由於礦池比每個礦工單打獨鬥挖掘到的區塊要多得多,聯盟能夠更經常地向每個礦工支付小額的報酬。

從比特幣網路的角度來看,礦池也只是一個挖礦節點。礦池成員與礦池伺服器互動,礦池伺服器將正在處理的下一個區塊頭髮送給所有成員。每個成員都試圖求解相應區塊的密碼學難題(事實上,他們使用同一個區塊的變體,並且工量證明也略有不同,以避免重複工作)。每當成員找到一個區塊的難題答案時,就會將該區塊傳送給礦池管理節點,管理節點又將該區塊釋出到比特幣網路。該區塊向礦池提供報酬,管理節點隨後將報酬分配給礦池中的所有成員(扣除一部分小額費用)。

4.2 礦池報酬分配和篡改可能(Reward distribution within pools and possible manipulations)

大多數礦池是公開礦池,並向任何有意願參與的人開放。顯然,礦池必須採取措施,確保只有真正貢獻算力的成員才能享受相應的回報。為此,每個礦池成員傳送部分難題求解答案(工作量證明)給礦池—— 這些部分答案“接近”成為區塊的完整難題求解答案。部分答案比完整答案更加普遍,而且任何求解這個難題的成員都可以提供持續穩定的算力(低於目標)。這可以表明成員確實在工作,並且可以評估每個成員能夠貢獻的算力。因此,礦池按照份額數量佔比支付成員報酬(每份提交的部分難題求解答案都會獲得一定份額)。

幸運的是,找到難題求解答案的礦池成員無法竊取報酬。密碼學難題取決於區塊頭,該區塊頭由礦池的管理員控制。密碼學難題對區塊本身的內容(通過加密雜湊)進行編碼,包括區塊報酬的接收者。在找到特定區塊頭的難題求解答案之後,除非使難題求解答案失效,否則不能篡改區塊頭。

儘管如此,礦池還是可能被策略礦工的篡改。

跳池(Pool hopping)。在比特幣的早期階段,礦池分局每個礦工提交的部分難題求解答案數量的份額,簡單地將所有礦工挖掘的最新塊的報酬按比例分配給所有礦工。份額數量是通過對同一個池建立的前一區塊進行測量得到的。

一些礦工提出了一種提高報酬的方法:如果一個礦池運氣不好,並且一段時間沒有挖到區塊,那麼很多部分難題求解答案(份額)就會積累起來。如果礦池發現一個區塊,它的報酬將被分成許多小份。產生額外的份額的工作量與以前一樣,但由於這個原因產生更低的預期回報。相反,礦工可以跳到最近找到一個區塊的另一個礦池,並且每個額外的份額都會獲得更高的預期回報。如果這種行為被大量採用,那麼實際上,暫時不成功的礦池會被所有理性的礦工完全拋棄。對抗跳池的報酬計劃很快被開發出來,並被大多數礦池所採用(文獻10)。

區塊釋出抑制攻擊(Block-withholding attacks)。雖然礦工無法竊取難題求解答案的區塊報酬,但他/她仍然可以否決對礦池中其他礦工的報酬。礦工可以選擇只向礦池管理者提交部分難題求解答案,但放棄所有成功的難題求解答案。因此,當其他人找到難題求解答案時,礦工會收到一定比例的獎勵,但不會為該礦池提供任何實際貢獻。拋棄成功的難題求解答案破壞了礦池,攻擊者僅損失少量的收入作為代價。

儘管攻擊者蒙受了損失,但在某些情況下,礦池有必要利用自己的一些挖礦能力破壞競爭對手:攻擊礦池通過將其中一些礦工註冊為受害礦池中的工人,滲透到受害礦池中。這些工人然後執行區塊釋出抑制攻擊。通過成本和報酬的詳細計算,表明在某些情況下(取決於攻擊礦池和受害礦池的大小),攻擊礦池是有利可圖的(文獻4)。為了防止這種攻擊,人們已經提出了對挖礦協議的輕微修改。在修改後的版本中,礦工無法辨別部分難題求解答案和完整難題求解答案,以解決工作量證明問題,並且無法選擇性地抑制完整的難題求解答案。

4.3 消除礦池(Eliminating pools)

雖然礦池適合小型礦工,可以減少礦工的風險和不確定性,但礦池會給系統引入一些中心化。礦池管理員本質上是大量礦工的整合計算資源的控制者,因此權力非常大。一些研究人員提出挖礦協議的技術修改方案,徹底破壞公共礦池的存在(文獻7)。在該方案下,在找到區塊有效的難題求解答案後,挖掘該區塊的礦池成員仍然可以將報酬重定向到自己(而不會使難題求解答案失效)。假設大量礦工會為自己申請報酬,那麼礦池將不會有利可圖,因此會解散。

5 攻擊和違反規則的經濟學原理(The Economics of Attacks and Deviations from the Rules)

本文前面描述了一種礦工在比特幣協議中取得支配地位的方法——既可以獲利超過他/她應得的份額,也可以在鏈中產生更多的區塊。迄今為止討論的方法沒有違反協議的任何規則;從某種意義上說,允許礦工充分利用他們的硬體和基礎設施。本節討論直接違反協議規則的行為——礦工謀取自身利益以犧牲他人利益為代價。從某種意義上說,這種策略的存在意味著協議的激勵結構中存在根本性的缺陷:為了利潤最大化的理性參與者不會遵循比特幣協議。

非正式地,協議規定任何節點:(1)驗證它接收的每個新訊息(區塊/交易);(2)將所有有效訊息傳播給其對等節點; (3)新區塊一旦建立立即廣播出去; (4)在節點本地已知的最長鏈上構建新區塊。對協議的攻擊對應於這些規定中的一個或多個偏差/違反。

5.1 校驗(Validation)

不校驗傳入訊息的礦工是脆弱的——下一個區塊可能包含他/她未校驗的無效交易,或無效的前驅塊引用。其他節點會認為這個新區塊是無效的並忽略它。這明確地激勵礦工在他們的區塊中只嵌入有效的交易並在接受之前校驗每個新區塊。

有趣的是,儘管有這樣的邏輯,但有時礦工會在一個區塊之上挖掘,而沒有完全校驗該區塊。這種做法被稱為SPV挖礦(SPV:simplified payment verification,代表簡化的支付校驗,通常指使用不讀取區塊完整內容的瘦客戶端)。

為什麼礦工會在未經校驗的區塊上建立新區塊?答案還是在於激勵機制。甚至在接收到區塊全部內容之前,一些礦工採用這樣的方法來得到新建立區塊的雜湊ID(一種稱為間諜挖礦spy-mining的方法:加入另一個礦池來檢測區塊建立事件)。即使接收到一個區塊,校驗其包含的交易也需要時間。在此期間,礦工意識到區塊鏈已經長了一個區塊。因此,為了避免挖礦裝置在該區塊校驗完成之前(極有可能是有效的)處於閒置狀態,礦工決定在該區塊之上繼續挖礦, 為了避免下一個區塊與未驗證區塊的交易衝突的風險,礦工不會在下一個塊中嵌入新的交易,以期仍然能夠收集區塊的報酬。

確實有證據表明有礦工正在採取這種方法。首先,被挖掘的區塊中有一小部分是空的(即使許多交易正在等待批准)。另一個證據與2015年7月發生的一起不幸事件有關。一個無效區塊(無意)由於bug而被挖掘,SPV礦工在其上增加了五塊額外的塊,而未做校驗。當然,其他校驗礦工拒絕該區塊和任何引用它的區塊,導致網路中有六塊長的分叉。在分叉中丟棄的區塊可能包含雙重支出的交易。

這個事件顯示了SPV挖礦的危險之處:SPV挖礦降低了比特幣的安全性,並可能在區塊鏈中引發分叉。幸運的是,礦工大大提高了區塊的傳播和校驗時間,所以SPV挖礦效果越來越差。空置區塊獎勵的下降(計劃中)也會降低礦工參與此類行為的動機。

5.2 交易傳播(Transaction propagation)

比特幣協議的第二個重要方面與資訊傳播有關:新的交易和區塊應傳送給網路中所有對等節點。這裡對遵守協議規定的激勵並不那麼清楚。礦工甚至可能會抑制傳送尚未被納入區塊的未確認交易,特別是交易費用較高的交易(文獻1)。礦工有很強的動力來保持這種交易,直到他們成功建立一個區塊。向他人傳送交易允許他們搶先獲得交易提供的報酬。迄今為止,大多數交易費用相對較低,而且沒有證據表明高手續費交易以這種方式被扣留。

接下來,讓我們把注意力轉到有意操縱區塊鏈的協議違反/偏差上。

5.3 私自挖礦(Selfish mining)

每當礦工建立一個新區塊時,比特幣協議表示新區塊應該在礦工觀察到的最長鏈條的頂部(即,最長鏈的頂端為前驅),並且礦工應該立即將新區塊傳送給網路中的對等節點。

不幸的是,礦工可以通過違反這些規則並有策略的行動而受益(文獻5,11)。礦工的總體策略是不釋出區塊並私自延伸公共鏈作為其私鏈。同時,公共鏈也被其他(誠實)節點延伸。策略礦工只有在其私鏈長度不能勝出的概率較低時才釋出其私鏈。當策略礦工這樣做時,所有節點都採用礦工突然釋放的較長的鏈,如協議所規定的那樣,並且他們放棄了以前的公共鏈。

重要的是,這種行為增加了礦工在最長鏈中的份額——也就是說,它增加了最終產生的最長鏈上的區塊的百分比。回想一下,比特幣系統會自動調整工作量證明的難度,以保持區塊的建立速率不變。因此,從長遠來看,在區塊鏈中佔有相對較大的塊數比例意味著礦工絕對報酬的增加。

沒有準確的辦法來驗證礦工是否從事私自挖礦。鑑於只有極少數區塊是孤立的,似乎私自挖礦還沒有被孤立區塊採納,至少沒有被大型礦工採納(能夠從私自挖礦中獲利最多的礦工)。一種解釋是,長期嘗試這種操縱的礦工可能會損失他們的聲譽並引起社群的憤慨。另一種解釋是,這種方案需要在最初失去一些自己的區塊,並且只有長期執行才能盈利(協議重新調整難度級別大約需要兩週)。

5.4 雙重支出(Double spending)

雙重支出是對比特幣使用者的基本攻擊:攻擊者向網路釋出合法支付,等待它嵌入區塊鏈並讓受害者確認,然後釋出更長的私自挖掘區塊鏈不包含這筆款項。這筆款項不再是最長鏈條的一部分,就像“從未發生過”。

這種攻擊會帶來一定的風險:如果攻擊者的區塊不能成為最長鏈的尾部,則可能失去對他/她的資料塊的報酬。令人驚訝,而且不幸的是,持久的攻擊者可以通過遵循更復雜的攻擊方案來消除這種風險(文獻12)。這些方案通過頻繁的放棄攻擊,釋出私有的攻擊鏈,併為它的區塊收集報酬。通過在每次失去報酬的風險過高時重置攻擊,攻擊者可以彌補攻擊成本,甚至長期盈利。這些方案本質上是私自挖礦和雙重支出攻擊的組合。

目前,網路中的雙重支出並不常見。這可能是因為成功執行的雙重支出是非常困難的,或者因為能夠成功執行此類攻擊的礦工也對系統聲譽擁有重大利益。

6 結論(Conclusion)

激勵機制確實在比特幣協議中發揮著重要作用。激勵機制對於比特幣協議的安全性、及其日常執行的有效性至關重要。正如本文所指出的,礦工為了最大限度地增加收入而費盡心機,並且經常會找到一些創造性的方法,而這些方法與比特幣協議並不符合。

加密貨幣的協議應該建立在更加堅實的激勵基礎之上。還有很多領域需要改進,包括基本的挖礦報酬機制,互動共識機制,礦池的報酬分配機制,以及交易手續費市場本身的方方面面。

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.