A blockchain-based fact-checking system built on Stellar's Soroban smart contract platform
- Overview
- Features
- Architecture
- Getting Started
- Deployed Contracts
- Usage
- Development
- Project Structure
- Documentation
TruthStamp is a decentralized fact-checking system that incentivizes expert verification through economic stakes and reputation management. Built on Stellar's Soroban platform, it uses three interconnected smart contracts to create a transparent, incentivized ecosystem for claim verification.
Key Principles:
- π° Economic stakes ensure accountability
- π Reputation-based expert system
- π― Consensus-driven verification
- π Transparent on-chain records
- β‘ Fast, low-cost transactions on Stellar
- π Submit Claims - Post any factual claim for expert verification (0.5 XLM fee)
- π Browse Verified Claims - View all claims with verification status
- π° Stake on Claims - Add economic weight to claims you believe in
- π Track Consensus - See real-time expert consensus on claims
- π¨βπ¬ Register as Expert - Three-tier system (General/Specialized/Professional)
- β Review Claims - Provide professional verdicts with confidence ratings
- π Earn Rewards - Receive 80% of claim pools for correct reviews
- π Build Reputation - Dynamic reputation system with 5 levels
- π Track Performance - Monitor accuracy rate and earnings
- π Freighter Wallet Integration - Seamless blockchain transactions
- βοΈ Stake-Weighted Voting - Higher stakes = more influence
- π― Automatic Consensus - Smart contract calculates final verdict
- πΈ Reward Distribution - Automatic payouts to accurate experts
β οΈ Slashing Mechanism - 10% penalty for incorrect reviews
TruthStamp consists of three interconnected smart contracts:
Contract ID: CDJDSL4LO3442NKVWAQIXGZLJOR7IKIZWFAQZUERPKEFSUETJLZFNUAY

Manages claim lifecycle and verification status.
Key Functions:
submit_claim()- Submit new claims with 0.5 XLM feeget_claim()- Retrieve claim detailsupdate_claim_status()- Update verification statusadd_to_stake_pool()- Add stakes to claims
Contract ID: CCLPI23VX3PVWBMPGDOYJZTKS4XMUWPWIPEOKSTZYK2WDQ6OEFQUJHUC

Handles expert registration and reputation management.
Key Functions:
register_expert()- Register with tiered stakes (100/500/1000 XLM)get_expert()- Retrieve expert profileupdate_reputation()- Update expert reputation after reviewsadd_earnings()- Distribute rewards to expertsslash_stake()- Penalize incorrect reviews
Contract ID: CBQOIHPAZMEZDGAPQRPPB3WCXL5YHWKVQ6SUVU5CUJUSEHCDLVER67M4

Calculates consensus and manages reward distribution.
Key Functions:
submit_review()- Submit expert reviewsget_consensus()- Calculate stake-weighted consensusdistribute_rewards()- Payout to accurate experts
- Rust 1.91.0 or higher
- Node.js 16+ and npm
- Stellar CLI (replaces soroban-cli)
- Freighter Wallet browser extension
- Clone the repository
git clone <repository-url>
cd truthstamp- Install Rust dependencies
rustup target add wasm32-unknown-unknown
cargo build --target wasm32-unknown-unknown --release- Install frontend dependencies
cd truthstamp-app
npm install- Build contracts
./build.sh- Deploy to testnet (Optional - already deployed)
./deploy.sh- Start the frontend
cd truthstamp-app
npm start- Open browser
http://localhost:3000
All contracts are live on Stellar Soroban Testnet:
| Contract | Address | Explorer |
|---|---|---|
| Claim Registry | CDJDSL4LO3442NKVWAQIXGZLJOR7IKIZWFAQZUERPKEFSUETJLZFNUAY |
View |
| Expert Registry | CCLPI23VX3PVWBMPGDOYJZTKS4XMUWPWIPEOKSTZYK2WDQ6OEFQUJHUC |
View |
| Review Consensus | CBQOIHPAZMEZDGAPQRPPB3WCXL5YHWKVQ6SUVU5CUJUSEHCDLVER67M4 |
View |
Network Details:
- Network: Stellar Soroban Testnet
- RPC URL: https://soroban-testnet.stellar.org:443
- Network Passphrase:
Test SDF Network ; September 2015
-
Connect Wallet
- Install Freighter Wallet
- Click "Connect Wallet" in the app
- Approve connection
-
Get Testnet XLM
- Visit Stellar Laboratory
- Fund your account with testnet XLM
-
Submit a Claim
- Go to "Submit Claim" page
- Enter claim text, category, and sources
- Pay 0.5 XLM fee
- Sign transaction in Freighter
-
Register as Expert
- Go to "Expert Dashboard"
- Fill registration form
- Choose expertise level and stake amount
- Sign transaction
-
Review Claims
- Browse claims on "Browse Claims" page
- Click on a claim to review
- Submit your verdict with confidence rating
We provide a convenient script for contract invocation:
# View help
./invoke_contracts.sh help
# Submit a claim
./invoke_contracts.sh submit-claim <address> "Claim text" "Category" '["source1"]'
# Get claim details
./invoke_contracts.sh get-claim 1
# Register as expert
./invoke_contracts.sh register-expert <address> "Name" "Bio" '["Category"]' 1000000000
# Get expert profile
./invoke_contracts.sh get-expert <address>
# Check claim count
./invoke_contracts.sh claim-count# Build all contracts
cargo build --target wasm32-unknown-unknown --release
# Or use the build script
./build.sh# Run tests
cargo test
# Or use the test script
./test.shcd truthstamp-app
npm startThe app will open at http://localhost:3000
# Initialize contracts
stellar contract invoke --id <CONTRACT_ID> --source deployer --network testnet -- initialize --admin <ADDRESS>
# Submit claim
stellar contract invoke --id <CLAIM_CONTRACT> --source deployer --network testnet -- submit_claim --submitter <ADDRESS> --text "Claim" --category "Science" --sources '["url"]'
# Register expert
stellar contract invoke --id <EXPERT_CONTRACT> --source deployer --network testnet -- register_expert --expert <ADDRESS> --name "Name" --bio "Bio" --expertise_categories '["Science"]' --stake_amount 1000000000truthstamp/
βββ contracts/ # Smart contracts (Rust)
β βββ claim_registry/ # Claim management contract
β β βββ src/lib.rs # Main contract logic (650 lines)
β βββ expert_registry/ # Expert registration contract
β β βββ src/lib.rs # Main contract logic (420 lines)
β βββ review_consensus/ # Consensus calculation contract
β βββ src/lib.rs # Main contract logic (630 lines)
βββ truthstamp-app/ # React frontend
β βββ src/
β β βββ App.tsx # Main app component
β β βββ pages/ # Page components
β β β βββ HomePage.tsx
β β β βββ SubmitClaim.tsx
β β β βββ BrowseClaims.tsx
β β β βββ ClaimDetail.tsx
β β β βββ ExpertDashboard.tsx
β β β βββ Leaderboard.tsx
β β βββ utils/ # Utility functions
β β βββ contracts.ts # Contract interaction
β β βββ wallet.ts # Wallet connection
β βββ package.json
βββ build.sh # Build script for contracts
βββ deploy.sh # Deployment script
βββ invoke_contracts.sh # CLI helper script
βββ Cargo.toml # Rust workspace config
βββ README.md # This file
- ARCHITECTURE.md - System architecture details
- GETTING_STARTED.md - Setup and installation guide
- INTEGRATION_GUIDE.md - Frontend integration guide
- PROJECT_SUMMARY.md - Project overview
- DEPLOYED_CONTRACTS.md - Contract addresses and details
- ROADMAP.md - Future development plans
- Language: Rust 1.91.0
- Platform: Stellar Soroban SDK 21.7.7
- Build: Cargo, WASM target
- Network: Stellar Soroban Testnet
- Framework: React 18.2.0
- Language: TypeScript 4.9.5
- Routing: React Router DOM 6.20.0
- Blockchain: Stellar SDK, Freighter Wallet
- Styling: CSS3 with gradients and animations
- CLI: Stellar CLI (stellar-cli)
- Wallet: Freighter Browser Extension
- Explorer: Stellar Expert
- Testing: Cargo test, React Testing Library
- Claim Submission: 0.5 XLM
- Expert Stakes:
- General: 100 XLM minimum
- Specialized: 500 XLM minimum
- Professional: 1000 XLM minimum
- Correct Reviews: 80% of claim pool
- Incorrect Reviews: 10% stake slashing
- Stake Pool: Accumulates from submission fees
- Seedling (0-99 points)
- Sprout (100-499 points)
- Established (500-999 points)
- Expert (1000-4999 points)
- Master (5000+ points)
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Stellar Foundation - For the Soroban smart contract platform
- Freighter Team - For the excellent wallet integration
- Rust Community - For the amazing tooling
- Project: TruthStamp
- Network: Stellar Soroban Testnet
- Deployment Date: November 2, 2025
Built with β€οΈ on Stellar Soroban