Services:
Project overview
In 2021, our company was contacted by a US startup specializing in digital collectibles, and serving NFT creators. The client was interested in creating a unique NFT marketplace for viewing, renting and securely purchasing digital assets, which can then be exchanged for physical items.
The team, provided by Abto Software, successfully covered the POC and delivered a custom NFT marketplace. The product’s core functionality includes selling/purchasing, advanced search, search filters, voucher minting, and more, all wrapped in an intuitive, user-friendly UI/UX design.
Main goals
The project’s main goal was designing and delivering a manageable NFT marketplace:
- To provide both creators and collectors with the necessary functionality to sell and buy digital assets, and seamlessly mint – create on the blockchain – NFTs
- To provide cost efficiency, improved security, and independence
How the solution works
Key components:
User interface
- REST APIs: Express JS, typescript language
- Front-end part: Next JS, Tailwind CSS as a low-level framework
- Blockchain part: Flow network, cadence language
Video & image uploads
AWS MediaConvert to compress and convert video content:
Lambda function to crop and upload image content to Pinata IPFS:
Smart Contracts
Smart Contacts is a self-executing contract in form of an buyer-seller agreement contained within the code. This way, NFT vouchers are redeemed by the platform’s administration and exchanged for rewards.
Flow Contracts
The first Flow Contract implemented using Flow NonFungibleToken contains the following features:
- Admin-level permission creator events
- Create/update events
- Deployer-level functionality
– Mint Non-Fungible tokens
– Batch Mint tokens - Metadata updates (information updates for specific NFT tokens, for example, image/video links)
- Asset storage
Along with additional getters and helpers.
The second Flow Contract implemented using Flow NonFungibleToken contains the following features:
- Several events (Withdraw, Deposit, Redeem, Consume)
– Redeem – this function allows to take ownership over an NFT voucher from within a vault
– Consume – this function allows to consume an NFT voucher (destroy it) - Collection resources
- Deployer-level functionality:
– Mint Non-Fungible tokens
– Batch Mint tokens - Asset storage
Along with additional getters and helpers.
Ethereum Contracts
The created contract is based on:
- ERC721A contract (ERC721A standard supports minting multiple tokens for almost the price of one)
- Ownable module (a module that provides an access control mechanism, which means owner accounts can get exclusive access to certain platform features)
- MerkleProof feature (a feature that deals with verification of datasets without re-computing the data)
- ReentrancyGuard module (a modifier that helps prevent reentrant calls to a function)
The implemented contract contains:
- Several methods of minting
– Whitelist minting
– Batch minting
– Minting by an address - Fund withdrawal
- Validation modifiers for minting
- Metadata getters and setters
Code infrastructure
For the 100% safe and smooth creation, modification and setup of infrastructure, our team picked Terraform. The solution now has two environments, for staging and production.
A diagram of the created infrastructure:
A diagram explaining the core functionality of the NFT marketplace:
Implemented third party integrations
- queue-it
- MoonPay:
- Crypto operations (buy and sell cryptocurrency, fund the flow wallet);
- API for NFT purchasing;
- MetaMask
- Flow Developer Portal
- Flow Client Portal
- Heap
- Graffle
- Google Recaptcha
- Google Analytics
- Vimeo API
- Pinata API
- Blocto
- Sentry
- Grafan
- ActiveCampaign
Our contribution
We covered:
- The design of a single-page application by using Next JS
- The implementation of the REST API for the smooth interaction with the flow blockchain
- The setup of the AWS environment
At this project stage, we configured the following AWS services:
- ECS
- RDS PostgreSQL database
- Lambda functions
- Elemental MediaConvert
- S3 buckets
- Amazon Cloudfront
Main challenges
During the project’s scope, our team faced challenges related to:
1. The creation of a reliable system for configuration and minting of vouchers
The client was using shell scripts to generate NFT tokens, but aimed to do it by using the administration panel.
We created:
- A stepper for the system’s administrator to generate and customize NFT tokens and vouchers
- Background services for minting and distribution
2. The integration of several payment methods: MoonPay, MetaMask, and Flow
One of the problems was handling several different payment methods with completely different APIs and flows. To integrate the different payment methods, we created a gateway for the different APIs and unified the whole payment process by using the Queue, WebHook and Background services.
3. The synchronization of data from blockchain with database
It might be difficult to trace the bought NFT tokens as they can be easily purchased on some external sources. To provide simplified monitoring, we implemented Graffle WebHooks together with Cron Jobs.
Tools and technologies
Tech stack:
- JavaScript
- TypeScript
- Cadence
- Solidity
- Node.JS
- Express.JS
- Postgres
- Vue.JS
- Next.JS
- TailwindCSS
Infrastructure:
- Terraform
- AWS
- Kubernetes
- Lambdas
Blockchain:
- Flow
- Blocto
- MetaMask
- MoonPay
- Graffle
Timeline:
- June 2021 - July 2022
Team:
- 1 Project Manager
- 1 DevOps Engineer
- 2 Back-end Developers
- 1 Front-end Developer
- 1 Blockchain Developer
- 1 UI/UX Designer
Value delivered to business
The custom NFT marketplace is designed to ease the interaction with content and other community members. Today, content isn’t just about consumption – it’s about cultural heritage, having influence, and opportunities for investment.
The delivered NFT marketplace:
- Reduces costs
By using traditional marketplaces, the client would have to put up with some additional transactional charges. But with the tailor-made NFT marketplace, the startup can enjoy the benefits of decentralization and omit conducting transactions through intermediaries.
- Increases security
Traditional marketplaces are often the subject of fraudulence and dangerous for both the seller and customer. By leveraging blockchain technology, we provided for security and transparency of every single transaction.
- More independence
Since the NFT marketplace is decentralized, it is not subject to the same regulations as a traditional platform. This provides more freedom and flexibility for both the seller and buyer.
Contact Us
To find out more about Abto Software expertise, request a quote or get a demo of your custom solution.