Some random fun with Open Zeppelin's most recent code push to their repo.

A few things were a bit off tonight.

I was working with the VeloLedger contract in remix tonight as I was writing up a totally different contract and using it for reference.  I copied it into remix, changed the imports to point to github, and voila, no compiling for you...

A few things were a bit off tonight.

The VeloLedger smart contract uses Open Zeppelin's Ownable, ERC721Basic, and ERC721 contract libraries as imports for the functionality in the dapp.  If they change, then compiling my contract can be fun to troubleshoot.

First, something changed on the way remix looks for imports.  Luckily, some googling and knowledge of Python imports lead my down the path of changing the order of my imports around.  

Second, I realized they removed ERC721BasicToken.sol and just named it to ERC721Basic.sol.  I was getting a weird import error and finally tracked it down to remix not being able to actually find the contract to import.

Third, they changed their internal functions to have underscores. So if you were using them, you will need to add the underscores to get them to work again.  Pretty simple fix, just for example I was using the "exists()" function and needed to change it to "_exists()".  Funny, the code change happened ~8 hours ago as of me writing this.  Wow, what a crazy time to be developing.

Developing for Ethereum sometimes feels like the video below.  

Changing the tires while driving

Finally, after reworking the contract I was able to compile it.  Funny thing though... I wasn't able to deploy it as remix was giving me a new error:

"This contract does not implement all functions and thus cannot be created."

Well, crap...guess I got a flat. I think I'll need the folks in that video to help me out.

Since, I am not actually working on the VeloLedger contract today, I gave up.  I guess I will need to tackle this another day.  

If you want to see the actual VeloLedger dapp in action though you can check it out here.  I built it primarily for the Consensys Academy final project, and had not intended to touch the thing till early next year as I was planning on writing a new frontend for it with more bells and whistles.  Till then, because the blockchain is immutable, that contract will run till I kill() it.  <– yep that makes no sense.

Hope this helps other dapp developers as they work with ERC721 tokens importing from Open Zeppelin's source.