Update from 2025: the cryptocurrency boom of 2017 and 2017 and ICOs were an interesting time, huh? It’s not my cup of tea anymore. At the same time, I’d like for this post to stand here as a historical artifact, and encourage you to spend your time on more worthwhile things instead.
Thank you for reading my disclaimer. Please enjoy the following post:
I had the tremendous privilege of speaking about creating sustainable token platforms at TokenSky 2018 in Seoul, Korea. I had a great time presenting some ideas that I’ve come across during my talk. I also encountered a lot of stimulating questions from individuals and companies all interested in enhancing their platform using some kind of blockchain token.
This post builds on those questions and experiences to identify some things you should consider when tokenizing your app. This post consists of six topic:
- Token: What kind of token do you need?
- Purchase: How do users get access to your tokenized platform?
- Wallet: Where are your user tokens stored?
- Smart Contract: Which parts of your app can run on the blockchain?
- Backend: How are you integrating your blockchain app with the rest of your platform?
- Exchange: How can users trade your tokens?
1. Token
First things first. When you create your token, you should be clear on what it represents. Is it a currency users can exchange for goods and services? Or does it represent unique assets users can purchase?
For example, you can replace your in-game currency with a token. A user’s gold coins, formerly stored in a central SQL database, now become something they associate with a sense of ownership.
Customer loyalty programs are similar. Data you used to store on your backend can now be in the hands of your customers. A bonus mile becomes a token mile.
Meanwhile, if your user assets are indivisible—representing individual assets in the real world or in the virtual world—then you should consider representing them as “non-fungible tokens”. A non-fungible token assigns a unique ID to assets. Users can exchange these IDs for other tokens on an open market just like ERC20 tokens. A good example for this is the CryptoKitties marketplace, where users can trade unique, virtual cat avatars.
The advantage with non-fungible tokens is that a customer who owns assets—such as real estate—receives a matching one-to-one token, stored securely on the blockchain. And any user who owns an in-game asset—such as potions in a role-playing game now owns their hard-earned treasures and trade and barter with other players.
2. Token purchase
As soon as a user acquires or purchases your tokens, they can start taking full advantage of your platform. You need to consider how to perfect the user experience. After all, this is the gateway to your blockchain solution. It can define every single interaction that follows.
You want to consider a few questions here:
- How does a user buy your token?
- What payment methods are available?
- Can the token be purchased as a stand-alone? Or is it tied to acquiring something else on your platform?
Depending on how your platform is set up and if tokens can be directly purchased, there are lots of options available. Among them are three possible token acquisition scenarios:
2.1. Fiat payment
Users can buy your token using a credit card or similar electronic payment services. You offer your Tokens at a fixed exchange rate and users can spend them on your platform.
If users try to get a refund on credit card on their transactions you can be exposed to further risk here.
2.2. Coupled purchase
While on your platform, a user purchases an item or a service. Depending on how much they spend, they receive a proportional amount of tokens. As an example, think about tokenizing a music streaming service: users buy a monthly subscription for $10. In return, they receive 100 Streaming Tokens to use in future transactions. The next time they want to subscribe to the service, they can now use their 100 Streaming Tokens to buy another monthly subscription.
You can even enhance this system by ensuring that the original transaction clears and only giving tokens to the user after a set grace period. That way, you can lower the risk of credit card chargebacks.
2.3. Cryptocurrency exchange
The third and most platform-appropriate way of acquiring tokens is by using a currency or token that is native to your platform. With Ethereum, this means users buy your token in exchange for Ether. This can also happen on secondary markets, where users buy your tokens on a decentralized exchange.
Since transactions have to be initiated securely in a blockchain transaction, users have to have access to a wallet and already have some form of cryptocurrency before they can make purchases.
3. Wallet
Once a user acquires your token, the next question should be where they’ll be stored. Technically, there should be no difference between a web wallet and a desktop wallet, as long as the wallet understands the particular kind of token you’re using and that is sufficiently secure. only the user should be able to control the private key to access the wallet. If you store private keys on the user’s behalf, you make your platform vulnerable to theft of user assets.
You can also simply track how many tokens a user owns and make them available once they want to spend them. In this case you need to maintain your own wallet and ledger and make sure that you’re able to fulfill user withdrawal requests.
The trade-off is making the platform safer at the cost of user convenience. Storing tokens for users makes the single, central wallet susceptible to theft. Meanwhile, a central wallet makes it easier to trade tokens. Coinbase is one example of a putting liquidity over user security, since they provide an exchange rather than a wallet.
It’s worth considering going with the first option: handing users the keys to their tokens and giving them full ownership. That’s the only way you can truly reap all the benefits of a decentralized app on the blockchain.
To sum up, the questions to ask yourself at this point are:
- Where do your users store their tokens?
- Do users own the private key to their wallets?
- How are you secure your central wallet?
- What should your wallet user experience look like?
4. Smart contract
While tokens are useful as proof of ownership, they only reach their full potential when coupled with decentralized applications (DApps). DApps are implemented with smart contracts, which are validated independently in a distributed network. This means that even in an low-trust environment, the smart contract itself can always be trusted. Part of the network’s strength here is the fact that anyone can take part in and create a network node that verifies all transactions.
If you want to figure out how to use decentralized applications for your tokens, it helps to identify the problems DApps can solve. Typical scenarios include:
- Distributed governance: helping token owners shape the development and features of a platform;
- Exchanges or auction platforms: implemented on top of the token, where some sort of automatic fulfillment of the contract is desired;
- Decentralized games where using tokens can reduce cheating.
What the blockchain provides here is an immutable, irrefutable history of all user actions. Everything can be proved with mathematical precision.
Once you’ve come up with ways that parts of your platform can be implemented or
improved with DApps, you should then consider usability. Smart contract
interactions go through an SDK or API, like
web3.js
. web3.js
lets you interact
with smart contracts. Software developers can use it
to query the Ethereum blockchain for information and sending transactions.
Then, once that your smart contract is up and running, you need to consider how to continue supporting it. A contract needs to be updated eventually, since user requirements change from time to time. Typical solutions for contract migrations involve some kind of forwarder or contract proxy. A sophisticated, efficient migration can be a lot of work.
Some questions you need to consider when developing smart contracts on your platform are:
- Can users use the token with a decentralized app?
- How are users interacting with the smart contract?
- Does someone own the smart contract?
- How do you manage smart contract migrations?
5. The Backend
In many scenarios, users can access a smart contract or decentralized app directly. Often, it also makes sense to access the app from the backend. With auctions, users can see bids without having to connect directly to the blockchain in their web browser. Or maybe you want to send out email reminders as soon as an auction is about to time out.
Integrating app backends and decentralized apps changes who has the final say. Data on a blockchain is stored with hard guarantees on correctness, immutability, and reliability.
- Correctness: If your smart contract operates according to specification, the results stored on the blockchain are always correct.
- Immutability: Changing the data on the blockchain, including transaction data, is almost impossible.
- Reliability: Storing the results of blockchain transactions independently on a broad network of equal peer-to-peer nodes guarantees authenticity, thanks to cryptographic hash signatures.
In contrast, data stored on a centralized server instead is fungible. It’s easy to amend and delete records. You need to consider the needs for each kind of data you store:
- Do you need to store it in more than one place at once?
- Do you have to change or delete it in the future?
Typical data that you want to make easy to change and delete on a decentralized blockchain could include:
- Personal information, including payment data;
- User-submitted content that is illegal in the countries you that operate in;
- Data that doesn’t require a transaction history, such as caches.
Finally, once you have a clear idea of what data needs to be stored where, you also need to have a clean concept of how the two can interact. If data changes on the blockchain are relevant to your backend operations, then the changes need to be propagated. Some questions you should ask yourself are:
- How is the rest of your platform interacting with the token app?
- Should the backend create blockchain transactions that interact with user data?
- How do you keep your backend and blockchain data in sync?
6. Exchange
The final piece of the puzzle is letting your users buy and sell your tokens on an open market. Exposing your token to a broader market lets it arrive at a fair price point. Many more exchanges exist out there, some of which specialize in the exchange of ERC20 tokens on the Ethereum blockchain.
Your users appreciate the transparency and openness that open market exchanges offer. And you don’t want your users to feel taken advantage of. Making your token public also is more attractive to users. Instead of going through your platform directly, users can purchase platform assets elsewhere and start using them immediately.
I leave you with a few final questions:
- Where can your users trade their tokens in the future?
- Is interoperability with other tokens important to you?
- What are the potential opportunities and risks of exposing your token to a wide market?