以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > XMR > Info

V神:值得考慮刪除的 EVM 功能_GAS

Author:

Time:1900/1/1 0:00:00

特別感謝 Micah Zoltu 提出的一些建議

到 2020 年,我們對如何設計智能合約和區塊鏈協議的理解已經遠超 2013-15 年。因此,如果我們在 2021 年從頭開始搭建以太坊,我們就不會引入很多早期添加的功能了。然而從一條正在運行的、擁有活躍生態的區塊鏈中移除功能,遠比在一個新系統中不添加它們要難得多。

有些 “缺陷功能” 是無害的。有些可以安全而緩慢地移除或改進。還有些已經深深地嵌入到了太多的應用中,以至于根本改不動(例如 EVM 的 256 位字長)。另一方面,也有一些功能要么已經被移除,要么已經被改進,要么即將被移除(例如對狀態樹格式的改進、用 SSZ 編碼規則代替 RLP 等)。

但是還有一些中間情況:有些功能過于復雜,對生態的發展造成了中等程度的傷害,我們可以移除它們,但是需要冒一點風險。如果我們移除這些功能,可能會有少量的應用被破壞。但是不移除的話,它們會繼續拖累生態。

就跟別的 “長痛短痛” 抉擇情形一樣,人們很容易低估短痛帶來的長期收益。特別是在我們的情況中,由于解決復雜情況的代碼已經寫好了,所以感覺保留它們不需要付出任何成本。但實際上有兩個重要的成本要考慮:

為協議開發新實現的成本

若要改變功能 B,但 B 會跟沒必要存在的復雜功能 A 交互,可能會產生 “交互 bug”

V神:錢包安全性是加密領域最大的問題之一:金色財經報道,以太坊創始人V神今日在拉丁美洲比特幣會議上表示,錢包的安全性是加密領域最大的問題之一。他認為,實際上錢包仍然很難使用,這使得它們對非技術用戶來說有些不安全,大規模采用加密貨幣時可能會帶來麻煩。更糟糕的是,它甚至可能導致人們傾向于中心化解決方案。此外,V神補充說,以太坊2.0正在“取得巨大進步”,正在幫助解決有關隱私和可擴展性方面的問題。[2020/12/11 14:51:53]

以重新設計狀態樹為例:若以太坊的狀態越是遵循一些簡單的恒常性質(invariants),那么替換更高效的雙層十六進制 Patricia 樹就會越容易。然而在現實情況中,因為SELFDESTRUCT操作碼可以在單筆事務中不受限制地刪除大量存儲插槽,這給改良狀態樹帶來了很大的困難。另一個例子是 2300 gas 津貼機制(見下文)使 gas 重新定價變得更復雜。

"合并"(放棄 eth1 的 PoW 鏈,并將其狀態導入 eth2 的 PoS 信標鏈的事件)可能是我們扯掉一些痛苦繃帶的最后機會,這篇文章就是解釋這樣做的理由。

合并是進行最后一輪不兼容更新的一個非常自然的時間節點,有以下幾個理由:

合并后構建的客戶端很可能不處理 PoW 鏈,而是專門驗證 PoS 信標鏈。因此,如果在合并時或合并前去除不必要的復雜功能,客戶端最容易從中受益,因為它們根本不需要實現這些功能。(從技術上講,即使是在合并前建立的客戶端也可以設計成只處理最近 1-2 個硬分叉之后的數據,但是 “PoS 信標鏈作為一條獨立的鏈而不需要處理 PoW 鏈上過于久遠的數據” 的說法更容易讓人接受)

V神:從1.0到2.0是從一個共識引擎系統到另一個的狀態轉換:基于以太坊的去中心化社交應用Status官方在推特稱,像“從以太坊1.0遷移到以太坊2.0”這樣的說法是行不通的。以太坊創始人V神則評論稱,也許關鍵在于“遷移”是一個不好的詞,因為它意味著它們是兩個獨立的系統。然而在現實中,它是一種從一個共識引擎系統轉移到另一個的狀態轉換。[2020/11/14 20:48:01]

以太坊已經發生了很大的改變,社區對這將是 “以太坊的一次重大升級” 達成了共識。特別是 “在分片和合并完成之前會出現快速的進化,但合并之后就會趨于穩定” 的觀點也得到了社區的一致認可。

必要的向后不兼容的改變(例如,BLOCKHASH 操作碼不再是一個好的隨機性來源)已經發生了。

這篇文章將介紹一些可以考慮刪除的功能的例子。

這是什么?當一個合約調用另一個合約時,被調用的合約會得到 2300 gas 用于執行非常有限的操作(足夠做一點計算和生成一條日志,但不夠寫滿一個存儲槽)

為何引入?最初是為了讓智能合約錢包在收錢時能自動生成一條日志。后來還被用于實現 “守衛” 功能以防止合約收到 ETH。

有何問題?

由于它設置的是固定的 gas 數量,因此只要 gas 價格可以調整,人們就沒有辦法確定這些 gas 到底能支持什么類型的計算。

V神:如果推特是一個去中心化加密協議,就不會遇到昨天的問題:7月16日消息,V神在推特上表示,讓股價搖搖欲墜、操縱選舉、散播社會不和、發送病下載鏈接、為非加密金融騙局做廣告?具有諷刺意味的是,如果推特本身是一個去中心化的加密協議,我們就不會遇到昨天的問題。[2020/7/16]

它并沒有很好地滿足設計意圖,有兩個原因。首先,很多用戶仍然在使用外部賬戶,而外部賬戶并不會生成日志。其次,SELFDESTRUCT操作碼繞過了津貼機制。從長遠來看,通過賬戶抽象化,外部賬戶的作用將被弱化,并且SELFDESTRUCT操作碼可能將被移除,但是在這兩件事完成之前,它都只是一個不充分的解決方式。

如何移除?有兩種可能 —— 要么將 2300 改成 0(不支持子執行(child execution))要么不限制數量(子執行可以從父執行中獲得全部的 gas 可用額度)

移除有何副作用?

如果我們移除子執行,那么這將需要在合約調用中添加一個笨拙的二分處置(two-clause mechanic),即 0 gas 解釋為 0,任何其他數字解釋為 “發送所有的 gas”。它還會破壞反接收守衛功能和日志記錄。

如果我們在執行中允許子執行獲得全部的 gas,那么通過調用發送 ETH 會變成一個需要信任的操作,惡意合約可能會借此擾亂一些應用。不過,Solidity 文檔已經建議大家用 withdrawal 模式代替transfer,這樣就不會有任何風險了。

V神:EIP 1559將緩解以太坊當前面臨的三大問題 新方案將更易被礦工接受:EIP 1559被認為是以太坊的下一個大手術,對此,以太坊聯合創始人V神(Vitalik Buterin)整理了一份常見問題解答對EIP 1559做出詳細闡述稱,EIP 1559將緩解以太坊當前面臨的三大問題:1.交易費用水平的波動性與交易的社會成本之間的不匹配。從直覺上看,這種費用調整機制在短期內看就像是一個固定費用,而從長遠來看,它代表著一個上限。在基本上公鏈會并存的背景下,固定費用可能要比設置一個上限要更好。2.第一價格拍賣機制的效率低下問題。EIP 1559用一個固定價格的銷售來代替拍賣(除非在短期內,區塊完全填滿,直到費用趕上),從而消除了第一價格拍賣機制的低效性,并使費用估算變得非常簡單。3.無區塊獎勵區塊鏈的不穩定性問題。EIP 1559創建了一種類似于永久性區塊獎勵的機制,從而緩解了僅收費區塊鏈(指沒有新區塊獎勵的區塊鏈)的許多不穩定問題,而無需實際永久發行。

V神表示,新方案將更易被礦工接受。據悉,EIP 1559是旨在改變以太坊費用市場的提議,主要的變動涉及:1.目前1000萬 gas限額會被兩個數值所取代,一個是“長期平均目標”(1000萬),另一個是“每個區塊的硬上限”(2000萬);2.交易需要支付一個基礎費用(BASEFEE,它會被燃燒掉),該費用按區塊進行調整,目標是確定一個value值,使得區塊gas平均使用量保持在1000萬左右。[2020/5/6]

如何消除顧慮?

V神:中本聰希望BTC成為點對點現金:金色財經報道,V神與比特幣開發人員Zack Voel在推特在線交流時,就BTC的最終目標是否是數字黃金展開爭論。根據Voel的說法,中本聰開發這項技術的初衷是讓其成為互聯網上的珍貴商品。V神則引用了中本聰發表的原始研究論文的第一頁,當他在所謂的比特幣領域時,他清楚地記得創始人希望BTC成為點對點現金,這是其主要目標,數字黃金僅僅是一種獎勵。[2020/4/17]

讓所有的 ETH 轉賬,無論是來自調用還是SELFDESTRUCT(如果保留的話),都生成一條日志,這樣錢包就不需要生成日志了

增加一條規則,對于提供 0 gas 的調用,可看做是一個 “可以生成日志的STATICCALL”。這樣就復制了在 gas 津貼的執行環境里實際做到的功能。

這是什么?GAS?操作碼允許合約查看當前的執行環境中還剩多少 gas 可用。CALL?允許調用者為子上下文提供固定數量的 gas。

為何引入?反對讓?CALL?將父環境中剩余的全部 gas 都交給子環境的最主要原因是避免 “不可信任的調用”:即發送者不信任接受者的調用。一個簡單的例子是發送 ETH 給參與方的金融機制。另一個例子是 M-of-N 外部價格信息的輸入機制(oracle),通過調用一些合約,在獲得所有合約回復后取中位數作為輸出。

其實絕大多數不可信任調用的用例都可以通過其他方式繞過去。對于轉賬,Solidity 文檔已經建議大家用 withdrawal 模式代替?transfer。M-of-N 外部價格信息的輸入機制可以很容易地通過為每一個外部輸入單獨創建一筆交易實現。

這會讓 gas 重定價變得很難做,當操作碼的gas消耗量發生變化,固定 gas 數量的調用可能會不夠用。

讓?CALL?可以自動將父環境的所有可用 gas 額度都交給子環境。GAS操作碼只需簡單地返回交易的初始 gas 數量。

我們知道的 “不可信任調用的合法用例” 主要是第三方贊助調用(譯者注:即元交易)。第三方發布一筆事務,事務中包含你希望的調用,當調用發生后,可以自動地向你扣費(你會公布授權他們這樣做的簽名)。這對用戶沒有任何 ETH 的智能合約錢包、混幣者的隱私保護以及其他一些用例都很有用。我們需要一個有限 gas 數量的調用以確保最終的支付語句真正被調用,而不會因為 gas 不足而被回退。

礦工可以直接充當中介,如果交易最終沒有付錢給他們,他們就可以直接丟棄事務。參見 Phil Daian 的工作,他創建了一個由第三方機器人構成的生態,礦工可以自動產生 “安全” 的批量交易。

在協議內增加一個明確的 “第三方付款人” 的交易類型。參見 EIP 2711 的例子。

還請注意,如果我們想要走得更遠,我們還需要調整 63/64 規則使得如果子調用失敗,父調用也徹底失敗(所以連 1/64 都不剩)。這可能會破壞更多的用例(“如果子調用失敗就僅執行一個簡單的操作”),但它將確保當 gas消耗量發生變化時只會引起一種類型的行為變化(原本成功的交易現在會失敗)。

請看這篇文章。

這是什么?調用SELFDESTRUCT銷毀一個合約,或者將一個存儲槽設置為零,會退回 15000-25000 gas。退款會在事務執行的最后觸發,并抵扣發送者需要支付的費用。

為何引入?激勵應用開發者踐行 “良好的狀態衛生”,清除不再需要的存儲插槽和合約。

在實踐中,幾乎沒有人真正踐行良好的狀態衛生。這是因為激勵不夠高,不值得為此增加代碼的復雜度甚至帶來安全風險。

退費機制使得 GasToken 興起。GasToken 有利于將低費率時期的 gas 調配到高費率時期使用,但是它不利于網絡,特別是加重了狀態規模的膨脹,并使低效的 gas 使用方法阻塞了區塊鏈。

它加劇了區塊大小的波動,使一個區塊實際上的理論最大 gas 消耗量幾乎是字面意義上區塊 Gas 上限的兩倍。這并不致命,但仍然不可取,特別是考慮到,在 EIP-1559 實施后,退款機制可以使網絡的實際 Gas 使用量長期維持高水平,阻礙 1559 機制的運行。

如何移除?只要把退款功能從協議中完全刪除。

我們可以相當確信,沒有任何應用會因此無法使用,因為退款只在執行結束后觸發,所以取消退款并不會改變任何執行的可用 gas 數量。

GasToken 將變得毫無用處

在 gas 價格反常時,應用失去了降低費用的能力。好在這個功能目前最主要的用戶是 defi 的套利機器人,而套利機器人之間的 gas 價格競爭是一種零和活動,不過還不清楚移除這個它們用于競爭的武器會造成什么全局性的不利影響。

Gastoken 在他們的網站上已經警告過,未來的協議變更可能會使 GasToken 無效,所以用戶不會覺得驚訝

我們可以提前公布變更時間

相比上面列舉的,我對移除以下功能會帶來多少價值缺乏信心,不過還是值得列出一個清單。

RIPEMD160 預編譯:這是一個非標準的哈希函數,很少有項目使用(除了與比特幣交互的應用)。我們可以用鏈上部署的合約進行替換,對于真正需要高效驗證的項目,可以直接使用 ZK-SNARK。

動態跳轉:使用變量作為跳轉目標會使代碼的分析和操作變得更加困難(例如,無法簡單地替換操作碼序列,或者預置一些代碼)。去掉動態跳轉,只允許相對偏移的靜態跳轉,并且為子程序提供一些專用的指針方案(指針不作為整型暴露)可以解決這個問題。然而,這將是一個底層的改變,可能會破壞許多自定義的合約,所以其收益/成本比似乎不如這個列表中的其他項目。

MODEXP 預編譯:對于大整數計算來說,這顯然是一個錯誤的 “基本元件”,并且其 gas 消耗的計算方案也相當復雜。更好的選擇是:(i) 用預編譯的 ADD、MUL 和 MOD 作為替代的基本原語,并用這些預編譯的指令編寫用于替代 MODEXP 的實現,或者 (ii) 將 EVM384 擴展到更多的長度(256,384,512,768,1024 ... 8192)

Tags:GAS以太坊ETH區塊鏈GASC價格以太坊最新價格行情分析美元ETHM幣怎么做區塊鏈

XMR
翹首以盼的Layer2能給NFT領域帶來什么?_NFT

近日,超現實藝術家Beeple創作的NFT藝術品「Everydays: The First 5000 Days」在佳士得拍賣會上以逾 6900 萬美元競拍成功,引起業內外軒然大波.

1900/1/1 0:00:00
NFT:新騙局的狩獵場_NFT

本文來自微信公眾號老雅痞(id:laoyapi)。騙局的自動化需要更好的防御,從數字身份開始。前幾天我在OpenSea上購買了一個NFT,是才華橫溢的藝術家海倫·福爾摩斯 (Helen Holm.

1900/1/1 0:00:00
Queen皇后樂隊的音樂NFT-Melos丨追風社 AMA_NFT

2022年 3月 15日15:00,Melos做客追風社,與大家分享 AMA 內容的嘉賓是Co-Founder Yalu LIN。以下是本次 AMA 的文字整理.

1900/1/1 0:00:00
Coinbase: NFT市場快速增長背后的原因是什么?_NFT

2020 年,超過 2 億美元的 NFT 易手。今年 2 月的銷量超過了去年全年,銷售額為 3.4 億美元.

1900/1/1 0:00:00
NFT的另一面:超越投資 NFT正在成為改善社會的重要力量_NFT

從為女性賦權到為弱勢群體“講話”,NFT作為一種基于區塊鏈的數字資產,現在正在成為慈善事業用來籌款的方式,而這種方式正在推動社會改變.

1900/1/1 0:00:00
手把手教你發行自己的NFT(上)_LID

相信每個web3的參與者,心底都有一個親手做項目的夢想。不一定像中本聰、V神、Gavin Wood一樣名垂青史,也不一定像shib、ape的創始人一樣一戰成名.

1900/1/1 0:00:00
ads