
Blockchain infrastruktura
Silius
ERC-4337 bundler za abstrakcijo računov, napisan v Rustu
Izziv
Ethereumov standard ERC-4337 za abstrakcijo računov potrebuje bundlerje: infrastrukturo zunaj verige, ki validira uporabniške operacije, vzdržuje alternativni mempool in jih oddaja na verigo. Zanesljivo poganjanje tega prek številnih omrežij EVM zahteva pomnilniško varno, učinkovito in modularno programsko opremo, ki jo lahko operaterji prilagodijo lastnim postavitvam, namesto monolitne črne skrinjice.
Kaj smo zgradili
Lutra Labs je zgradil Silius, ERC-4337 bundler (za abstrakcijo računov), implementiran v Rustu. Arhitektura je razdeljena na neodvisne komponente — mempool uporabniških operacij, komponento za združevanje (bundling) in strežnik JSON-RPC — pri čemer je vsaka dobavljena kot vnovič uporabna zaboja (crate) za Cargo, tako da lahko operaterji poganjajo le tisto, kar potrebujejo, ali posamezne dele vgradijo v lastne projekte. Silius implementira imenska prostora RPC eth in debug standarda ERC-4337, validira uporabniške operacije prek klica debug_traceCall izvršilnega odjemalca ter vključuje plast P2P na osnovi libp2p/discv5 za medvozliščno širjenje mempoola med bundler vozlišči. Teče proti odjemalcema Geth ali Erigon in je dvojno licenciran pod Apache 2.0 in MIT.
Poudarki
- Modularna zasnova: ločene komponente mempool, bundler in JSON-RPC, vsaka kot vnovič uporabna zaboja (crate) v Rustu
- Implementira vstopno točko (entry point) ERC-4337 v0.6.0 ter imenska prostora RPC eth/debug
- Preizkušen na 17 konfiguracijah omrežij EVM, vključno z Ethereum, Polygon, Optimism, Arbitrum, Base, BSC, Linea, Avalanche in Blast (poleg testnetov)
- Širjenje mempoola P2P, zgrajeno na libp2p in odkrivanju discv5
- Teče proti odjemalcema Geth ali Erigon prek debug_traceCall za validacijo uporabniških operacij
- V CI poganja uradne teste specifikacije bundlerja eth-infinitism; ponuja izvorne in Docker poti postavitve
Tehnološki sklad
- Rust
- Ethereum
- ERC-4337
- EVM
- libp2p
- discv5
- revm
- alloy / ethers-rs
- gRPC
- JSON-RPC
- Docker