Over the past year, I developed a Blockchain “Stamp Rally” -- a treasure hunt style game popular in Japan and often held by train companies. I started the project a year ago as a way to practice writing Solidity, draw some artwork, and make my coworkers laugh. It’s now the basis of a Blockchain build-along exercise I’ve been running at Women Who Code events in Tokyo and abroad.
Women Who Code (WWC) is an international, non-profit organization promoting women in software engineering, and members range from industry veterans to those writing their very first “Hello World”. One of my goals is to empower more women to explore the technical side of blockchain, and help reduce the gender gap in the blockchain space and the wider tech industry overall.
Here’s how the Blockchain Stamp Rally works: instead of visiting physical locations to collect stamps, players enter a passphrase. The game stores a solution table of hashed passphrases and corresponding image URLS. To collect a stamp, the user calls a method with the passphrase, which is hashed and compared to the solution table. If the user knows the correct passphrase, she can then retrieve the image URL for the “stamp” picture.
I wrote a smart contract in Solidity on nights and weekends, using Truffle and ganache-cli for initial testing. Once that was stable, it was time to add a frontend. I leveraged the same Vue.js and Material design that we used at work, and created original artwork. Through the challenges of figuring out Web3 tutorials, I noticed a tendency towards overcomplication. The basic requirements of using Web3 are
- Set up a Web3 provider, i.e. connect to the Wallet software
- Connect to the smart contract
- Call or Send to the Ethereum blockchain
It’s important to not overwhelm beginners with too many details. There are already many layers of knowledge required to understand Ethereum DApps, from the underlying protocol, to Solidity (or Vyper, LLL, Serpent), to Wallet software, to Web3 and whatever additional frontend you’re building. This landscape is further complicated by beta software, changing toolsets, and a lack of documentation. My goal was to distill DApp development to its essentials, and sweeten it with some creative whimsy.
I gave a practice of this talk at my local chapter of WWC in Tokyo. Big thanks to Jeff and William who helped facilitate. The audience was mostly new to blockchain, and we lead them through a few key steps:
- Installing MetaMask
- Getting Rinkeby Testnet Ethereum from a faucet
- Compiling a smart contract using the Remix IDE, including writing a function modifier on their own
I chose these tasks because they allow self-sufficiency when going forward, and provided a list of resources for those who wanted to study further. The trial run not only showed me where I could clarify my demo, but also gave us an overall feeling of accomplishment when participants started playing the game and signing their own transactions in MetaMask. One woman even asked about incorporating my open-sourced code into a real stamp rally in Kanagawa prefecture!
The final presentation was WWC Connect Asia in Singapore on August 31. With only 50 minutes, and two helpful volunteers (who were brand new to Blockchain but fast learners), the stakes were higher, but almost everyone in the room was able to collect their own stamp on Rinkeby, and I got lots of positive feedback from attendees.
The overall conference was fantastic, and I learned about topics such as scaling software teams, secure coding, making art in CSS, and the Libra blockchain. One participant noted “I can tell that this was a successful conference because people take pictures together, not just of slides.” As an American who now resides in Tokyo, it was also great to network with women around Asia and learn about their unique experiences in the software industry.
If you’re curious about trying the tutorial yourself, you can follow the build-along branch on the GitHub page. I also presented this workshop to WWC NYC in October, as well as a more advanced version at DevCon in Osaka. I'll share a video recording of the DevCon talk when available.