讀懂比特幣側鏈方案 Drivechain:如何實現比特幣和多條側鏈雙向錨定?

原文標題:《科普 | 什么是 Drivechain?》

撰文:fiatjaf

翻譯 & 校對:閔敏 & 阿劍

在理解 Drivechain 之前,我們先要轉變絕大多數比特幣用戶已經習慣了的思維定勢。理解 Drivechain 的關鍵不在于 「免信任」 或 「數學確定性」,而是博弈論和激勵,(總的來說,比特幣也是如此,但是人們往往會忽略這點,沉浸在數學帶來的免信任假想中。)

本文將介紹 「算力托管(hashrate escrow)」 的基本原理(簡單)和激勵(復雜),以及它是如何實現主鏈(比特幣)和多條側鏈之間的雙向錨定的。

「Drivechain」 的完整概念還涉及盲合并挖礦(blind merged mining)(即,側鏈通過將區塊哈希值發布至主鏈來實現自挖礦,無需礦工運行側鏈挖礦軟體),不過這個概念理解起來要容易得多,而且通過 BIP 301 機制或 Spacechains 機制就可以實現,

從比特幣的角度來看,算力托管是如何運作的?

我們需要創建一個新的地址類型,凡是進入這類地址的代幣都會被鎖定,只有當所有礦工在 6 個月內就取款交易(WT^)達成共識時,才可以動用該地址上的代幣。每條側鏈在比特幣區塊鏈上都有這樣一個地址,

為了收集礦工的一致意見,bitcoind 會追蹤所有想要動用特殊地址上的代幣的交易的 「分數」。每當一條側鏈上新挖出一個區塊,礦工就可以使用 coinbase 交易將一個 WT^ 的分數增加 1,同時將其它所有 WT^ 的分數減去 1;或者將所有 WT^ 的分數減去 1;或者什么都不做。(譯者注:此處的 「礦工」 指的是比特幣主鏈的礦工,)

當某個交易的分數足夠高時,這個交易就會被發布到鏈上,將資產從側鏈轉移到發起取款交易的用戶那里,

在 6 個月內分數未能達到閾值的 WT^ 會被丟棄,

上述流程有什么意義?

上述流程意味著,用戶可以通過將代幣存入特殊地址來將它們從主鏈轉移到側鏈,然后再通過特殊的取款交易取走側鏈上的代幣,

特殊交易可以通過某種方式凍結側鏈上的代幣,然后所有取款請求會被聚合到一個主鏈 WT^ 內提交給主鏈礦工,以便主鏈礦工進行投票。過了幾個月后,投票通過的 WT^ 會被發布到鏈上。

現在,最關鍵的部分是:WT^ 的有效性并非由比特幣主鏈規則驗證,即,如果 Bob 已經請求從側鏈提款到他在主鏈的地址,但是有人發布了一個錯誤的 WT^ ,將原本屬于 Bob 的代幣發送到了 Alice 在主網上的地址,主鏈是無法知曉的。WT^ 是否有效僅僅取決于礦工的投票分數,礦工的職責是正確投票 —— 為此,他們可能想要運行側鏈的 SPV (簡單支付驗證)節點,以便見證側鏈區塊鏈上存在對 WT^ 交易的引用(然后驗證其是否有效),或者通過其它方式進行驗證。

什么?要等 6 個月才能拿回我的錢?

是,也不是。實際上,想要取回代幣的用戶可以使用原子交換(atomic swap)、潛水艇交換(submarine swap)或其它類似服務實現代幣在側鏈和主鏈之間的雙向轉移。較長的取款延遲期所造成的成本將由少數想從中獲利的流動性提供者承擔。

為什么要這么麻煩?

Drivechain 可以解決很多不同的問題:

催化有關比特幣的實驗和新用例

發行資產、完全隱私型交易、有狀態的區塊鏈合約、圖靈完備、去中心化游戲、一些 DeFi 想法、預測市場、Futarchy、去中心化且有意義的人類可讀域名、包含大量普通交易的巨型區塊、專為閃電網路而優化的區塊鏈等等……

這些想法或許具有很大價值,但是從來沒有人 真正 嘗試過它們,因為它們無法通過真正的比特幣來實現或與之交互,這些想法只能退而求其次,要么依托于垃圾幣,要么尋求 Liquid 或 RSK 之類的托管方案,或許正是因為這個原因,它們才沒能形成網路效應。

解決沖突和內部分歧

有的人希望在 UTXO 模式下實現完全隱私型交易,有的人卻想要將自己的名字和聲譽與「賬戶」綁定;有的人想要簡單的多簽方案,有的人偏好需要讀取大堆變量的復雜代碼;有的人想要每隔 10 分鐘將交易成批上鏈,有的人想要將資金鎖定在通道內實現鏈下即時交易;有的人想要使用代幣,有的人只想持有代幣;有的人想要使用區塊鏈技術來解決世界上的所有問題,有的人只想使用區塊鏈技術來重塑貨幣,

基于 Drivechain 的側鏈解決方案可以消除人們之間的分歧,皆大歡喜,與此同時,哪怕再不情愿,人們也會使用同一種貨幣,為彼此的生態作出貢獻,另外,人們還可以自由轉換陣營,減少認知失調,

解決擴容問題

很多鏈(如上文提到的那些)都為了提高比特幣的吞吐量而使出渾身解數,我們有可能會看到特殊的閃電網路鏈,哪怕是由巨型區塊組成的普通鏈或 mimblewimble 鏈等等也可以做到這點,甚至還有一些笨辦法,例如,運行 200 條類似比特幣且不具備其它功能的獨立區塊鏈(你可以稱之為 「分片」),這樣就可以將比特幣的當前吞吐量提高 200 倍,

解決區塊鏈的安全預算問題

安全預算計算起來很簡單:先思考一下如果沒有區塊補貼,你認為每個區塊的合理安全預算應該是多少,然后將它除以一個區塊可以容納的字節數量,就可以算出每個字節的價格是多少 satoshi 。如果預估合理,每筆比特幣交易都需要用戶支付大量 satoshi,如此高昂的成本不僅使其不適合日常交易,也讓開啟和關閉閃電通道變得不切實際,

因此,如果沒有像 Drivechain 這樣的解決方案,你就只剩下一個選擇:讓 Liquid 和 RSK 之類的可信服務提供商或托管型閃電網路錢包代表你使用比特幣,但是,有了 Drivechain,側鏈上就有可能發生數千筆交易,并全部打包進一個側鏈區塊中,然后支付很高的費用(通過盲合并挖礦)發布到主鏈上。比特幣的安全性就有了保障。

維持比特幣的去中心化

一旦我們將普通交易都交由側鏈處理,主鏈就只是側鏈資產進出的 「樞紐」,然后我們就可以將主鏈的區塊大小上限降到很小的值(比如 100 KB),大幅降低全節點的運行難度,

礦工可以偷竊嗎?

可以。如果一群礦工串謀起來掌握絕大多數算力并保持 6 個月,就可以發布一個 WT^ 取走側鏈上的所有錢,然后轉到自己賬上。

礦工會偷竊嗎?

不會,因為不值得。

雖然乍看之下礦工可以通過偷竊白賺一大筆錢,但是會帶來很多成本:

  1. 停止盲合并挖礦所造成的收益損失 —— 偷竊會毀掉側鏈,因此礦工有望在未來幾年賺取的所有交易費都沒了。
  2. 與社區正義為敵的成本 —— 一旦參與偷竊,礦工將遭到社區的強烈抵制,這是不容忽視的。如果作惡的礦工是有公開身份的實體,就有可能遭受人身傷害、死亡威脅或是國家司法系統的制裁。
  3. 串謀成本 —— 假設礦工就是普通業務員,他們只想做自己的工作并獲得報酬,但是偷竊需要與其他礦工協作,這種不道德行為存在很多隱患,而且在長達數個月的時間里很容易鬧掰。
  4. 礦工流失成本 —— 我們口中的 「礦工」 實際上指的是礦池運營者,因此他們在開始偷竊之前必須考慮礦工遷移到別的礦池的風險。
  5. 比特幣價格下跌的成本 —— 一旦偷竊成功,就意味著 Drivechain 是不安全的,比特幣的可用性隨之下降,礦工信譽也會受損,這有可能導致比特幣價格下跌,影響礦工的業務和收益。
  6. 社區正義為敵帶來的另一個影響是,如果礦工為了一己私利試圖偷竊,即使最后失敗了,也會加深社區對礦工在比特幣生態中權力過大的擔憂,最終可能會導致社區同意通過硬分叉來改變挖礦算法,或在挖礦過程中引入更多實體(例如,開發新的 ASIC 礦機),這有可能降低當前礦工的利潤,

另外需要考慮的一點是,人們想當然地以為新創建的側鏈或使用率較低的側鏈更容易被黑,因為盲合并挖礦收益(見 「1」)比較低 —— 但事實上,使用率較低的側鏈本身就沒有多少錢可以偷,而且除了 「1」 之外的其它成本是避免不了的,就更不值得偷了。

只有當礦工偷竊好的側鏈時,上述考慮才是有意義的,如果一條側鏈本身就存在問題,如欺騙用戶、沒人使用或漏洞百出,礦工大可把它毀掉,人們只會拍手稱快。

如果礦工偷竊,我們該怎么辦?

Paul Sztorc 曾建議過,可以通過用戶激活軟分叉來防止礦工偷竊,即,大多數比特幣用戶和節點通過此處提議的規則來將錯誤的 WT^ 作廢。這樣一來,其它節點不會接受包含該 WT^ 的區塊,打包該區塊的礦工就會被分叉出去,

這個建議讓人們誤以為 Drivechain 這個側鏈解決方案是 依靠用戶激活軟分叉來保障安全性的,然而事實并非如此,雖然軟分叉是可行的,但是 Drivechain 絕對不能、也不會依賴于軟分叉,因為協調成本太高,而且不會有人希望這種事發生。

如果礦工無視(上文提到的)這些反激勵,執意要從一條 好的側鏈 上偷竊。這就說明 Drivechain 實驗失敗了,而且很有可能意味著比特幣實驗也失敗了,因為這證明了礦工能夠長期無視經濟和社會壓力協同作惡,而且很有可能是沖著比特幣來的,背后有國家或其它力量支持。因此,主鏈上的比特幣交易也不再安全了,

為什么選擇 Drivechain,而非其它成熟的免信任型側鏈技術?

因為這樣的東西并不存在,

如果你聽到有人說 「用側鏈就好」、「在側鏈中執行這個操作」 之類的話,請注意他們說的不是 「聯盟型」 側鏈(即,資金由一組實體共同保管)就是 Drivechain,要么就是異想天開了,覺得有別的辦法可以運行側鏈,

不,我指的是免信任的雙向錨定,由比特幣協議驗證提款是否正確!

這是不可能的,除非比特幣驗證側鏈上的所有交易,這就等于大幅提高區塊大小上限以及擴展比特幣的規則,實在不是個好辦法,

Blockstream 側鏈白皮書怎么樣?

不錯,這也是一種辦法,從概念上來說,Drivechain 算力托管不僅更加簡單,而且激勵性更強、鏈上垃圾更少、安全性更高,

算力托管難道不是一種復雜的軟分叉嗎?

是的,但是它比 SegWit 容易得多。不像 SegWit,Drivechain 算力托管不會強迫用戶接受任何事,也就是說,它不會強制提高區塊大小上限,

為什么我們預期礦工會積極參與投票機制?

因為這樣符合礦工自身的利益,而且成本很低。如今,有超過半數礦工在挖 RSK。不同于盲合并挖礦,這是一個非常復雜的過程,需要礦工運行 RSK 全節點,對于 Drivechain 側鏈來說,一個 SPV 節點就夠了,或者直接從區塊瀏覽器 API 獲取數據,后者要簡單得多,

如果讀完這篇文章后我還是不喜歡 Drivechain 怎么辦?

這就是重點!你不需要喜歡 Drivechain 或使用它,只要你接受別人使用它就行,算力托管地址完全不會影響到你,驗證成本極低,而且其他人遷移到側鏈上還會讓主鏈上的你享受更多空間。另外就是上文 「內部分歧」 一節中提到的觀點,

來源鏈接:fiatjaf.com

0 条回复 A文章作者 M管理員
    暫無討論,說說你的看法吧