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
+2
View File
@@ -37,6 +37,7 @@ const Elections = lazy(() => import('./pages/Elections'));
const EducationPlatform = lazy(() => import('./pages/EducationPlatform'));
const P2PPlatform = lazy(() => import('./pages/P2PPlatform'));
const DEXDashboard = lazy(() => import('./components/dex/DEXDashboard').then(m => ({ default: m.DEXDashboard })));
const Presale = lazy(() => import('./pages/Presale'));
const NotFound = lazy(() => import('@/pages/NotFound'));
// Loading component
@@ -137,6 +138,7 @@ function App() {
<DEXDashboard />
</ProtectedRoute>
} />
<Route path="/presale" element={<Presale />} />
<Route path="*" element={<NotFound />} />
</Routes>
</Suspense>