All simulated transaction fallbacks have been removed. Every transaction now goes directly to the Cardano blockchain.
- β
Blockfrost API key configured in
frontend/.env - β Cardano wallet installed (Nami/Lace/Eternl/Flint)
- β Wallet has testnet ADA (get from faucet)
- β
Development servers running (
npm run dev) - β Freelancer needs: 1.2 ADA minimum (1 ADA + fees for completion)
- β Client needs: Milestone amount + 0.2 ADA (for payment + fees)
# 1. Open your Cardano wallet
# 2. Copy your wallet address
# 3. Visit: https://docs.cardano.org/cardano-testnet/tools/faucet/
# 4. Paste your address and request ADA
# 5. Wait ~20 seconds for confirmationYou need:
- Freelancer wallet: Minimum 2 ADA (1 ADA for completion proof + fees)
- Client wallet: Minimum 3 ADA (2 ADA milestone payment + fees)
- Total for full test: 5 ADA across both wallets
- Open http://localhost:3000
- Click "Connect Wallet" (top right)
- Select your wallet (Nami/Lace/etc)
- Approve the connection
- Verify your address and balance display
- Click "Create Project"
- Fill in:
Title: Real Blockchain Test Description: Testing real Cardano transactions Freelancer Address: [paste another address or same for testing] Milestone 1: - Description: Test milestone - Amount: 2000000 (2 ADA) - Deadline: [any future date] - Click "Create Project"
- Note the project ID
This is a REAL blockchain transaction!
- Navigate to the project detail page
- As freelancer, click "Mark Complete"
- Wallet popup appears - Review transaction:
Sending: 1 ADA (proof of completion) To: [client address] Fee: ~0.17 ADA Metadata: Completion proof with milestone details - Click "Confirm" in wallet
- Wait 5-10 seconds
- Success! Completion transaction hash displayed
- Status changes to "Completed"
Why 1 ADA? This creates an immutable on-chain record that the freelancer has completed the work and is requesting approval. The client receives 1 ADA as proof.
This is the REAL blockchain transaction!
- As client, click "Approve & Release Funds"
- Wallet popup appears - Review transaction:
Sending: 2 ADA To: [freelancer address] Fee: ~0.17 ADA Metadata: Project and milestone info - Click "Confirm" in wallet
- Wait 5-10 seconds
- Success! Transaction hash displayed
- Copy the transaction hash from the success message
- Visit: https://preprod.cardanoscan.io/
- Paste the transaction hash
- See your real transaction!
- β Amount: 2 ADA
- β Sender: Your address
- β Recipient: Freelancer address
- β Metadata: Project details
- β Status: Confirmed
- β Block number
- β Timestamp
1. Freelancer clicks "Mark Complete"
2. Lucid builds transaction: 1 ADA β Client
3. Metadata: Completion proof + milestone details
4. Wallet signs transaction locally
5. Lucid submits to Blockfrost API
6. Blockfrost submits to Cardano network
7. Transaction hash returned
8. Backend updated with completion tx hash1. Client clicks "Approve & Release Funds"
2. Lucid builds transaction: Full amount β Freelancer
3. Metadata: Payment proof + milestone details
4. Wallet signs transaction locally
5. Lucid submits to Blockfrost API
6. Blockfrost submits to Cardano network
7. Transaction hash returned
8. Backend updated with payment tx hash1. Receives transaction hash from frontend
2. Validates and stores in database
3. Returns success with explorer URL
4. NO simulation fallbacks1. Transaction enters mempool
2. Validators pick up transaction
3. Transaction included in block
4. Block confirmed (~20 seconds)
5. Funds transferred on-chain
6. Permanent immutable record
- Amount: 1 ADA (proof of completion)
- Sender: Freelancer wallet address
- Recipient: Client wallet address
- Fee: ~0.17 ADA (network fee)
- Metadata (Label 674):
{ "type": "milestone_completion", "projectId": "project_123", "milestoneId": 1, "projectTitle": "Real Blockchain Test", "milestoneDescription": "Test milestone", "completedBy": "addr_test1freelancer...", "timestamp": "2024-12-15T16:30:00Z", "message": "Freelancer has completed this milestone and is requesting approval" }
- Amount: Full milestone amount (e.g., 2 ADA)
- Sender: Client wallet address
- Recipient: Freelancer wallet address
- Fee: ~0.17 ADA (network fee)
- Metadata (Label 674):
{ "type": "milestone_payment", "projectId": "project_123", "milestoneId": 1, "projectTitle": "Real Blockchain Test", "milestoneDescription": "Test milestone", "timestamp": "2024-12-15T16:30:00Z" }
- β Immutable: Cannot be reversed or modified
- β Transparent: Anyone can verify on blockchain
- β Permanent: Stored forever on Cardano
- β Trustless: No intermediary needed
- β Verifiable: Check on any Cardano explorer
- β No fallback to mock transactions
- β No simulated transaction hashes
- β No demo mode for approvals
- β 100% real blockchain or error
- β Valid Blockfrost API key (free from blockfrost.io)
- β Wallet connected with sufficient ADA
- β
Development mode (
npm run dev) - β Network connectivity
The app will show a detailed error message:
- Wallet not connected β Connect wallet first
- Insufficient funds β Get more testnet ADA
- Invalid API key β Configure Blockfrost key
- Network error β Check internet connection
Create project with 3 milestones:
- Milestone 1: 2 ADA
- Milestone 2: 3 ADA
- Milestone 3: 5 ADA
Complete and approve each one separately.
Each creates a separate blockchain transaction.
1. Create project with Wallet A (client)
2. Set Wallet B as freelancer
3. Complete milestone with Wallet B
4. Approve with Wallet A
5. Verify funds arrive in Wallet B
1. Complete transaction
2. View on explorer
3. Click "Metadata" tab
4. See project and milestone details
5. Verify all information is correct
π° Approving milestone and releasing funds...
Amount: 2 ADA
Recipient: addr_test1...
π¨ Building real blockchain transaction...
β
Transaction signed, submitting to blockchain...
π‘ Submitting to Cardano network via Blockfrost...
β
Transaction submitted successfully to Cardano blockchain!
Transaction hash: a1b2c3d4e5f6...
View on explorer: https://preprod.cardanoscan.io/transaction/a1b2c3d4e5f6...
β
Approving milestone 1 for project project_123
π° Recording blockchain transaction...
Transaction hash: a1b2c3d4e5f6...
View on explorer: https://preprod.cardanoscan.io/transaction/a1b2c3d4e5f6...
- Click button
- Wallet popup (5 seconds)
- Confirm transaction
- Success message with tx hash (5 seconds)
- Funds transferred on blockchain (20 seconds)
- Verifiable on explorer (immediately)
You'll know it's working when:
- β Wallet prompts for signature
- β Real transaction hash returned (64 characters)
- β Transaction visible on Cardano explorer
- β Funds actually transferred between wallets
- β Metadata visible on blockchain
- β Transaction confirmed in blocks
β Click "Connect Wallet" and approve
β Get more testnet ADA from faucet
β Check Blockfrost API key in frontend/.env
β Make sure you're running npm run dev (not production build)
β Check Cardano network status β Verify on explorer β May take up to 2 minutes during high load
After successful testing:
- β Test with different amounts
- β Test with multiple milestones
- β Test with different wallets
- β Verify all transactions on explorer
- β Check metadata is correct
- β Confirm funds arrive in recipient wallet
To use real ADA on mainnet:
- Change network to
mainnetin .env - Get mainnet Blockfrost API key
- Use real ADA (not testnet)
- Test thoroughly on testnet first!
Status: β Real blockchain transactions only - No simulations Network: Cardano Preprod Testnet Last Updated: December 15, 2024