So my contract with doublethink.co is ending, at least in its current form. Our most consequent codebase that cross-compiles the c++ implementation of Ethereum on various platforms is now in a reasonably maintainable/extensible state. Bob will now be driving all remaining tweaks to get all sorts of great architectures going! I will likely step in here and there if there are more substantial chunks of code to be written, as well as help with any issues/shortcomings of the existing code.
Bob is also actively working with the “upstream” dev team now, and trying to adapt/fix their codebase so that we don’t need all these hacks. He’s so far managed to get some good PRs merged (for instance this one and that one), so it’s quite encouraging for the future. Ideally our own codebase would shrink over time as its content becomes configuration knobs in the canonical implementation.
Anyway, I look forward to seeing all the cool devices that will soon be able to run Ethereum 🙂 My fridge just can’t wait to order its own milk anymore…
We are still working on 2 fronts in parallel, the
webthree (C++) implementation (formerly known as
cpp-ethereum) and the
go-ethereum (Golang) one.
Block synchronization problem
Not much progress on that front beside confirming an issue that seems to occur with ARM builds regarding block synchronization (see previous post). It seems other people have reported the same issue and hopefully the devs will figure it out soon.
LES sub-protocol (light client)
We are also waiting for the LES sub-protocol to be finished, which according to the latest update (see “Light client/mobile” section) is making good progress.
A lot of work has been put into cross-compiling the C++ implementation, and after a lot of sweat I finally produced a binary to test out! Unfortunately it results in a good o’ segfault for the moment. I have informed the devs of it and am waiting for their feedback. It may be an issue with the CryptoPP library, which is actually due for removal (see Gavin’s comment on the matter).
We are making the process of producing this binary open for anyone to try out (see our Github repo).
There exists a Dockerfile that can be used as basis, although it is not finalized yet. Still, a basic Ubuntu 14.04 image to which the packages listed in the Dockerfile are added should provide the right environment to run the scripts above.
I have also spent some time on improving upon the devs’ representation of the various dependencies involved in building
eth. I started from the original DOT file:
and added information I gathered from compiling from source myself as well as various comments from the devs:
which results in
It is still a work-in-progress but we will hopefully have a good overview of all these dependencies soon.
Stay tune for more progress!