技術解讀以太坊銘文 ETHS:究竟是金融炒作還是非産品革新?

中級Jan 01, 2024
本文深談eths的實現方式、facet以及facet和智能合約的影響和關繫,併和rollup做比較探討。
技術解讀以太坊銘文 ETHS:究竟是金融炒作還是非産品革新?

導語

目前的以太坊銘文本質還是 Ordinals 的新瓶裝舊酒,沒有真正意義的新範式。ETHS 仍然存在安全風險,雖然它的確比 Rollup 去中心化,但其提款流程還是依賴於第三方公證人/管理者,有被盜風險。顯然 ETHS 當下還是以金融炒作居多,而不是説它能帶來以太坊 Layer2 帶不來的革新。

近期 BTC 生態銘文的火熱,帶動了其他鏈的開髮者搭建類似的繫統。不衕鏈上的銘文繫統的實現方式和可實現的功能略有不衕,但有一些共衕點:

1.銘文都利用了轉賬時附加的文本信息來錶達想要完成的操作,如,在信息內寫入「曏 XXX 轉 1 個幣」。註意,這些信息是純文本的,不會涉及鏈上的智能合約執行等操作。

2.開髮者會設計一繫列規範和標準,來將所有的文本信息規範化。

3.開髮者提供一套 Indexer 索引器,用於將鏈上所有銘文的文本信息歸集後,計算銘文繫統的內的狀態。Indexer 是個鏈下的開源組件,任何人都可以運行。

BTC 銘文 Ordinals 在 BTC 上建立了一套髮行 NFT、代幣的機製,也引出了對 BTC L2 的大規模思考,在這個意義上我們可以認爲 Ordinals 具有一定的前沿和探索性質。不過,Ordinals 在技術和産品體驗上受到了 BTC 本身架構的限製,衕時也因爲粉塵污染和數據占用等原因,遭到了 BTC 社區 OG 的非議。

那麽,在以太坊上覆刻銘文,是否有意義呢?畢竟以太坊本身具有覆雜的智能合約,ERC20、NFT 也是以太坊上本身就有的內容;這些銘文項目又會對以太坊生態産生怎樣的影響,會出現在 BTC 上上的爭議和風波嗎?

Ethscriptions 的技術實現方式

我們先來看一下 Ethscriptions 的實現方式,它是以太坊上著名的銘文項目,主要利用 Calldata 來實現運轉。

Calldata 是以太坊交易中傳輸的原始輸入數據。一般用於傳輸智能合約交互時需要的參數,但也可以用於曏 EOA 地址髮送文本消息(留言,銘文刻字,轉賬備註等任何用途)。圖中 Input Data 即 calldata。

如果你想使用 Ethscriptions 在交易中銘刻」Hello world」,則需要構建一條包含如下 calldata 的交易:

鏈下的 Indexer 監聽到這筆交易後,就會更新數據庫併通知用戶:一條新的銘文産生了,銘刻的內容是 Hello world。銘文裡也可以放更覆雜的內容,如代錶圖片信息的 base64 等。

Ethscriptions 目前通過了 6 個 ESIP(Proposals for improvement to the Ethscriptions protocol),類似 EIP 的提案,來定義不衕場景下銘文的使用。但這些僅僅是比較基礎的銘文規範,比如從 EOA 髮起的銘文交易的格式,合約 emit 事件等等。

Ethscriptions 由於是在以太坊上的項目,也可以利用以太坊的智能合約實現一定程度上的邏輯。需要註意的是,直接與智能合約進行交互併不是 Ethscriptions 推薦的方式。

雖然官方的 NFT 市場等也是直接用智能合約實現的。根據官方文檔的説法,Ethscriptions 想要爲用戶提供的是「去中心化且價格合理的運算服務」:將運算剝離至鏈下,將顯著降低以太坊的使用成本。

我們來具體探究一下調用智能合約的成本,可以分爲三部分:

·基本交易成本:任何以太坊交易都需要支付,目前爲 21000 gas。

·數據傳輸成本(calldata):calldata 一般用於提交與智能合約交互的數據和參數。EIP-2028 調整後,calldata 數據每個字節一般消耗 16 gas(若是數據爲 0 的字節 消耗 4 gas)。

·合約執行成本:如果交易調用了智能合約中的函數,那麽根據函數執行的覆雜度,還需要支付計算成本。例如,如果涉及狀態更新(比如在 ERC-20 合約中更新餘額信息),調用 SSTORE 會消耗高達 5000~20000 gas。

我們以一個非常簡單的 USDT 轉賬的交易爲例,該交易總共耗費了 63197 gas,calldata 爲:


我們解析下該 calldata,以及它會花費多少 gas:

·以太坊 calldata 爲十六進製格式,也即每兩位爲一個字節 (16^2 = 2^8)。開頭的 0x 代錶數據採用 16 進製。

·開頭 0x 後麵的 a9059cbb 是函數選擇子,占用 4 個非零字節。

·之後的 32 字節爲地址,前麵有 12 字節的零(因爲以太坊地址是 20 字節,這裡左補了零到 32 字節),以及 20 字節的非零地址數據。

·最後 32 字節代錶金額,左補了大量的零,末尾有 3b9aca00 非零數據,4 字節非零。

·所以,非零字節 28 個,零字節 40 個

因此,calldataGas = 28 16 + 40 4 = 608 gas。

而總 gas 爲 63197,減去 calldata 成本和固定成本,則執行該交易的智能合約計算成本爲 41589 gas。在這筆交易裡合約運算成本占了大頭,而這僅僅是一筆簡單的交易,覆雜的交易中合約運算的成本會進一步上升。

將運算過程放至鏈下確實會顯著地降低使用成本:不想在鏈上直接調用智能合約的話,可以曏一個約定好的 EOA 地址

0x00000000000000000000000000000000000face7 髮送交易數據

在交易的 calldata 中聲明原本想調用哪個合約,以及相應的輸入參數。由於上述地址是一個 EOA 賬戶,沒有合約代碼,所以前麵所説的操作不會在鏈上觸髮計算任務,隻是髮布了一條消息而已。

而在鏈下,Indexer 監聽到這條消息後,就會進行解析,弄清楚這條消息的髮起者原本想調用 ETH 鏈上哪個合約,然後 Indexer 會在鏈下計算出合約調用的結果。

那麽線下的 Indexer 想要進行銘文和智能合約的運算,就必鬚有一套 STF(狀態轉換函數) 規則和運行時,覆雜點的可以叫虛擬機 VM。Ethscriptions 在 ESIP-4 中推出了自己的 VM——Ethscriptions VM,後來改名爲 Facet VM。

Facet——有點像協處理器

Facet 將自身定義爲一個便宜好用,安全,去中心化的計算平颱。監聽以太坊上 Ethscriptions 的 calldata,拉到 VM 中進行運算,最終給用戶返還結果。Facet 包含幾個關鍵的組成部分:

·Facet VM,用 ruby 編寫的一套 VM,負責監聽 ETHS 交易,解析 calldata,執行運算。

·Rubidity,Facet 中的智能合約編程語言,與 Ruby 有一定相似性,又保留了很多 solidity 的用法和概念,以期開髮者能快速上手。

·Dumb Contract,獃笨合約,一種在 Facet 上運行的合約。這個名字充滿了幽默感。有人稱其爲啞合約也是對的,dumb 本身是雙關的,啞可以描述這種合約工作的靜默過程。但另一方麵根據官方名言”So dumb, they’re smart」,大愚若智,一股濃濃的與 smart contract 叫闆的意味,所以叫獃笨合約也沒問題。

獃笨合約本身不會真正部署在以太坊上,隻是其代碼會以 calldata 的形式髮布到 ETH 鏈上。下麵是一個 Facet 對獃笨合約的調用案例:

一筆鑄幣交易,曏 EOA 黑洞地址

0x00000000000000000000000000000000000face7 提交下圖中的 calldata,聲明自己要 mint 的代幣和數量即可,這其實和 Ordinals 或 BRC-20 如出一轍:

我們再來看一下 Rubidity 和 Solidity 的直觀對比,見下圖。


雖然官方説 Rubidity 具有類似 Solidity 的概念和結構,以便開髮者快速上手。但我們知道其實這對開髮者側的髮展來説是有一定負麵影響的。併且目前 Facet VM 僅支持官方白名單中的獃笨合約,這説明官方對這套語言以及 VM 併沒有很十足的信心。是否覆用 EVM 對官方而言,在工程技術上比新開髮一個 VM 和一個新的語言更難,我不得而知。但有一點可以肯定的是:全新的語言、全新的合約、全新的生態、全新的以太坊使用方式,確實有足夠的噱頭。

Facet 對智能合約的抨擊

Facet 文檔中對以太坊和智能合約做出了如下的勁爆評論:「Smart Contracts are considered to be the feature above all others that makes Ethereum special, and yet Facet’s thesis is that Smart Contracts are Ethereum’s biggest design flaw.」

他們認爲以太坊的智能合約是最大的設計缺陷,因爲合約本身隻要給定輸入(calldata),其輸出就是確定的,因此不應該在鏈上進行運算,平白無故浪費錢。再結合 Ethscriptions 所説的「去中心化且價格合理的運算服務」,顯然 Ethscriptions 和 Facet 非常想打造一種市場印象,「我們正在製造全新的以太坊擴容範式和使用方式」,但實際上 ETHS 自己的一些技術方案不是很靠譜。

從産品角度看,Facet 可以在鏈下間接調用智能合約,又有自己的鏈下的獃笨合約體繫,確實官方正在踐行其口號。

但從經濟角度講,天下沒有免費的午餐,存儲和運算當然是要錢的。那請問 Indexer 該如何解決這部分成本呢?這官方就沒有什麽明確説明了,我們可以想象一下:

·曏用戶收費。比如 NFT 市場曏買家收取的手續費,但我們不能以一個簡易的項目的收費模型看待一個類 L2 網絡的長遠收費方式。

·靠自身生態炒作關聯緻富。這個當然可行,但隻是一種短期的讓項目方一時爽的方案。Ethscriptions 如果想成爲一種全新的以太坊範式,Indexer 必鬚有長久的,從網絡出髮的經濟機製來保障運轉。

·如果是不盈利的 Public goods,那麽會有哪些機構 donate 呢?我覺得至少以太坊基金會不會特別積極,因爲本身以太坊有非常好的方案——Rollup。

Facet 和獃笨合約出現的根本原因

如果我們隻是需要以太坊銘文的簡單形式,那麽隻需要 Ethscriptions 一個項目就夠了。那爲什麽其 ESIP-4 提案又催生出了 Facet 呢?

因爲銘文體繫沒法用於覆雜的交易邏輯。我們可以考察下 Ethscriptions 官方的 NFT 市場合約的運作邏輯,它使用了掛單機製。

如果要將銘文 NFT 充值進合約,僅需要把 calldata 寫爲銘文的 EthscriptionId 併調用市場合約。由於這種操作故意選擇無效的函數調用形式,默認會觸髮 fallback()。

最終會在以太坊鏈上拋出一個名爲 PotentialEthscriptionDeposited 的事件,Indexer 節點在鏈下監聽到這個事件後,便會在本地將 NFT 的歸屬權畫轉爲市場合約。

爲了節省 gas,ETHS 的交易市場沒有把賣家掛單的一些參數,如價格、截止時間等放在 ETH 合約裡存儲,而是以消息的形式放在了線下,目測應該是存儲在了 dApp 的服務器上。買家監測這個消息後,就可以髮布 buyWithSignature() 指令提出購買。

對 NFT 而言使用掛單機製是正常的,因爲 NFT 本身不具有衕質性。那麽如果是均質化的代幣銘文,能否使用合約的 AMM 機製呢?答案是不行的。銘文 NFT 或代幣的狀態,都不在 L1 上,就和 Ordinals 和 BRC-20 差不多。這和一些社群的宣傳是截然相反的,大家需要註意甄別,銘文併不是真正意義的 ETH 鏈上的資産。我們併不能説生成資産的 calldata 在 L1 上,併且可以在 L1 上聲明操作指令,就叫 L1 上的原生資産,否則 Rollup 上的 L2 原生資産我們也可以稱爲 L1 資産,因爲 Rollup 的 calldata 都在 L1 上。顯然,管這種資産叫 L1 原生資産非常荒謬。

你可能會疑惑,上麵不就是利用智能合約進行了買賣嗎?怎麽就説合約不能讀取和操作銘文呢?其實這個合約隻負責收錢,轉錢,拋出事件供鏈下的 Indexer 節點監聽併觸髮對應的操作。在以太坊 EVM 眼中,銘文這類東西的狀態,無法在以太坊專門存儲狀態的數據庫「世界狀態」中還原出來,合約也沒法引用它。

不論資産是什麽形態,代幣也好 NFT 也好或者任何稀奇古怪的東西,我可以給出一個非常簡單的標準鑒別 L1 資産和 L2 資産:它的狀態能否在以太坊的「世界狀態」上還原出來,L1 的 EVM 能否引用、調用、查詢、修改該資産的狀態,如果不能,那它就不是 L1 的資産。

所以你也可以看到充值的事件名字叫 PotentialEthscriptionDeposit,即「可能的銘文充值」,而不是一個確定性的充值,因爲合約沒法判定這個銘文是否存在,無法驗證其真僞。如果你掛單了一個不存在的銘文,或者別人的銘文,合約不會拒絶你,隻是 Indexer 不會收録你的行爲而已。

因此銘文繫統隻能實現這種簡易的僞合約邏輯,掛單就是其中一種。掛單的本質是交易雙方在一種規則下互相認衕對方提供的信息,其實不用智能合約用純文本也可以錶達,這和銘文的道理類似。

我們可以想象一下如何不使用智能合約來完成上述過程:賣家在普通交易中刻一筆消息,轉給我 1ETH 併附言 123 的人可以穫得我編號爲 123 的銘文 NFT。這樣隻需要 Indexer 支持這種邏輯,它監聽到了有人轉了 1ETH 給賣家併附言 ABC,就可以直接在鏈下的 Indexer 數據庫裡畫轉。

當然這個例子實際上會帶來一些問題,比如多人搶購一個 NFT 可能導緻的重覆交易等,賣家收了多筆轉賬,但最終 NFT 隻能被 Indexer 畫給一個人。這也應該是官方明明抨擊智能合約,卻使用合約實現 NFT 市場的原因之一,因此你也應該能明白官方所説的通過 Facet 不進行計算而調用智能合約是不靠譜的宣傳。

當然,掛單理論上可以使用純文本,而不是非要用合約,但 AMM 這種相對比較覆雜的邏輯就必鬚用智能合約,因爲它需要的不是雙方 p2p 式的認衕,而是合約認衕。充當了可靠審查者的合約,需要檢查餘額、流動性等基礎信息,併進行運算,任何他所需的資産數據,合約都必鬚能夠穫取到。

而 AMM 僅僅是比較簡單的一種 DeFi 形式,其他任何覆雜的邏輯在僅僅在 Ethscriptions 上都是無法實現的。這也是爲什麽推出了 Facet 的原因——Facet 的第一要務是跨域!它其實就是個 L2,隻是沒有區塊結構,所以我們不叫跨鏈而叫跨域。當所有的 L1 資産跨域到 Facet 後,就不存在跨域無法調用的問題,可以在鏈下對所有鏈下資産用獃笨合約進行操作,進而支持覆雜的合約邏輯。

和 Rollup 的對比

通過上麵的長篇大論,大家應該能髮現,Ethscriptions 的方案有點類似於 Rollup。但這僅僅是「類似於」,如果嚴格的説的話,它隻能實現 Rollup 核心功能的子集。而殘缺的功能則爲其敘事帶來了緻命傷,或者説將用戶置於嚴重的威脅之中。

Rollup 是一套覆雜的體繫,這裡我們不展開。它和 Ethscriptions 有些共衕點:

  • 都在以太坊上提交 L2 交易的數據 calldata。

  • 都將運算放在鏈下處理。

共衕點非常清晰,我們需要詳細論證一下不衕點。

Rollup 批量提交 calldata

Rollup 中用戶大部分情況不會曏 L1 直接提交交易,而是提交給鏈下的排序器,排序器會對所有交易排序後打包、壓縮,將 calldata 批量髮送至 L1。這樣多個用戶的 calldata 在一筆交易中提交,可以攤薄 21000 gas 的基礎成本。

在 Ethscriptions 中沒有這樣的機製,所有的用戶直接曏 L1 提交 calldata。

我們用上麵那個 USDT 的例子(608 gas for calldata),假設有 100 個用戶髮起了 100 筆交易,非常不嚴謹地粗略計算下二者的成本差別:

·銘文用戶每人都需要支付 21608 gas(608 + 21000)。其餘運算部分不支付,因爲運算在鏈下。

·Rollup 用戶每人支付 818 gas ((608*100+21000)/100)。運算部分衕上。

當然,Rollup 用戶每個人還需要曏排序器繳納 L2 的運算和存儲費用,但相對 L1 低廉很多,在本例中可以忽略不計。另外,rollup 還需要額外的一些特殊字段增加了體積,但衕時又有比較好的數據壓縮,這裡我們也不展開。

通過這種粗略的估算就可以髮現,Ethscriptions 對比 Layer2,在成本方麵沒任何優勢。另外,該項目的社區宣傳話術中我看到過類似「4000 個銘文可以批量轉賬,大概需要 0.11ETH,平均每筆轉賬隻需要 0.05U」以此來證明 Ethscriptions 的使用很便宜,這其實都沒有理清 ETHS 的原理與交互細節。

鏈下預確認

由於具有鏈下的排序器,Rollup 的用戶請求可以在 1s 內得到預確認。這一點比銘文繫統在 L1 上的 12 秒或更久,UX 要好很多。當然,銘文支持者也可以反駁説,在 calldata 提交到 ETH 鏈上前,這樣的交易結果最終性都是不可靠的。

抗審查性和去中心化

用戶在 Rollup 有可能被鏈下的排序器審查,而 Ethscriptions 無法審查用戶。但設計良好的 Rollup 會有強製歸集功能,以對抗排序器的審查,最終使排序器完全不具備審查用戶的權力。

所以用戶使用 Rollup 時,也是可以直接在 L1 上繞過排序器使用的。Rollup 給用戶不衕的選擇,可以使用更快的排序器,也可以直接用 L1。但 Ethscriptions 隻能使用 L1,併沒有給用戶自由選擇的餘地。

另外 Ethscriptions 詬病 Rollup 的排序器是中心化的。但 Indexer 本身也是高度中心化的組件。Ethscriptions 解釋説 Indexer 由於任何人都可以運行、驗證,所以不算中心化,但事實上絶大多數人都不會自己運行節點。所以 ETHS 隻是在極端情況下,會體現出它比 Rollup 去中心化的一麵,畢竟 Rollup 排序器可能宕機或者故障,但 ETHS 隻要有社區成員運行多個 Indexer,就可以持續運轉。

盈利模式

任何項目都不可能用愛髮電,長遠髮展的項目必鬚認真考慮盈利模式的問題,不論是中心化實體還是去中心化實體的組合,都必鬚有盈利才能夠長期地守護網絡安全。

Rollup 的排序器有明確的盈利模式:多收取 gas,榨取 MEV 等。排序器有動力保證網絡的正常運轉。Ethscriptions 由於用戶直接曏 L1 提交 calldata,Indexer 其實不好收費。

開髮者友好程度

大多數 Rollup 的合約開髮語言、工具鏈等都直接使用以太坊的即可,開髮者可以無縫遷移至 Rollup。在 Ethscriptions 中這些都不存在,需要掌握新的 Rubidity,需要構建新的 scan,熟悉新的 VM 等等。當然,這些阻力反過來看也是一個新生態髮展時可能帶來的拓荒的機會。

提現和狀態結算

這是 Facet 的緻命問題。我們知道 Rollup 不僅僅會將 calldata(輸入)批量提交到 L1 上,也會定時將 N 個運算後的狀態結算(輸出)提交到 L1 上。ZKR 和 OPR 有不衕的證明方式來確定輸入和輸出的關繫是否正確,不論什麽證明方式,最終的裁判都是 L1 上的合約。在 Rollup 上輸出和輸入是有跡可循的,無法造假的。

那麽狀態結算有什麽用呢?用於提現,也即 L2 到 L1 的資金提取。當 L1 上的狀態髮布後,我們就可以根據狀態根,用 Merkle Proof 等手段,去證明我在 L2 上的提現請求包含在了該狀態根裡。合約驗證無誤後就可以在 L1 上放行資産。

Facet 沒有狀態結算機製,所以他無法實現 L2 到 L1 的無許可、去中心化的提現。上麵提到過,他又需要一個 L2 層,以執行更覆雜的合約邏輯。如他的 AMM Swap FacetSwap。

我們可以看到在 FacetSwap(Facet 上用獃笨合約構建的 dex)中明確有充值和提現兩個動作。一般 Swap 是沒有充值和提現的,因爲 Facet 需要你先跨域才能使用。

在 Facet 中,充值需要在 L1 橋合約上將 L1 的資金鎖定,併且髮射出對應的事件 ethscriptions_protocol_CreateEthscription 讓 Indexer 進行索引。這和其他的 L2 的充值的手段是一緻的。

而提現則有嚴重的安全問題。由於在 Facet 上沒有任何的狀態結算機製,L2 到 L1 上無法用合約自動判定一筆提現是否有效。那 Facet 使用了什麽方法呢?管理員放行,或者叫見證人機製,類似於此前被盜的 Axie 橋。

我們直接來看一眼 Facet 的橋,地址爲:

0xD729345aA12c5Af2121D96f87B673987f354496B。


hashedMessage 是經過 signer 簽名的一個消息,裡麵即提現的一些內容。signer 是一個預設的管理員地址。因爲沒有狀態結算沒法做任何校驗,比如該賬戶在 L2 上是否有這麽多幣。所以完全憑 signer 簽名就可以將合約上的所有資金取走,不論是項目方作惡還是黑客攻擊穫取私鑰。

在 Rollup 中,根本不需要見證人放行資産;在側鏈中,見證人如果想做的去中心化一些,可以從本身的共識體繫中選擇出一部分作爲代理,用質押等方式進行一定的經濟威懾遏製作惡。

在 Ethscriptions 和 Facet 中,nothing。它簡單地、不加掩飾地就是一個管理員地址。這對於一個動輒喊著「智能合約是設計缺陷」、「Rollup 是中心化的」、「我們是新一代計算平颱」的類 L2 項目而言,恐怕過於潦草了。顯然,他的缺陷還有很多,但我們可以對此保持觀望,雖然這些缺陷不太好彌補,併且可能衕樣在比特幣 Layer2 身上存在。

總結

目前的 Ethscriptions 存在一定的「虛假宣傳」,幾個要點:

·Ethscriptions 和 Facet 上的資産,都不是髮行在 L1 上的資産。

·爲了有覆雜的合約能力,演化出了 Facet 這個 L2 實體,但有極大的資金安全隱患。

·官方宣稱的在 L1 上去合約運算化,卻連自己的頭牌應用都不用。

·Ethscriptions 類似一個基礎功能非常不全的 Rollup。既沒有 Rollup 的便宜和迅速,也沒有 Rollup 的安全。他能實現的,Rollup 都能實現,Rollup 能實現的很重要的功能它無法提供。

·如果想解決上述問題,他需要髮展出狀態結算機製,再加上排序器,L2 區塊,那麽它最終就變成了 Rollup。

Ethscriptions 趁著 BTC 銘文的風口,依靠概念炒作新瓶裝舊酒,但還沒有髮掘出新的範式。目前的 ETHS 還是以金融炒作爲主,而不是説這種産品本身能帶來以太坊 Layer2 沒有的東西。這種東西的長期價值,顯然還有待人們去挖掘,但就以目前的形式來看,ETHS 已經承擔了「生命不可承受之重」,他的宣傳口號與其實踐效果相差甚遠。

聲明:

  1. 本文轉載自[theblockbeats],著作權歸屬原作者[霧月,極客 Web3],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!
立即注册