Why?

Showing support for the favorite creator is nothing new. We can see "Support" buttons and Patreon pages all over the place. This is a beautiful phenomenon where relationships between creators and their followers are flourishing and allow both sides to benefit from it. The creators can grow, improving the content quality and the fans are enjoying better and better content. The situation is still far from perfect though because there are always fees and other limits imposed on the creators by the services [1]. How would it look like, if everything could be made simpler without taking control from the creators? Why not utilize already existing and proven solutions like blockchain in order to give both parties even more benefits?

There are already cases where authors go this direction [Mike Shinoda Auctions his First Non-Fungible Token] and as we can see it can be even for the greater cause. For the smaller creators, it could mean building stronger communities (all followers can identify themselves by holding authors tokens) and the fans could also benefit from their support if the tokens could be exchanged for merchandise or grow in value by being a rare collectible.

This is where the idea of Supi kicks in

Supi is meant to bridge the gap between perceivably inaccessible technology and the people who could really benefit from using it. It's an interface that takes care of all the important and hard stuff in the background while presenting the users with only information that they really care for.

How does it work? (The technical stuff)

Due to its simplicity, the app could lead to wider adoption of the Hedera network as many non-technical users could easily start using its features, without the need to dive deep into the details.

Supi utilizes two services from Hedera SDK in order to provide a self-sustainable architecture running on the Hedera network that stores and processes the information required to fulfill token distribution transactions. The services used are Hedera Token Service and Hedera Consensus Service.

Before using the app, the user needs to provide the credentials to their Hedera account (private key, public key, account id). The credentials are stored locally using Browser LocalStorage API after being encrypted using AES encryption. For the time of using the app, the credentials are decrypted using the password provided during the setup phase and stored only in memory.

1 Everything begins with the creator willing to have its own token. He can visit the interface and after specifying a price, name, symbol, and supply, the token will be created with only one click. In the background, there is also a public Hedera Topic created where all interested users can post their requests for the tokens. Additionally, a QR code is generated that contains all the information needed in order to buy the token. This can be easily downloaded as a PNG image and distributed via common social networks.

The QR code contains:

  • token ID
  • topic ID where the requests should be sent
  • author public communication key that allows encrypted communication with the author.
  • token price
  • token supply
  • token name and symbol

2 The user willing to buy the token copies the information into Supi in the fan section, specifies how many tokens he wants to request, and sends the information to the creator via the Hedera Topic specified in the QR code. In order to hear back from the author, the user creates his own private Hedera Topic (secured with a generated key) where only the author can submit information about accepting the token buy request. The message sent to the author in this step contains the number of tokens that the user wants to buy, Hedera Topic ID used to get back to the user, and a private key that allows submitting the messages to that Topic. The information is encrypted using public-key authenticated encryption. On account setup, every user has generated a communication key pair that is used in this step. Knowing the creator's public key, the message can be encrypted using this key and the confidential data about the private user Topic can be kept safe.

3 The creator receives the token request on his topic and decrypts the message using his communication key pair. Knowing all the information contained within the message, he can decide whether he still has tokens to sell left or no. In a common situation, the author responds with confirmation to the private Hedera Topic specified by the user using the private key attached to the encrypted message. He also submits the total amount of HBAR that needs to be transferred for the tokens and an account ID that should receive the transfer.

4 In his interface the user can check for any updates regarding his request. In order to achieve this, the private Hedera Topic is checked for incoming messages. If the creator responded with an OK message, the user transfers the HBAR to the specified account and sends a deposit confirmation back to the main Hedera Topic of the creator along with the transaction ID. Now he only needs to wait for his tokens to arrive.

5 After receiving the transfer confirmation and checking for the validity of the transaction, the creator transfers the agreed amount of tokens to the user. Now both parties are happy as the author can use the funds to improve his content and the user is happy with his new acquisition.

Further ideas

The app is by no means final because there are still many ideas that can be implemented in order to make the experience simpler and more entertaining for the users and creators.

  • the protocol for exchanging the tokens could be further automatized. This would definitely make the experience better but on the other hand, it would require a more complex setup that is against the idea of Supi being as simple as possible.
  • A better token wallet allowing to send and receive the tokens would make the collecting experience more engaging. Currently, it's only a list of the user's tokens.
  • More configuration options for Token creation could be added for the creators so they could create fancy, non-fungible, ultimately collectible tokens (tokens with randomly generated traits, see) that could be even more compelling for the users.

The source code for the app can be found here: Github Repo

It's a CRA based React app that uses Hedera JS SDK and Hedera Mirror Node REST API.

Built With

Share this project:

Updates