icp與btc網絡集成的進展

作者:icp league

2021 年 9 月 15 日,互聯網計算機治理系統 NNS 的 20586 號提案 通過, DFINITY 基金會將對密碼學部分持續開發,讓互聯網計算機網路與 BTC 網絡直接集成。這種集成,可以讓互聯網計算機的軟件容器(Canisters)直接持有併發送比特幣主網的 BTC,也爲比特幣網絡帶來的 智能合約 。

更重要的是,互聯網計算機的密碼學創新在無需私鑰的前提下爲合約創建了簽名。因此除了爲比特幣主網帶來智能合約能力,這也是讓互聯網計算機的軟件容器(Canisters)直接與以太坊主網交互的基礎。我們將不再依靠中心化程度較高的資產橋,而是依靠 IC 的網絡共識,實現直接多鏈節點端到端的集成。

▍什麼是直接集成

讓 Canister 在比特幣網絡上直接收取並持有比特幣;

讓 Canisters 可以追溯並且查詢他們自己在比特幣網絡中的 UTXO;

Canister 能夠創建比特幣交易,並接受其他 Canister 中的比特幣交易,交易轉發到比特幣網絡。

在 Canisters 可以直接持有比特幣後,因爲 Canisters 爲圖靈完備,可以編寫業務,決定何時與其他比特幣用戶交易,包括與其他使用比特幣網絡的 Canisters 進行比特幣交易,而業務運行在 IC 網絡中。

因此可以可以利用比特幣網絡上的流動性在互聯網計算機上進行智能合約,而不涉及任何中介和橋樑。

在完成比特幣直接集成後,下一步將嘗試讓容器能夠持有 ETH ,並讓容器發送以太坊主網的交易,讓 IC 的 Canisters 與以太坊主網智能合約交互。

▍需要閾值 ECDSA 簽名

ECDSA 簽名廣泛應用於比特幣與以太坊網絡,因此互聯網計算機上的 Canister 應該能夠擁有比特幣或以太坊的公鑰,且能創建 ECDSA 的簽名,才能在其他 公鏈 網絡中發送交易。

顯然,不應該在容器狀態下保存比特幣公鑰對應的密鑰,即使是 Canister 能設置 pirvate 來封裝數據,但該密鑰仍可能暴露在所有的節點前。因爲 Canister 內狀態將在子網的節點間共享,和所有的區塊鏈一樣,在互聯網計算機的信任模型下,可能會存在作惡節點,作惡節點可能通過攻擊拿到簽名密鑰從而盜取資產。

爲此,必須先完成閾值 ECDSA 簽名,即**在運行 Canister 所在子網 的所有節點之間,共享私鑰,並通過閾值加密來創建簽名**。也就是說,如果節點的閾值參與並正確完成簽名協議,則該協議的輸出爲有效簽名。另一方面,一些不符合閾值的節點不能自己簽署未經授權的消息。這是互聯網計算機與比特幣和以太坊集成的先決條件。

▍風險與挑戰

這裏的主要挑戰在於定義和實現 安全 的 多方計算協議 ,以實現閾值 ECDSA 簽名方案,並將其與互聯網計算機協議集成。

圍繞 閾值 ECDSA 簽名協議的進一步挑戰,是安全的分佈式密鑰生成協議,以及用於私有簽名密鑰的安全密鑰備份和恢復方案。

同時,子網不能容忍超過 1/3 的惡意節點,閾值 ECDSA 功能也基於這樣的假設: 如果子網中有太多串通的惡意方,他們可以在未經容器批准的情況下代表容器創建簽名。

▍解決的方法

再來回顧上述的三個需求:

讓 Canister 在比特幣網絡上直接收取並持有比特幣;

讓 Canisters 可以追溯並且查詢他們自己在比特幣網絡中的 UTXO;

Canister 能夠創建比特幣交易,並接受其他 Canister 中的比特幣交易,交易轉發到比特幣網絡。

針對功能 (1),Canisters 需要有一個閾值 ECDSA 公鑰,其比特幣地址基於此派生。

針對功能 (2),需要將比特幣塊提取到互聯網計算機中,以此來驗證並跟蹤比特幣的區塊鏈。一旦區塊鏈上的後續區塊中有足夠的工作量,該交易及其 UTXO 就可以被提取,並根據要求提供給 Canisters;

針對功能 (3),互聯網計算機必須建立出一個出站通信通道 (outbound communication channel),基於此,來自比特幣智能合約容器的出站交易可以可靠地發送到比特幣網絡。


閾值 ECDSA 在功能上是與比特幣完全分離,作爲一個單獨的功能構建在 IC 上,Canisters 通過它獲取公鑰和簽署交易的 API,從而允許支持比特幣的智能合約。

在 IC 網絡自己的易用性上,根據現在的計劃,所有使用比特幣網絡的 API 調用都是異步的。值得注意的是,異步調用在這個設定下非常迅速,因爲在功能上發送比特幣的交易與該 Canister 是在同一個子網內運行的,不存在跨子網延遲。

▍需如何檢查比特幣網絡狀態

互聯網計算機會引入其他網絡的區塊並驗證它們是否正確(格式、難度等),並在得到一定數量的確認後再處理交易,保證最終性。由於互聯網計算機上的副本直接從比特幣網絡中引入區塊,因此安全性取決於 互聯網計算機和比特幣網絡 的正常運行,而不是其他因素。比特幣的狀態主要用於跟蹤每個裝有比特幣的 Canisters 的當前餘額。

但在副本上不會運行比特幣及以太坊的節點,只會在副本上配置專門的適配器來獲取來自比特幣及以太坊 P2P 網絡上的區塊。適配器會與其主網處於同一共識下,所以副本上會有同樣的狀態,並且系統能保持期望中的安全性質。

互聯網計算機和比特幣網絡之間的中繼通過一種儘可能的去中心化的方式在 IC 節點上實現: 在支持比特幣集成的 IC 子網中的每個節點,都將隨機地連接到比特幣網絡的一組節點。這種方法還允許以高度去中心化的方式,快速分散交易到比特幣網絡的多個節點。

關於相關的安全問題,DFINITY 計劃對執行危險任務的代碼進行沙盒處理,例如在高度受限的沙盒中解析不受信任的內容,這樣即使有人通過提供惡意的網絡響應(例如,我們連接到了攻擊者的比特幣節點)成功發起遠程代碼執行攻擊,他們也無法突破沙盒,從而無法造成任何實際傷害。

比特幣的最終性(finality)在適配器的 get_UTXO_set 的 API 中得到了解釋。對於 API 返回的比特幣地址,可以把 UTXO 集合中獲得一個確認的總金額,作爲 UTXO 的元數據,比特幣最終性將被進一步抽象爲賬戶模型下的餘額。

▍集成比特幣之後

上述提到的適配器這種網絡體系結構,是以一種非常通用的方式構建的。 用 一個單一、統一的體系結構提供所有這些功能,該體系結構是 IC 協議棧的一部分 。 因此除了比特幣集成之外,它還可以用於多種用途:

這裏的另一個關鍵用途是未來的以太坊集成;

允許容器進行 http 調用或進行任意網絡連接。

不同的協議(BTC、ETH、http、TCP…)將共享大部分架構組件,例如在網絡級別,並且每個協議都接收自己的協議適配器。這樣,我們可以保持架構高度模塊化但功能強大,並且與 IC 協議的耦合儘可能小。

目前計劃是首先進行比特幣集成,然後進行以太坊集成。我們會爲這些區塊鏈引入特定代碼,例如連接比特幣或以太坊 P2P 網絡的專用適配器。目前只會增加對這兩個區塊鏈的支持。如果整合取得巨大成功,社區要求整合 Litecoin、Dogecoin 和其他網絡,我們當然可以投票表決。

與比特幣集成將爲實現外部 HTTP 調用的功能奠定基礎,DFINITY 可能在 明年開始進行這部分的開發 。

▍最新進展:

9 月 15 日更新:

關於加密協議研究論文中,還需要進行內部安全審查,然後才能將結果發佈給社區。

9 月 22 日更新:

閾值 ECDSA 社區對話

10 月 4 日更新

閾值 ECDSA 功能的實施工作:已經實現了一個很好的部分“基礎”,如數據類型,工件池(artifact pool)的閾值 ECDSA 工件,用於創建和驗證交易等。到目前爲止,上述實現都是在都模擬狀態下進行的。一些加密原語已經並行實現,但到目前爲止尚未與一致意見集成。

下一個重大里程碑是在 11 月 20 日左右,實現最小子網(4 個節點)的共識與 ECDSA 加密的集成。

10 月 19 日更新:

在比特幣網絡適配器和比特幣系統組件的功能實現方面取得了出色的進展。舉個例子,比特幣系統組件已經可以從比特幣塊構建 UTXO 集合並很好地處理 分叉 。

10 月 31 日更新:

在設置了 11 月 20 日的里程碑之後,我們意識到該功能很可能只會在明年最終發佈。現在很難給出一個很好的估計,計劃將在第一季度發佈。

昨天我們舉辦了第一次“比特幣社區 開發者 研討會”,來自 DFINITY 的核心開發者正在研究閾值 ECDSA 和比特幣的集成。

11 月 4 日更新:

關於閾值 ECDSA 的密鑰管理的最終決定還有待商榷;

在單一子網上的所有的 Canister 的密鑰將來自於這個一個主密鑰(master key);

當在不同的子網上部署同樣的主密鑰時,這個密鑰的安全性將取決於部署了密鑰的子網安全性的短板處。這意味着我們需要使用足夠安全的子網來承載給定的主密鑰;

現在的策略是在多個子網上部署主密鑰以確保我們有備份。

11 月 6 日更新:

社區建議官方提供一個選項,讓 Canister 選擇是希望使用比特幣主網還是測試。這樣可以更輕鬆地測試容器代碼,而無需在比特幣主網上執行交易。

閾值 ECDSA 功能很可能會延續到 2022 年實現,這也會延遲比特幣集成功能的推出。社區建議,如果比特幣功能提前完成,我們應該讓他們在沒有閾值 ECDSA 的情況下訪問比特幣功能,並在實施過程中模擬 ECDSA 功能發展,這將有助於縮短比特幣相關功能的推出時間。

互聯網計算機上的 EVM:社區強調了能夠在 IC 上運行 EVM 代碼的重要性,以便在 Solidity 中編寫的智能合約可以在 IC 上運行,而無需重新實現。

11 月 12 日更新:

閾值 ECDSA:加密和共識機制的工程團隊目前正在加緊進行共識機制和 ECDSA 簽名之間的首次集成,這是一項重大的里程碑,我們將驗證一個閾值 ECDSA 簽名所需的最小四節點子網。我們已經爲這一里程碑設定了一個最後期限,即下週末。到目前爲止,我們已經取得了很好的進展。

比特幣適配器與比特幣系統組件的協議集成:本週工程團隊取得了重大進展,網絡層的比特幣適配器和執行層的比特幣系統組件之間的協議開始工作。也就是說,比特幣系統組件可以從適配器中獲取區塊,適配器將請求與其預取區塊匹配,並在匹配的情況下提供新的比特幣區塊,新塊由系統組件處理。比特幣系統組件的區塊請求包括系統組件具有的比特幣區塊鏈視圖中的所有塊哈希。適配器以比特幣區塊作爲響應,以防其區塊與系統組件在其本地視圖中的區塊“頂部”相匹配。該協議級集成是通過單個適配器完成的,該適配器“直接”連接到比特幣系統組件,而不是通過 IC 協議棧。這意味着比特幣相關功能的核心部分現在在這兩個主要組件中工作,但後續會繼續開發新的通信機制。

接下來的步驟是解決協議棧的集成問題,如在 IC 共識層的擴展,使請求和響應與 IC 協議棧集成,允許提交傳出事務。

11 月 19 日更新:

官方打算在不支持閾值 ECDSA 的情況下發布比特幣功能的“開發者預覽”,以便人們可以開始預實現 Canisters 上與比特幣相關的業務邏輯。

11 月 20 日更新:

將在下週達到實現一個里程碑,在內部演示中暗示最小四節點子網的集成情況。

11 月 26 日更新:

預簽名協議的共識功能和加密原語的集成已經完成了,並且我們還增加了加密功能。其中,預簽名是最閾值 ECDSA 功能實現中最複雜的部分,現在我們仍在使用仍然需要“解決”的快捷方式進行端到端的工作。對於這些快捷方式,我們在簽名協議實現後將完成全部功能。

爲了使預簽名更加具體,我們通過 Grafana 儀表盤對功能進行了可視化。細節如下圖:


下一個里程碑是簽名協議的實現,該協議爲每個閾值 ECDSA 簽名使用預簽名協議的四倍。它比預先指定協議更簡單,目前正在研究中。

11 月 27 日更新:

1 月份的時間很緊,因此我們可能會在 12 月底或 1 月份看到開發者預覽,這樣人們就可以開始使用比特幣功能構建智能合約。預計將在 2022 年第 1 季度後半階段全面發佈。

11 月 29 日更新:

Taproot 和閾值 Schnorr 簽名可能是閾值 ECDSA 之後的下一步,但目前還沒有確定的決定。在實施閾值 Schnorr 時,我們完全可以利用閾值 ECDSA 工作的協同效應,但是,我們仍然需要定義協議規範,包括密鑰派生方案,證明其安全性,創建系統設計(利用協同效應)並實施它。

因此,我們的計劃是在符合優先級的條件下,先推出閾值 ECDSA,然後考慮 Taproot 和閾值 Schnorr。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章