不斷進擊的乙太坊:EIP-1559 之後的 EIP-3074

 Ropsten 測試網已于 6 月 24 日上線,區塊高度為 10,499,401。

▪️ 自部署以來,約有 88,500 個測試網以太坊被燒毀,價值 1.776 億美元。

▪️ 大約在 Eth3 啟動的同時,價值 2 億美元的 10 萬以太坊已經被存入 Eth3 的質押合約。

備受期待的以太坊改進提案 EIP-1559 最終部署在 Ropsten 測試網,用于以太坊即將到來的倫敦升級。幾天前,倫敦硬分叉的三個以太坊測試網發布日期公布。以太坊核心開發者 Tim Beiko 宣布 Ropsten、Goerli 和 Rinkeby 測試網的區塊高度已經確定。Ropsten 的高度為 10499401,已于 6 月 24 日推出。另一方面,Goerli 在 6 月 30 日,Rinkeby 將在 7 月 7 日。

EIP-1559 的燃燒機制可能有利于代幣的價格

雖然倫敦硬分叉有 5 個以太坊改進提案,但 EIP-1559 已經吸引了所有的注意力。新的升級預計將消耗網絡上的交易費用。據 EIP-1559 跟蹤網站 Watch the Burn 報道,自從 Ropsten 測試網在倫敦進行升級后,約有 88500 個測試網以太坊被燒毀,價值 1.776 億美元。然而,EIP-1559 所燃燒的大量以太坊再次引發了 ETH3 大修通貨緊縮的討論。由于燃燒機制,以太的燃燒速度比流通的供應更快。這可能對 ETH 的價格非常有利。

在 EIP-1559 之后,社區關注的是 EIP-3074,旨在解決安全問題

然而,EIP-1559 并不是以太坊社區關注的唯一 EIP。EIP-3074 是社區在升級中高度期待的另一個改進提案。根據 David Mihal 和他的推文,以太坊忽視的一個主要安全問題是 ERC20 的批準。他補充說,他已經推動了 ERC777,他們修復這一問題的唯一機會是 EIP-3074。這一以太坊改進提案將允許用戶在一次交易中批準轉賬、執行操作和撤銷批準。

此前,以太坊開發者注意到 EIP-1559 的設計并不是為了降低 gas 成本:但許多人仍然相信,該提案肯定會大幅降低 gas 成本。這甚至可能使礦工的收入減少 50%,導致「礦工起義」,但最終以失敗告終。盡管如此,倫敦的升級預計將促進以太坊的看漲趨勢。知名加密分析師 CryptoQuant 指出,大約在 Eth3 推出的同時,價值 2 億美元的 10 萬以太坊已經存入 Eth3 的質押合約。目前,超過 5% 的 ETH 供應量被鎖定,價值約 117.5 億美元。

什麼是 EIP-3074?

當我們想要發送代幣到智能合約時,通常必須做兩個交易:第一筆交易 approve 是花費我們的代幣的合約,第二筆是 transferFrom 將代幣發送到合約的交易。

EIP-3074 通過引入一種智能合約的方式來在外部擁有的賬戶 (EOA,或簡單地說一個常規以太坊地址) 中發送交易,來解決問題。

這個 EIP 介紹了兩個 EVM 指令 AUTH 和 AUTHCALL。第一個設置*authorized*基于 ECDSA 簽名的上下文變量。第二個發送呼叫作為*authorized*。這實質上將 EOA 的控制權委托給了 [a] 智能合約。

不斷進擊的以太坊:EIP-1559 之后的 EIP-3074

AUTH 和 AUTHCALL EVM 指令 (也稱為操作碼),讓智能合約基于已簽名的消息授權 EOA,并從該 EOA 發送交易 (「調用」)。這帶來了很多可能性,比如:

贊助交易 (也稱為元交易):從另一個賬戶支付交易的 gas。這也將允許我們從一個沒有任何以太的地址發送代幣。

批量交易:在一個調用中發送多個交易。這保證了在同一個區塊中執行兩個或多個交易,還可以降低交易費用。

改進的用戶體驗 (UX):例如,我們可以在單個交易中調用 approve 和 transferFrom。

與這些問題的現有解決方案不同,EIP-3074 不需要智能合約錢包。我們可以簡單地將交易發送給執行交易的所謂調用者。調用者是無狀態的、無需信任的智能合約,它們不要求我們預先將余額發送給合約。EIP-3074 也沒有引入新的交易類型。通過只引入兩個新的 EVM 指令,它在技術上應該更容易實現。

AUTH 和 AUTHCALL 操作碼

EIP-3074 定義了兩個新的操作碼,可以從智能合約中調用:

AUTH (0xf6) -根據簽名和提交授權外部擁有的帳戶。它接受四個輸入參數:commit 和簽名的 yParity、r 和 s。

AUTHCALL (0xf7) -在授權的 EOA 上下文中發送調用 (交易)。它接受 8 個輸入參數:gas、addr、value、valueExt、argsOffset、argsLength、retOffset、retLength。這類似于現有的 CALL 操作碼。

為了授權一個 EOA,我們需要一個來自該 EOA 的簽名消息。調用 AUTH 的智能合約可以從消息簽名中恢復簽名者,然后將消息簽名設置為 authorized EVM 上下文變量。現在,無論何時智能合約調用 AUTHCALL,調用者都被設置為授權地址。當被調用的智能合約調用 CALLER(例如,通過 Solidity 的 msg.sender) 時,這現在是授權 EOA 的地址,而不是執行調用的智能合約調用者的地址。

發送一個或多個交易的基本流程如下所示:

不斷進擊的以太坊:EIP-1559 之后的 EIP-3074

一個基本的 EIP-3074 流程,其中調用者契約發送多個交易。

EOA 簽署授權信息;

EOA 或其他 gas 支付人將交易數據和授權信息發送給調用者合約;

調用者合約使用 AUTH 執行授權,并使用 AUTHCALL 發送交易。

誰將交易發送到合約中并不重要,只要 EOA 的簽名是有效的。這使得其他人 (或另一個帳戶) 可以發送交易。

授權消息和提交

為執行授權,EOA 必須以特定格式簽署消息:

不斷進擊的以太坊:EIP-1559 之后的 EIP-3074

 (注意:||用作字節串聯操作符)

它由三部分組成:一個魔術字節 (0x03)、填充到 32 字節的調用者地址 (將執行授權的智能合約的地址) 和 32 字節的提交。

不斷進擊的以太坊:EIP-1559 之后的 EIP-3074

授權消息格式,包括可用于提交的示例

提交描述了 EOA 提交的對象,并且可以根據調用的某些屬性 (如地址、值) 進行計算。調用者合約可以根據提供的屬性重新計算提交,如果這些字段正確,則執行授權。

例如,假設我們想要發送以下交易 (表示為 JSON):

不斷進擊的以太坊:EIP-1559 之后的 EIP-3074

我們可以哈希這些字段 (例如,以一種確定的方式將它們連接在一起,或者使用 EIP-712 之類的東西) 并將其用作提交。

我們可以在智能合約中提供要發送的交易和授權消息的簽名,如此 JSON 數據所示。合約函數可以是這樣的:

不斷進擊的以太坊:EIP-1559 之后的 EIP-3074

智能合約重新計算提交交易,并將此提交 (連同簽名) 提供給 AUTH 調用。這將嘗試恢復簽名者的地址,如果提交無效,將從簽名中恢復錯誤的地址,這意味著交易將失敗。

調用者完全負責確保此提交是安全的。我們可以簡單地用 0x0 將消息簽名為提交,并給予智能合約對 EOA 的完全訪問權。EIP-3074 以前的版本包含了一個更嚴格的提交格式,包括像重放保護之類的東西,但后來為了更靈活而被刪除了。因此,信任與我們交互的調用程序非常重要。

限制和安全問題

EIP-3074 能夠基于簽名更改 CALLER,從而顯著地改變了 EVM 的工作方式。這可能會在新合約和現有合約中引入潛在的漏洞。因此,EIP-3074 被審計。

下面解釋了一些可能的安全問題。由于這些不同的原因,EIP-3074 建議只與受信任的調用者進行交互。

弱提交和重放攻擊

如上所述,EIP-3074 沒有為提交定義標準化的格式。調用者可以自由地以他們想要的任何方式實現這一點。這意味著調用者完全負責提供足夠的保護,以防止 (例如) 重放攻擊。

如果提交不包含某種隨機數,則可以簡單地獲取簽名消息并將其再次發送給調用者。惡意調用者可以通過根本不驗證提交來獲得對 EOA 的控制。我們在簽名消息時應該始終小心。

通過在授權消息中包含調用者的地址,EIP-3074 具有防止重放攻擊的基本保護。這樣就不可能在另一個調用者上重放一個調用程序的授權消息。

可升級的調用程序

EIP-3074 明確地指出,調用程序必須是不可升級的。如果調用程序是可升級的,則有人可以部署該調用程序的另一個版本,該版本不驗證提交,從而給予合約對 EOA 的完全控制。

重入攻擊

目前,智能合約可以使用 require(tx.origin == msg.sender),它檢查一個交易是否從 EOA(而不是另一個合約) 發送。這允許簡單的重入預防,因為它防止合約調用函數。

EIP-3074 也允許 tx.origin 成為授權消息的簽名者。即使調用是由智能合約 AUTHCALL 執行的,調用者執行的任何 s 也會導致 tx.origin == msg.sender 為真,從而可能引入重入攻擊。EIP-3074 提到:「[…] 本 EIP 的作者沒有找到任何這種形式的重入保護的例子,盡管搜索并非詳盡無遺。」

結論

EIP-3074 為以太坊帶來了許多令人興奮的新可能性。AUTH 和 AUTHCALL 允許 EOA 將帳戶的控制權委托給智能合約調用者,從而使發送批量交易、贊助交易等成為可能。不過,它對以太坊上的交易工作方式帶來了一些重大變化,所以在 EIP-3074 在主網上被激活之前,還需要對安全性進行更多思考。

發文者:鏈站長,轉載請註明出處:https://www.jmb-bio.com/4170.html

讚! (0)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Previous 2023 年 2 月 28 日 下午 9:12
Next 2023 年 2 月 28 日 下午 9:20

相關文章

  • 函數式程式設計技術解析:使用 Rust 和 Elixir 讀寫乙太坊智慧合約!

    本系列將重點介紹兩種函數式編程語言:Rust&Elixir。本篇分享函數式編程的思想和實踐。 在這篇文章中將展示Elixir&Rust讀取以太坊智能合約的功能。重要的是,該程序不僅在以太坊上工作,而且還在任何支持EVM的區塊鏈上工作,例如,Polkadot上的Moonbeam ! Ethereumex & ExABI 我更喜歡 Eli…

    2023 年 2 月 28 日
  • 閃電網路應用開發速成指南,掌握 Lightning Network!

    如果你想要入門閃電網絡編程,又不在乎所謂正確、最佳的做法,這篇文很適合你。換言之,這篇指南具有很強的 主觀性。如果你偏好 O’Reilly 式的權威文本,這篇文章可能不對你的胃口。但是,如果你想要了解閃電網絡的最小開發環境及其基本內容,不妨讀一讀。我寫本文的目的是提煉出創建閃電網絡應用的基礎知識點,讓新手能夠快速構建和實驗。 我相信,只…

    2023 年 2 月 28 日
  • LiquiDEX 兩步原子切換式通訊協定解析:掌握最新區塊鏈技術!

    長話短說:LiquiDEX 是一個在 Liquid網絡上執行兩步原子交換(atomic swaps)的協議,它只需要交換方的單次交互,這極大地改善了用戶體驗。而使用該協議,我們可以構建出更復雜系統的構建塊,例如自動 OTC 交易柜臺、拍賣系統甚至去中心化交易所 (DEX)。 注:LiquiDEX的產品還不可用。 簡介:Liquid網絡和原子交換技術 Liqu…

    2023 年 2 月 28 日
  • Coinbase API 教程:Python 在 Coinbase 上的應用!

    加密領域是試驗不同技術的好方法。在本文中,我們將涵蓋以下內容: 如何從Coinbase Pro加載數據到Pandas數據框? 如何轉化和分析歷史加密貨幣市場數據? 如何添加簡單移動平均線(SMA),指數移動平均線(EMA), MACD, MACD信號? 如何使用Plotly和Python可視化加密貨幣市場數據? 本文只展示最相關的Python代碼。 在文章的…

    2023 年 2 月 28 日
  • 乙太坊智慧合約解析:解碼智慧合約資料!

    正如我們在之前的文章中所討論的,智能合約交易類似于智能合約驅動的web3應用程序中的后端API調用。每個智能合約交易和結果應用程序狀態更改的細節都記錄在稱為交易、調用和日志的數據元素中。交易數據元素表示用戶發起的函數調用(更準確地說是EOA),調用數據元素表示智能合約在交易中發起的其他函數調用,而日志數據元素表示交易執行期間發生的事件。 使用這些數據元素,可…

    2023 年 2 月 28 日
每日鏈頭條給你最新幣圈相關資訊!