Popularne tematy
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Jak my w @Alchemy opracowaliśmy i uruchomiliśmy absolutnie najbardziej efektywne pod względem gazu konto inteligentne w historii kont inteligentnych. 🕶️
Wszystko z pomysłu sprzed około 3 lat.
Nie miałem wtedy pojęcia, że to pozwoli użytkownikom zaoszczędzić ogromne sumy pieniędzy.

W maju 2023 roku na Twitterze panowała moda na proxy (np. ERC1967, klony itp.)
Ludzie mieli niezmienne zmienne, ale chcieli proxy. To było niemożliwe do zrealizowania - ale niektórzy z nas podjęli wyzwanie. Problem nie leżał w EVM.
Chodziło o to, jak myśleliśmy o proxy.
Więc to zbudowaliśmy - pojawiło się wiele wersji.
Zarówno moje, jak i @wighawag podążały za tą samą koncepcją - mogliśmy po prostu dołączyć niezmienne elementy, kopiując wyznaczony wycinek pamięci na końcu zwróconego kodu bajtowego podczas budowy.
Sam kod był dość krótki i słodki.

(Możesz zobaczyć moją starą implementację, którą zbudowałem dla zabawy 3 lata temu tutaj lmao: )
Istniały również dwa sposoby dostępu do niezmiennych argumentów w czasie wykonywania.
Pierwszy - mój sposób, polegał po prostu na odczytaniu bajtowego kodu proxy zaczynając od stałej wartości. Proste!
Po prostu załaduj niezmienne do pamięci i dekoduj je zgodnie z dowolnym schematem, który ustawiłeś.
Drugi był znacznie bardziej złożony, ale nieco bardziej efektywny pod względem gazu i bardzo interesujący.
Pomysł polegał na tym, że do każdego wywołania, które delegował proxy, dodawałeś immutables. Prowadziło to do tańszego dostępu do immutables kosztem złożoności i wyższych podstawowych kosztów gazu.
Ciekawie, Solady (biblioteka, której teraz używamy, nie używaj mojego małego dema w produkcji heh), pierwotnie wybrała drugie podejście!
Ale teraz wszyscy zgodziliśmy się na prostotę, nie znam żadnych immutowalnych z dodawaniem calldata w produkcji, a Solady wybiera to samo podejście, które ja zastosowałem.
Jak to się ma do kont?
Najbardziej podstawowym i powszechnym przypadkiem użycia inteligentnych kont jest to, że są one "posiadane" przez innego sygnatariusza.
Zazwyczaj robi się to, inicjalizując inteligentne konto z adresem właściciela.
Ale mój brat on-chain, jest lepszy sposób.
Prawdopodobnie już to zrozumiałeś - po prostu dołączamy adres podpisującego do bajtowego kodu proxy.
Proste.
Następnie całkowicie pomijamy inicjalizację. Łatwe. A implementacja dokładnie wie, gdzie znajduje się ten właściciel w bajtowym kodzie (co lepsze, Solady zajmuje się tym za nas).
I oto, najpotężniejsze inteligentne konto, jakie kiedykolwiek zbudowano, jest teraz również tańsze niż wymiana na Uniswap.
Czego możemy się z tego nauczyć?

1. Zawsze podążaj za swoją ciekawością
Może nigdy nie byłoby inteligentnego konta, które wykorzystuje tę technologię, gdybyśmy nie podążali za pomysłem klonów z niezmiennymi argumentami lata temu - po prostu dlatego, że uznaliśmy to za interesujące.
2. Prawie zawsze istnieje proste rozwiązanie
Kiedy nie możesz uniknąć złożoności, podziel ją na mniejsze, prostsze części. Powinieneś być w stanie wyjaśnić cały swój kod komuś, kto jest nowy w tej bazie kodu.
Jeśli nie możesz, twoje rozwiązanie jest prawie na pewno zbyt złożone.
3. Tak naprawdę nic cię nie powstrzymuje.
Jeśli masz pomysł, jak coś poprawić, zrób to. Nic cię nie powstrzymuje. Pomyślałem, że to może zadziałać, spróbowałem i zadziałało.
Jesteś zdolny do niesamowitych rzeczy, jeśli tylko przestaniesz się powstrzymywać, anon.
Czy Twój stack jest już zbyt głęboki?
Mam nadzieję, że ten wątek był nieco interesujący.
Jeśli uważasz, że jest to fajne, zostań kumplem i zadzwoń do swojego chłopca polubieniem, abym mógł dotrzeć z moimi postami do więcej niż 5 osób tutaj.
Ponadto testy porównawcze 😸
Nie jesteśmy po prostu tani we wdrożeniu.
5,46K
Najlepsze
Ranking
Ulubione