作者: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合約,跨鏈應用開發者不需要在不同的鏈上頻繁部署/更新映射資產合約邏輯,免去了重複造輪子的成本。