Autore: Xiang, W3.Autostoppista
Per quanto riguarda l’upgrade di Ethereum Shanghai, vediamo brevemente quali vantaggi può apportare.
Facendo riferimento alle ultime notizie pubbliche provenienti da Ethereum, gli EIP relativi all'upgrade di Shanghai sono i seguenti:
Determinare gli EIP inclusi: EIP-3651, EIP-3855, EIP-3860, EIP-4895
EIP che possono essere inclusi: EIP-3540, EIP-3670
Tuttavia, EIP-4488 e EIP-4844 relativi all'espansione L2 non rientrano nell'ambito di questo aggiornamento.
EIP-3651: COINBASE caldo
Parlando di EIP-3651, dobbiamo prima introdurre una modifica in EIP-2929:
Quando la destinazione non è in accessed_addresses, addebita il gas COLD_ACCOUNT_ACCESS_COST (costo di accesso all'account freddo) e aggiungi l'indirizzo ad accessed_addresses. Altrimenti, viene addebitato il gas WARM_STORAGE_READ_COST (costo di lettura dello storage a caldo) e il consumo di gas di lettura a caldo è relativamente basso.
Al giorno d'oggi, il pagamento diretto con COINBASE sta diventando sempre più popolare, ma il prezzo per accedere a COINBASE è attualmente elevato; questo perché, secondo il framework dell'elenco di accesso introdotto da EIP-2929, COINBASE calcola il gas in base al costo dell'accesso al cold account. Dopo EIP-3651, accessed_addresses includerà l'indirizzo restituito da COINBASE (0x41).
beneficio:
Dopo la modifica, COINBASE ridurrà il consumo di gas durante il pagamento dei token ERC20.
EIP-3855: istruzione PUSH0
EIP-3855 introduce una nuova istruzione (0x5f) per spingere il valore costante 0 nello stack. Il set di istruzioni di Yellow Paper per PUSH attualmente ha solo PUSH1-PUSH32, che spinge 1 byte nello stack e spinge 32 byte nello stack.
L'implementazione dell'istruzione esistente spinge un valore di 0 nello stack eseguendo PUSH1 0 , che consuma 3 gas nel runtime e altri 200 gas (2 byte di costo di archiviazione)
Con l'istruzione PUSH0 non è necessario consumare 200 gas extra.
beneficio:
Attualmente, circa l'11% delle operazioni PUSH spinge solo 0, quindi questo EIP può far risparmiare una certa quantità di gas dopo l'esecuzione e può anche migliorare leggermente l'attuale TPS di Ethereum.
EIP-3860: Codice di inizializzazione del limite e del calcolo
Attualmente, l'initcode massimo è MAX_CODE_SIZE: 24576 (EIP-170) e il nuovo initcode massimo è (MAX_INITCODE_SIZE = 2 * MAX_CODE_SIZE = 49152), il che significa che la dimensione del contratto può essere raddoppiata e gli sviluppatori di contratti possono distribuire funzioni più complete. (Un codice di contratto troppo grande comporterà un'implementazione non riuscita. PS: il progetto L2 è stato anche parzialmente modificato per supportare un limite di dimensione del contratto più elevato)
Inoltre, viene introdotta una tariffa gas di 2 per ogni blocco di codice init da 32 byte per rappresentare il costo dell'analisi jumpdest. Perché durante la creazione del contratto, il client deve eseguire l'analisi jumpdest sull'initcode prima dell'esecuzione. Il lavoro di esecuzione aumenta in modo lineare con la dimensione dell'initcode.
Ciò significa che il costo dell'initcode aumenterà di 0,0625 gas per byte e il costo del gas per l'implementazione del contratto aumenterà leggermente.
beneficio:
La tariffa del gas per l'implementazione del contratto è leggermente aumentata, ma la dimensione del contratto può essere raddoppiata e gli sviluppatori del contratto possono scrivere codici funzionali più completi.
EIP-4895: Prelievi dalla catena di beacon
Il contenuto principale è determinare il processo principale di prelievo dei fondi dalla beacon chain all'EVM. Dopo il completamento della distribuzione, verrà attivata la funzione di prelievo dello staking della beacon chain di Ethereum.
beneficio:
Attiva la funzione di prelievo dello staking della beacon chain di Ethereum.
EIP-3540: Formato oggetto EVM (EOF) v1
Questo EIP comporta modifiche sostanziali e non è necessariamente incluso nell'ammodernamento di Shanghai.
Il formato descritto in questo EIP introduce un formato semplice ed estensibile e introduce la convalida. Si ottiene la separazione tra codice contrattuale e dati.
Il nuovo formato dell'oggetto EVM è: magic, version, (section_kind, section_size)+, 0,
beneficio:
Il controllo delle versioni facilita l'introduzione o l'eliminazione di nuove funzionalità (ad esempio, l'introduzione dell'astrazione degli account).
La separazione del codice contrattuale e dei dati è vantaggiosa per la verifica L2 (op) e riduce i costi del gas dei validatori L2;
La separazione tra codice contrattuale e dati semplifica inoltre il funzionamento degli strumenti di analisi dei dati on-chain.
EIP-3670: EOF — Verifica del codice
Questo EIP non è necessariamente incluso nell'aggiornamento di Shanghai e la verifica del codice viene introdotta quando si creano contratti insieme a EIP-3540. Rifiutare contratti con istruzioni non definite.
beneficio:
Durante la creazione di un contratto, è possibile introdurre la verifica del codice
