Hack a Month: March
Bad news: I missed my hack a month goal for February. It turned out to be an incredibly hectic month; neither my last minute flight to Paris, nor me moving across the US were the most dramatic event of those long four weeks.
Good news: I’m not giving up, in fact I’m returning with a renewed energy. Before I get to that, I’ll mention the one consolation of February: I was able to open source Wei Watchers at work. Wei Watchers is an application to turn Ethereum logs and account balance changes into push notifications for external applications. For the unintiated, “Wei” are the lowest denomination of value in Ethereum, name after Wei Dai.
The Hack: Implement Ethereum Improvement Proposal 55’s checksums in the Eth gem. Ethereum addresses didn’t have checksums built in when they launched. Instead of making an entirely new address format, EIP55 cleverly takes advantage of the casing ambiguity of letters. The checksum is marked with upper and lowercase letters, allowing existing addresses to easily be extended to include a checksum. The approach isn’t perfect though.
It is still possible(1 in 16,384) to generate an address whose checksum is all uppercase or all lowercase letters, at which point the checksum is unidentifiable. This imperfection offers an interesting window into the differences between the Ethereum community and the Bitcoin community. Pieter Wuille recently introduced a new address format for Bitcoin, Bech32, which builds on top of the already controversial Segregated Witness proposal. (By the way, needlessly controversial, SegWit is much needed.)
Last night I attended a talk where Pieter explained the work he’d put into designing this new address. In addition to pulling from years of academic research, he spent thousands of years of CPU time crunching numbers on the best possible checksum codes, and designed a whole new base 32 character set. To be completely honest I had trouble following along with a bit of the talk, but one early example of thoughtfulness was that they picked base32 becauase it was 2 to the power of 5 and there is already a large body of academic work about efficiently detecting errors on prime numbers of bits. Contrast this with Vitalik’s initial proposal for EIP55 where he mixes up bits and bytes, and you get a feeling for the difference between Bitcoin and Ethereum leadership.
To be clear, I don’t think Vitalik’s slip up is a bad one. It’s easy to do, I’m sure I’ve done it. If anything I think the response from the community, and its ability to deliver an actual solution speaks wonders of Ethereum and its leadership. Pieter along with a select few working on Bitcoin Core are nothing short of 1337, as the kids would say, but as a result their development process is very exclusive. This a, if not the, major pain point leading to a lot of Bitcoin’s political infighting. Will Ethereum have these same problems when they reach a similarly large market cap? It’s impossible to say, but the different big parties are playing nicely so far. There’s no single defining factor that distinguishes the Ethereum and Bitcoin communities, but inclusiveness seems crucial for a global decentralized network.