I'm a big fan of CD Keys marketplaces like CDKeys.com or G2A.com to purchase video games keys from other users at discounted prices. However those platforms take a huge fee (up to 30%) from users selling their game keys, in addition to regular transaction fees such as Paypal (5%) or Credit Cards (3%). So I wanted to build a marketplace with 0 fees (except for the blockchain network fee).
What it does
NFTKeys is a CD Keys marketplace built on Lisk. I also had the idea of enclosing each CD Key inside an NFT so that the platform is fully decentralised, and purchasing a key truly stores it into the wallet of the buyer. This can also serve as a proof for digital rights ownership. On NFTKeys you can buy and sell CD Keys. If you have CD Keys and you want to sell, you can mint new NFTs enclosing your keys and sell them on the marketplace.
How we built it
I forked the NFT demo from the Lisk tutorial and added several new functionalities and a whole new frontend. I also added react useReducer and useContext to simplify the account creation and activation and for autocompletion of the passphrase on forms.
Challenges I ran into
This was my first time using Lisk so it took me a few days to go through the tutorials and get a hold of it. I encountered many errors, often undocumented, which sometimes took me hours to resolve on my own.
Also I still have a conceptual issue regarding the marketplace: CD keys must be activated on Steam or similar platform so they must stay hidden until the user purchase it. For this POC, I've simply hidden the keys from the homepage and only display them in the account page of the user. This isn't a good solution as un-purchased keys could still visible on the blockchain. I haven't solved that issue yet. If you know a way to hide or encrypt data in an NFT and display or decrypt it only by the buyer, let me know :)
Accomplishments that I'm proud of
I'm glad I stick to learning Lisk despite the steep learning curve because I really like it now. I'm a big fan on JS and TS so being able to write a whole blockchain application this way is great! Most blockchain have a specific language for smart contract making it more difficult and heterogeneous. Lisk apps are just much sleeker!
What I learned
Almost everything about Lisk ^^
What's next for NFTKeys
Ideally I'd like to keep working on it and go into production in the coming months.