divergence_art treasure hunt

It all started with a tweet…

This tweet leads to this page, which is a Q&A for @divergence_art. He talks about his PROOF OF {ART}WORK, which is really cool and worth checking out. There is no real clues for the treasure hunt on that page or directions of where to start, other than stating its “on-chain”. So not sure where to start I went to the OpenSea collection page for the artwork. I looked around the the artwork for quite some time then decided to explore the contract.

Nothing too interesting in the contract. So I decided to look at the deployer addresses history. The last transaction in that addresses history is to itself and reveals and interesting development.

It provides some information on the puzzle and how to claim. At the end it has a clue which reads: “Clue: you’ve read to the base of this “contract”, perhaps do the same for 0x47ccad36ae77ab963746c8db8ad301d48235ce81.”

After having already looked at that contract looking for the next step, I wasn’t too sure of where to go, but I wanted to do more exploring on how to render these images anyways. So I decided to look at the baseTokenURI() function to see where the metadata is stored and maybe find some clues as to the generation. That function returns “https://proofofwork.art/metadata/json/rendererTxhash/0x07f7e588d664e32ed73ea6359d5cec11e093eb9e1838695e1f955ae0a1d09c88/token”

Now that is interesting…. rendererTxHash. Not sure what that means, but I'm looking for how to render these images and now I have something I can search. Etherscan reveals another clue here along with the source code for the Golang code to generate the images.

Now we have to code to generate the images, now to figure out the token_ids that are missing so we can generate the missing ones. Since this txHash is from another address not used in the previous steps, I decided to investigate it a bit further since it also has called safeMint so many times. Going back to some of the first transactions, there is more SELF tx here.

They all have 0 value and carry various amounts of data. We have found the missing piece.

Unfortunately my first attempt was to concatenate all the data which resulted in a piece containing all the pieces.

Which is still actually really cool to me and I want it. I posted this thinking I had soulved it…. but turns out I was a little naïve.

After seeing that wasn’t correct, I instantly realized I needed to use process of elimination to find the missing piece. The 2 missing pieces were actually these.

This treasure hunt was a lot of fun and the generative pieces are really awesome to make and look at.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store