EthereumJS Recap October 2018

Recap for EthereumJS is a bit overdue. September was a bit of a lazy month, so we skipped this one, then there was Devcon4 and I was thinking about broadening the format of posts and not just write down on new releases, which also caused some delay.

This is the first post on medium, following up the last one directly published on Reddit. So what’s happened?

EthereumJS Client: Libp2p and Browser Sync

Don’t want to make this post to opinionated, but for me this was by far the most exciting stuff during the last weeks: Vinay has merged libp2p support in PR #56 and browser support in PR #59 into master of the currently in development ethereumjs-client project.

This allows for setting up an ethereumjs-client node having listeners open for both RLPX and libp2p connections, which then fast-syncs the chain from the existing Ethereum network. With this in place another node can be started in light-sync mode within the browser connecting to that first node via libp2p and storing the chain in the local browser leveldb database.

There has been associated pre-release of the Client you can use for this and there are detailed instructions in the README if you want to try yourself.

Library Releases

We had various releases preparing for Constantinople:

ethereumjs-util v6.0.0 now has a new generateAddress2() function for CREATE2 opcode (EIP-1014) address creation, this release also drops the previously deprecated sha3-named constants and methods.

There were updates on ethereumjs-blockchain with the v3.3.0 and ethereumjs-block with the v2.1.0 release making block processing (validation) ready to work in a Constantinople context.

Furthermore there was a bugfix release v2.3.2 for the merkle-patricia-tree library (bugfix in verify proof, internal variable leak fix). No Constantinople reference, this should nevertheless be mentioned as well. :-)

New Labelling System

We have a new labelling system in place, it looks like this for issues on the VM

This should help contributors and current core developers a lot on judging what issues to pick to work on and keep conversation around issues going.

Talk on EthereumJS and Sharding

I did a talk longer talk about EthereumJS and the Ethereum JavaScript ecosystem in general in a sharded context on our local Vienna Ethereum meetup, if you are interested have a look:

Upcoming Work

Virtual Machine

There has been loads of work on the ethereumjs-vm repo lately and we are closing in for a release with Constantinople support, a reworked StateManager and huge improvements regarding consensus conformance. More on this in the next update, if you want to follow the release process have a look here.

TypeScript

And finally: one big part in our roadmap for the next year respectively the coming months will be a major transition of our libraries to TypeScript. This is to improve type safety and therefor overall security and reliability of the libraries.

We formed a fantastic ad-hoc team at Devcon with François from the Remix team and Chris being the creator of TypeChain joining core dev members to do a reference TypeScript transition of the currently JavaScript based RLP library. There is currently lots of discussion around crafting a fitting toolchain together, you are very welcome to join, so if you are interested head over to the PR #37 in-the-works transition to get an idea about what we are up to.

That’s it folks. Happy buidling and see you next month!