【#區(qū)塊鏈# #技術(shù)人眼中的ETHS:本質(zhì)是金融炒作而非產(chǎn)品革新#】
作者:霧月,極客Web3
導(dǎo)語:目前的以太坊銘文本質(zhì)還是Ordinals的新瓶裝舊酒,沒有真正意義的新范式。ETHS仍然存在安全風(fēng)險,雖然它的確比Rollup去中心化,但其提款流程還是依賴于第三方公證人/管理者,有被盜風(fēng)險。顯然ETHS當(dāng)下還是以金融炒作居多,而不是說它能帶來以太坊Layer2帶不來的革新。
近期BTC生態(tài)銘文的火熱,帶動了其他鏈的開發(fā)者搭建類似的系統(tǒng)。不同鏈上的銘文系統(tǒng)的實現(xiàn)方式和可實現(xiàn)的功能略有不同,但有一些共同點:
BTC銘文Ordinals在BTC上建立了一套發(fā)行NFT、代幣的機(jī)制,也引出了對BTC L2的大規(guī)模思考,在這個意義上我們可以認(rèn)為Ordinals具有一定的前沿和探索性質(zhì)。不過,Ordinals在技術(shù)和產(chǎn)品體驗上受到了BTC本身架構(gòu)的限制,同時也因為粉塵污染和數(shù)據(jù)占用等原因,遭到了BTC社區(qū)OG的非議。
那么,在以太坊上復(fù)刻銘文,是否有意義呢?畢竟以太坊本身具有復(fù)雜的智能合約,ERC20、NFT也是以太坊上本身就有的內(nèi)容;這些銘文項目又會對以太坊生態(tài)產(chǎn)生怎樣的影響,會出現(xiàn)在BTC上上的爭議和風(fēng)波嗎?
我們先來看一下Ethscriptions的實現(xiàn)方式,它是以太坊上著名的銘文項目,主要利用Calldata來實現(xiàn)運轉(zhuǎn)。
Calldata是以太坊交易中傳輸?shù)脑驾斎霐?shù)據(jù)。一般用于傳輸智能合約交互時需要的參數(shù),但也可以用于向EOA地址發(fā)送文本消息(留言,銘文刻字,轉(zhuǎn)賬備注等任何用途)。圖中Input Data即calldata。
如果你想使用Ethscriptions在交易中銘刻”Hello world”,則需要構(gòu)建一條包含如下calldata的交易:
鏈下的Indexer監(jiān)聽到這筆交易后,就會更新數(shù)據(jù)庫并通知用戶:一條新的銘文產(chǎn)生了,銘刻的內(nèi)容是Hello world。銘文里也可以放更復(fù)雜的內(nèi)容,如代表圖片信息的base64等。
Ethscriptions目前通過了6個ESIP(Proposals for improvement to the Ethscriptions protocol),類似EIP的提案,來定義不同場景下銘文的使用。但這些僅僅是比較基礎(chǔ)的銘文規(guī)范,比如從EOA發(fā)起的銘文交易的格式,合約emit事件等等。
Ethscriptions由于是在以太坊上的項目,也可以利用以太坊的智能合約實現(xiàn)一定程度上的邏輯。需要注意的是,直接與智能合約進(jìn)行交互并不是Ethscriptions推薦的方式。
雖然官方的NFT市場等也是直接用智能合約實現(xiàn)的。根據(jù)官方文檔的說法,Ethscriptions想要為用戶提供的是“去中心化且價格合理的運算服務(wù)”:將運算剝離至鏈下,將顯著降低以太坊的使用成本。
我們來具體探究一下調(diào)用智能合約的成本,可以分為三部分:
我們以一個非常簡單的USDT轉(zhuǎn)賬的交易為例,該交易總共耗費了63197 gas,calldata為:
我們解析下該calldata,以及它會花費多少gas:
因此,calldataGas = 28 * 16 + 40 * 4 = 608 gas。
而總gas為63197,減去calldata成本和固定成本,則執(zhí)行該交易的智能合約計算成本為41589 gas。在這筆交易里合約運算成本占了大頭,而這僅僅是一筆簡單的交易,復(fù)雜的交易中合約運算的成本會進(jìn)一步上升。
將運算過程放至鏈下確實會顯著地降低使用成本:不想在鏈上直接調(diào)用智能合約的話,可以向一個約定好的EOA地址
0x00000000000000000000000000000000000face7發(fā)送交易數(shù)據(jù)
在交易的calldata中聲明原本想調(diào)用哪個合約,以及相應(yīng)的輸入?yún)?shù)。由于上述地址是一個EOA賬戶,沒有合約代碼,所以前面所說的操作不會在鏈上觸發(fā)計算任務(wù),只是發(fā)布了一條消息而已。
而在鏈下,Indexer監(jiān)聽到這條消息后,就會進(jìn)行解析,弄清楚這條消息的發(fā)起者原本想調(diào)用ETH鏈上哪個合約,然后Indexer會在鏈下計算出合約調(diào)用的結(jié)果。
那么線下的Indexer想要進(jìn)行銘文和智能合約的運算,就必須有一套STF(狀態(tài)轉(zhuǎn)換函數(shù))規(guī)則和運行時,復(fù)雜點的可以叫虛擬機(jī)VM。Ethscriptions在ESIP-4中推出了自己的VM——Ethscriptions VM,后來改名為Facet VM。
Facet將自身定義為一個便宜好用,安全,去中心化的計算平臺。監(jiān)聽以太坊上Ethscriptions的calldata,拉到VM中進(jìn)行運算,最終給用戶返還結(jié)果。Facet包含幾個關(guān)鍵的組成部分:
呆笨合約本身不會真正部署在以太坊上,只是其代碼會以calldata的形式發(fā)布到ETH鏈上。下面是一個Facet對呆笨合約的調(diào)用案例:
一筆鑄幣交易,向EOA黑洞地址
0x00000000000000000000000000000000000face7提交下圖中的calldata,聲明自己要mint的代幣和數(shù)量即可,這其實和Ordinals或BRC-20如出一轍:
我們再來看一下Rubidity和Solidity的直觀對比,見下圖。
雖然官方說Rubidity具有類似Solidity的概念和結(jié)構(gòu),以便開發(fā)者快速上手。但我們知道其實這對開發(fā)者側(cè)的發(fā)展來說是有一定負(fù)面影響的。并且目前Facet VM僅支持官方白名單中的呆笨合約,這說明官方對這套語言以及VM并沒有很十足的信心。是否復(fù)用EVM對官方而言,在工程技術(shù)上比新開發(fā)一個VM和一個新的語言更難,我不得而知。但有一點可以肯定的是:全新的語言、全新的合約、全新的生態(tài)、全新的以太坊使用方式,確實有足夠的噱頭。
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.”
他們認(rèn)為以太坊的智能合約是最大的設(shè)計缺陷,因為合約本身只要給定輸入(calldata),其輸出就是確定的,因此不應(yīng)該在鏈上進(jìn)行運算,平白無故浪費錢。再結(jié)合Ethscriptions所說的“去中心化且價格合理的運算服務(wù)”,顯然Ethscriptions和Facet非常想打造一種市場印象,“我們正在制造全新的以太坊擴(kuò)容范式和使用方式”,但實際上ETHS自己的一些技術(shù)方案不是很靠譜。
從產(chǎn)品角度看,F(xiàn)acet可以在鏈下間接調(diào)用智能合約,又有自己的鏈下的呆笨合約體系,確實官方正在踐行其口號。
但從經(jīng)濟(jì)角度講,天下沒有免費的午餐,存儲和運算當(dāng)然是要錢的。那請問Indexer該如何解決這部分成本呢?這官方就沒有什么明確說明了,我們可以想象一下:
如果我們只是需要以太坊銘文的簡單形式,那么只需要Ethscriptions一個項目就夠了。那為什么其ESIP-4提案又催生出了Facet呢?
因為銘文體系沒法用于復(fù)雜的交易邏輯。我們可以考察下Ethscriptions官方的NFT市場合約的運作邏輯,它使用了掛單機(jī)制。
如果要將銘文NFT充值進(jìn)合約,僅需要把calldata寫為銘文的EthscriptionId并調(diào)用市場合約。由于這種操作故意選擇無效的函數(shù)調(diào)用形式,默認(rèn)會觸發(fā)fallback()。
最終會在以太坊鏈上拋出一個名為PotentialEthscriptionDeposited的事件,Indexer節(jié)點在鏈下監(jiān)聽到這個事件后,便會在本地將NFT的歸屬權(quán)劃轉(zhuǎn)為市場合約。
為了節(jié)省gas,ETHS的交易市場沒有把賣家掛單的一些參數(shù),如價格、截止時間等放在ETH合約里存儲,而是以消息的形式放在了線下,目測應(yīng)該是存儲在了dApp的服務(wù)器上。買家監(jiān)測這個消息后,就可以發(fā)布buyWithSignature()指令提出購買。
對NFT而言使用掛單機(jī)制是正常的,因為NFT本身不具有同質(zhì)性。那么如果是均質(zhì)化的代幣銘文,能否使用合約的AMM機(jī)制呢?答案是不行的。銘文NFT或代幣的狀態(tài),都不在L1上,就和Ordinals和BRC-20差不多。這和一些社群的宣傳是截然相反的,大家需要注意甄別,銘文并不是真正意義的ETH鏈上的資產(chǎn)。我們并不能說生成資產(chǎn)的calldata在L1上,并且可以在L1上聲明操作指令,就叫L1上的原生資產(chǎn),否則Rollup上的L2原生資產(chǎn)我們也可以稱為L1資產(chǎn),因為Rollup的calldata都在L1上。顯然,管這種資產(chǎn)叫L1原生資產(chǎn)非?;闹?。
你可能會疑惑,上面不就是利用智能合約進(jìn)行了買賣嗎?怎么就說合約不能讀取和操作銘文呢?其實這個合約只負(fù)責(zé)收錢,轉(zhuǎn)錢,拋出事件供鏈下的Indexer節(jié)點監(jiān)聽并觸發(fā)對應(yīng)的操作。在以太坊EVM眼中,銘文這類東西的狀態(tài),無法在以太坊專門存儲狀態(tài)的數(shù)據(jù)庫“世界狀態(tài)”中還原出來,合約也沒法引用它。
不論資產(chǎn)是什么形態(tài),代幣也好NFT也好或者任何稀奇古怪的東西,我可以給出一個非常簡單的標(biāo)準(zhǔn)鑒別L1資產(chǎn)和L2資產(chǎn):它的狀態(tài)能否在以太坊的“世界狀態(tài)”上還原出來,L1的EVM能否引用、調(diào)用、查詢、修改該資產(chǎn)的狀態(tài),如果不能,那它就不是L1的資產(chǎn)。
所以你也可以看到充值的事件名字叫PotentialEthscriptionDeposit,即“可能的銘文充值”,而不是一個確定性的充值,因為合約沒法判定這個銘文是否存在,無法驗證其真?zhèn)?。如果你掛單了一個不存在的銘文,或者別人的銘文,合約不會拒絕你,只是Indexer不會收錄你的行為而已。
因此銘文系統(tǒng)只能實現(xiàn)這種簡易的偽合約邏輯,掛單就是其中一種。掛單的本質(zhì)是交易雙方在一種規(guī)則下互相認(rèn)同對方提供的信息,其實不用智能合約用純文本也可以表達(dá),這和銘文的道理類似。
我們可以想象一下如何不使用智能合約來完成上述過程:賣家在普通交易中刻一筆消息,轉(zhuǎn)給我1ETH并附言123的人可以獲得我編號為123的銘文NFT。這樣只需要Indexer支持這種邏輯,它監(jiān)聽到了有人轉(zhuǎn)了1ETH給賣家并附言ABC,就可以直接在鏈下的Indexer數(shù)據(jù)庫里劃轉(zhuǎn)。
當(dāng)然這個例子實際上會帶來一些問題,比如多人搶購一個NFT可能導(dǎo)致的重復(fù)交易等,賣家收了多筆轉(zhuǎn)賬,但最終NFT只能被Indexer劃給一個人。這也應(yīng)該是官方明明抨擊智能合約,卻使用合約實現(xiàn)NFT市場的原因之一,因此你也應(yīng)該能明白官方所說的通過Facet不進(jìn)行計算而調(diào)用智能合約是不靠譜的宣傳。
當(dāng)然,掛單理論上可以使用純文本,而不是非要用合約,但AMM這種相對比較復(fù)雜的邏輯就必須用智能合約,因為它需要的不是雙方p2p式的認(rèn)同,而是合約認(rèn)同。充當(dāng)了可靠審查者的合約,需要檢查余額、流動性等基礎(chǔ)信息,并進(jìn)行運算,任何他所需的資產(chǎn)數(shù)據(jù),合約都必須能夠獲取到。
而AMM僅僅是比較簡單的一種DeFi形式,其他任何復(fù)雜的邏輯在僅僅在Ethscriptions上都是無法實現(xiàn)的。這也是為什么推出了Facet的原因——Facet的第一要務(wù)是跨域!它其實就是個L2,只是沒有區(qū)塊結(jié)構(gòu),所以我們不叫跨鏈而叫跨域。當(dāng)所有的L1資產(chǎn)跨域到Facet后,就不存在跨域無法調(diào)用的問題,可以在鏈下對所有鏈下資產(chǎn)用呆笨合約進(jìn)行操作,進(jìn)而支持復(fù)雜的合約邏輯。
通過上面的長篇大論,大家應(yīng)該能發(fā)現(xiàn),Ethscriptions的方案有點類似于Rollup。但這僅僅是“類似于”,如果嚴(yán)格的說的話,它只能實現(xiàn)Rollup核心功能的子集。而殘缺的功能則為其敘事帶來了致命傷,或者說將用戶置于嚴(yán)重的威脅之中。
Rollup是一套復(fù)雜的體系,這里我們不展開。它和Ethscriptions有些共同點:
- 都在以太坊上提交L2交易的數(shù)據(jù)calldata。
- 都將運算放在鏈下處理。
共同點非常清晰,我們需要詳細(xì)論證一下不同點。
Rollup中用戶大部分情況不會向L1直接提交交易,而是提交給鏈下的排序器,排序器會對所有交易排序后打包、壓縮,將calldata批量發(fā)送至L1。這樣多個用戶的calldata在一筆交易中提交,可以攤薄21000 gas的基礎(chǔ)成本。
在Ethscriptions中沒有這樣的機(jī)制,所有的用戶直接向L1提交calldata。
我們用上面那個USDT的例子(608 gas for calldata),假設(shè)有100個用戶發(fā)起了100筆交易,非常不嚴(yán)謹(jǐn)?shù)卮致杂嬎阆露叩某杀静顒e:
當(dāng)然,Rollup用戶每個人還需要向排序器繳納L2的運算和存儲費用,但相對L1低廉很多,在本例中可以忽略不計。另外,rollup還需要額外的一些特殊字段增加了體積,但同時又有比較好的數(shù)據(jù)壓縮,這里我們也不展開。
通過這種粗略的估算就可以發(fā)現(xiàn),Ethscriptions對比Layer2,在成本方面沒任何優(yōu)勢。另外,該項目的社區(qū)宣傳話術(shù)中我看到過類似“4000個銘文可以批量轉(zhuǎn)賬,大概需要0.11ETH,平均每筆轉(zhuǎn)賬只需要0.05U”以此來證明Ethscriptions的使用很便宜,這其實都沒有理清ETHS的原理與交互細(xì)節(jié)。
由于具有鏈下的排序器,Rollup的用戶請求可以在1s內(nèi)得到預(yù)確認(rèn)。這一點比銘文系統(tǒng)在L1上的12秒或更久,UX要好很多。當(dāng)然,銘文支持者也可以反駁說,在calldata 提交到ETH鏈上前,這樣的交易結(jié)果最終性都是不可靠的。
用戶在Rollup有可能被鏈下的排序器審查,而Ethscriptions無法審查用戶。但設(shè)計良好的Rollup會有強(qiáng)制歸集功能,以對抗排序器的審查,最終使排序器完全不具備審查用戶的權(quán)力。
所以用戶使用Rollup時,也是可以直接在L1上繞過排序器使用的。Rollup給用戶不同的選擇,可以使用更快的排序器,也可以直接用L1。但Ethscriptions只能使用L1,并沒有給用戶自由選擇的余地。
另外Ethscriptions詬病Rollup的排序器是中心化的。但I(xiàn)ndexer本身也是高度中心化的組件。Ethscriptions解釋說Indexer由于任何人都可以運行、驗證,所以不算中心化,但事實上絕大多數(shù)人都不會自己運行節(jié)點。所以ETHS只是在極端情況下,會體現(xiàn)出它比Rollup去中心化的一面,畢竟Rollup排序器可能宕機(jī)或者故障,但ETHS只要有社區(qū)成員運行多個Indexer,就可以持續(xù)運轉(zhuǎn)。
任何項目都不可能用愛發(fā)電,長遠(yuǎn)發(fā)展的項目必須認(rèn)真考慮盈利模式的問題,不論是中心化實體還是去中心化實體的組合,都必須有盈利才能夠長期地守護(hù)網(wǎng)絡(luò)安全。
Rollup的排序器有明確的盈利模式:多收取gas,榨取MEV等。排序器有動力保證網(wǎng)絡(luò)的正常運轉(zhuǎn)。Ethscriptions由于用戶直接向L1提交calldata,Indexer其實不好收費。
大多數(shù)Rollup的合約開發(fā)語言、工具鏈等都直接使用以太坊的即可,開發(fā)者可以無縫遷移至Rollup。在Ethscriptions中這些都不存在,需要掌握新的Rubidity,需要構(gòu)建新的scan,熟悉新的VM等等。當(dāng)然,這些阻力反過來看也是一個新生態(tài)發(fā)展時可能帶來的拓荒的機(jī)會。
這是Facet的致命問題。我們知道Rollup不僅僅會將calldata(輸入)批量提交到L1上,也會定時將N個運算后的狀態(tài)結(jié)算(輸出)提交到L1上。ZKR和OPR有不同的證明方式來確定輸入和輸出的關(guān)系是否正確,不論什么證明方式,最終的裁判都是L1上的合約。在Rollup上輸出和輸入是有跡可循的,無法造假的。
那么狀態(tài)結(jié)算有什么用呢?用于提現(xiàn),也即L2到L1的資金提取。當(dāng)L1上的狀態(tài)發(fā)布后,我們就可以根據(jù)狀態(tài)根,用Merkle Proof等手段,去證明我在L2上的提現(xiàn)請求包含在了該狀態(tài)根里。合約驗證無誤后就可以在L1上放行資產(chǎn)。
Facet沒有狀態(tài)結(jié)算機(jī)制,所以他無法實現(xiàn)L2到L1的無許可、去中心化的提現(xiàn)。上面提到過,他又需要一個L2層,以執(zhí)行更復(fù)雜的合約邏輯。如他的AMM Swap FacetSwap。
我們可以看到在FacetSwap(Facet上用呆笨合約構(gòu)建的dex)中明確有充值和提現(xiàn)兩個動作。一般Swap是沒有充值和提現(xiàn)的,因為Facet需要你先跨域才能使用。
在Facet中,充值需要在L1橋合約上將L1的資金鎖定,并且發(fā)射出對應(yīng)的事件ethscriptions_protocol_CreateEthscription讓Indexer進(jìn)行索引。這和其他的L2的充值的手段是一致的。
而提現(xiàn)則有嚴(yán)重的安全問題。由于在Facet上沒有任何的狀態(tài)結(jié)算機(jī)制,L2到L1上無法用合約自動判定一筆提現(xiàn)是否有效。那Facet使用了什么方法呢?管理員放行,或者叫見證人機(jī)制,類似于此前被盜的Axie橋。
我們直接來看一眼Facet的橋,地址為
0xD729345aA12c5Af2121D96f87B673987f354496B。
hashedMessage是經(jīng)過signer簽名的一個消息,里面即提現(xiàn)的一些內(nèi)容。signer是一個預(yù)設(shè)的管理員地址。因為沒有狀態(tài)結(jié)算沒法做任何校驗,比如該賬戶在L2上是否有這么多幣。所以完全憑signer簽名就可以將合約上的所有資金取走,不論是項目方作惡還是黑客攻擊獲取私鑰。
在Rollup中,根本不需要見證人放行資產(chǎn);在側(cè)鏈中,見證人如果想做的去中心化一些,可以從本身的共識體系中選擇出一部分作為代理,用質(zhì)押等方式進(jìn)行一定的經(jīng)濟(jì)威懾遏制作惡。
在Ethscriptions和Facet中,nothing。它簡單地、不加掩飾地就是一個管理員地址。這對于一個動輒喊著“智能合約是設(shè)計缺陷”、“Rollup是中心化的”、“我們是新一代計算平臺”的類L2項目而言,恐怕過于潦草了。顯然,他的缺陷還有很多,但我們可以對此保持觀望,雖然這些缺陷不太好彌補(bǔ),并且可能同樣在比特幣Layer2身上存在。
目前的Ethscriptions存在一定的“虛假宣傳”,幾個要點:
Ethscriptions趁著BTC銘文的風(fēng)口,依靠概念炒作新瓶裝舊酒,但還沒有發(fā)掘出新的范式。目前的ETHS還是以金融炒作為主,而不是說這種產(chǎn)品本身能帶來以太坊Layer2沒有的東西。這種東西的長期價值,顯然還有待人們?nèi)ネ诰颍?strong>但就以目前的形式來看,ETHS已經(jīng)承擔(dān)了“生命不可承受之重”,他的宣傳口號與其實踐效果相差甚遠(yuǎn)。
小編推薦下載
相關(guān)推薦
相關(guān)文章
更多>>資訊排行
同類軟件下載
美發(fā)技術(shù) 學(xué)習(xí)工具
金融快的 金融理財
技術(shù)線 金融理財
養(yǎng)殖技術(shù) 學(xué)習(xí)工具
我是主持人 學(xué)習(xí)工具
技術(shù)對接 學(xué)習(xí)工具
我是機(jī)器人 模擬經(jīng)營
電是怎么形成的 動作冒險
你是我的寶貝 娛樂消遣
我是最棒的 辦公效率
熱門標(biāo)簽