---
title: "Cardano NFT-marketplace"
date: 2023-08-23
description: "We designed and developed the first NFT-marketplace on Cardano. Sharing our experience how we tested the Plutus platform "
author: "Mikhail Dashkevich"
intro_image: "https://metalamp.io/images/cases/cardano.png"
categories:
  - name: "Cases"
    url: "https://metalamp.io/cases.md"
---

# Cardano NFT-marketplace

![Cardano NFT-marketplace](https://metalamp.io/images/cases/cardano.png)

# Cardano NFT-marketplace

 
## Partnership with IOHK

 [See all cases](https://metalamp.io/cases)

 stateTransitionCheck :: MarketplaceDatum -> MarketplaceRedeemer ->   
  ScriptContext -> Bool  
stateTransitionCheck nftStore (CreateNftRedeemer ipfsCidHash nftEntry)   
  ctx =   
    traceIfFalse "CreateNftRedeemer: " $   
    traceIfFalse "NFT entry already exists" $  
    isNothing $ AssocMap.lookup ipfsCidHash $ nftUnion nftStore  
‍  
[github.com...](https://github.com/input-output-hk/plutus-use-cases/)

 We designed and developed the first NFT marketplace on Cardano.

 Our main purpose was testing Plutus platform - an environment for writing smart contracts on the Cardano blockchain.

 
## Project team

 ![](https://metalamp.io/images/nft-markeplace/project-team/olga.png) [Olga](https://github.com/olgaklimenko) [![](https://metalamp.io/images/nft-markeplace/project-team/github-logo.svg)](https://github.com/olgaklimenko)

 Plutus engineer

 ![](https://metalamp.io/images/nft-markeplace/project-team/dasha.png) [Darya](https://www.linkedin.com/in/darya-trifonova-762468189/) [![](https://metalamp.io/images/nft-markeplace/project-team/in-logo.svg)](https://www.linkedin.com/in/darya-trifonova-762468189/)

 Project manager

 ![](https://metalamp.io/images/nft-markeplace/project-team/stas.png) [Stanislav](https://github.com/stanislav-az) [![](https://metalamp.io/images/nft-markeplace/project-team/github-logo.svg)](https://github.com/stanislav-az)

 Plutus engineer

 
## Technology   
we used

 
- ![haskell](https://metalamp.io/images/nft-markeplace/technology/haskell.svg) 
### haskell
- ![purescript](https://metalamp.io/images/nft-markeplace/technology/purescript.svg) 
### purescript
- ![nix-os](https://metalamp.io/images/nft-markeplace/technology/nix-os.svg) 
### nix-os
- ![docker](https://metalamp.io/images/nft-markeplace/technology/docker.svg) 
### docker

 
## Workflow   
Workflow   
Workflow

 
- ### Requirements

 We received technical requirements from IOHK and decomposed them to small tasks to provide an approximate budget and term.
- ### Process

 We decided to work by Time and Material because of the high level of uncertainty. Plutus platform needed to be tested, so risk of unexpectable troubles was real.
- ### Communication

 Our developers had productive partnership with IOHK members. Our team took part in Cardano summit, some monthly updates and technical presentations.

 ![dasha-pixel](https://metalamp.io/images/nft-markeplace/project-team/dasha-pixel.svg) Darya

 Project manager

 I remember how excited the team was when we kicked off this project: it was a chance to deepen our expertise in Cardano blockchain, try out IPFS protocol and wrap this all up in a pretty interface. So proud to be a part of this project!

 
## Project's features

 Application works as a classic marketplace for NFT

  Users can:

 
- Create their non fungible tokens
- Unite cards (tokens) in collections (bundles)
- Make auction
- Set price and auction period
- Upload images, as well as video and audio files

 
## The platform is monetizing through commissions from the sale of NFTs and auctions.

 [Have a similar project?](#modal_for_form_with_textarea)

 ![stas-pixel](https://metalamp.io/images/nft-markeplace/project-team/stas-pixel.svg) Stanislav

 Plutus engineer

 Every NFT creation is done in two steps, first - uploading associated metadata (this could be any file e.g. a picture) into storage, second - minting a token that goes into creators wallet on blockchain. First step requires a very important property - content addressability, this is ensured by IPFS: every file gets a unique content ID. The main purpose of the marketplace smart contract is to ensure a one to one link between a token in users wallet and that content ID. NFT marketplace app also provides user ability to list NFTs for sale or auction and bundling them up, ensuring privacy of content ID links for not listed NFTs.

 
## Why IOHK  
 chosen us

 ![logo-iohk-color](https://metalamp.io/images/nft-markeplace/logo-iohk-color.svg) Infrastructure for Cardano smart-contracts was written in Haskell, and our team has experience in working with Haskell since 2018. ‍

 This was the main reason why IOHK turned to us.

 Our Haskell team of experienced developers is passionate about such complex and interesting tasks, as well as constant challenges to their capabilities. We had to go through an affiliate introductory program to master the Plutus platform, take part in the research of various solutions together with the customer's team, and also work on our own solutions - create our own decentralized application on Cardano.

 
## Experience we received   
after this project

 
- ![developing-man](https://metalamp.io/images/nft-markeplace/experience/developing-man.svg) 
### Developing of decentralized applications on the Cardano (on the Plutus platform)
- ![testing-man](https://metalamp.io/images/nft-markeplace/experience/testing-man.svg) 
### Testing and dropping applications into the Cardano test network
- ![working-together](https://metalamp.io/images/nft-markeplace/experience/working-together.svg) 
### Working together with the international Haskell community and sharing experience with other Haskell engineers


## Custom Fields

**Description:** Together with IOHK we designed and developed a decentralized application on the Plutus platform. Created DApp is one of the first NFT marketplaces on Cardano.

**Filters:** nft

**Service tags:** outsourcing

**Service tags:** ux_ui

**Service tags:** smart_contracts

**Technology tags:** haskell_plutus

**Factoid for slider #1 _______________________________ (to enlarge a part of the text, use italics):** $70 000 cost of development

**Factoid for slider #2 _______________________________ (to enlarge a part of the text, use italics):** 5 months development period

