Nimbus Status Update - Pre-interop!
It's interop week! Before we wrap it up and let you know about the progress made there in a separate post, let's cover Nimbus' progress in the past fortnight!
It's interop week!
The #Ethereum 2.0 #Interop Lock-in GeneralAssembly0 is off to a good start. pic.twitter.com/EffKaLLhpw
— Joseph Delong (@josephdelong) September 7, 2019
Before we wrap it up and let you know about the progress made there in a separate post, and before all of Status reconvenes in Istanbul to catch up, strategize, relax, and learn, let's cover Nimbus' progress in the past fortnight!
Spec status
We are now compatible with 0.8.3. There might be an artifact or two in terms of variable/function names and/or locations for where they're processed, but all in all we produce outputs from inputs that match everyone else. This is also verified by our compliance with official tests (more here and here). At the same time, we're working on a 100x (yes, 100 times!) speed improvement on BeaconState parsing (PR).
Exit mechanics are in progress as well, meaning the validator rewards, penalties, slashings and join/leave actions will be functional in the testnet soon too.
All this made us sync nicely with the other clients also conforming to the same spec - more on that in the interop debriefing.
Native Nim-libp2p
As announced recently, the Nimbus team got a grant to implement a Nim-native version of libp2p.
This would help us shed the Go daemon and also develop a pluggable library for other projects to use - including the browser, given that Nim can compile to it. Our newest team member Dmitriy is already making some good progress there - keep an eye on it through this evolving PR!
Note that once it matures some more, the new libp2p implementation will likely become its own repo to be standalone and you'll be able to pull it into your own projects easily.
Metrics
Again, in preparation for interop, more intense logging was needed. So we upped our metrics game by counting almost everything one might care about and cleaning the terminal output. The former uses nim-metrics for internal gauges and counters, which means you can hook it into Prometheus and watch the charts dance (StatsD and Carbon coming soon!).
Nimplay
Nimplay, the nim-based DSL for writing smart contracts, spearheaded by Vyper's very own Jacques, is maturing and turning into a viable proof of concept. With maturity come issues, however, and Jacques could use some help in fleshing those out. We'll consider bountying those issues that generate interest, and the sooner we get those wrapped up the sooner we can let the language loose and you can try your hand at Wasm smart contract development!
In the meantime, try out the Nimplay-powered wasm-deployed version of the King of the Hill smart contract!
Cross-client testnets
This section is an Easter Egg for those who like to read the whole thing - if you're interested in running your own multi-client eth2 testnet, Jacek has some simple instructions for you! Follow the thread or just look here!
Over at the interop meetup we're having fun running lots of #eth2 clients.. want to give it a shot? Easy, hop over to https://t.co/paN1teAW7q pic.twitter.com/unCrwCOXRB
— Jacek Sieka (@jcksie) September 11, 2019
Eth 1
- we have transactions up and running now in the Ethereum 1x edition of Nimbus: PR.
- we're building out the full test suite for Ethereum 1x as that side of Nimbus slowly matures: PR.
- we're almost done with our Nim-native eth2 deposit ceremony that'll be used by Nimbus as automated network starter, and should also be beneficial for interoperability with others: PR. This does not have much to do with Thundercloud which is an independent JavaScript-based starter script for Ganache and which provides a different set of conditions, most notably transaction delays, partial deploys, and key generation from Eth2 to Eth1.
Finally, here are some teasers of progress at the interop lockin!
#Lighthouse and @ethnimbus just finalized a #Eth2 epoch!
— Paul Hauner (@paulhauner) September 9, 2019
As far as I know, this is the first instance of finality on a multi-client Eth2 testnet!
Thanks @protolambda, @dannyryan for the help. Great work on the networking stack @AgeManning and @jcksie!#Eth2 is coming! pic.twitter.com/vC5m9OuaT8
Artemis just achieved #interop with @ethnimbus pic.twitter.com/JWkIg3XinW
— Joseph Delong (@josephdelong) September 10, 2019
Hello art-house-bus-star.
— Jonny ☠️ Rhea (@JonnyRhea) September 11, 2019
We have an #interop 4-way@PegaSysEng @ChainSafeth @sigp_io @ethnimbus pic.twitter.com/9lHw7dwslB
Late last night, for what I think is the first time ever, three different clients finalized some epochs in an #eth2 testnet! #Lighthouse, @ethnimbus
— brian (@bmc_) September 10, 2019
, and @trinity_client
were each validating blocks, and together they finalized 12 epochs before things started falling apart. pic.twitter.com/8MtFIDJ8dP
Fully autonomous #eth2 beacon chain between @ethnimbus and #lighthouse on a pair of raspberries found in the Canadian wilderness! pic.twitter.com/Xkps1Yu3DS
— Jacek Sieka (@jcksie) September 11, 2019