Autor: Xiang, W3.Hitchhiker
Pokud jde o upgrade Ethereum Shanghai, pojďme si krátce utřídit, jaké výhody může přinést.
S odkazem na nejnovější veřejné zprávy z Etherea jsou EIP související s upgradem v Šanghaji následující:
Určete zahrnuté EIP: EIP-3651, EIP-3855, EIP-3860, EIP-4895
EIP, které mohou být zahrnuty: EIP-3540, EIP-3670
EIP-4488 a EIP-4844 související s rozšířením L2 však nespadají do rozsahu tohoto upgradu.
EIP-3651: Teplá COINBASE
Když už mluvíme o EIP-3651, musíme nejprve zavést změnu v EIP-2929:
Když cíl není v accessed_addresses, naúčtujte plyn COLD_ACCOUNT_ACCESS_COST (cena za přístup ke studenému účtu) a přidejte adresu k accessed_addresses. V opačném případě se účtuje plyn WARM_STORAGE_READ_COST (náklady na čtení teplého úložiště) a spotřeba plynu pro čtení za tepla je relativně nízká.
V současné době je přímá platba COINBASE stále populárnější, ale současná cena přístupu na COINBASE je poměrně vysoká, je to způsobeno tím, že v rámci přístupového seznamu zavedeného EIP-2929 COINBASE vypočítává plyn podle přístupu na studený účet; cost V EIP-3651 Afterwards, accessed_addresses bude zahrnovat adresu vrácenou COINBASE (0x41).
prospěch:
Po úpravě COINBASE sníží spotřebu plynu při placení žetonů ERC20.
EIP - 3855: instrukce PUSH0
EIP-3855 zavádí novou instrukci (0x5f) pro vložení konstantní hodnoty 0 do zásobníku Instrukční sada pro PUSH ve žluté knize má v současnosti pouze PUSH1-PUSH32, která se používá k vložení 1 bajtu do zásobníku a vložení 32. bajtů do zásobníku.
Stávající implementace instrukce posune hodnotu 0 do zásobníku provedením PUSH1 0 , což stojí 3 plyny za běhu a dalších 200 plynů (2 bajty nákladů na úložiště)
S instrukcí PUSH0 není potřeba spotřebovávat těchto dalších 200 plynu.
prospěch:
V současné době asi 11 % PUSH operací pouze stlačí 0, takže tento EIP může po provedení ušetřit určité množství plynu a může také mírně zlepšit stávající TPS Etherea.
EIP-3860: Limit a výpočet inicializačního kódu
Aktuální maximální initcode je MAX_CODE_SIZE: 24576 (EIP-170) a maximum nového initcode je (MAX_INITCODE_SIZE = 2 * MAX_CODE_SIZE = 49152), což znamená, že velikost smlouvy lze zdvojnásobit a vývojáři smluv mohou nasadit bohatší funkce. (Nadměrný kód smlouvy povede k neúspěšnému nasazení. PS: Projekt L2 byl také částečně upraven, aby podporoval vyšší limit velikosti smlouvy)
Kromě toho se zavádí 2 poplatek za plyn za každý 32bajtový blok initkódu, který představuje náklady na analýzu jumpdest. Protože během vytváření smlouvy musí klient před provedením provést jumpdest analýzu initkódu. Prováděcí práce se lineárně mění s velikostí initkódu.
To znamená, že initcode bude stát 0,0625 plynu na bajt a náklady na smluvní plyn se mírně zvýší.
prospěch:
Poplatek za plyn za nasazení smlouvy se mírně zvyšuje, ale velikost smlouvy lze zdvojnásobit, což vývojářům smluv umožňuje psát bohatší funkční kódy.
EIP-4895: Beacon Chain Withdrawals
Hlavním obsahem je určit hlavní proces výběru peněz z beacon chain do EVM Po dokončení nasazení bude aktivována funkce výběru zástavy Ethereum beacon chain.
prospěch:
Aktivujte funkci stažení slibu Ethereum Beacon Chain.
EIP-3540: EVM Object Format (EOF) v1
Toto EIP zahrnuje velké změny a nemusí být nutně součástí aktualizace Shanghai.
Formát popsaný v tomto EIP zavádí jednoduchý a rozšiřitelný formát a zavádí ověřování. Je dosaženo oddělení kódu smlouvy a dat.
Nový formát objektu EVM je: magie, verze, (druh_sekce, velikost_sekce)+, 0,
prospěch:
Kontrola verzí usnadňuje zavádění nebo ukončování podpory nových funkcí v budoucnu (jako je zavedení abstrakce účtu);
Oddělení smluvního kódu a dat je výhodné pro ověření L2 (op) a snižuje náklady na plyn na validátor L2;
Oddělení kódu smlouvy a dat také usnadňuje práci s nástroji pro analýzu dat v řetězci.
EIP-3670: EOF — Ověření kódu
Toto EIP není nutně součástí aktualizace Shanghai a ověřování kódu je zavedeno při vytváření smlouvy EIP-3540. Odmítněte smlouvy s nedefinovanými směrnicemi.
prospěch:
Po vytvoření smlouvy lze zavést ověření kódu
