EscrowCrowd is a decentralized crowdfunding platform built on Stellar's Soroban smart contract network. It ensures absolute trust by locking funds in an all-or-nothing escrow vault on-chain. Funds are only released to the creator if the campaign goal is met before the deadline. If the goal is not met, all backers can claim full refunds.
- All-or-Nothing Escrow Vault: Trustless fund management ensuring creator accountability.
- Factory/Registry Pattern: A
ProjectFactorycontract acts as a master registry, storing metadata for all deployed campaigns, enabling a decentralized index of active projects. - Inter-Contract Communication: Once a user donates over a threshold, the crowdfund contract automatically invokes the
RewardBadgecontract to mint a "Top Supporter" NFT/badge for the donor. - Live Testnet Integration: Fully integrated with the Soroban Testnet using
@stellar/freighter-apiand the Stellar RPC. - Responsive UI: A modern, mobile-responsive, glassy UI built with React, TailwindCSS, and Framer Motion.
Serves as the decentralized index.
- Role: Maintains a
Vec<Address>of all campaigns andMap<Address, CampaignSummary>for metadata. - Why: Soroban currently faces footprint issues when contracts deploy other contracts dynamically on testnet. The Registry pattern elegantly solves this by allowing users to deploy campaigns independently and register them in the master factory, making cross-contract integration seamless.
The core business logic deployed per campaign.
- State: Tracks
goal,deadline,total_raised, and individualDonation(Address)balances. - Functions:
donate,withdraw(only if goal met),refund(only if deadline passed and goal not met).
An autonomous badge minter.
- Role: Invoked via cross-contract calls from the
CrowdfundContractwhen a donor crosses the 100 XLM threshold. - Security: Ensures that only valid, registered crowdfund contracts can trigger the minting process.
- Contract ID:
CDF5SGXM3IP3GQRN4FNK5RXRGO276L6TBJNJXPL2HY5ELFIRCDKIDJQY - Deployment Hash:
65d755c9603099dc59c40212dbd1bbf8d73b5bd0b85775f058097b6a18d18b2b
- Contract ID:
CB2NL3GDXGR36P53NCWXJ57XFKCVGNJAJDQCG4QMHMPEKN3PAKOAPXKM - Deployment Hash:
f44bda98c1344882aca21dbff9175e3f4c1d9dea07007a065d892faa8cf09366
- Node.js (v20+)
- Rust (v1.81.0) with
wasm32-unknown-unknowntarget - Stellar CLI
- Navigate to the contracts directory:
cd contracts - Run the test suite (5 passing tests):
cargo test - Build the WASM binaries:
cargo build --target wasm32-unknown-unknown --release
- Install dependencies:
npm install
- Start the development server:
npm run dev
This project is configured with a GitHub Actions CI/CD pipeline (.github/workflows/ci.yml). On every push to main, the pipeline:
- Installs the Rust toolchain and checks out the repository.
- Compiles the Soroban smart contracts.
- Runs the Rust unit tests.
- Installs NPM dependencies and builds the production React application.
- Live Demo (Vercel/Netlify):
[Insert Your Link Here] - Demo Video (1-2 min):
[Insert Your Link Here]
Note: Screenshots of the Mobile Responsive UI, Passing Tests, and CI/CD Pipeline running are attached in the repository as per the submission requirements.