How to develop NFT marketplace on Avalanche is a burning question. NFTs have given people an opportunity to showcase their art and collectibles in a uniquely digital way. Right from the gaming industry to art and digital collectibles NFT marketplace developers have linked themselves to all other industries on a worldwide level.
Avalance is a customizable, high-performance blockchain platform deriving its uniqueness due to its consensus mechanism which is quite different from other Blockchain networks. Avalanche uses its own Snow consensus protocol mechanism to achieve consensus, which aims to balance transaction speed, network capacity, decentralization, energy efficiency, and security, using Proof of Stake (PoS) as its foundation.
The following are the key features of the Snowman consensus protocol
- The Snowman consensus lets Avalanche achieve speed to permanently finalize transactions in approximately 1 second.
- The Snowman consensus empowers the blockchain network to achieve scalability by processing 4500 transactions per second.
- The easy creation of custom blockchains and dApps is possible due to Snowman consensus, even thou they have arbitrary logic. This makes Avalanche highly flexible in nature.
- The use of the Proof-of-Stake consensus algorithm lets Avalanche sustainability.
- The Snowman consensus also offers support for the creation of the Solidity smart contracts using the Ethereum tools.
- The seamless creation of own public and private blockchains is possible due to the Snowman consensus of Avalanche.
- High security is ensured by Snowman’s consensus.
How to create an NFT marketplace over Avalanche?
There are certain pre-requisites to check before you proceed:
- React Js
- Ether Js
While requirements are:
- Pre-installed Node Js and npm
- Pre-installed Hardhat
- Get Metamask browser extension
- Pre-install create-react-app
Building a workspace and NFT token creation
The setting up workspace begins by using the Hardhat and then selecting the ‘create a basic sample project’. Install all the dependencies and later delete the Greeter.sol file from the contracts folder.
Using the command create a basic ERC-721 token.
This step involves developing all the auctions by deploying the Auction contract via the parameters through the AuctionManger contract.
After this has been done, all the users can place their bids and in case zero bids happen, then the auction contract will withdraw all their funds and tokens after the completion of the auction.
Further, there will be various steps to be undertaken like declaring new variables, constructor function, building the functions, canceling auction, and withdrawing token along funds.
Auction contract manager
To retrieve the list of all the auctions and to make the new ones you can use the Auction contract manager. Further, you need to build two functions to start an auction and the other one for getting a list of auctions.
After completing these, build the functions as all the contracts get done.
Next is the testing phase of the marketplace on the AVAC Fuji Testnet. After adding it to the Metamask view the networks and then click on the Custom RPC. Add the network configuration in the hardhat config file after deploying the contracts on the FUJI testnet Settings.
To deploy the NFT and AuctionManager contracts to the Fuji Testnet use the hardhat and start editing the scripts/deploy.js file. Thereafter, execute over terminal but remember to note the addresses positively, as it will be needed later at the time of interaction with the contracts.
This step involves developing an interface to communicate with the marketplace and begin using react and ether.js.
Start with the new App.js file and then import the ethers library and assign the contract addresses to all the contract strings. Remember to mint an NFT for the auction before creating an auction.
Build the form
Building the form starts by entering a few elements in it like the start price, token id, minimum increment, duration of the auction, and the direct price of buying.
Interaction with the contracts and connecting to Metamask
To communicate with contracts, you may use the Contract Application Binary Interface (ABI) and after this, the next step is to detect and connect to the MetaMask.
Add an init function and then using the Ether.JS and call the init function to connect to the MetaMask wallet. Continue this process after selecting your account and in this way you will get connected to Metamask.
Mint NFT and create an auction
This step involves building then mint the NFT button and later build another function to make auctions. Before calling the createAuction function ensure that prior approval to the token is granted to be used for the function.
An approval will lead the token to be transferred to the newly created auction contract.
Create an auction page
To get a list of all the auctions taking place on the network, you need to build two functions namely the getAuctions() and the getAuctionsIndo().
A state variable must be used to reflect the current auction and set this variable after pressing the see more button.
Render the auctions and their functions
A sample render function for the chosen auction must be written and from the auction contract placeBid function must be called. Transfer some AVAX and at the time of pressing the button call placeBid function.
Remember to switch to some other account on MetaMask before placing the bid, and wait till the auction gets over, and if nobody is bidding a higher value the withdraw the token.
Withdraw token and funds
Thereafter from the Auction contract call the withdrawToken function and reflect an alert after the transaction gets mined.
Now, from the Auction contract now call the withdrawFunds function and when the transaction is mining is done call the function.
Withdrawal of funds is the next step that you must do by switching back to the account created earlier for auction and confirming the same transaction.
Once the transaction is mined, call the cancelAuction function of the Auction contract, and calling the function is a must when the Cancel Auction button is clicked.
Deploy to the Mainnet
Finally, making the Avalanche NFT marketplace live is the next step, so add the network in the hardhat config file.
Avalanche NFT marketplace development can be a very lengthy process and can be cumbersome if you are not well-versed with the nitty gritty say an NFT marketplace developer from Rejolut. As Avalanche has gained huge popularity due to its highly scalable nature and with regular updates being released. Avalanche is only improving itself in every aspect and in the future, it will be more accessible for the users and the developers.