Trendande ämnen
#
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.
Hur vi på @Alchemy utvecklat och lanserat det absolut mest gaseffektiva smartkontot i historien om smarta konton. 🕶️
Allt från en ~3 år gammal idé.
Föga anade jag då att detta skulle sluta med att användarna skulle spara enorma summor pengar.

I maj 2023 var det denna vurm på twitter om proxyservrar (t.ex. ERC1967, kloner, etc.)
Folk hade oföränderliga variabler, men de ville ha proxys. Det var omöjligt att göra – men några av oss antog utmaningen. Problemet var inte EVM tho.
Det var så vi tänkte på proxyservrar.
Så vi byggde den – flera versioner dök upp.
Min och @wighawag följde båda samma koncept - vi kunde bara lägga till de oföränderliga genom att kopiera den angivna minnesbiten i slutet av den returnerade bytekoden vid konstruktionen.
Själva koden var ganska kort och koncist.

(Du kan se min gamla impl jag byggd för skojs skull för 3 år sedan här lmao:)
Det fanns också två sätt att komma åt de oföränderliga argumenten vid körning.
Det första – mitt sätt – var att bara läsa proxyns bytekod med början från en konstant förskjutning. Enkel!
Ladda bara de oföränderliga i minnet och avkoda dem enligt det schema du ställer in.
Den andra var mycket mer komplex, men något mer gaseffektiv och intressant.
Tanken var att du skulle lägga till de oföränderliga i varje anrop som proxyn delegerade. Vilket leder till billigare oföränderlig åtkomst på bekostnad av komplexitet och högre basgaskostnader.
Intressant nog valde Solady (biblioteket vi nu använder, använd inte min lilla demo i prod heh) ursprungligen det andra tillvägagångssättet!
Men nu har vi alla konvergerat i enkelhet, jag känner inte till några calldata-apptilerande oföränderliga i prod, och Solady väljer samma tillvägagångssätt som jag använde.
Så hur knyter detta till konton tho?
Det mest grundläggande, vanliga användningsfallet för smarta konton innebär att de "ägs" av en annan undertecknare.
Vanligtvis gör du detta genom att initiera det smarta kontot med ägaradressen.
Men min bror på kedjan, det finns ett bättre sätt.
Du har förmodligen redan listat ut det – vi lägger bara till undertecknaradressen i proxyns bytekod.
Enkel.
Sedan hoppar vi helt över initieringen. Lätt. Och impl vet exakt var den ägaren finns i bytekod (ännu bättre, Solady tar hand om detta åt oss).
Och voila, det mest kraftfulla smartkontot som någonsin byggts är nu också billigare än ett Uniswap-byte.
Så vad kan vi lära oss av detta?

1. Följ alltid din nyfikenhet
Det kanske aldrig hade funnits ett smart konto som använder den här tekniken om vi inte hade följt den här idén om kloner-med-oföränderliga-args för flera år sedan - bara för att vi tyckte att det var intressant.
2. Det finns nästan alltid en enkel lösning
När du inte kan undvika komplexitet kan du dela upp komplexiteten i mindre, enklare delar. Du bör kunna förklara all din kod för någon som är ny i kodbasen.
Om du inte kan det är din lösning nästan säkert för komplex.
3. Det finns faktiskt inget som stoppar dig.
Om du har en idé om hur du kan göra något bättre, gör det. Det finns inget som stoppar dig. Jag tänkte att det här kunde fungera, provade det och det gjorde det.
Du är kapabel till otroliga saker om du bara kunde sluta hålla dig själv tillbaka, anon.
Är din stack för djup än?
Hoppas denna tråd var något intressant.
Om du tyckte att det var snyggt, var en kompis och slå din pojke upp med en like så att jag kan nå mer än 5 personer med mina inlägg här.
Riktmärkena 😸
Vi är inte bara snåla på att distribuera.
5,45K
Topp
Rankning
Favoriter