DecentCrowd
Decentralized crowdfunding for Sub-Saharan Africa. Milestone-based escrow, DAO governance, and no intermediaries โ built on Ethereum.
Install MetaMask
MetaMask is a browser extension that acts as your Ethereum wallet. It lets you connect to DecentCrowd, sign transactions, and manage your funds โ without ever giving the app your private key.
0xE2E9...1e9F). This is your public identity on the blockchain. Share it freely โ it doesn't give anyone access to your funds.Get Test ETH
To interact with DecentCrowd you need Sepolia ETH to pay for gas (transaction fees). It's free โ use any of these faucets:
| Faucet | Amount | Requirement |
|---|---|---|
| Google Cloud Web3 Faucet | 0.05 ETH/day | None โ recommended |
| Alchemy Faucet | 0.5 ETH/day | Free Alchemy account |
| Chainlink Faucet | 0.1 ETH/day | 0.001 ETH on mainnet |
Paste your wallet address into the faucet and click Send ETH. Funds usually arrive within 30 seconds. You can also request test ETH directly from the app โ click your wallet address in the top bar and select Get Test ETH.
Connect Your Wallet
DecentCrowd automatically switches your wallet to Sepolia when you connect. You don't need to configure anything manually.
Once connected, your truncated address (e.g. 0xE2E9โฆ1e9F) appears in the top bar with a green dot. Click it to see your full address, balance, and options.
How Escrow Works
When you pledge ETH to a campaign, your funds are not sent to the creator. They are locked in the DecentCrowd smart contract on Sepolia. The contract acts as a neutral escrow โ it holds the funds and releases them only when specific conditions are met.
The pledge flow
- You click Back this project and enter an amount
- MetaMask asks you to confirm โ you approve
- Your ETH is sent directly to the smart contract address
0x787dโฆ7b92 - The contract records your pledge and adds it to the campaign's
raisedtotal - You can see your pledge on Sepolia Etherscan immediately
Milestone-based release
Each campaign is divided into milestones with a percentage of the total raise attached to each one. When a creator completes a milestone, they submit proof to the DAO. If the DAO votes to approve, the corresponding tranche is released to the creator minus the 2.5% platform fee.
Refunds
If a campaign does not reach its goal by its deadline, or if the DAO rejects a milestone vote, the contract automatically enables refunds. Any backer can then call claimRefund() to get their full pledge back โ no permission from the creator or platform needed.
DAO Governance
DecentCrowd uses a decentralized autonomous organization (DAO) to verify milestone completion and authorize fund releases. No single person โ including the DecentCrowd team โ can unilaterally release funds.
Who can vote?
Any wallet that has pledged ETH to a campaign can vote on that campaign's milestone proposals. Votes are weighted by pledge size โ a backer who pledged 0.5 ETH has more voting weight than one who pledged 0.01 ETH.
How a vote works
finaliseMilestone(). If Yes โฅ No (by weight), funds release to the creator. If No > Yes, refunds are enabled for all backers.Back a Campaign
Backing a campaign means pledging Sepolia ETH to it. Your funds go into escrow and are only released to the creator if milestones are approved by the DAO.
Create a Campaign
Anyone can launch a campaign on DecentCrowd. Your campaign is deployed directly to the blockchain โ no approval from the platform is needed.
Campaign checklist
- Clear, specific title that describes the real-world outcome
- Realistic funding goal in ETH
- 2โ3 milestones with verifiable deliverables
- Milestone percentages that sum to exactly 100
- Campaign duration between 1 and 365 days
How to deploy
Smart Contract
The DecentCrowd smart contract is deployed on Ethereum Sepolia Testnet. It is the sole custodian of all pledged funds.
Read functions
| Function | Type | Description |
|---|---|---|
| getCampaign(id) | Read | Returns all campaign details including goal, raised, deadline, and status |
| getMilestone(campaignId, index) | Read | Returns milestone description, release percent, vote counts, and status |
| getPledge(campaignId, address) | Read | Returns a specific backer's pledge amount in wei |
| campaignCount() | Read | Returns the total number of campaigns deployed |
| getAllCampaigns() | Read | Returns an array of all campaign IDs |
Write functions
| Function | Type | Description |
|---|---|---|
| createCampaign(...) | Write | Deploys a new campaign with title, goal, duration, and milestones |
| pledge(id) | Write | Pledges ETH to a campaign. Send ETH as msg.value |
| vote(id, support) | Write | Casts a weighted vote on the current milestone (true = approve) |
| finaliseMilestone(id) | Write | Finalises a vote after 24h and releases funds or enables refunds |
| claimRefund(id) | Write | Claims a full refund when refunds are enabled |
Events
| Event | Type | Emitted when |
|---|---|---|
| CampaignCreated | Event | A new campaign is deployed |
| Pledged | Event | A backer successfully pledges ETH |
| MilestoneApproved | Event | A milestone vote passes and funds are released |
| MilestoneRejected | Event | A milestone vote fails and refunds are enabled |
| Refunded | Event | A backer successfully claims their refund |
Interact directly
You can call any read function directly on Etherscan without a wallet. For write functions, connect MetaMask on the Etherscan contract page under the Write Contract tab.
# Example: read campaign 1 details using ethers.js
const provider = new ethers.JsonRpcProvider("https://rpc.sepolia.org");
const contract = new ethers.Contract(
"0x787daAD9f70489D00B9f18bE458De93737827b92",
["function getCampaign(uint256) view returns (uint256,address,string,string,string,string,uint256,uint256,uint256,uint256,uint256,bool,bool)"],
provider
);
const campaign = await contract.getCampaign(1);
console.log(campaign);
FAQ
Is this real money?
No. DecentCrowd runs on Ethereum Sepolia Testnet. All ETH used is test ETH with no real monetary value. You can get it for free from any Sepolia faucet.
What is the platform fee?
DecentCrowd charges a 2.5% fee on each milestone release. This is deducted automatically by the smart contract at the time of release. There are no listing fees or withdrawal fees.
What happens if a campaign doesn't reach its goal?
If the campaign deadline passes without reaching the funding goal, the platform enables refunds. Every backer can call claimRefund() to get their full pledge back โ the creator receives nothing.
Can I back a campaign without MetaMask?
No. All interactions with the smart contract require a Web3 wallet. MetaMask is the recommended option. On mobile, the MetaMask browser app works the same way.
How long does a transaction take?
Sepolia transactions typically confirm in 15โ30 seconds. During periods of high network activity it may take up to a few minutes.
Can the DecentCrowd team take my funds?
No. Funds are held by the smart contract, not by DecentCrowd. The contract owner address (0xE2E9โฆ1e9F) can only enable refunds and open milestone votes โ it cannot withdraw pledged funds directly.
Where is the source code?
The smart contract source code is available on GitHub and verified on Sepolia Etherscan.