技術解讀ZetaChain:一站式多鏈DAPP底層設施

2024-02-09 13:43 極客 Web3


作者:Howe & Faust,極客web3

前言:

  • ZetaChain是一條基於Cosmos SDK的POS公鏈,其區塊中記錄了“外部鏈”上發起的跨鏈消息與數據。用戶可以在BTC等“外部鏈”上,通過類似Ordinals協議的原理,發布特定格式的消息,向ZetaChain網絡傳達自己的“意圖”;

  • ZetaChain的節點通過共識的方式,確定哪些消息要被處理,以及先後次序,最終通過TSS門限籤名技術,在目標鏈上生成數字籤名,從該鏈的公共账戶中釋放資產,觸發後續的交易步驟。

(目前ZetaChain的驗證者節點名單,有很多項目方或機構,包括OKX、HashKey Cloud、Dora Factory等)

  • 由於ZetaChain本身EVM兼容,支持部署合約邏輯。全鏈DAPP項目方可以直接在ZetaChain鏈上寫好跨鏈消息的處理程序,無需在多鏈上部署橋接資產合約,這樣可以節省开發成本;從用戶端來看,理論上只需要和ZetaChain上的合約交互,而不必與源鏈-目標鏈之間的橋接合約多次交互,也可以節省手續費成本;

  • 與一些具有“一站式資產托管鏈”效果的Intent項目類似,ZetaChain本身支持部署資產合約或Defi協議,用戶可以在不同鏈上的DAPP前端生成特定消息,對ZetaChain上的Defi合約或資產狀態,進行異步調用(支持BTC鏈上账戶);

  • 這就好像讓ZetaChain直接托管了全鏈統一的資產账戶,但要達成這種效果,需要專屬的DAPP前端來配合。

  • 目前看來,ZetaChain最主要的功能,是充當跨鏈、全鏈互操作的底層設施,既可以解析並處理特定的跨鏈消息,也可以作爲多鏈DAPP的業務邏輯執行平台,主要的商業模式是典型的 B to B to C。

隨着區塊鏈行業的不斷發展,我們正處於一個多鏈互聯的時代。在這樣的時代背景下,不同特性的公鏈衍生出了差異化的應用場景,爲用戶創造了多樣化的體驗,但與此同時,“鏈間孤島”問題也顯得愈發嚴重。不同鏈上的账戶往往無法互通,人們的全鏈資產處於一種割裂而不統一的狀態,這增加了使用門檻,也極大程度降低了用戶體驗。

可以說,異構鏈之間的割裂與不兼容問題,是阻礙用戶轉化率增長的主要原因之一。而當今BTC生態的火爆,把異構鏈的互操作問題進一步體現了出來。

正如 Vitalik Buterin 多年前所言:「多鏈是未來」。雖然多鏈並存已經成爲大勢所趨,但在異構鏈之間建立跨鏈橋,仍然是一個麻煩事。

爲了解決多鏈互操作問題,LayerZero、Polyhedra、Map Protocol、Bool Network 乃至於 Cosmos 和 Polkadot,都曾提出不同的鏈間消息傳遞方案,而近期上线 Token 的 ZetaChain 也是全鏈基礎設施版圖中的重要一員。


下文中,我們將簡要的對ZetaChain 的全鏈解決方案進行技術視角的闡述,說明ZetaChain 如何作爲全鏈互操作DAPP的底層基礎設施,實現跨鏈消息解析與處理。


現有跨鏈方案的問題

其實,單純論跨鏈橋要解決的問題,最簡單的場景是資產在不同鏈上的轉移。你從 ETH 往 Polygon 上跨資產,要先往 ETH 鏈上指定的充值地址轉入資產,然後在 Polygon 鏈上接收等量資金。

但問題在於,Polygon 的節點無法確認 ETH 鏈上發生了什么,不知道你是否真充值了 xx 金額。如果有人謊稱,自己往 ETH 鏈的指定地址轉了 100U,然後在 Polygon 鏈上發起提款聲明,要求釋放他的 100U,這就會出現“憑空提款問題”。

跨鏈橋的關鍵在於,解決此處的“憑空提款問題”,即確認所有的提款聲明都對應着真實的充值行爲,本質而言,是設法在 B 鏈上證明,A 鏈上的確發生了 N 筆與跨鏈橋相關的交易。

目前主流的跨鏈橋都傾向於採用公證人機制,就是設置一批公證人節點,通過多籤或者 MPC 籤名來“共識”,只要多數公證人認爲你的跨鏈行爲可以被批准,你的資產就可以順利跨走。

也有一些跨鏈橋採取更安全的哈希鎖,或是用鏈上合約實現其他鏈的輕節點,通過接收 merkle proof 或 zk proof,來確認跨鏈行爲有效性,但這種跨鏈橋的成本往往比較高,最終會轉嫁到用戶手續費上。所以,多數跨鏈橋還是選擇了鏈下公證人節點走多籤的模式。

參考資料:白話科普:設計跨鏈橋時都要考慮哪些事?。

基於公證人的跨鏈橋往往面臨着巨大風險:易遭黑客攻擊,或監守自盜,據 SlowMist Hacked 統計,2022 年跨鏈橋安全事件共 16 起,損失達 12.1 億美元,佔當年鏈上攻擊事件損失總額的 32%,由此可見跨鏈橋安全漏洞的危害。

同時,現有的跨鏈橋方案大多選擇 Lock-Mint 模式,即在 A 鏈上鎖定資產,在 B 鏈上增發相應的映射資產,從而實現資產跨鏈。但這類方案的充提款處理流程中,需要與映射資產合約進行多次交互,手續費摩擦較大,存在資金損耗問題。

此外,不少跨鏈橋方案只支持 EVM 兼容鏈間的資產轉移,在異構鏈如Solana、Bitcoin 的跨鏈行爲往往受制於彼此的技術標准不同,开發難度較大。

綜合安全與手續費問題,目前主流的跨鏈橋方案往往無法取得太好的效果,更無法保證資產的“原生跨鏈”。而在如今的比特幣生態中,越來越多的人渴望實現原生、無縫的跨鏈交互體驗,期待找到一種更優的方案。ZetaChain 對此提出了自己的一套解決方案。

ZetaChain的功能:全鏈互操作DAPP的底層基礎設施

ZetaChain的自我定位是全鏈互操作型DAPP的基礎設施,專門支持各種全鏈交互類的應用協議,是一種典型的B To B To C底層基礎設施。它通過 PoS 准入機制,允許任何質押資產的節點進入網絡之中,充當公證人。全體 PoS 節點通過 TSS 門限籤名技術,參與到跨鏈消息的驗證與處理中,盡可能提升安全性。

同時,ZetaChain上可以部署智能合約,添加與資產互換相關的業務邏輯,用戶可以在任何一條鏈上發送特定格式的消息,調用 ZetaChain 或其支持的多鏈上的Defi合約,在BTC鏈上就可以間接調用 Polygon 上的 DeFi 功能。這樣達到的效果是:在不同的區塊鏈之間進行消息傳遞,實現互操作。

基於全鏈互操作場景的DAPP可以在ZetaChain上部署資產互換的業務邏輯,幫用戶自動兌換不同鏈上的gas代幣。

比如,你可以通過某些全鏈DAPP的前端,在BTC上通過類似Ordinals協議的數據發布方式,發出一條特定格式的消息,指明要調用Solana上的XX合約,這條消息會被ZetaChain節點監測到。

之後,ZetaChain上的AMM合約可以自動計算BTC和SOL的兌換比例,然後在Solana鏈上釋放等量的SOL,完成後續的調用合約等復雜操作,最後再把你應得的資產,轉回到你的BTC地址或Solana地址,這便是所謂的“全鏈互操作”,你只需要在一條鏈上發布消息,就可以遠程調用多條鏈上的DAPP,當然這中間涉及到好幾條異步消息的發布與觸發過程。

在此,我們可以將 ZetaChain 理解爲一個“鏈中鏈結算層”,所有的多鏈交互場景,比如A鏈上發起調用B鏈的某DAPP,相當於A鏈先和 ZetaChain 進行“結算”,然後 ZetaChain將預處理的結算結果,同步到B鏈的相應账戶,再完成後續的步驟。

整個過程中不存在與映射資產合約的過度交互及手續費摩擦,資產流通經由ZetaChain在不同鏈上的公共账戶來完成,這樣就不需要像傳統跨鏈應用那樣,頻繁的在不同鏈上部署映射資產合約。

目前看來,基於ZetaChain的全鏈應用可以省去不少麻煩事,至少不需要在不同鏈上費盡心力的設計映射資產合約了,所有關於源鏈-目標鏈之間資產進入-進出的細節,都由ZetaChain“承包”。換句話說,就是你只需要在ZetaChain上部署和跨鏈交易相關的業務邏輯就可以。

這樣便於不同的全鏈應用在前端支持Solana、Algorand、Bitcoin 和 DogeCoin 等非 EVM 鏈,不需要費盡心力的在不同鏈上實現跨鏈應用專屬合約。

此外,ZetaChain 本身也支持部署資產合約或AA账戶,不同鏈上的用戶可以發送特定格式的消息來調用,就好像在操作一個全鏈統一的账戶一般,這種設計思路在 Particle Network 的 Particle chain 上也有體現,最終達成的效果是:

用戶可以盡量把資產的數據記錄,集中在ZetaChain或Particle Chain一條鏈上,在必要時,通過“外部鏈”上的DAPP前端發送調用消息,異步調用自己在ZetaChain上的資產合約,然後ZetaChain會通過外部鏈上公共账戶,轉移一定的資產至用戶消息指定的地址,或是與用戶指定的Defi協議進行交互。

當然,這一系列操作需要專門的前端DAPP來實現,也就是說,ZetaChain本身只提供全鏈底層設施的服務,而在應用端需要有專門的前端入口來生成特殊格式的消息。

ZetaChain的安全模型:基於POS質押的大號公證人節點網絡

歸根結底,ZetaChain本質上是一個專爲跨鏈消息處理,而設置的公證人節點網絡,它建立在 Cosmos SDK 基礎上,由很多台 Validator 驗證節點組成,並以POS作爲准入機制,以此實現節點反女巫和底層安全。

Validator 節點們在 ZetaChain 網絡中,作爲去中心化的公證人存在,他們會確認其他鏈上觸發了哪些待處理的跨鏈請求,並通過共識,對這些跨鏈行爲做記錄,進行後續步驟。通過TSS分布式密鑰籤名,ZetaChain可以在其他鏈上生成交易指令。

可以說,Validator 做的事情,與公證人模式下的跨鏈橋有部分類似,但通過POS質押,公證人節點更去信任,以解決女巫問題。

(目前Zetachain的驗證者節點名單,有很多項目方或機構)

Zetachian的Validator 客戶端中包含 ZetaCore 和 ZetaClient 兩個模塊。ZetaCore模塊參與ZetaChain區塊的產生和共識過程,ZetaClient 模塊則觀察外部鏈上的事件,並籤署出站交易。

這裏的出站,可以簡單理解成,將 ZetaChain 上的交易日志記錄,發送到“外部鏈”(就是指ZetaChain外的其他鏈),從而在目標鏈上觸發對應行爲,發送的內容主要包含用戶在消息中聲明要調用的合約地址、鏈ID、消息內容,其實就類似於 Ethereum 交易中的 Log 部分。

反之,入站則可以理解成,將ZetaChain外的外部鏈上相關消息/交易,如跨鏈請求、調用 zEVM 上的智能合約等內容,記錄到 ZetaChain 上。

這裏需要注意,實際運行 ZetaChain 的 Validator 節點時,客戶端代碼包含驗證者、觀察者、TSS 籤名者 三個模塊。這三個模塊負責的職能有所不同,但同屬於ZetaChain客戶端中。

觀察者和TSS籤名者模塊

首先,所有的 ZetaChain 節點都具備“驗證者”的模塊,與 PoS 公鏈中 Validator 節點的職能基本一致,要參與出塊和共識流程。此外,節點可以按質押的代幣(ZETA)比例,投票參與鏈上提案。ZetaChain 的區塊中,則包含了處理的所有跨鏈記錄、全鏈智能合約交互等行爲,相當於日志記錄。

而ZetaChain客戶端中的“觀察者”模塊,會通過運行其他公鏈的全節點/輕節點,監測特定格式的跨鏈交易/消息。觀察者模塊可以分爲兩種模式:主動模式和被動模式。

不同的ZetaChain節點可以做出選擇,將觀察者模塊切換到兩種模式中的一個。觀察者模塊會持續監控,其他鏈上是否有ZetaChain相關的跨鏈消息/事件,如果有,ZetaChain節點的觀察者模塊會向驗證者模塊匯報情況。這些觀測到的跨鏈消息,會被提交到ZetaChain的區塊裏,通過共識的方式進行全體確認。

觀察者模塊有兩種模式:主動模式和被動模式。主動模式下,節點會不斷掃描 ZetaChain 外的區塊鏈上的交易/事件/狀態,運行其他鏈的fullnode;而被動模式下,節點不同步其他區塊鏈的完整block,被動的從其他ZetaChain節點處,接收解析後的跨鏈消息。

不過,被動模式下的節點,雖然不同步完整的外部鏈區塊,但是會同步區塊頭,並通過Merkle 證明確定外部鏈上真的存在這些跨鏈消息/交易數據。

主動模式的優點是,大多數ZetaChain節點都會同步外部鏈上的數據,此時的抗審查性最強,任何用戶要和ZetaChain產生交互,只要有節點監測到,你在外部鏈上發起請求即可。

但主動模式下,運行節點的成本較高,除了要運行ZetaChain自身的節點客戶端,還要運行外部鏈的全節點,時刻同步數據並進行掃描。而被動模式下,普通觀察者節點的運行成本低得多,只有特定節點去運行外部鏈的全節點客戶端,其他節點只運行外部鏈的輕客戶端,不需要同步外部鏈的完整區塊。

這樣一來,被動模式下的費用更便宜,也更容易擴展節點數量,方便對接多條外部鏈。但被動模式的缺點是,外部鏈上的數據觀察活性,取決於少數節點,抗審查性差。

爲了緩解這種情況,ZetaChain 會激勵節點運行主動模式的觀察者模塊。

(主動模式下,節點還需要運行外部鏈的全節點客戶端;被動模式下,只運行外部鏈的輕客戶端,從主動模式的ZetaChain節點那裏,接收 跨鏈消息+merkle proof,確認消息的有效性)

TSS 籤名

所有被ZetaChain節點觀察到並驗證過的跨鏈消息,最終會在目標鏈上通過ZetaChain的公共账戶地址,觸發一筆交易行爲,進而執行後續的操作。而這個過程中,需要在目標鏈上爲該筆跨鏈交易生成數字籤名。

爲了保證安全與去信任,籤名的生成由 ZetaChain 所有節點承擔,共同存儲用於生成籤名的密鑰片段。這些密鑰片段分布在多個籤名者之間,只有絕大多數籤名者都籤名了,才能在外部鏈上,生成交易的數字籤名。任何時候,單個實體或一小部分節點,都無法代表 ZetaChain 在外部鏈上觸發交易/籤署消息

(ZetaChain的跨鏈模型下,只需要在不同的鏈上擁有一個公共账戶地址,而不必部署復雜的智能合約)

ZetaChain的多籤算法,採用TSS,全稱爲 Threshold Signature Scheme 門限籤名方案。對於外界來說,我們能看到的交易數字籤名,雖然只對應着一個私鑰、公鑰和地址,但實際上,這個私鑰是由很多道片段,在沒有中間人的情況下生成的,這些片段分布在所有ZetaChain節點設備本地。任何時候,單個實體或少數驗證者都無法代表網絡整體去拼湊私鑰片段並籤署消息。

TSS的密鑰生成和籤名過程,通過多方計算(MPC)的方式完成,不會泄露任何參與節點的祕密。ZetaChain的節點可以生成不同鏈上的交易籤名,在兼容各 EVM 鏈的基礎上,爲比特幣/非智能合約鏈的账戶,添加了遠程調用智能合約的功能,直觀體驗就好比BTC用戶可以直接調用某些defi功能。

這種場景其實格外適合搭載BTC生態的多鏈Defi應用,因爲BTC鏈上無法實現太復雜的業務邏輯,只能依賴於外部設施遠程調用某些Defi合約。而ZetaChain的這些特性,正適合BTC生態內的用戶通過異步調用的方式,

zEVM:一站式的全鏈DAPP合約平台

不同於傳統跨鏈方案要在每條鏈上部署映射資產合約,ZetaChain 可以僅在自家鏈上部署一次智能合約,即實現多鏈的跨鏈功能。在 ZetaChain 中,有一個EVM兼容的執行層,稱爲 zEVM,而跨鏈智能合約可以直接部署在 zEVM 上。

zEVM支持以下功能:

任何人可以在外部鏈上發送特定格式的交易數據,調用 zEVM 上的某個合約;

zEVM 上的合約邏輯,可以控制在外部鏈上生成的出站交易數據。

這兩個附加功能使得 zEVM 支持通用編程,可部署特定的業務邏輯,原子性地對不同鏈上的狀態進行修改。如果一筆跨鏈操作發生了,ZetaChain檢測到這筆跨鏈行爲的後續步驟,在目標鏈上沒有成功,則可以回滾掉該筆跨鏈交易在ZetaChain合約裏修改的數據,就好像什么都沒發生。

同時,全鏈應用DAPP無需在不同的鏈上部署映射資產合約,只需要通過ZetaChain鏈上的合約,就可以一站式的將消息跨鏈的處理邏輯集中設置,無需頻繁的將跨鏈合約部署到多鏈網絡中。

這樣可以大幅度節省全鏈DAPP开發成本。在用戶層面,因爲不需要頻繁的與多鏈上的映射資產合約產生交互,成本要比那些需要在不同鏈上部署映射資產合約的主流跨鏈橋更低。

此外,ZetaChain上也可以部署專門的Defi合約和ZRC-20乃至NFT資產,對資產狀態進行數據同步,或是部署AA账戶。這使其具備了統一的資產管理(狀態記錄)平台功能。因爲我們不再需要費盡心力的在多鏈上擁有資產,這種全鏈統一資產账戶的場景,可以在未來賦予更多的想象力。

總結

通過前面的內容,我們或多或少對 ZetaChain的“全鏈互操作基礎設施”身份有了更多了解。其通過 Validator客戶端中的觀察者模塊,監測外部鏈的特定消息/交易,並匯報給驗證者模塊,最終在ZetaChain網絡中對消息進行共識。再對消息包含的數據進行解析,用TSS生成數字籤名,在對應的目標鏈上觸發後續的交易流程,從而實現全鏈上的交互。

與此同時,基於ZetaChain的全鏈智能合約,使得我們可以與不同區塊鏈進行貼近原生的交互,無需在不同的鏈上使用映射資產合約,這可以避免調用冗余的合約邏輯,節約了手續費成本。

同時,由於ZetaChain本身EVM兼容,可以讓任何DAPP开發者甚至個人用戶,部署定制化的跨鏈消息處理邏輯,理論上可以一站式的部署全鏈DAPP合約,跨鏈應用开發者不需要在不同的鏈上頻繁部署/更新映射資產合約邏輯,免去了重復造輪子的成本。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

標題:技術解讀ZetaChain:一站式多鏈DAPP底層設施

地址:https://www.sgitmedia.com/article/23198.html

相關閱讀: