A decentralized platform where funds are released only when creators meet their milestones.
- Duisenbek Bekzat
- Nur-Adilet Mustafa
- Aknur Ondasyn
TrustLayer solves the biggest problem in crowdfunding: Trust. Instead of giving all money to the creator at once, backers' funds are locked in a smart contract. The creator must submit Milestone Requests (e.g., "Build Prototype", "Marketing Phase"), and backers Vote (proportional to their contribution) to approve the release of funds.
This ensures:
- Accountability: Creators must deliver results to get paid.
- Safety: Backers control the flow of funds.
- Transparency: All transactions and votes are on-chain.
- Milestone-Based Funding: Money is released in stages, not lumpsum.
- Decentralized Governance: Contributors vote "Yes" to approve fund release.
- Trustless Escrow: Smart contracts hold the ETH, not a middleman.
- Reward Tokens (TSL): Backers receive TSL tokens as a proof of contribution (1 ETH = 1000 TSL).
- Transparent Dashboard: Real-time tracking of goals, funds raised, and voting status.
Below is the complete user journey demonstrating how a campaign is created, funded, and how milestones are approved by the community.
First, the creator starts a new campaign. The contract is deployed to the blockchain.
Backers contribute ETH. Once the goal is reached, the campaign is fully funded, and funds are locked in escrow.
To withdraw funds, the creator must submit a specific milestone proposal explaining what the funds are for (e.g., "Building Prototype").
Contributors review the milestone. Voting is open to all backers.
Backers vote "Yes" to approve the milestone. Their voting power is proportional to their contribution amount.
Once enough votes are gathered (>50%), the milestone status changes to Approved.
The creator can now see that the funds are unlocked and ready for withdrawal.
The milestone is marked as Released, and the specific amount of ETH is transferred to the creator's wallet.
The creator successfully receives the funds in their wallet.
- Frontend: HTML5, CSS3 (Custom Design System), Vanilla JavaScript
- Blockchain: Ethereum (Hardhat Localhost)
- Smart Contracts: Solidity (v0.8.20)
- Library: Ethers.js (v6)
-
Clone the Repository
git clone https://github.com/duesenbek/trustlayer.git cd trustlayer/trustlayer -
Install Dependencies
npm install
-
Start Local Blockchain
npx hardhat node
-
Deploy Contracts (In a new terminal)
npx hardhat run scripts/deploy.js --network localhost
(Copy the Factory address)
-
Start Frontend
npm run dev
-
Setup MetaMask
- Network:
Localhost 8545(Chain ID:31337) - Import Account: Use one of the private keys from Hardhat output.
- Network:
This project is for educational purposes as part of the Blockchain Course (Trim 2).








