Certainly! Below is the rewritten project description using natural language processing (NLP) techniques:


Decentralized Image Upload and Sharing

This project is designed to facilitate decentralized image upload and sharing on the blockchain. Leveraging Solidity for smart contract development and React for the user interface, it empowers users to securely upload images to IPFS (InterPlanetary File System) and manage access permissions through smart contracts.

Features

  • Decentralized Storage: Images are securely uploaded to IPFS, ensuring decentralization and immutability.
  • Smart Contract Functionality: Utilizes Solidity smart contracts deployed on the Ethereum blockchain for access control and ownership management.
  • Granular Access Control: Users can grant or revoke access to their uploaded images to specific individuals via smart contract interactions.

Technologies Employed

  • Solidity: For smart contract development, enabling ownership and access control functionalities.
  • React: Provides a dynamic and intuitive front-end interface for uploading images and managing access permissions.
  • IPFS (InterPlanetary File System): Employs IPFS for decentralized storage, ensuring high availability and reliability of uploaded images.

Installation Instructions

1. Clone the Repository

https://github.com/P-Potdar/Chain-Vault.git

2. Set up Hardhat and Compile the Smart Contract

cd decentralized-image-upload
npm install
npx hardhat compile

3. Deploy the Smart Contract

npx hardhat run scripts/deploy.js --network <network-name>

4. Install Dependencies for the React Frontend

cd client
npm install

5. Start the React Application

npm start

Configuration

  1. Obtain API keys from Pinata for interacting with the IPFS.
  2. Update the React component (FileUpload.js) with your Pinata API keys.

Usage Guidelines

  1. Install Metamask: Ensure Metamask is installed and configured in your browser for Ethereum interactions.
  2. Update Contract Address: After deploying the smart contract, update the contract address in App.js within the React application.
  3. Upload Image before Retrieving Data: Click "Retrieve Data" only after uploading an image to Pinata. Otherwise, an error will be thrown stating "You don't have access".
  4. Accessing Other Users' Images: Utilize the "Retrieve Data" button to access images uploaded by other users. Input the user's address in the designated box, remembering that access is granted only if permission has been given through the smart contract. Otherwise, an error will be thrown stating "You don't have access".