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!

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!

koth

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!

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!