Banner Logo Contract Library

Free decompilation and security analysis service by Dedaub

2474 69974 56 29159 32 188665 26846 160 35861
99185 7200 124 32144 270 297891
151631 846507 3847

A Six-Year-Old Solc Mystery

A Six-Year-Old Solc Mystery Image

A few weeks ago, we were approached with a request to work on a project unlike any we've had before.

Cyrus Adkisson is the creator of Etheria, a very early Ethereum app that programmatically generates "tiles" in a finite geometric world. Etheria has a strong claim to being the first NFT project, ever! It was first presented at DEVCON1 and has been around since October 2015--six years and counting. It is as much Ethereum "history" as can get.

Cyrus heard of us as bytecode and decompilation experts. His request was simple: try to reproduce the 6-yr old deployed bytecode of Etheria from the available sources. This is a goal of no small importance: the Etheria tiles are priced in the six digits and the history of the project can only be strengthened by tying the human-readable source to the long-running binary code.

Easy, right? Just compile with a couple of different versions and settings until the bytecode matches. Heck, etherscan verifies contracts automatically, why would this be hard?

Maybe for the simple fact that Cyrus had been desperately trying to get matching bytecode from the sources, to no avail! Christian Reitwiessner, the creator of Solidity and solc, had been consulting. Yet no straightforward solution had been in sight, after much, much effort.

To see why, consider:

If you want to try your hand at this, now is a good time to pause reading. It's probably safe to say that after a few hours you will be close to convinced that this is simply impossible. Too many unknowns, too much unpredictability, produced code that is tantalizingly close but seemingly never the same as the deployed code!