---
# System prepended metadata

title: Untitled

---

NFT Wrapper Solution Proposal

B2B
As a marketplace developer I want to have a unified way to handle all asset types within the engine.

B2C
As a marketplace user I want to sell/buy any type of asset, digital or otherwise.



```mermaid
sequenceDiagram
    actor Provider
    participant RSK
    participant MKP_ListingMgr
    
    Provider ->> RSK: mint ERC_721
    ERC721 ->> Provider: fancyAsNFT 
    Provider ->> MKP_ListingMgr: list Asset (fancyAsNFT)
    activate MKP_ListingMgr
        MKP_ListingMgr ->> fancyAsNFT: fancyAsNFT.transferTo(MKP_ListingMgr)
        MKP_ListingMgr ->> MKP_ListingMgr: store (origOwner, fancyAsNFT, id)
    deactivate MKP_ListingMgr
    
    Provider ->> MKP_ListingMgr: remove Asset (fancyAsNFT) 
    activate MKP_ListingMgr
        MKP_ListingMgr ->> MKP_ListingMgr: fancyAsNFT.transferTo(origOwner)
    deactivate MKP_ListingMgr
    
```

```mermaid
sequenceDiagram
    actor Provider
    participant RSK
    participant MKP_ListingMgr
    
    Provider ->> RSK: mint ERC_1155
    ERC721 ->> Provider: divisibleNFT
    
    Provider ->> MKP_ListingMgr: list Asset (divisibleNFT)
    activate MKP_ListingMgr
        MKP_ListingMgr ->> divisibleNFT: divisibleNFT.transferTo(MKP_ListingMgr)
    
    deactivate MKP_ListingMgr
    
```

```mermaid
classDiagram
    
    class Asset {
        #address actualOwner
        #address tokenAddress
        #uin256 tokenId
        
        +transferTo(address)
    }
    
```

IPFS address -> cellPhone IMEI 


```mermaid
sequenceDiagram
    actor Provider
    participant RSK
    participant MKP_ListingMgr
    
    Provider ->> MKP_ListingMgr: list Asset (address origOwner, bytes32 data, bytes32 metadata)
    activate MKP_ListingMgr
        MKP_ListingMgr ->> MKP_ListingMgr: store (origOwner, fancyAsNFT, id)
    deactivate MKP_ListingMgr
    
    Provider ->> MKP_ListingMgr: remove Asset (fancyAsNFT) 
    activate MKP_ListingMgr
        MKP_ListingMgr ->> MKP_ListingMgr: transferTo(origOwner)
    deactivate MKP_ListingMgr
```



As a sponsor I want to benefit from secondary sales.
As a creator  --||--.


```mermaid
sequenceDiagram
    actor User_A
    actor User_B
    actor User_C
    
    participant RSK
    participant MKP_ListingMgr

    User_A ->> MKP_ListingMgr: list Asset_1
    
    activate MKP_ListingMgr
        User_A ->> MKP_ListingMgr: transfer Asset_1

        MKP_ListingMgr ->> MKP_ListingMgr: update fees(saleCount -> payee -> value)
        MKP_ListingMgr ->> MKP_ListingMgr: activeState
    deactivate MKP_ListingMgr
    
    
    User_B ->> MKP_ListingMgr: buy Asset_1
    User_B ->> MKP_ListingMgr: transfer money
    
    activate MKP_ListingMgr
        MKP_ListingMgr ->> User_B: transfer Asset_1
        MKP_ListingMgr ->> User_A: transfer money - fees
        MKP_ListingMgr ->> MKP_ListingMgr: create payments to payees with value from fees
        MKP_ListingMgr ->> MKP_ListingMgr: update saleCount + 1
        MKP_ListingMgr ->> MKP_ListingMgr: inactiveState
    deactivate MKP_ListingMgr
    
    User_B ->> User_C: transfer Asset_1
    
    alt REJECT NON MKP OWNER
        User_C ->> MKP_ListingMgr: list Asset_1
        MKP_ListingMgr ->> MKP_ListingMgr: User_B == msg.sender
        
        MKP_ListingMgr -->> User_C: reject
    else UPDATE MKP ASSET OWNER
        User_C ->> MKP_ListingMgr: list Asset_1
        MKP_ListingMgr ->> MKP_ListingMgr: Asset_1.owner == msg.sender
        MKP_ListingMgr ->> MKP_ListingMgr: update (owner)
        
        activate MKP_ListingMgr
            User_B ->> MKP_ListingMgr: transfer Asset_1

            MKP_ListingMgr ->> MKP_ListingMgr: update fees(saleCount -> payee -> value)
            MKP_ListingMgr ->> MKP_ListingMgr: activeState
        deactivate MKP_ListingMgr
        
    end
    
    
    
    
```




