GPUHub is a decentralized GPU resource sharing platform built on the Ethereum blockchain. It allows users to share their GPU resources and enables others to request and utilize those resources for their computational needs.
Goerli contract address - 0x12b63ac4B1D371Cd464cC6f9cB45b15aF2CfA09c
- Share GPU Resources: GPU owners can create listings and offer their spare GPU resources for others to use.
- Request GPU Resources: Users in need of GPU power can browse available listings and submit requests.
- Transparent and Secure: All transactions and interactions are executed on the Ethereum blockchain, ensuring transparency and immutability.
- Incentive Mechanism: GPU providers are rewarded with payment in ETH for sharing their GPU resources.
- Decentralized Governance: GPUHub is governed by the consensus of its participants, ensuring fairness and community-driven decision-making.
- Python
- Truffle
- Ganache (for local development)
- Clone the repository:
git clone https://github.com/pali101/GPUHub.git
- sudo
npm install ganache --global
- Install dependencies:
pip install -r src/server/requirements.txt
- Start a local development blockchain:
ganache --deterministic
- Compile and deploy the smart contracts:
truffle migrate
- Start the backend server:
python src/server/app.py
- Endpoint:
POST /addgpu
- Description: Add a GPU listing to the marketplace.
- Request Body:
{ "gpuModel": "string", "capacity": "integer", "price": "integer" }
- Response:
{ "success": true, "message": "GPU listing added successfully" }
- Endpoint:
POST /getgpudetailsbyid
- Description: Get the details of a GPU listing by its ID.
- Request Body:
{ "listingID": "integer" }
- Response Details of the GPU listing.
- Endpoint:
POST /fulfillrequest
- Description: Fulfill a GPU request by marking it as unavailable.
- Request Body:
{ "listingID": "integer" }
- Response:
{ "success": true, "message": "GPU listing fulfilled successfully - isAvailable set to false" }
- Endpoint:
POST /fulfilledrequest
- Description: Mark a fulfilled GPU listing as available again.
- Request Body:
{ "listingID": "integer" }
- Response:
{ "success": true, "message": "GPU listing fulfilled successfully - isAvailable set to true" }
- Endpoint:
GET /getgpulist
- Description: Get a list of all available GPU listings based on price and capacity.
- Request Body:
{
 fulfilledGPURequest
Here are some potential areas for future development and improvement:
-
Notifications and Real-Time Updates: Implement a notification system to keep users informed about important events. Real-time updates can enhance user engagement and provide a seamless experience.
-
Advanced Search and Filtering: Enhance the search and filtering capabilities in the user interface. Allow users to search for specific GPU models, filter listings by capacity or price, and sort the results based on different criteria. This will make it easier for users to find the GPU listings that meet their requirements.
-
Payment Integration: { "success": true, "message": "GPU listing added successfully" } Implement a payment mechanism to handle the transfer of funds between the requester and provider. This will ensure secure and automated payments for GPU usage.
-
Reputation System: Develop a reputation system for providers and requesters, allowing users to rate and provide feedback on their experiences. This will build trust within the community and promote high-quality services.
-
Time-Based Pricing: Extend the contract to support different pricing models, such as hourly or daily rates, in addition to the current per-minute pricing. This will offer more flexibility for providers and accommodate different usage scenarios.
-
Analytics and Reporting: Integrate analytics and reporting features into the user interface. Provide users with insights and statistics on their GPU usage, earnings, and performance. This information can help users make informed decisions and optimize their GPU rental experience.
Contributions from the community are highly appreciated. If you have any ideas, bug fixes, or improvements, please feel free to open issues and submit pull requests.
This project is licensed under the MIT License.
The MIT License is a permissive open-source license that allows you to use, modify, and distribute the code, both commercially and non-commercially. It provides a balance between granting users the freedom to use the software and protecting the developers' rights.
For more information, please see the LICENSE file.