It's interop week!
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!
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).
All this made us sync nicely with the other clients also conforming to the same spec - more on that in the interop debriefing.
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.
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, 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!
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!
- 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.
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
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