Who doesn't love collecting stickers?!? StickerChain was inspired to create a method of collecting stickers/badges on the blockchain by taking a different approach with Hedera Hashgraph and transactions.
What it does
StickerChain allows companies, conferences, events, and individuals to create their own unique event stickers/badges that have value and can be distributed to people throughout decentralized transactions in the blockchain using Hedera.
After the user creates an image, they are required to upload their sticker art to our web server, which will give an image hash that corresponds to the uploaded asset. The user needs to copy the generated hash and clone our public repository to make transactions to the blockchain with Hedera's JS SDK and Node.js. After writing a command to send the transaction (Ex: "node index.js 0.0.27 IMGHASH"), the image hash is sent along with a StickerChain identifier in the memo field of the Hedera transaction to make the identification of the sticker.
When a user queries for a sticker collection, StickerChain will only look for those transactions that contain our identifier on the memo to provide the user with the collection of assets.
How I built it
StickerChain functions with 3 primary services.
1) Command Line application with Hedera's JS SDK and Node.js:
- Our Command-Line application, available in our public repository, is how we are able to integrate the blockchain aspect of StickerChain.
2) Web application:
- Our Web application is how we can generate the image hashes, handle the upload of stickers/badges, provide the collections, and transactions/
We built the web application with Python (Flask), and we hosted it on Google Cloud to provide the usage of Cloud Storage. The web application communicates with Hedera using Kabuto, a fast REST API that provides all the transactions and data to StickerChain.
3) Kabuto REST API:
- By using the Kabuto REST API, we're able to provide all the transactions happening in Hedera's testnet and narrow down only the ones that have the StickerChain identifier.
We accessed the API using the requests module in Python. Every time the website was accessed, the Kabuto API handled the job of displaying the data.
Challenges I ran into
Learning blockchain from zero to creating an application in 24 hours was very challenging. Since we are used to the traditional centralized resources, we had to make a lot of modifications to our project in order to make sure we were focusing on a decentralized platform. One of the challenges was trying to keep the image resource decentralized by using hashes and providing availability to all the sticker arts that were uploaded. In addition, We had some problems with the Hedera API because we were accessing some deprecated modifiers and functions, so we had to figure out other ways of achieving the same result.
Accomplishments that I'm proud of
This is our first project that uses blockchain. Therefore, we are very proud of creating a full application that features a website with file upload, API access, and a Command-Line application in 24 hours!!! We are surprised by the amount of new knowledge gained from learning the blockchain and participating in Hedera's workshops.
What I learned
We learned how to interact with the blockchain using Hedera, Node.js, command-line, blockchain transactions, and Kabuto API requests. We also learned a lot about the infrastructure of the blockchain and its decentralized manner.