From 322a8e4585ea4b0d8d9d925487c254f8a9a1630d Mon Sep 17 00:00:00 2001
From: Aspirin
Date: Thu, 29 Feb 2024 13:20:55 +0100
Subject: [PATCH 1/2] =?UTF-8?q?feat=20:=20add=20get=20campaign=20feature?=
=?UTF-8?q?=20=F0=9F=A6=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 41 +-----
programs/smart-contracts/src/lib.rs | 206 ++++++++++++++++------------
2 files changed, 127 insertions(+), 120 deletions(-)
diff --git a/README.md b/README.md
index a3c538c..aa068c1 100644
--- a/README.md
+++ b/README.md
@@ -29,49 +29,20 @@
## 📝 About
+
Exploring the development of a crowdfunding smart contract on the Solana blockchain, leveraging the Rust programming language and the Anchor framework. Crowdfunding has emerged as a popular method for raising funds for various projects, initiatives, and charitable causes, and blockchain technology introduces new possibilities for enhancing transparency, security, and efficiency in this process.
## 🏛️ Architecture
+
-```sh
-- User Interface
- ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
- │ Frontend │ │ Frontend │ │ Frontend │
- └───────┬───────┘ └───────┬───────┘ └───────┬───────┘
- │ │ │
- ▼ ▼ ▼
- ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
- │ User Wallet │ │ User Wallet │ │ User Wallet │
- └───────────────┘ └───────────────┘ └───────────────┘
- │ │ │
- └───────────────┬──────────┼───────────────┬──────────┼───────────────┐
- ▼ │ ▼ │ │
- ┌───────────────┐ │ ┌───────────────┐ │ Smart │
- │ Solana RPC │ │ │ Solana RPC │ │ Contracts │
- └───────────────┘ │ └───────────────┘ │ │
- │ │ │ │ │
- └──────────┼──────────────┼──────────┼───────────────┘
- ▼ ▼ │
- ┌─────────────────────────┐ │
- │ Anchor Lang Program │◀──────┘
- └─────────────────────────┘
- │ │ │
- │ │ │
- ┌────────────┘ │ └────────────┐
- │ │ │
- ┌────────────────┐┌────────────────┐┌────────────────┐
- │ Create ││ Withdraw ││ Donate │
- │ Function ││ Function ││ Function │
- └────────────────┘└────────────────┘└────────────────┘
-```
-
## 🎯 Features
-The crowdfunding smart contract implemented using the Anchor framework on the Solana blockchain offers a range of features designed to enhance the fundraising experience while ensuring transparency, security, and efficiency.
+
+The crowdfunding smart contract implemented using the Anchor framework on the Solana blockchain offers a range of features designed to enhance the fundraising experience while ensuring transparency, security, and efficiency.
1. Campaign Creation:
@@ -122,6 +93,6 @@ category : "which type of campaign"
8. Immutable Record Keeping:
- Transactional data and campaign details recorded on the Solana blockchain are immutable and tamper-proof, providing a permanent and verifiable record of fundraising activities.
-Immutable records enhance auditability, mitigating the risk of fraud or data manipulation and fostering trust among stakeholders.
+ Immutable records enhance auditability, mitigating the risk of fraud or data manipulation and fostering trust among stakeholders.
-##
\ No newline at end of file
+##
diff --git a/programs/smart-contracts/src/lib.rs b/programs/smart-contracts/src/lib.rs
index 3174354..6bc6eb2 100644
--- a/programs/smart-contracts/src/lib.rs
+++ b/programs/smart-contracts/src/lib.rs
@@ -1,111 +1,147 @@
use anchor_lang::prelude::*;
use anchor_lang::solana_program::entrypoint::ProgramResult;
-declare_id!("HYCWfDk8ZU8SF5oF9CE2CyChgBU6yndn82Umo4iE1Q9T");
+declare_id!("E4fXqx7ybioeqZsHWNndNnqnpQ93DnV99gKnnxWXjvdu");
#[program]
pub mod smart_contracts {
- use super::*;
-
- //creates a campaign
- pub fn create(
- ctx: Context,
- name: String,
- description: String,
- target_amount: u64,
- project_url: String,
- progress_update_url: String,
- project_image_url: String,
- category: String
- ) -> ProgramResult {
- let campaign = &mut ctx.accounts.campaign;
- campaign.name = name;
- campaign.description = description;
- campaign.target_amount = target_amount;
- campaign.project_url = project_url;
- campaign.progress_update_url = progress_update_url;
- campaign.project_image_url = project_image_url;
- campaign.category = category;
- campaign.amount_donated = 0;
- campaign.amount_withdrawn = 0;
- campaign.admin = *ctx.accounts.user.key;
- Ok(())
+ use super::*;
+
+ //creates a campaign
+ pub fn create(
+ ctx: Context,
+ name: String,
+ description: String,
+ target_amount: u64,
+ project_url: String,
+ progress_update_url: String,
+ project_image_url: String,
+ category: String
+ ) -> ProgramResult {
+ let campaign = &mut ctx.accounts.campaign;
+ campaign.name = name;
+ campaign.description = description;
+ campaign.target_amount = target_amount;
+ campaign.project_url = project_url;
+ campaign.progress_update_url = progress_update_url;
+ campaign.project_image_url = project_image_url;
+ campaign.category = category;
+ campaign.amount_donated = 0;
+ campaign.amount_withdrawn = 0;
+ campaign.admin = *ctx.accounts.user.key;
+ Ok(())
+ }
+
+
+
+ //Withdraw from a campaign
+ pub fn withdraw(ctx: Context, amount: u64) -> ProgramResult {
+ let campaign = &mut ctx.accounts.campaign;
+ let user = &mut ctx.accounts.user;
+ //restricts Withdrawal to campaign admin
+ if campaign.admin != *user.key {
+ return Err(ProgramError::IncorrectProgramId);
}
- //Withdraw from a campaign
- pub fn withdraw(ctx: Context, amount: u64) -> ProgramResult {
- let campaign = &mut ctx.accounts.campaign;
- let user = &mut ctx.accounts.user;
- //restricts Withdrawal to campaign admin
- if campaign.admin != *user.key {
- return Err(ProgramError::IncorrectProgramId);
- }
- let rent_balance = Rent::get()?.minimum_balance(campaign.to_account_info().data_len());
- if **campaign.to_account_info().lamports.borrow() - rent_balance < amount {
- return Err(ProgramError::InsufficientFunds);
- }
- **campaign.to_account_info().try_borrow_mut_lamports()? -= amount;
- **user.to_account_info().try_borrow_mut_lamports()? += amount;
- (&mut ctx.accounts.campaign).amount_withdrawn += amount;
- Ok(())
+ let rent_balance = Rent::get()?.minimum_balance(campaign.to_account_info().data_len());
+ if **campaign.to_account_info().lamports.borrow() - rent_balance < amount {
+ return Err(ProgramError::InsufficientFunds);
}
- //Donate to a campaign
- pub fn donate(ctx: Context, amount: u64) -> ProgramResult {
- let ix = anchor_lang::solana_program::system_instruction::transfer(
- &ctx.accounts.user.key(),
- &ctx.accounts.campaign.key(),
- amount
- );
- anchor_lang::solana_program::program::invoke(
- &ix,
- &[ctx.accounts.user.to_account_info(), ctx.accounts.campaign.to_account_info()]
- );
- (&mut ctx.accounts.campaign).amount_donated += amount;
- Ok(())
+ **campaign.to_account_info().try_borrow_mut_lamports()? -= amount;
+ **user.to_account_info().try_borrow_mut_lamports()? += amount;
+ (&mut ctx.accounts.campaign).amount_withdrawn += amount;
+ Ok(())
+ }
+
+
+
+ //Donate to a campaign
+ pub fn donate(ctx: Context, amount: u64) -> ProgramResult {
+ let ix = anchor_lang::solana_program::system_instruction::transfer(
+ &ctx.accounts.user.key(),
+ &ctx.accounts.campaign.key(),
+ amount
+ );
+ // Store the result of the invoke function call
+ let result = anchor_lang::solana_program::program::invoke(
+ &ix,
+ &[ctx.accounts.user.to_account_info(), ctx.accounts.campaign.to_account_info()]
+ );
+ // Check if the invoke operation was successful
+ if let Err(e) = result {
+ return Err(e.into()); // Convert the error to a ProgramResult
+ }
+ // Proceed with the rest of the function
+ (&mut ctx.accounts.campaign).amount_donated += amount;
+ Ok(())
+ }
+
+ //Get the campaign
+ pub fn get_campaign(ctx: Context) -> ProgramResult {
+ let campaign = &ctx.accounts.campaign;
+ let user = &ctx.accounts.user;
+ if campaign.admin != *user.key {
+ return Err(ProgramError::IncorrectProgramId);
+ }
+ Ok(())
}
+
+
}
#[derive(Accounts)]
pub struct Create<'info> {
- #[account(
- init,
- payer = user,
- space = 9000,
- seeds = [b"CROWDFUND".as_ref(), user.key().as_ref()],
- bump
- )]
- pub campaign: Account<'info, Campaign>,
- #[account(mut)]
- pub user: Signer<'info>,
- pub system_program: Program<'info, System>,
+ #[account(
+ init,
+ payer = user,
+ space = 9000,
+ seeds = [b"CROWDFUND".as_ref(), user.key().as_ref()],
+ bump
+ )]
+ pub campaign: Account<'info, Campaign>,
+ #[account(mut)]
+ pub user: Signer<'info>,
+ pub system_program: Program<'info, System>,
}
+
#[derive(Accounts)]
pub struct Withdraw<'info> {
- #[account(mut)]
- pub campaign: Account<'info, Campaign>,
- #[account(mut)]
- pub user: Signer<'info>,
+ #[account(mut)]
+ pub campaign: Account<'info, Campaign>,
+ #[account(mut)]
+ pub user: Signer<'info>,
}
+
+
#[derive(Accounts)]
pub struct Donate<'info> {
- #[account(mut)]
- pub campaign: Account<'info, Campaign>,
- #[account(mut)]
- pub user: Signer<'info>,
- pub system_program: Program<'info, System>,
+ #[account(mut)]
+ pub campaign: Account<'info, Campaign>,
+ #[account(mut)]
+ pub user: Signer<'info>,
+ pub system_program: Program<'info, System>,
}
+#[derive(Accounts)]
+pub struct GetCampaign<'info> {
+ #[account(mut)]
+ pub campaign: Account<'info, Campaign>,
+ #[account(mut)]
+ pub user: Signer<'info>,
+}
+
+
#[account]
pub struct Campaign {
- pub admin: Pubkey,
- pub name: String,
- pub description: String,
- pub target_amount: u64,
- pub project_url: String,
- pub progress_update_url: String,
- pub project_image_url: String,
- pub category: String,
- pub amount_donated: u64,
- pub amount_withdrawn: u64,
+ pub admin: Pubkey,
+ pub name: String,
+ pub description: String,
+ pub target_amount: u64,
+ pub project_url: String,
+ pub progress_update_url: String,
+ pub project_image_url: String,
+ pub category: String,
+ pub amount_donated: u64,
+ pub amount_withdrawn: u64,
}
From 8b77b4807f0b5acfca8c26fccf72e94ac9551f6e Mon Sep 17 00:00:00 2001
From: Aspirin
Date: Thu, 29 Feb 2024 13:29:52 +0100
Subject: [PATCH 2/2] =?UTF-8?q?feat=20:=20add=20get=20campaign=20feature?=
=?UTF-8?q?=20=F0=9F=A6=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 13 ++++++++++++-
public/system-design.png | Bin 1048300 -> 1051447 bytes
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index aa068c1..cf55bbc 100644
--- a/README.md
+++ b/README.md
@@ -95,4 +95,15 @@ category : "which type of campaign"
- Transactional data and campaign details recorded on the Solana blockchain are immutable and tamper-proof, providing a permanent and verifiable record of fundraising activities.
Immutable records enhance auditability, mitigating the risk of fraud or data manipulation and fostering trust among stakeholders.
-##
+## 🗂️ Folder Structure.
+
+```sh
+CrowdFund/
+├── programs/smart-contracts/
+├ ├── src/
+├ ├── lib.rs (contains smart contracts code)
+├── tests/
+ ├── smart-contracts.ts (contains test cases for smart contracts)
+
+
+```
diff --git a/public/system-design.png b/public/system-design.png
index daaca263d75dc7f3fd8c4579f66bfd9656609117..c292bd3212ae4590001be86790cc08bd9b4ee6ce 100644
GIT binary patch
delta 18906
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