Mint Stable-ish fungible token from NFTs

What Problem are we trying to solve?

One of the biggest problems when it comes to onboarding new users into crypto/blockchains is on ramping. If you create your own fungible tokens, it is highly unlikely that Coinbase or other exchanges will list your token. On the other hand, Non fungible tokens are mostly treated as non currency so there are many platforms (MintBase, NBATopshot) which allows you to buy NFTs via CreditCard. Also, it is highly likely that NBATopshot packs will become the first digital asset the flow users will own.

Our solution is to provide a simple fungible token (MToken) Minting service by collateralizing NBATopshot packs based on its initial price (minting price) so that the owners of the same MToken can provide services to each other as a medium of exchange (eg: trading cards of different values) without using credit card payment for each transaction.

How does this work?

Given a user bought a NBATopshot pack worth $9.00 (NBATopshot A)

When User calls

Then the user will receive MintToken worth 9 MToken

And the ownership of NBATopshot A is transferred to MintToken

When a user calls MintToken.redeem(9 MToken)

Then the user will receive NBATopshot A back.


Is 1MToken equal to $1? :

Not necessarily true. If a user buys the NBATopshot packs cheaper than the minting price at the secondary market, he/she could mint more MToken than the secondary market price (or vice versa). I expect that the overall price of MToken will depend on the popularity of collateralized fungible tokens. If people believe that most NBATopshot packs won’t value less than the initial price, the price would equal or higher to $1.

Is collateralising my Topshot tokens the only way to acquire MToken?

Initially yes, but the whole point is to provide a medium of exchange so eventually you will be able to acquire them in exchange for some sort of products or services (or via decentralised exchange service once an equivalent of Uniswap or Kyber on Flow emerges).

Why not use CreditCard to offer our services?

Credit card payment usually costs 3~5% transaction fee. You could use Coinbase wallet to pay via other cryptos (eg: Bitcoin/Ether) though their transaction cost is equally becoming expensive, and also mainstream users wouldn’t have other crypto currencies to begin with. Nonetheless, if you only rely on using credit card payment, what is the point of using Crypto?

Isn’t this the same thing as points on NBATopshot?

Points on NBATopshot are awarded as part of onboarding efforts such as verifying email and setting up social profiles, etc. You can get additional points by purchasing certain types of packs but points and purchased packs don’t seem to be directly correlated.

Shouldn’t people just use FlowToken as medium of exchange?

I would expect that FlowToken will be as difficult to purchase as any other fungible tokens and users have to pay high on-ramping fee to acquire their token. Also users don’t necessarily require to have FlowToken to interact with Dapps as Dapps can subsidies transaction cost. For the majority of users, it will be more cost effective to mint MToken based on their digital asset than buying FlowTokens using credit card.

Open Questions

  • Will NBATopshot NFTs record its minting price on chain?
  • Does NBATopshot NFTs contain the initial seller(eg; NBATopshot) information so that we can include any NFTs sold by the same seller under one currency?
  • Should we allow it to mint $1 = 1 MToken, or make it over collateralized?
  • Should we add some sort of minting fee?
  • Can we have some market mechanism to reflect minting price (eg: based on the total market value of packs sold)?
  • What if we don’t collateralise NFTs but simply mint new MToken tokens per NFT? This way we are less liable when there are bugs on smartcontract and people can’t redeem their NFTs (also lower barrier to entry for people to try out) . It still adds some sort of scarcity as MTokens can be only minted once per NFT (by recording minted Token id).
  • Can we offer some sort of ways of controlling NFT while being collateralised? Just like Ethereum Name Service (aka ENS) controller/registrar separation allows you to transfer ownership while keeping administrative control.

Hi @makoto,

The idea is interesting. It could be fun to try and write the code and see where this goes.

I saw a project, called $Whale, where owners of NFT art can borrow tokens and use their art as collateral. I’m not aware of the success of this project, I’m mentioning it so you can check for yourself and maybe find ideas to improve on what they did as IMO it looks related.

NBATopShot does not have a marketplace yet, however one is in the works. So IMO the initial challenge would be to make the current NBATopShot NFT owners trust the token enough to exchange it for their cards versus just using the marketplace.

I think the project could be interesting to build. If the token won’t be popular with the NBATopShot NFT owners, it might be popular with owners of other NFTs from games/apps that are being built as we speak.

1 Like

Hi, Daniel. Thank you for your response.

This is definitely true. I think it’s relatively easy so good way to learn how to integrate with fungible/non fungible contract.

Yes, I am aware of the project. The challenge of the loan models for NFT is to curate the current value of the token but the price of each NFT can be easily manipulatable as NFT itself does not have much liquidity (unless more semi fungible NFTs such as virtual land but that also doesn’t have established way of deriving the land unit price). In my use case , I am just using the sales price (assuming the data is available on chain).

I am wondering what is going to be the payment medium to the seller. Is it going to be paid in FlowToken or USD when users pay via credit card? I am curious who would become the custody of the payment. Is it going to be the marketplace so that marketplace gets fiat payment and pay the equivalent amount of crypto to the seller, or does each seller has to setup payment gateway through stripe, etc?

This is how mintbase handles fiat payment, but it is not so clear about the merchant/seller setup.

I don’t have any insight into how the market place will work.
My assumption, I might be wrong here, is that there will not be a way to cash out to fiat, at least initially. In the first iteration, I think it might just allow the exchange of cards between them, like X rare for Y super-rare, etc.

I’ve previously looked a bit into how Mintabse handles payments, for a project I’m working on.
The main issue with their approach IMO, apart from the work needed to pass through the Stripe approval process as a merchant, is that the seller will incur all loss in case of credit card fraud.

oh, so the each seller has to be approved as a merchant? That’s a big hurdle. I wonder how fiat onboard is working. Their target audience is bloggers etc so probably they won’t be able to ask each authors to be approved as a merchant.

I’m merging my comments from the other post to this one.

Blockquote Will NBATopshot NFTs record its minting price on chain?

The sale price is something that is determined off-chain in denominations of USD/ETH, and because those currencies do not have equivalent constructs on chain, they cannot be represented as anything but a simple metadata field that would have to be added when the pack sale happens.

Blockquote Does NBATopshot NFTs contain the initial seller(eg; NBATopshot) information so that we can include any NFTs sold by the same seller under one currency?

The initial seller of the Top Shot NFTs will always be Top Shot, as far as I am aware.

It is hard to measure the price of sold NFTs or packs on chain because packs are an off chain construct. There is no notion of a “pack” on chain. Pack distribution is determined off chain and “packs” are transferred by simply transferring a batch of moments to a user in a single transaction. Therefore, it is hard to have a field that is tied to a specific moment that says what price it sold for, because it doesn’t know what a pack is. This isn’t as much of an issue for the P2P marketplace, because those are using on chain currencies. When a token is bought in the marketplace, an event is emitted with the price that it was bought for

Notes to myself.

Looks like this idea is not feasible given that initial sales price is off chain, so there is no reliable source of price until p2p marketplace becomes available.

also, the marketplace smart contract is token agnostic, meaning that a specific user gets to choose which FT they want to use to sell their NFTs for.

Any user who wants to sell via the top shot UI though, will have to use the special currency that we have made so that they can transact with fiat currencies. This currency is kind of like a credit system that maps to USD. It is used to get around legal restrictions. I don’t know how much I can reveal about it right now though.

1 Like

I think the core of this question is how to value NFT.
WHALE-Vault keeps $240W worth of NFT assets (not including Topshot now), here is the valuation report given by Nonfungible in November(, they have valuation logic for all types of NFT, for example Gods Unchained’s they say:

The average price of each card based on card name and quality on the secondary market in the previous months has determined the value of each Gods Unchained Card.
For certain very rare assets or those with no secondary market (i.e. Mythic Cards) the
purchase price has been kept as a reference value.It was not possible to take into account the purchase price of all the cards in the VAULT, since most of them were purchased via packs. Although the price of the pack is known, dividing the
price of the pack by the number of cards it contains would not give a relevant value.

1 Like