De senaste veckorna har jag inte delat med mig av många uppdateringar om @ethrex_client, vår @class_lambda @ethereum L1-exekveringsklient och ZK L2-stack. Följ gärna @ethrex_client för att lära dig mer om allt vi gör. I L1 kör vi redan framgångsrikt Ethereum-testnät och i L2 kör vi testnät för de identitets- och DeFi-applikationer vi bygger för och med partners. Jag tror ärligt talat att vi är nära att ha den enklaste kodbasen och stacken för att underhålla, uppgradera och modifiera i Ethereum. Vi skulle inte ha kunnat nå denna punkt utan att kontrollera koden för @NethermindEth och @go_ethereum Tillsammans med mina @rj_aligned, @fran_aligned från @alignedlayer och @SantiDiPaolo, @AguuMg från @PolFinance_ är vi på väg att släppa ett av de första whitepapers om en RWA L2s som kommer att drivas av Ethrex och @alignedlayer. Vi har många fler på gång, men jag är särskilt exalterad över den här eftersom den kommer att överbrygga ett mycket intressant användningsfall från TradFi och DeFi. Vi fick som rådgivare och partners några av de starkaste teamen i branschen. Jag är ivrig att dela med mig mer om det här projektet. Uppdateringar L1 Vi har arbetat på många fronter. Vi har förbättrat observerbarheten med Grafana, tagit bort oanvända funktioner för att förenkla kodbasen och lagt till stöd för slutpunkten "engine_getBlobsV1". Ändringslogg: feat(l1): "engine_getBlobsV1" slutpunkt för begäran (#3636) Chore(L1): Ta bort redb-stöd (#4103) Refactor(l1): Ta bort onödiga användningar från blockkedjelådan (#4110) fix(l1): Tog bort klon för onödigt tillstånd (#4117) fix(l1): Använd rätt Docker-avbildning för att starta localnets. (#4131) chore(l1): Lägg till blocktid på Grafana-instrumentpanelen. (#4112) fix(l1): subtrahera DB-lästider från blockkörning. (#4051) CHORE(L1): Metriska förbättringar. (#4118) Chore(levm): Förbättra organisationen av nya Levm Test Runner (#3958) L2 I linje med vår minimalistiska metod tog vi bort en betydande mängd kod från oanvända L2-databaser. Vi fortsätter att förenkla kodbasen och eliminera död kod. Dessutom stabiliserades CI efter att ha åtgärdat en bugg relaterad till gaspriserna. Vi jämför L2 på två fronter: - Underhållskostnad för L2-nätverk: Vi finjusterar L2-parametrar genom att simulera olika scenarier med olika transaktionsarbetsbelastningar och nätverkskonfigurationer. Målet är att fastställa den ungefärliga kostnaden för underhållsprovision per transaktion som användarna måste bära för att nätverket ska uppnå självförsörjning. - Benchmarks för generering av isolerade block för exekvering: Med hjälp av ethrex-replay-verktyget bevisar vi block från Hoodi, Sepolia och Mainnet för att identifiera potentiella buggar i kodbasen och mäta vår bevisares prestanda. På ethrex-replay-sidan är verktyget tillräckligt stabilt, och vi har en infrastruktur för att regelbundet spela upp offentliga nätverks blockkörningar och bevis. Vi tar nu itu med buggar som uppstod under dessa körningar. Vissa buggar härrör från logiska fel i ethrex, medan andra är relaterade till minnesanvändning. De förstnämnda är till största delen lösta, och vi gör betydande framsteg när det gäller de senare. Vi har också börjat titta på @ziskvm och @0xLita ZKVM:er för potentiell kortsiktig integration. Vi stöder redan @RiscZero och @SuccinctLabs. Den här veckan slog vi ihop en PR som stabiliserar ethrex-replay, vilket gör det möjligt för oss att identifiera och lösa två buggar i ethrex. Dessa korrigeringar har också slagits samman. Den första buggen involverade ett gränsfall i vår ecrecover-förkompilering, där en specifik indata gjorde att körningen misslyckades på grund av ett gasmatchningsfel. Efter noggrann undersökning spårade vi problemet till det officiella SP1-patchade secp256k1-biblioteket. Vi löste det genom att migrera till SP1-patchat k256-bibliotek. Det andra felet härrörde från ett felaktigt antagande om bitlängden för en usize-typ i en del av kodbasen. För att förhindra liknande problem genomförde vi en omfattande granskning av kodbasen och skickade in flera PR:er för att begränsa usize-användningen till två specifika fall: indexering och scenarier som begränsas av ett API eller bibliotek. Dessutom lägger vi till stöd för att köra EF-testsviterna, inklusive blockkedje- och tillståndstester, med SP1 för att förbättra vår testtäckning och säkerställa robusthet i olika körningsscenarier. När dessa buggar har åtgärdats uppstår inte längre problemen. Vi spelar framgångsrikt upp nya Hoodi- och Sepolia-block, och Mainnet-blockkörningar har förbättrats avsevärt, med SP1-exekveringsfrekvensen som ökar från 1/10 till 6/10. De här framstegen banar väg för att ta itu med våra återstående utmaningar med de senaste blockrepriserna: minnesfel vid blockkörning i SP1 zkVM och prestandaproblem vid körning och bevisning. För att åtgärda dessa har vi ställt in verktygets låda för minnesprofilering med hjälp av Jemalloc-lådan. Vi arbetar också med att stödja uppspelning av historiska block. En MVP för den här funktionen finns i ett utkast till PR och fungerar bra med ethrex-, reth- och geth-klienter men stöter på problem med nethermind-klienter. Innan vi släpper den första versionen strävar vi efter att optimera RPC-förfrågningar för att säkerställa korrekta nedladdningar av blockdata, även när vi använder gratis RPC-leverantörer, för de flesta block. Förbättringar av DevEx: - Vi har åtgärdat våra binära byggen så att de inte längre kräver CUDA som standardberoende på vissa operativsystem och arkitekturer. Den här korrigeringen ingår i den senaste versionen. - En PR har skickats in för att uppdatera ethrex version i rex, vilket säkerställer kompatibilitet med de senaste ändringarna i ethrex L2. - Vi har börjat utveckla en ny flik för ethrex L2-skärmen i utvecklingsmiljöer. På den här fliken visas information som är relevant för utvecklaren, till exempel en lista över omfattande konton och adresserna till L1- och L2-kontrakt. Ändringslogg: - Refactor(L2): Ersatte diff-konstanter för usize-tillstånd. - Reature(L1,L2): Konfigurerad ethrex-replay för minnesprofilering. - Refactor(l1): Tog bort onödig användning av usize i blockkedjelådan (relaterat till buggfixen). - Feature(l1,l2): Lade till nya kommandon till avrättningsvittnet. - Fix(levm): Åtgärdade problem relaterade till 32-bitars arkitektur (relaterade till buggfixen). - Refactor(levm): Uppdaterade ecRecover-implementeringen för att använda K256 istället för SECP256K1 (relaterat till buggfixen). - ci(l1,l2): separerade GPU-byggen och antog x86-64-v2-målet. Föreställning Den här veckan fortsatte vi vårt fokus på cpu-konsumtionen och benchmarks. När det gäller CPU-konsumtion identifierade vi 2 olika fall, ett där blockbyggnad är närvarande och ett annat där det inte är det. Vi prioriterar de som inte bygger block med tanke på att de alltid finns med och påverkar andra insatser (som snap sync). Såvitt vi undersökt är det helt relaterat till p2p. Vi kommer att fortsätta våra ansträngningar på detta område När det gäller benchmarks, efter vår senaste veckas förbättring av modexp-prestandan, fokuserade vi på några upptäckta förbättringar, som codecopy och relaterade operationer samt signextend, mulmod och addmod. Vi kommer att fortsätta vårt fokus på både CPU-förbrukningen och testprestanda som vi identifierade som nästa steg för möjliga förbättringar, som eth-överföringar och andra levm-opcodes.
11,52K