The project is divided into 2 main sections:
- Auction-truffle: The truffle project, containing all the smart contracts used for this project and their deployments configurations.
- Auction's platform: The Dapp that allows users to auction with their NFT and participate in open auctions. Visit Auction-cienne
It is a decentralized app for NFT auction hosted on Goerli Testnet built with Truffle Framework, ReactJs and ethers.js library.
- Any user can put his owned NFTs into auction.
- Any user can participate in the auction and bid on an NFT.
- The auction lasts 72 hours and gets 6 more hours with every bid more than 0.5 ETHER.
- The first bidder wins after 12 hours without bids, the next bidders win after 6 hours only.
In order to just run the DApp, you can skip this section since the smart contracts are already deployed. This section is for those who want to run, modify and test the smart contracts whether locally or in a testnet
After cloning this repo, we will start with running and testing the blockchain part.
Deploying the contract on a Testnet takes more time than deploying it locally so be patient.
Make sure to create .env file following the .env.example file
Run this command to install dependencies:
cd auction-truffle
npm install
These are the main commands that would help you interact with our smart contracts:
- Compiling the contracts (this will generate a JSON file for each contract found in build/contracts)
truffle compile
- Deploying the contracts
truffle migrate --network <NETWORK_NAME> truffle run verify <CONTRACT_NAME>
- Interacting with the contracts
truffle console --network <network-name>
To run the DApp you need both a Metamask wallet attached to your Browser, and owned NFTs on Opensea, also you need some Goerli Ether
You can get some Goerli ETH on This Faucet.
You can create an NFT on Testnet Opensea.
To interact with the auction-cienne app
npm start
- Automating the contract deployment and integration with frontend (updating ABI and address).
- Add unit tests to both smart contract and frontend.
- Add events to smart contract and event listening to frontend.
- Automate the process of transferring NFT at the end of the auction, (with chainlink client for eg).