The cryptocurrency boom is driving finance innovations across the world. Transferring money securely and digitally, which was once the providence of banks and large corporations, can now be done between anyone, anywhere. Countries have already begun to embrace this change - El Salvador, for example, has made Bitcoin a form of legal tender. Small businesses can now take cryptocurrency payments directly from consumers and cut out banks altogether. That being said, crypto is still a boogeyman for many, as scams and horror stories abound. Consumers can’t exactly chargeback their crypto transfers, so how can they be sure that they’re sending their money to a trustworthy address? This problem is further exacerbated for smaller tourism businesses, where most of their customers are going to be new. Currently, large corporations run all-encompassing resorts or cruises that dominate many tourist destinations, where they divert money from the local population. Even with crypto in the picture, these big brands can cultivate much more repute than local businesses. We wanted to create a simple way for small businesses using cryptocurrencies to build trust with consumers.
What it does
BitHolmes takes a public crypto address from the user and uses the BitcoinAbuse API to check it against BitcoinAbuse’s database of reports. If the address has been used in scams, illicit business, or other unsavoury activities, the site will report this back to the user. Even if it hasn't been reported yet, the address is still run through our neural net, which predicts based on transaction history whether it is a scam address or not. The site also allows businesses to generate QR codes that can be displayed at their storefront, allowing customers to validate their address with their smartphone in a few seconds.
How we built it
BitHolmes is built in Python on the Flask web framework. Once we had an MVP and the basic input->API call->report pipeline done, we used Boostrap CSS to polish the site’s appearance, pillow to generate QR codes, Linode to host our site, and TensorFlow to generate our Deep Learning model. We used Google Cloud Platform's resources to train the model as quickly as possible.
Challenges we ran into
Attempting to implement CockroachDB did not go so well- our code didn't like the format of the URI. The APIs we were using to pull training data for the model kept hitting rate limits The training data we did get was formatted poorly and required a lot of work to clean for the model
Accomplishments that we're proud of
We built an MVP in 2 hours, compared to ~8 for our last MVP We also built a DNN model that works pretty reliably with a minimal amount of training data
What we learned
We’ve dealt with a number of APIs and learned how not to post API keys to GitHub. We got to go beyond previous web applications we’ve done and add more complicated and… just better looking styling. We also dove headfirst into database connections and learned a lot about them, even if they didn't work out in the final project.
What's next for BitHolmes
Database integration and classifying reports from users
Getting online learning set up, and having the model train on a continuous stream of transactions