走進EIP-3074

2021-04-02 21:04:35

以太坊錢包可能很快進行一次重大升級。部署了提案的變更後,外部账戶 (EOA) 將馬上可以發送批量交易、逾期交易、無序交易等。

我的同事 @_SamWilsn _和 @adietrichs 和我一直致力於改善與以太坊交互的用戶體驗。經過了多次迭代,我們提出了 "EIP-3074: AUTH and AUTHCALL opcodes"。

這些操作碼是這樣使用的:外部账戶對一條鏈下信息籤名,給一個中繼器提供消息,這個中繼器把籤名和調用數據傳給一個鏈上合約 (被稱為 invoker,調用器),合約用操作碼 AUTH 驗證籤名,隨後用操作碼AUTHCALL發送外部账戶的調用。

操作碼 AUTHCALL 的功能基本與 CALL 相同,除了它把CALLER(即msg.sender信息發送者) 設為外部账戶的地址,需要通過AUTH來恢復。這使得用戶可以無須 ETH 也能與以太坊交互。也就是說,他們的交易可以由一個中繼器來“資助”。

這個方案聽上去可能很熟悉。實際上,它與 meta-txs (元交易) 的工作機制幾乎相同。一個重要區別是 meta-txs 無法隨意設置msg.sender。因此,合約必須明確支持 meta-txs。EIP-3074 旨在去除 meta-txs,減少合約復雜性。

為了更深入它的工作機制,一起來了解我們正在構建什么吧。我們想要一個機制允許沒有 ETH 的外部账戶可以無須信任地發送交易。“無須信任”是關鍵。用戶不應該給中繼器任何可以被利用的特權。

EIP-3074 允許通過謹慎選擇加入到外部账戶籤名的參數來構建去信任系統。用戶需要對 keccak (0x03 ++ invoker_address ++ commit_hash) 哈希函數籤名。

走進EIP-3074

“type byte (類型字節)" 是 EIP-2718 裏值為 0x03 的恆定字節。這是用來防止與其他籤名規則衝突的,比如 EIP-2930 的訪問列表交易、EIP-1559 的費用市場交易、EIP-191的 0x19 籤名消息等。

調用器地址把用戶的調用與一個特定合約進行捆綁。籤名只對該合約有效,即調用者。這使得用戶可以選擇一個他們信任的調用器——就像選擇一個智能合約錢包托管資產一樣。

我們預想調用器的數量不會多,因為如果他們實現出錯的話 (注意調用器的使用是選擇性的),用戶的利益會受損。开發一個安全的調用器花費會很高。它需要接受多方的審計,並在靜態證明上是可靠的。

這與現狀其實沒有太大區別。智能合約錢包在被用來托管大額資產前應該通過了全面的審計與證明。很多大型 DeFi 項目也是這樣做的。

要籤名的最後一個參數是 commit_hash (委托哈希)。這就是給調用器設計師很大靈活性,以及允許非常多不同籤名規則得以开發的地方。

委托參數限定調用者只能執行某些操作,並為處理一次調用建立了一定的有效性要求。用戶可以信任調用器會遵循這個程序,因為代碼可以在鏈上得到驗證。這是區塊鏈很好的一個特性。

現在來看一個簡單的案例。假設一個用戶想通過調用器發送一個調用。為了避免調用被傳送,他們提供一個隨機數。他們還提供其他不可篡改的數值。用戶對這些數值進行哈希以獲得委托,並在用於AUTH的籤名信息裏使用該委托。

走進EIP-3074

調用器會用收到的值重新生成委托哈希值。這樣,如果資助方修改了一個值,調用器會計算出一個不同於外部账戶籤名的委托哈希值,導致 AUTH 恢復一個垃圾地址。會出現下圖的情況:

走進EIP-3074

希望現在你相信調用器能像一個智能合約錢包那樣運作,任何外部账戶都可以使用。現在看一下如何用委托哈希構建更多有趣的方案。

總的來說,最重要的是”一個操作一個籤名“。這是看待事情的一個簡單方法。一個籤名由一筆交易的哈希創造,為什么不對多筆交易進行哈希呢?其實 EIP-3074 是可以實現的。

當一個账戶已經用 AUTH 驗證了,調用器就可以進行該账戶想要的、盡可能多次的 AUTHCALL。因為我們信任該調用器會沒有偏差地執行它的代碼,這很好。我們還可以設計出委托哈希是多個調用的哈希值的方案。

走進EIP-3074

在上文的方案裏,調用者會用到全部的數值 (隨機數1、隨機數2等),並把它們合起來進行哈希,生成一個委托哈希值。它用委托哈希值和用戶籤名來調用AUTH。AUTH 會驗證用戶是否都對那些參數籤名了。

然後,調用器會對所有調用逐個驗證其隨機數和其他參數,然後把鑑別過的調用數據發送到鑑別過的地址。

在這個基礎上可以構建更多的方案。假如你添加了一個新參數”expiration (逾期)"。這個參數會被哈希成委托哈希值,且在驗證過程中,調用者會驗證是否 expiration < block.number。這樣外部账戶就可以有逾期交易了!

EIP-3074 提供的是功能強大的基元,能為更多順滑用戶體驗打开可能性而無須引入額外的信任假設。如果你想閱讀這份 EIP 的完整版,你可以點擊這裏:

https://eips.ethereum.org/EIPS/eip-3074

用 go-ethereum 編寫的原型實現可以在這裏看到:

https://t.co/XWhlX9C4Y5?amp=1

原文鏈接:

https://twitter.com/lightclients/status/1371911245561917441

來源 | @lightclients

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

btc日內再次下跌 短线應當如何處理?

盡管以太坊現貨ETF獲批是個好消息,但市場反應卻不如預期。在消息公布後,以太坊價格出現了小幅下跌,...

加密蓮
66 1個月前

7月23日、BTC(合約)ETH(合約)行情分析及操作策略

昨日收益還是不錯的,日內給出的現價空單分別止盈我們目標點位,恭喜跟上的朋友喫肉。時間一晃到月底了,...

倪老師
66 1個月前

幣圈院士:血與淚的教訓!交易者為何總是撞死在同一棵樹上?

幣圈院士談。交易市場中的幾種“死法” 在幣圈市場鱗次櫛比的海洋,風起雲湧,時常讓人感到驚手不及。在...

幣圈院士
58 1個月前

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...

168超神
65 1個月前

悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤

一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...

我是周悅盈
56 1個月前

btc完美盈利 晚間波動較大注意

昨日btc空單完美給到,最大化走出一千七百點空間~ btc: 日內开盤下跌繼續測試66000一线,...

加密蓮
59 1個月前