Help with marketplace architecture

Hey! I am creating a token marketplace using a developer grant. At first, it was built to be an NFT marketplace but we switched it up to FT, as it made more sense with the project. I am still a little hesitant on the architecture I have created for the project… does anyone have any examples I could look at or would have some time to go through my architecture? Mainly about canister architecture and how to minimize cost/time while maintaning modularity and scalability.

For instance: Do you recomend using one canister for all tokens? or one canister per token and a canister as a token factory?

I am using Motoko.

It would be of great help. Thank you.

Please feel free to share with your NFT marketplace architecture here or with your contact within the developer grant.

I think I’ve seen an NFT contract per collection. For example, here is a list of many DIP721 canisters: DAB - NFT, Token, Canister, & Dapp Lists on the IC. Each canister seems to be dedicated to an NFT collection.

Hello Jennifer, thank you for the response. This is precisely my problem, we have shifted from an NFT marketplace to an FT marketplace. However, that is a good point, every token collection or type of token seems to be allocated in a canister. You are my contact in the grant hehe I’ll make sure to contact you by email next time.

1 Like

We are more than happy to review the revised architecture map. I suggest still posting any development questions on the forum as the engineering team and community are both on here and can provide varying advice.

You may want to check out NFT Working Group - Next Steps - ICRC-8, ICRC-56, ICRC-59, ICRC-60 and take a look at icrc8. I’d be happy to talk through it as it would be very valuable feed back. Were a long way from anything like this becoming canonical, but implementation is the best filter for these things.

Apologies for misreading this. I understand that you are trying to move from an NFT to a fungible token.

You should still aim for one token per canister.

You should take a look at the ICRC-1 standard with a consideration to implementing ICRC-2 (which is an extension of ICRC-1).