
Pedulichain
Transparent Charity on Blockchain
Demo
About
The problem it solves Traditional charitable giving often suffers from: Lack of Transparency: Donors cannot track where their money goes, leading to distrust. Centralized Control: Single institutions decide fund distribution without community input. Slow Reporting: Manual audits and paper reports delay impact updates. Verification Gaps: No immutable proof that donations were used as promised. PeduliChain tackles these issues by: Recording every donation on a public blockchain, viewable in real time. Empowering donors to vote on how funds are spent, ensuring democratic governance. Automating disbursement proposals and execution once a majority approves. Storing proof of impact (receipts, images, reports) on IPFS, linked by immutable CIDs. Use Cases & Benefits: Non-profits & NGOs: Launch campaigns and invite global donors to transparently fund projects. Community-Led Initiatives: Neighborhood, student, or environmental groups can fundraise and govern their budgets. Corporate Social Responsibility: Companies can prove to stakeholders exactly how CSR funds are allocated and spent. Disaster Relief: Fast, auditable donations and community-approved fund release to first responders.
How it's made
Challenges we ran into Asynchronous RPC Timeouts (UND_ERR_HEADERS_TIMEOUT & ECONNRESET): Public Sepolia RPC endpoints occasionally timed out or reset connections. Solution: Integrated multiple reliable endpoints (Infura, Ankr, Thirdweb) with long HTTP timeouts in Hardhat config. Ethers.js v6 Migration: Methods like .deployed() and ethers.utils.parseEther() changed in v6. Solution: Switched to await contract.waitForDeployment(), ethers.parseEther(), and contract.getAddress() for seamless deployment. Blockscout Verification Delays: Blockscout often reported “The address is not a smart contract” due to indexing lag. Solution: Added fully‐qualified contract paths in verify:verify calls, introduced a manual delay, and ultimately verified via hardhat run with explicit contract fields. TypeScript + Vite + Rollup Chunk Warnings: Large dependencies triggered chunk‐size warnings. Solution: Implemented dynamic imports and manual chunk splitting in Vite config to optimize bundles. 3D Globe Performance Tuning: Initial globe rendering lagged with many campaigns. Solution: Batching marker geometry, lazy‐loading data, and throttling camera updates with Framer Motion eased CPU/GPU load.