Hey everyone, we are building a NFT Martketplace (similar to NBA Top Shot - of course) and went pretty far in setting the architecture on the Test Net.
The flow goes like this:
- User signs up with email on our website
- Our Flow service account creates another flow account for the newly registered user (we eat all the transaction fees) and we store the private key for the new user somewhere (custodial wallet concept)
- The user will be able to purchase tokens from the platform or from other users for $$$ or other crypto currencies (happens via Coinbase or Stripe or Braintree) and we will transfer the NFTs after the purchase has been successful (again, we eat all the transaction fees)
This concept means that we (the marketplace platform) will own the rights to manage user accounts. We don’t want users to transfer their NFTs outside the platform, of course. Exactly what Dapper is doing on the NBA Top Shot - you see your flow account address but can’t manage it because they are in control of the keys.
This all works on the Test Net (we’ve build and tested it through and through) but something I’ve read on the Forum the other day got me concerned:
Currently, if you want to have an account on mainnet, you need to use Blocto, ledger, or one of the other custodial exchanges. In the future, you’ll definitely be possible to just use the CLI or sdk to manage an account with your own private keys and such on your own, but that isn’t possible yet because account creation is restricted to approved accounts.
Does this mean that we (the marketplace) will have to store the keys for newly created users in a Blocto or Ledger wallet? If yes, are there any guidelines on how to do that?