Wander Coin: an ERC721 Journey

Dekan Brown
Odyssy
Published in
5 min readJan 11, 2019

During Blockchain Day at Denver Startup Week (DSW), everyone from Odyssy was in town and wanted to hack a little on some of the ideas we had been spit-balling over the previous weeks. One of the things that always comes up is adoption by new users and how to onboard users that are new to Web 3. We saw the current major hurdles for adoption as:

  • Complicated UX/UI because of the nature of blockchain transactions (slow, need for gas, etc.)
  • Obtuse use cases that are hard for new web3 users to wrap their heads around. (prediction markets, TCRs, decentralized exchanges, etc.)
  • Fiat to Crypto on ramp

One thing we decided is we did not want to abstract away all web3 interactions, but instead, wanted a way for users to just dip their toes in (That means dealing with Metamask and gas fees). We felt that, although in many ways a paradigm shift, it really is not that complicated. We decided to try and start with a simple, fun, ‘toy’ app that would be engaging to a new user and possibly incentivize that user to teach others through upstream reciprocity. Because of the nomenclature of ‘gas’ used to pay miners in the Ethereum blockchain for transactions we thought that something traveling and with a gas tank would be an interesting visualization. We landed on a traveling journal, inspired by the art project, 1000 journals.

Our Mission

Our initial idea was to have a single ‘coin’ that was able to travel through a chain of transactions represented on a map with a gas tank to help fuel each new transaction. It should be easy to use, visually appealing, and interactive. We also wanted modern browsers to be able to interact with the app with or without Metamask installed. We wanted a faucet mechanic for new users to skip the headache of fiat to crypto conversions.

The Journey

After our initial napkin design session during happy hour after DSW, we then got to work over the weekend. We decided on our tech stack and mocked up the initial web interface and contracts to move the idea toward a prototype.

We did some user testing with people at Denver Startup Week and EthSF. With those tests it became obvious that the idea was too rigid. Our first deployments of the coin would land, and die, in someone’s wallet, stopping the Wander Coin experiment in its tracks. This was due to a still too complicated UI and the fact there was only a single coin. Also, when we deployed to testnet we realized that good UX to deal with long transaction running times was going to be key, becoming even more important on mainnet.

So we scrapped our initial attempt and started anew. We decided to switch to an Open Zeppelin Erc721 digital asset contract so it could be much more flexible with multiple coins being able to be launched. This addressed the rigidness of the single coin model. This also allowed us to add some metadata to the erc721 contract and to the transactions. We wanted to keep the infrastructure fairly light with the app primarily running in the client without a centralized database. We decided to store metadata in a serverless JSON store that could easily be transferred to a distributed solution, like IPFS, when the time came.

The slow transaction times and the UX/UI for that was another big issue. This stemmed the idea of the Blockchain Processor component. We wanted to have an unintuitive way to tell users of past and pending transactions. Also, if they left the app during a transaction, they would have a way to check the status.

For the faucet mechanic, we decided to go with the gas tank idea to fuel new user transactions. Basically any user can donate some Eth into the gas tank and any new transaction would forward just enough gas to send the token again. Gas tank would have a full point where no more gas could be donated and the forward amount would be dynamic depending on network status and safe low gas prices. More on the issues and problems with this later.

You can check out the app on Rinkeby here https://wandercoin.odyssy.io/

Next steps

This was a good r&d project for us but there are a few other things we would like to add. Ability to request a token, anon map view, a full journal view, better mobile support, email notifications, google location async bug, to name a few.

Things that worked well

  • Blockchain Processor: this along with a better flow of user messaging around transactions that are sent, pending, and completed. This works much better now.
  • Interface: Interface is clean and easy to use with a maps integration.
  • Icon generator: for new tokens we made a simple Icon generator that would visually differentiate one token from the other.
  • Multiple tokens: the ability to launch more tokens with more metadata associated added the missing flexibility and adds purpose to the individual traveling tokens.

Things that do not work so well

  • Transaction, bc processor: Although this works well there is some area for improvement. We are using local storage to store transactions, which could be cleared by the user, and could still have better notifications on successful completion.
  • Slow load times: Querying the contract is slow and loading all the metadata from the json store is also slow. Scaling this approach would need another layer of browser caching and quicker query results.
  • Gas tank faucet mechanic: The current gas tank is an interesting idea and works great in testnet but is susceptible to sybil attacks on mainnet. A different faucet mechanic will be needed to address new user adoption and fiat/crypto conversions.

Possible real world applications

Although this project was mainly R&D for us and a toy use case it could be tweaked to be more useful in real world applications. We have seen potential for:

  • Supply Chain
  • Delivery Validation
  • Proof of Custodianship
  • Travel Journal
  • Walking Tours
  • Scavenger Hunt

--

--