Marketplace Engine architecture ```sequence title: Kahlo user story sequence (B2B & B2C) participant RSK participant IPFS participant EngineSC participant IMintSC participant EngineSDK participant Owner Note over Owner: Kahlo participant Producer participant Buyer participant Curator # B2B ## Create NFT: https://rsklabs.atlassian.net/browse/RMV2-2 Note over Owner: US Create NFT: Owner->EngineSDK: getAvailableMintContracts EngineSDK-->Owner: IMintSC[] Owner->EngineSDK: use mintContracts[] EngineSDK->>RSK: new CustomMintSC():[] EngineSDK->EngineSDK: usedMints <- mintContracts EngineSDK-->Owner: address[] ## List an NFT for sale: https://rsklabs.atlassian.net/browse/RMV2-7 Note over Owner: US List an NFT: Owner->EngineSDK: getAvailableExchanges EngineSDK-->Owner: IExchange[] Owner->EngineSDK: use exchangeContracts[] EngineSDK->>RSK: new CustomMintSC():[] EngineSDK->EngineSDK: usedExchanges <- exchangeContracts EngineSDK-->Owner: address[] Note over Owner: Deploy Marketplace: Owner->>RSK: new EngineSC(options) RSK->>EngineSC: deploy RSK-->>Owner: # B2C ## Create NFT: https://rsklabs.atlassian.net/browse/RMV2-2 Note over Producer: US Create NFT: Producer->Owner: upload product Owner->EngineSDK: create NFT from product EngineSDK->IPFS: upload product (opt.) IPFS-->EngineSDK: hash Owner->EngineSDK: get usedMints EngineSDK-->Owner: usedMints[] Owner->EngineSDK: usedMints[#].call(hash) EngineSDK->IMintSC: create NFT IMintSC-->EngineSDK: NFT EngineSDK-->Owner: NFT Owner-->>Producer: Note over Owner: Opt. manual asset registration Owner->EngineSDK: Register NFT EngineSDK->EngineSC: Register NFT EngineSC-->EngineSDK: assets EngineSDK-->Owner: assets Owner-->Producer: ## List an NFT for sale: https://rsklabs.atlassian.net/browse/RMV2-7 Note over Producer: US List an NFT: Producer->Owner: showAssets Note left of Owner: if(!producerAccount.assets) Owner->EngineSDK: getAssets(userAddress) EngineSDK->EngineSC: getAssets(userAddress) EngineSC-->EngineSDK: assets[] EngineSDK-->Owner: assets[] Owner-->Producer: Producer->Owner: getAvailableExchanges Owner->EngineSDK: getUsedExchanges EngineSDK->EngineSC: verifyExchanges[] EngineSC-->EngineSDK: EngineSDK-->Owner: usedExchanges[] Owner-->Producer: Producer->Owner: List Asset with sale method Owner->EngineSDK: usedExchanges[#].list(assets) EngineSDK->EngineSC: List Asset EngineSC-->EngineSDK: cost EngineSDK-->Owner: cost Owner-->Producer: cost Producer->>Owner: confirm listing Owner->>EngineSDK: confirm EngineSDK->>EngineSC: confirm EngineSC-->>EngineSDK: EngineSDK-->>Owner: Owner-->>Producer: ```
{"metaMigratedAt":"2023-06-16T09:59:40.404Z","metaMigratedFrom":"Content","title":"Untitled","breaks":true,"contributors":"[{\"id\":\"82f16c31-17c2-4338-96ad-3b5b7461eab6\",\"add\":4364,\"del\":1992}]"}
Expand menu