比特幣 Layer 2 之 Ark

作者:Shinobi

來源:https://bitcoinmagazine.com/technical/bitcoin-layer-2-ark

Ark 是一種新的鏈下交易批處理機制,最初由一位年輕的土耳其開發者 Burak 提出。當前有兩種開發中的實現,一個來自 “Ark Labs”,另一個來自 “Second”;Burak 兩個都沒有參與。

相比於當前開發中的實現,最初的 Ark 提議要複雜得多,而且包含一些更多圍繞隱私的設計目標;其最初也設想需要 CHECKTEMPLATEVERIFY(CTV) 來構建。

為了正常工作,一個 Ark 實例需要一箇中心化的協調服務商,但除此之外,Ark 協議能夠提供跟閃電網絡一樣的功能性和安全保證。只要用戶在所要求的時間段內保持在線,資金在全時間段都是安全的(除非用戶自己選擇在一個較短的時間內信任服務商)。每個用戶都能隨時退出一個 Ark 實例、讓自己的資金恢復成鏈上的只受自己控制的形態。

與閃電網絡不同,Ark 協議並不要求用戶預先給自己調配收款額度。用戶從上手錢包的一刻開始就可以接收資金,完全不需要考慮收款額度。

我們來看看 Ark 協議的各個組成部分。

Ark 樹

Ark 協議中資金叫做 “虛擬 UTXO(vUTXO)”。它們只是預簽名交易,保證了在某個用戶決定提交上鍊時就一定能創造出該用戶排他控制的真實 UTXO;但如果沒有用戶決定這麼做,就只是保存在鏈下。

每個用戶的 vUTXO 都被嵌入一棵由預簽名交易組成的樹(也可以叫一個 “批次”)中。Ark 的工作原理是讓協調服務商(也叫 “Ark 服務供應商(ASP)”)來協調用戶們創建交易樹所需的交互。無論什麼時候,當用戶收到資金、進入一個 Ark 實例或離開時,都必須構造一筆交易以及相關的交易樹,形成一個新的批次。

ArkDiagram

交易樹構造好之後,只需讓一個根 UTXO 在鏈上得到區塊確認;該 UTXO 是使用 n-of-n 多簽名裝置鎖定的,簽名人包含了所有在這棵交易樹上持有 vUTXO 的用戶以及 ASP;這個根 UTXO 可以憑藉之前用戶預簽名的交易逐步分解出越來越多的 UTXO,直到最終抵達交易樹的葉子 —— 也就是某個用戶持有的 vUTXO 。每個 vUTXO 都使用了一種腳本:要麼用戶和 ASP 一起使用 2-of-2 的多簽名來花費,要麼用戶可以在一段時間後獨自花費。

每次分解的時候,就有 vUTXO 在鏈上成為 UTXO,但還未分解的 “內部 UTXO(internal UTXO)” 中也包含同樣的結構。這樣的內部 UTXO 也同樣是用 n-of-n 多簽名鎖定的,簽名人包含 ASP 以及在該內部 UTXO 所攜帶的交易樹上持有 vUTXO 的所有用戶。在批次創建流程中,用戶先從各自的 vUTXO 開始,沿這交易樹逐層簽名向上、直至抵達樹根。這保證了樹根在每一位用戶領到一個 vUTXO 之前不會得到簽名,也就保證了每一位用戶總是能夠單方面退出。

(譯者注:作者在此處的描述可搭配上圖來理解。不過,分解的具體情形取決於交易樹是如何構造的,作者此處描述的只是其中一種構造方式;另一種構造方式可見:《Ark 協議中的關鍵概念》。交易樹的構造方式決定了 ASP 需要如何跟用戶交互,以及用戶嘗試退出時候的難易程度,可參見:《多方共享的 UTXO:形式與特性》。)

每一個批次都有過期時間(理由將在下一節解釋)。這種過期花費路徑,是鏈上的根 UTXO 以及每一個內部 UTXO 在多簽名裝置以外的一種花費路徑,它讓 ASP 能夠單方面取走 UTXO 中的所有價值。

交易,預確認和連接器輸出

Ark 協議中的交易有兩種可用的機制,從安全模式的角度看,各有各的代價和影響;一種是 “輪次外轉賬”,也叫 “預確認交易”;另一種是 “輪次內轉賬”,也是實際上得到區塊確認的交易。

要構造一筆輪次外轉裝是非常簡單的。如果一個用戶(Alice)想給另一個用戶(Bob)支付,他們只需聯繫 ASP,然後一起簽名一筆交易,將 vUTXO 轉移給 Bob 就可以了。Bob 就得到了一筆預簽名的交易,以及其它使自己可以一路回溯到鏈上根 UTXO 的交易。所以,Bob 現在也可以用自己的交易單方面離開這個 Ark 實例了,但是,他必須信任 ASP 不會勾結 Alice 從而重複花費 Alice 原本的 vUTXO。在最終得到區塊確認之前,這樣的輪次外轉賬可以多筆串聯。

要終局化一筆 Ark 交易,用戶必須參與一次 “批次互換”。用戶沒法真的在一個批次內免信任地確認一筆轉賬,他們必須將現有批次中的一個 vUTXO 替換成新的一個批次中的 vUTXO。這是通過讓 ASP 成為互換協調員、藉助 “連接器輸出” 來實現的。

ArkDiagram2

當一個用戶要使用批次輪換來終局化一筆 Ark 交易的時候,他們將 vUTXO 的控制權退還給 ASP。那麼,怎麼保證 ASP 不會直接扣住它、不交付新批次中的 vUTXO 呢?這就要用到連接器輸出。

在新輪次創建的時候,在鏈上得到確認的、創建根 UTXO 的交易還有第二個輸出,該輸出承諾的是一棵由連接器 UTXO 組成的樹。當 Bob 要簽名給 ASP 的棄權交易(以構造批次互換)時,該交易包含了 來自新批次 的其中一個連接器 UTXO 作為輸入。

這就創造了一種原子化保證。Bob 在某一批次中的 vUTXO,會跟讓其棄權交易成為有效交易的連接器輸出,在同一時間創造出來。如果這個新批次不會在鏈上創建出來,也即 Bob 不會收到新的得到確認的 vUTXO,那麼他簽名給 ASP 的棄權交易也就不會有效,也不會在鏈上得到確認。

流動性動力學與區塊空間

創建新批次以協助用戶間轉賬所需的流動性全部由 ASP 提供。他們需要擁有足夠的流動性,直到某一批次的用戶的舊 vUTXO 全都過期,從而自己能一次性掃走原本鎖定的所有資金(也即回收資金)。

這就是居於 Ark 協議核心的流動性動力學。雖然從某一個角度看,Ark 協議帶來了巨大的效率提升,它不需要流動性供應商來評估用戶(本質上是預先猜測哪個用戶接下來會收到大量支付),但從另一個角度看,它又損失了效率,因為 ASP 必須擁有足夠的流動性,才能持續為用戶創建新的批次,必須撐過自己設定的過期時間,才能回收之前分配的流動性。

ASP 調節創建新批次以終局化待定交易的頻率,可以大大緩解這個問題。如果 ASP 總是嘗試隨著交易發生而實時創建頻次,那麼流動性要求就會非常高。但是,ASP 可以降低頻率,從而大大降低自己的流動性要求。

這種動力學也會影響區塊空間的使用。與可以完全在鏈下提供健壯的確認保證的閃電通道不同,為了讓一筆 Ark 交易獲得同等免信任程度的終局性,就 必須 在鏈上創建一個新的批次。因此,閃電網絡自身的交易量不會在鏈上反映出來,但 Ark 交易的速度卻內在地要求使用一定數量的區塊空間,雖然是以經過壓縮的、非常高效的形式。因此,理論上,給定時間段內可以創建的 Ark 批次數量是有上限的(儘管 Ark 樹的大小可以因為動力學而變化)。

總結

Ark 在許多方面都選擇了與閃電網絡幾乎截然相反的取捨。它使鏈下交易的區塊空間效率獲得巨大提升,並且消除了閃電網絡中的流動性調配問題,但它又使自身的吞吐量更密切地與區塊鏈吞吐量的限制相關。

幾乎截然相反的取捨使之非常適合作為閃電網絡的互補系統。Ark 也能跟閃電網絡交易,即,vUTXO 可以原子化地換成進入或離開閃電網絡的交易。

Ark 到底適不適合廣大的比特幣生態,尚未見分曉,但它無疑是一個有價值的協議棧,會找到一些小眾場景的(也許與最初的設想不同)。

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論