feat: add PEZ presale system with wUSDT contribution

Implemented complete presale system for PEZ token distribution:

Backend (Pallet):
- Created pallet-presale at /home/mamostehp/Pezkuwi-SDK/pezkuwi/pallets/presale/
- Accepts wUSDT (Asset ID 2) contributions
- Tracks all contributors and amounts
- Distributes PEZ (Asset ID 1) after 45-day period
- Conversion rate: 1 wUSDT = 100 PEZ
- Includes emergency pause/unpause functionality
- Runtime integration documentation provided

Frontend:
- Created Presale page with contribution form
- Live stats: time remaining, total raised, contributors count
- Real-time balance display and conversion calculator
- Progress bar showing fundraising goal ($1M target)
- Added route /presale and navigation under Trading menu
- Connected to PolkadotContext and WalletContext

Technical Details:
- wUSDT: 6 decimals (Asset ID 2)
- PEZ: 12 decimals (Asset ID 1)
- Duration: 648,000 blocks (45 days @ 6s blocks)
- Treasury: PalletId "py/prsal"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-20 07:05:48 +03:00
parent db8cb44db0
commit 3b377ea857
3 changed files with 382 additions and 1 deletions
+8 -1
View File
@@ -19,7 +19,7 @@ import { TreasuryOverview } from './treasury/TreasuryOverview';
import { FundingProposal } from './treasury/FundingProposal';
import { SpendingHistory } from './treasury/SpendingHistory';
import { MultiSigApproval } from './treasury/MultiSigApproval';
import { ExternalLink, Award, FileEdit, Users2, MessageSquare, ShieldCheck, Wifi, WifiOff, Wallet, DollarSign, PiggyBank, History, Key, TrendingUp, ArrowRightLeft, Lock, LogIn, LayoutDashboard, Settings, Users, Droplet, Mail } from 'lucide-react';
import { ExternalLink, Award, FileEdit, Users2, MessageSquare, ShieldCheck, Wifi, WifiOff, Wallet, DollarSign, PiggyBank, History, Key, TrendingUp, ArrowRightLeft, Lock, LogIn, LayoutDashboard, Settings, Users, Droplet, Mail, Coins } from 'lucide-react';
import GovernanceInterface from './GovernanceInterface';
import RewardDistribution from './RewardDistribution';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
@@ -192,6 +192,13 @@ const AppLayout: React.FC = () => {
<Users className="w-4 h-4" />
P2P
</button>
<button
onClick={() => navigate('/presale')}
className="w-full text-left px-4 py-2 text-gray-300 hover:bg-gray-800 hover:text-white flex items-center gap-2"
>
<Coins className="w-4 h-4" />
Presale
</button>
<button
onClick={() => setShowStaking(true)}
className="w-full text-left px-4 py-2 text-gray-300 hover:bg-gray-800 hover:text-white flex items-center gap-2"