Consensa: Transparent Charity Crowdfunding
Trustless giving for maximum impact
Created on 2nd August 2025
•
Consensa: Transparent Charity Crowdfunding
Trustless giving for maximum impact
The problem Consensa: Transparent Charity Crowdfunding solves
Every year, millions of dollars are donated to good causes, but a crisis of trust is eroding the foundation of giving. In 2024 alone, $96 million was lost to fraudulent charity campaigns. Donors are left in the dark, unable to track their money or verify the impact of their generosity. What if we could change that?
We solve the biggest problems in the charity space:
- Guaranteed Transparency: Every donation is tracked on the blockchain, from your wallet to the beneficiary, in real-time.
- Global Access: We break down borders, allowing anyone, anywhere, to donate using crypto or traditional payments.
- Verified Impact: Our smart contracts ensure funds are released by milestones only when impact is proven with real-time evidence like photos and receipts.
- Multisig Security: No single person controls the funds. Multiple signatures are required for any release, eliminating single points of failure and protecting against fraud.
For Donors:
- End donation anxiety - See exactly where every dollar goes with real-time blockchain tracking, eliminating the fear of fraud that stops 69% of people from donating to unfamiliar causes
- Global giving made simple - Donate to any cause worldwide without geographic restrictions, using crypto or traditional payments
- Verified impact - Receive proof that your money created real change through immutable impact reports and photos
For Campaign Creators:
- Instant credibility - Multisignature security and transparent fund management builds donor trust from day one
- Lower costs - Pay only 2.5% platform fees instead of 5-8% on traditional platforms, plus no hidden payment processor markups
- Global reach - Access donors worldwide without being limited by country-specific platform restrictions
For the Charity Ecosystem:
- Fraud prevention - Smart contracts and community validation eliminate the $96M annual loss to fraudulent campaigns
- Trust restoration - Blockchain transparency addresses why 32% of donors trust charities less today than 5 years ago
- Democratized giving - Remove barriers that currently limit only 5% of donations to international causes
The result:
Transform charitable giving from a leap of faith into a transparent, verifiable impact investment where every donation creates trackable, measurable change.
Challenges we ran into
During the development of this Web3 project, our team encountered several significant technical challenges, primarily related to library compatibility, gas management, and smart contract design.
-
Ethers.js Version Compatibility
The Problem: We decided to migrate from ethers.js v5 to v6. This seemingly minor update introduced breaking changes across our entire codebase. Functions like deployer.getBalance() and hre.ethers.utils.formatEther() had been replaced with new syntax (hre.ethers.provider.getBalance(deployer.address) and hre.ethers.formatEther(), respectively). A particularly difficult issue was the waitForTransaction() function not being implemented in HardhatEthersProvider, which broke our deployment scripts.
How we solved it: Our team systematically went through all our deployment and testing scripts, updating every instance of the old v5 syntax to the new v6 syntax. For the waitForTransaction issue, we had to find an alternative way to handle transaction confirmations in our Hardhat environment. -
Gas Estimation and Limit Issues
The Problem: We frequently ran into errors like "intrinsic gas too low" and "insufficient gas for floor data gas cost" during deployment. The default gas estimation was often inaccurate, especially on networks like Lisk Sepolia, causing transactions to fail.
How we solved it: To overcome this, we implemented several fixes. First, we manually set a conservative gas limit of 500,000 for initial deployments to ensure they wouldn't fail due to low gas. Next, we researched and implemented a more robust gas estimation strategy and began monitoring gas usage more closely to optimize contract functions and deployment scripts for efficiency. -
BigInt Serialization
The Problem: When we tried to save deployment information (like contract addresses and transaction details) to a JSON file, we would get a TypeError: Do not know how to serialize a BigInt. This was because JavaScript's native JSON.stringify() cannot handle the BigInt data type, which is common with blockchain values.
How we solved it: We created a simple utility function to preprocess the deployment data. Before calling JSON.stringify(), we would iterate through the data object and convert any BigInt values to strings, allowing the serialization process to complete without errors. -
Smart Contract Design Challenges
The Problem: Our smart contract design involved a complex voting system where we needed to return a mapping stored within a struct. This isn't possible in Solidity. We also had to implement a sophisticated approval mechanism with a dynamic threshold and a robust role-based access control system.
How we solved it: We tackled these issues by separating concerns. For the mapping issue, we implemented a separate getter function that takes a key as an argument and returns the corresponding value. For the access control and voting, we carefully designed state management and used proper modifiers on functions to restrict access to specific roles, ensuring the security and integrity of the contract.
Lessons Learned
These challenges reinforced the importance of several key practices in Web3 development for our team:
Always check library compatibility: Upgrading dependencies without careful consideration can lead to significant rework.
Environment management is crucial: Proper .env handling is not just for convenience; it's a critical security practice.
Thorough testing is non-negotiable: Comprehensive testing scripts are essential for verifying network-specific configurations and contract logic.
