[ad_1]
tl; dott
- EELS è un’implementazione di riferimento del livello di esecuzione in Python.
- È aggiornato con mainnet.
- Completa i test e supera quelli esistenti.
- Di seguito è riportato un esempio di EIP implementato in EELS.
introduzione
Dopo più di un anno di sviluppo, siamo lieti di presentare pubblicamente il Specifiche del livello di esecuzione di Ethereum (affettuosamente noto come EELS.) EELS è un’implementazione di riferimento Python dei componenti principali di un client di esecuzione Ethereum incentrato su leggibilità e chiarezza. Inteso come successore spirituale del Carta gialla è più intuitivo per i programmatori e aggiornato con i fork post-unione, EELS può compilare ed eseguire test di stato, seguire la rete principale1ed è il luogo ideale per prototipare nuovi EIP.
EELS fornisce istantanee complete del protocollo ad ogni fork, compresi quelli futuri, rendendolo molto più semplice da seguire BEI (che propongono solo modifiche) e client di produzione (che spesso mescolano più fork nello stesso percorso di codice).
Storia
A partire dal 2021, come progetto del team Quilt di ConsenSys e della Fondazione Ethereum, il eth1.0-spec (come era noto allora) fu ispirato dalla pura frustrazione di dover decifrare la criptica notazione del Libro Giallo (Figura 1) per comprendere il comportamento specifico di un’istruzione EVM.
Basandosi sul successo Specifica del livello di consensoabbiamo deciso di creare una specifica eseguibile simile per il livello di esecuzione.
Presente
Oggi, l’EELS è consumabile come a repository Python tradizionale e come documentazione resa. È ancora un po’ approssimativo e non fornisce molto in termini di annotazioni o spiegazioni in inglese su ciò che fanno i vari pezzi, ma arriveranno con il tempo.
È solo Python
Si spera che un confronto fianco a fianco tra il Libro Giallo e il codice equivalente dell’EELS possa mostrare perché l’EELS ne costituisce un prezioso complemento:
Mentre figura 2 potrebbe essere comprensibile agli accademici, Figura 3 è indiscutibilmente più naturale per i programmatori.
Ecco un video procedura dettagliata per aggiungere una semplice istruzione EVM se questo è il tuo genere.
Prove di scrittura
Vale la pena ripeterlo: EELS è semplicemente Python normale. Può essere testato come qualsiasi altra libreria Python! Oltre all’intero ethereum/test suite, abbiamo anche una selezione di pytest test.
Con un piccolo aiuto da test sulle specifiche di esecuzionetutti i test scritti per EELS possono essere applicati anche ai clienti di produzione!2
Mostrare le differenze
Avere istantanee su ciascun fork è ottimo per uno sviluppatore di contratti intelligenti che interviene per vedere le specifiche di come funziona un’istruzione EVM, ma non è molto utile per gli stessi sviluppatori client. Per loro, EELS può visualizzare le differenze tra le forcelle:
Un esempio di EIP
EIP-6780 è il primo EIP ad essere ottenuto un’implementazione dell’EELS fornito dall’autore, Balletto Guillaume! Diamo un’occhiata.
Per prima cosa introduciamo a contratti_creati variabile all’EVM con ambito a livello di transazione:
@dataclass class Environment: caller: Address block_hashes: List[Hash32] origin: Address coinbase: Address number: Uint base_fee_per_gas: Uint gas_limit: Uint gas_price: Uint time: U256 prev_randao: Bytes32 state: State chain_id: U64 + created_contracts: Set[Address]
In secondo luogo, notiamo quali contratti sono stati creati in ciascuna transazione:
+ evm.env.created_contracts.add(contract_address)
Infine modifichiamo auto distruzione quindi funziona solo per i contratti indicati in contratti_creati:
- # register account for deletion - evm.accounts_to_delete.add(originator) - + # Only continue if the contract has been created in the same tx + if originator in evm.env.created_contracts: + + # register account for deletion + evm.accounts_to_delete.add(originator) +
Futuro
Vogliamo che EELS diventi il modo predefinito per specificare i Core EIP, il primo posto in cui gli autori EIP si rivolgono per prototipare le loro proposte e il miglior riferimento possibile su come funziona Ethereum.
Se sei interessato a contribuire o a prototipare il tuo EIP, unisciti a noi su #specifiche canale o prendi un problema dal nostro deposito.
[ad_2]
Source link