Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

6883 Final Project Submission #8

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@


{
"presets": [
"@babel/preset-env"
]
}
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto
33 changes: 33 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

node_modules
.env
coverage
coverage.json
typechain

#Hardhat files
cache
artifacts
Binary file not shown.
Binary file added GUI_Sample.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
89 changes: 52 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,52 @@
# NFTVerse Data Warehouse

## Overview:
NFTVerse Data Warehouse is a comprehensive NFT data storage and retrieval system that combines on-chain NFT transaction history, metadata, and off-chain NFT multimedia content such as images and videos stored on the InterPlanetary File System (IPFS). The project aims to provide an easy-to-use API for developers to build novel NFT applications and analytics tools to foster innovation and growth within the NFT ecosystem.

## Components:

### Data Collection:
The data collection module aggregates NFT transaction data and metadata from various blockchain networks (e.g., Ethereum, Binance Smart Chain, Solana) using their respective APIs. Off-chain NFT multimedia content is fetched from IPFS using the content hash provided in the metadata. Data is collected in real-time to ensure the most up-to-date information is available for developers.

### Data Processing:
Collected data is cleaned, validated, and enriched with additional details (e.g., token standard, NFT collection name) before being stored in the data warehouse. The data processing module also handles deduplication and normalization of the data across different blockchain networks to provide a unified view.

### Data Storage:
The data warehouse is built on a scalable and distributed database system optimized for handling large volumes of structured and semi-structured data. This system ensures low-latency queries and high availability for the APIs built on top of it.

### API Layer:
The API layer provides a suite of RESTful APIs for developers to access the data warehouse. It offers endpoints for querying NFT transaction history, metadata, and multimedia content, along with advanced search and filtering capabilities. The API layer also handles authentication and rate limiting to ensure fair usage and security.

### Documentation and Developer Portal:
A comprehensive documentation and developer portal is available to help developers understand the API usage, access sample code, and explore interactive API documentation. This portal also offers a community forum for developers to discuss ideas, ask questions, and share their NFT application projects.

## Possible Use Cases:

### NFT Analytics Platform:
Developers can create an analytics platform that tracks the performance of various NFT collections, marketplaces, and individual tokens, providing insights into trends, sales volume, and pricing.

### NFT Discovery and Recommendation Engine:
Using the data warehouse, developers can build a recommendation engine that helps users discover new NFTs based on their preferences, browsing history, and social network.

### NFT Portfolio Management:
Developers can create an NFT portfolio management app that allows users to track their NFT holdings, analyze their investments, and make informed decisions on buying or selling NFTs.

### NFT-based Gaming and Virtual Worlds:
The API can be used to develop novel gaming experiences and virtual worlds where users can showcase, trade, or interact with their NFTs in an immersive environment.

By providing a robust and comprehensive data warehouse solution for NFTs, the NFTVerse Data Warehouse project aims to fuel innovation and growth in the NFT ecosystem by offering developers a powerful toolset for creating cutting-edge NFT applications.
# FinalProject_NFTmarketPlace_6883 - Topic 1 NFT Marketplace

## Github Structure
### Top Level
- .gitignore
- package.json
- hardhat.config.js
- README.md
- src (This folder contains the code for frontend & backend)
- backend (This folder contains the code for backend)
- contract (This folder contains the code for NFT_Marketplace smart contract)
- NFT_Marketplace.sol (This file implements the NFT_Marketplace smart contract)
- scripts (This folder contains the code to deploy the smart contract onto the blockchain)
- deploy.js (This file deploys the NFT_Marketplace smart contract onto the blockchain)
- test (This folder contains the test bench code)
- NFTMarketplace.test.js (This file contains the test bech code)
- frontend (This folder contains the code for frontend)
- components (This folder contains the code for the frontend Web App)
- contractsData (This folder contains blockchain information passed to the frontend Wen App)

node,js - v16.20.0 <br>
METAMASK <br>


1. npm install
2. npm install --save-dev hardhat@2.8.4
3. npm install react-router-dom@6
4. npm install ipfs-http-client@56.0.1
5. npm i @openzeppelin/contracts@4.5.0

Run testbench: <br>
npx hardhat test <br>

GUI: <br>
1. npx hardhat node (log the testing accounts @ keys)
2. open a new terminal, run: npx hardhat run src\backend\scripts\deploy.js --network localhost
3. open a new terminal, run: npm run start (Should open a GUI webpage the browser)
4. open METAMASK on the browser, create and connect to Hardhat Node using the following setup: <br>
Network Name: Hardhat Node <br>
New RPC URL: http://127.0.0.1:8545 <br>
Chain ID: 31337 <br>
Currency symbol: ETH <br>
if previously connected to the Hardhat Node, disconnect the blockchain and reconnect. <br>
Should also remove all the previous test accounts, after adding new test accounts, follow this instruction and make sure the
accounts are reset:
https://medium.com/@thelasthash/solved-nonce-too-high-error-with-metamask-and-hardhat-adc66f092cd <br>
5. Import the testing accounts to METAMASK using corresponding private keys
6. In the GUI webpage, click "Connect Wallte", select which account to connect in the METAMASK's prompt
7. Create, send, buy and sell NFT using the GUI
8. To switch to another testing account, open "Connected sites" page in the METAMASK account tabe, disconnect the localhost page, refresh the webpage and connect using another account.

![alt text](/GUI_Sample.png)
11 changes: 11 additions & 0 deletions hardhat.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
require("@nomiclabs/hardhat-waffle");

module.exports = {
solidity: "0.8.4",
paths: {
artifacts: "./src/backend/artifacts",
sources: "./src/backend/contracts",
cache: "./src/backend/cache",
tests: "./src/backend/test"
},
};
Loading