import React, { useState } from 'react'; import { Gift, Calendar, Users, Timer, DollarSign } from 'lucide-react'; const RewardDistribution: React.FC = () => { const [currentEpoch, setCurrentEpoch] = useState(1); const [trustScoreInput, setTrustScoreInput] = useState(500); const [totalParticipants, setTotalParticipants] = useState(1000); const [totalTrustScore, setTotalTrustScore] = useState(500000); const epochRewardPool = 1000000; // 1M PEZ per epoch const parliamentaryAllocation = epochRewardPool * 0.1; // 10% for NFT holders const trustScorePool = epochRewardPool * 0.9; // 90% for trust score rewards const rewardPerTrustPoint = trustScorePool / totalTrustScore; const userReward = trustScoreInput * rewardPerTrustPoint; const nftRewardPerHolder = parliamentaryAllocation / 201; const epochPhases = [ { name: 'Active', duration: '30 days', blocks: 432000, status: 'current' }, { name: 'Claim Period', duration: '7 days', blocks: 100800, status: 'upcoming' }, { name: 'Closed', duration: 'Permanent', blocks: 0, status: 'final' } ]; return (

Reward Distribution System

Monthly epoch-based rewards distributed by trust score and NFT holdings

PezkuwiChain Logo
{/* Epoch Timeline */}

Epoch Timeline

Current Epoch #{currentEpoch}
setCurrentEpoch(parseInt(e.target.value))} className="w-full" />
{epochPhases.map((phase, index) => (

{phase.name}

{phase.duration}
{phase.blocks > 0 && (
{phase.blocks.toLocaleString()} blocks
)}
{index < epochPhases.length - 1 && (
)}
))}
Epoch Start Block
#{((currentEpoch - 1) * 432000).toLocaleString()}
Claim Deadline Block
#{((currentEpoch * 432000) + 100800).toLocaleString()}
{/* Reward Pool Info */}

Epoch Pool

{epochRewardPool.toLocaleString()} PEZ
Trust Score Pool 90%
Parliamentary NFTs 10%

NFT Rewards

Total NFTs 201
Per NFT Reward {Math.floor(nftRewardPerHolder).toLocaleString()} PEZ
Auto-distributed
No claim required
{/* Reward Calculator */}

Reward Calculator

setTrustScoreInput(parseInt(e.target.value) || 0)} className="w-full px-4 py-2 bg-gray-800 text-white rounded-lg border border-gray-700 focus:border-cyan-500 focus:outline-none" />
setTotalParticipants(parseInt(e.target.value) || 1)} className="w-full px-4 py-2 bg-gray-800 text-white rounded-lg border border-gray-700 focus:border-cyan-500 focus:outline-none" />
setTotalTrustScore(parseInt(e.target.value) || 1)} className="w-full px-4 py-2 bg-gray-800 text-white rounded-lg border border-gray-700 focus:border-cyan-500 focus:outline-none" />
Reward per Trust Point
{rewardPerTrustPoint.toFixed(4)} PEZ
Your Share
{((trustScoreInput / totalTrustScore) * 100).toFixed(3)}%
Estimated Reward
{Math.floor(userReward).toLocaleString()} PEZ
); }; export default RewardDistribution;