熱門話題
#
Bonk 生態迷因幣展現強韌勢頭
#
有消息稱 Pump.fun 計劃 40 億估值發幣,引發市場猜測
#
Solana 新代幣發射平臺 Boop.Fun 風頭正勁
我們 @Alchemy 如何開發和推出智慧賬戶歷史上絕對最節能的智能帳戶。🕶️
所有這些都來自一個 ~3 年的想法。
那時我幾乎不知道,這最終會為用戶節省一大筆錢。

2023年5月,Twitter上掀起了關於代理(例如 ERC1967、克隆等)的熱潮。
人們有不可變數,但他們想要代理。這是不可能的——但我們中的一些人接受了挑戰。問題不在於 EVM。
這就是我們對代理的看法。
所以我們構建了它——出現了多個版本。
我的和@wighawag都遵循相同的概念——我們可以通過在構造時將指定的記憶體切片複製到返回的位元組碼的末尾來附加不可變項。
實際代碼非常簡短且甜蜜。

(你可以在這裡看到我 3 年前為好玩而構建的舊 impl lmao:)
在運行時也有兩種方法可以訪問 immutable arguments。
第一種 - 我的方式,就是從一個常量偏移量開始讀取代理的位元組碼。簡單!
只需將不可變數載入到記憶體中,然後根據您設置的任何schema對其進行解碼即可。
第二個要複雜得多,但 gas 效率略高,而且很有趣。
這個想法是,您將不可變數附加到代理委託的每個調用中。以複雜性為代價實現更便宜的不可變訪問,以及更高的base gas成本。
有趣的是,Solady(我們現在使用的庫,不要在 prod heh 中使用我的小演示)最初選擇了第二種方法!
但是現在,我們都已經趨向於簡單性,我不知道 prod 中有任何附加 calldata 的不可變數,Solady 選擇了我使用的相同方法。
那麼這如何與賬戶挂鉤呢?
智慧帳戶最基本、最常見的用例是它們由另一個簽名者“擁有”。
通常,您可以通過使用所有者位址初始化智慧帳戶來實現此目的。
但是我的兄弟在鏈上,有更好的方法。
您可能已經弄清楚了 - 我們只是將簽名者位址附加到代理的位元組碼中。
簡單。
然後,我們完全跳過初始化。容易。 並且 impl 確切地知道該擁有者在位元組碼中的位置(更好的是,Solady 會為我們處理這個問題)。
瞧,有史以來最強大的智慧賬戶現在也比 Uniswap 掉期便宜。
那麼,我們能從中學到什麼呢?

1. 永遠追求你的好奇心
如果我們幾年前沒有追求這個具有不可變數的克隆的想法,可能永遠不會有智慧帳戶使用這項技術——只是因為我們發現它很有趣。
2. 幾乎總是有一個簡單的解決方案
當您無法避免複雜性時,請將複雜性分解成更小、更簡單的部分。您應該能夠向新熟悉代碼庫的人解釋您的所有代碼。
如果做不到,則幾乎可以肯定您的解決方案太複雜了。
3. 實際上沒有什麼能阻止你。
如果你有關於如何讓某事變得更好的想法,那就去做吧。沒有什麼能阻止你。我認為這行得通,試了試,它確實奏效了。
如果你不再阻止自己,匿名,你就能做出不可思議的事情。
你的堆疊是否太深了?
希望這個帖子有點有趣。
如果你覺得這很不錯,請成為朋友並給你的男孩點讚,這樣我就可以在這裡通過我的帖子接觸到 5 人以上。
此外,基準測試 😸
我們不僅在部署上便宜......
5.45K
熱門
排行
收藏