From 60a32a325ede953c07141ef57065da5cab907fe6 Mon Sep 17 00:00:00 2001 From: Kurdistan Tech Ministry Date: Fri, 21 Nov 2025 07:28:47 +0300 Subject: [PATCH] refactor: Completed final cleanup and resolved local changes before push --- .../integration-tests/presale.live.test.js | 2 +- shared/constants/index.ts | 10 +- shared/images/ADAlogo.png | Bin 0 -> 3366 bytes shared/images/BNB_logo.png | Bin 0 -> 6483 bytes shared/images/USDT(hez)logo.png | Bin 0 -> 21454 bytes shared/images/bitcoin.png | Bin 0 -> 11068 bytes shared/images/dot.png | Bin 0 -> 34106 bytes shared/images/etherium.png | Bin 0 -> 9337 bytes shared/images/hez_logo.png | Bin 0 -> 31288 bytes shared/images/pez_logo.jpg | Bin 0 -> 9975 bytes shared/utils/auth.ts | 39 ++- web/src/components/AddLiquidityModal.tsx | 6 +- web/src/components/PoolDashboard.tsx | 2 +- web/src/components/RemoveLiquidityModal.tsx | 2 +- web/src/components/TokenSwap.tsx | 18 +- web/src/components/TransferModal.tsx | 4 +- web/src/components/dex/DEXDashboard.tsx | 26 +- .../components/dex/InitializeUsdtModal.tsx | 300 ++++++++++++++++++ web/src/components/dex/SwapInterface.tsx | 2 +- web/src/contexts/PolkadotContext.tsx | 13 + 20 files changed, 389 insertions(+), 35 deletions(-) create mode 100644 shared/images/ADAlogo.png create mode 100644 shared/images/BNB_logo.png create mode 100644 shared/images/USDT(hez)logo.png create mode 100644 shared/images/bitcoin.png create mode 100644 shared/images/dot.png create mode 100644 shared/images/etherium.png create mode 100644 shared/images/hez_logo.png create mode 100644 shared/images/pez_logo.jpg create mode 100644 web/src/components/dex/InitializeUsdtModal.tsx diff --git a/backend/integration-tests/presale.live.test.js b/backend/integration-tests/presale.live.test.js index a7df920e..780aa26e 100644 --- a/backend/integration-tests/presale.live.test.js +++ b/backend/integration-tests/presale.live.test.js @@ -30,7 +30,7 @@ let sudo, alice, bob; // Asset IDs (assumed from mock.rs) const PEZ_ASSET_ID = 1; -const WUSDT_ASSET_ID = 2; // Assuming wUSDT has 6 decimals +const WUSDT_ASSET_ID = 1000; // wUSDT has 6 decimals (matches runtime WUSDT_ASSET_ID) // Helper to wait for N finalized blocks const waitForBlocks = async (count) => { diff --git a/shared/constants/index.ts b/shared/constants/index.ts index da8d687a..23943c48 100644 --- a/shared/constants/index.ts +++ b/shared/constants/index.ts @@ -55,21 +55,21 @@ export const KNOWN_TOKENS: Record = { symbol: 'wHEZ', name: 'Wrapped HEZ', decimals: 12, - logo: '🟡', + logo: '/shared/images/hez_logo.png', }, 1: { id: 1, symbol: 'PEZ', name: 'Pezkuwi Token', decimals: 12, - logo: '🟣', + logo: '/shared/images/pez_logo.jpg', }, - 2: { - id: 2, + 1000: { + id: 1000, symbol: 'wUSDT', name: 'Wrapped USDT', decimals: 6, - logo: '💵', + logo: '/shared/images/USDT(hez)logo.png', }, }; diff --git a/shared/images/ADAlogo.png b/shared/images/ADAlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..b6374207eafe48b511a4f507033ab7baae358557 GIT binary patch literal 3366 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 literal 0 HcmV?d00001 diff --git a/shared/images/BNB_logo.png b/shared/images/BNB_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d10ef0a89416e0ea9751998e81c4f0f196cd893d GIT binary patch literal 6483 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 literal 0 HcmV?d00001 diff --git a/shared/images/etherium.png b/shared/images/etherium.png new file mode 100644 index 0000000000000000000000000000000000000000..cc0a7d3998f8aba9dbd4f2155b46811d0bdcb985 GIT binary patch literal 9337 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 literal 0 HcmV?d00001 diff --git a/shared/images/hez_logo.png b/shared/images/hez_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..43aa15a7c84f343db1e7f704818e1c95dbc7d3be GIT binary patch literal 31288 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 z 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 literal 0 HcmV?d00001 diff --git a/shared/utils/auth.ts b/shared/utils/auth.ts index ea8b133b..f59792df 100644 --- a/shared/utils/auth.ts +++ b/shared/utils/auth.ts @@ -3,18 +3,29 @@ * Security-critical: Founder wallet detection and permissions */ -// SECURITY: Founder wallet address for beta testnet -// This address has sudo rights and can perform privileged operations -export const FOUNDER_ADDRESS = '5GgTgG9sRmPQAYU1RsTejZYnZRjwzKZKWD3awtuqjHioki45'; +// DEPRECATED: Hardcoded founder address (kept for fallback only) +// Modern approach: Fetch sudo key dynamically from blockchain +export const FOUNDER_ADDRESS_FALLBACK = '5GgTgG9sRmPQAYU1RsTejZYnZRjwzKZKWD3awtuqjHioki45'; /** - * Check if given address is the founder wallet + * Check if given address is the sudo account (admin/founder) * @param address - Substrate address to check - * @returns true if address matches founder, false otherwise + * @param sudoKey - Sudo key fetched from blockchain (if available) + * @returns true if address matches sudo key or fallback founder address */ -export const isFounderWallet = (address: string | null | undefined): boolean => { +export const isFounderWallet = ( + address: string | null | undefined, + sudoKey?: string | null +): boolean => { if (!address) return false; - return address === FOUNDER_ADDRESS; + + // Priority 1: Use dynamic sudo key from blockchain if available + if (sudoKey && sudoKey !== '') { + return address === sudoKey; + } + + // Priority 2: Fallback to hardcoded founder address (for compatibility) + return address === FOUNDER_ADDRESS_FALLBACK; }; /** @@ -48,11 +59,13 @@ export enum DexPermission { * Check if user has permission for a specific DEX operation * @param address - User's wallet address * @param permission - Required permission level + * @param sudoKey - Sudo key fetched from blockchain (if available) * @returns true if user has permission */ export const hasPermission = ( address: string | null | undefined, - permission: DexPermission + permission: DexPermission, + sudoKey?: string | null ): boolean => { if (!address || !isValidSubstrateAddress(address)) { return false; @@ -67,7 +80,7 @@ export const hasPermission = ( // Founder-only operations if (founderOnly.includes(permission)) { - return isFounderWallet(address); + return isFounderWallet(address, sudoKey); } // Everyone can view and trade @@ -77,10 +90,14 @@ export const hasPermission = ( /** * Get user role string for display * @param address - User's wallet address + * @param sudoKey - Sudo key fetched from blockchain (if available) * @returns Human-readable role */ -export const getUserRole = (address: string | null | undefined): string => { +export const getUserRole = ( + address: string | null | undefined, + sudoKey?: string | null +): string => { if (!address) return 'Guest'; - if (isFounderWallet(address)) return 'Founder (Admin)'; + if (isFounderWallet(address, sudoKey)) return 'Sudo (Admin)'; return 'User'; }; diff --git a/web/src/components/AddLiquidityModal.tsx b/web/src/components/AddLiquidityModal.tsx index f621e018..6f9db54c 100644 --- a/web/src/components/AddLiquidityModal.tsx +++ b/web/src/components/AddLiquidityModal.tsx @@ -30,7 +30,7 @@ interface Balances { const getDisplayName = (assetId: number): string => { if (assetId === ASSET_IDS.WHEZ || assetId === 0) return 'HEZ'; if (assetId === ASSET_IDS.PEZ || assetId === 1) return 'PEZ'; - if (assetId === ASSET_IDS.WUSDT || assetId === 2) return 'USDT'; + if (assetId === ASSET_IDS.WUSDT || assetId === 1000) return 'USDT'; return getAssetSymbol(assetId); }; @@ -38,13 +38,13 @@ const getDisplayName = (assetId: number): string => { const getBalanceKey = (assetId: number): string => { if (assetId === ASSET_IDS.WHEZ || assetId === 0) return 'HEZ'; if (assetId === ASSET_IDS.PEZ || assetId === 1) return 'PEZ'; - if (assetId === ASSET_IDS.WUSDT || assetId === 2) return 'USDT'; + if (assetId === ASSET_IDS.WUSDT || assetId === 1000) return 'USDT'; return getAssetSymbol(assetId); }; // Helper to get decimals for asset const getAssetDecimals = (assetId: number): number => { - if (assetId === ASSET_IDS.WUSDT || assetId === 2) return 6; // wUSDT has 6 decimals + if (assetId === ASSET_IDS.WUSDT || assetId === 1000) return 6; // wUSDT has 6 decimals return 12; // wHEZ, PEZ have 12 decimals }; diff --git a/web/src/components/PoolDashboard.tsx b/web/src/components/PoolDashboard.tsx index 6f38f2ff..75ee0be1 100644 --- a/web/src/components/PoolDashboard.tsx +++ b/web/src/components/PoolDashboard.tsx @@ -16,7 +16,7 @@ import { RemoveLiquidityModal } from '@/components/RemoveLiquidityModal'; const getDisplayTokenName = (assetId: number): string => { if (assetId === ASSET_IDS.WHEZ || assetId === 0) return 'HEZ'; if (assetId === ASSET_IDS.PEZ || assetId === 1) return 'PEZ'; - if (assetId === ASSET_IDS.WUSDT || assetId === 2) return 'USDT'; + if (assetId === ASSET_IDS.WUSDT || assetId === 1000) return 'USDT'; return getAssetSymbol(assetId); // Fallback for other assets }; diff --git a/web/src/components/RemoveLiquidityModal.tsx b/web/src/components/RemoveLiquidityModal.tsx index 9fdffb44..d7833f8b 100644 --- a/web/src/components/RemoveLiquidityModal.tsx +++ b/web/src/components/RemoveLiquidityModal.tsx @@ -11,7 +11,7 @@ import { ASSET_IDS, getAssetSymbol } from '@pezkuwi/lib/wallet'; const getDisplayTokenName = (assetId: number): string => { if (assetId === ASSET_IDS.WHEZ || assetId === 0) return 'HEZ'; if (assetId === ASSET_IDS.PEZ || assetId === 1) return 'PEZ'; - if (assetId === ASSET_IDS.WUSDT || assetId === 2) return 'USDT'; + if (assetId === ASSET_IDS.WUSDT || assetId === 1000) return 'USDT'; return getAssetSymbol(assetId); }; diff --git a/web/src/components/TokenSwap.tsx b/web/src/components/TokenSwap.tsx index 66079433..ff9c735c 100644 --- a/web/src/components/TokenSwap.tsx +++ b/web/src/components/TokenSwap.tsx @@ -18,7 +18,7 @@ import { PriceChart } from './trading/PriceChart'; const AVAILABLE_TOKENS = [ { symbol: 'HEZ', emoji: '🟡', assetId: 0, name: 'HEZ', badge: true, displaySymbol: 'HEZ' }, { symbol: 'PEZ', emoji: '🟣', assetId: 1, name: 'PEZ', badge: true, displaySymbol: 'PEZ' }, - { symbol: 'USDT', emoji: '💵', assetId: 2, name: 'USDT', badge: true, displaySymbol: 'USDT' }, + { symbol: 'USDT', emoji: '💵', assetId: 1000, name: 'USDT', badge: true, displaySymbol: 'USDT' }, ] as const; const TokenSwap = () => { @@ -182,7 +182,7 @@ const TokenSwap = () => { const getPoolAssetId = (token: string) => { if (token === 'HEZ') return 0; // wHEZ if (token === 'PEZ') return 1; - if (token === 'USDT') return 2; + if (token === 'USDT') return 1000; return ASSET_IDS[token as keyof typeof ASSET_IDS]; }; @@ -271,9 +271,9 @@ const TokenSwap = () => { // Use correct decimals for each asset // asset1=0 (wHEZ): 12 decimals // asset1=1 (PEZ): 12 decimals - // asset2=2 (wUSDT): 6 decimals - const decimals0 = asset1 === 2 ? 6 : 12; // asset1 is the smaller ID - const decimals1 = asset2 === 2 ? 6 : 12; // asset2 is the larger ID + // asset2=1000 (wUSDT): 6 decimals + const decimals0 = asset1 === 1000 ? 6 : 12; // asset1 is the smaller ID + const decimals1 = asset2 === 1000 ? 6 : 12; // asset2 is the larger ID const reserve0 = Number(BigInt(balance0Hex)) / (10 ** decimals0); const reserve1 = Number(BigInt(balance1Hex)) / (10 ** decimals1); @@ -581,7 +581,7 @@ const TokenSwap = () => { // HEZ → Any Asset: wrap(HEZ→wHEZ) then swap(wHEZ→Asset) const wrapTx = api.tx.tokenWrapper.wrap(amountIn.toString()); // Map token symbol to asset ID - const toAssetId = toToken === 'PEZ' ? 1 : toToken === 'USDT' ? 2 : ASSET_IDS[toToken as keyof typeof ASSET_IDS]; + const toAssetId = toToken === 'PEZ' ? 1 : toToken === 'USDT' ? 1000 : ASSET_IDS[toToken as keyof typeof ASSET_IDS]; const swapPath = [0, toAssetId]; // wHEZ → target asset const swapTx = api.tx.assetConversion.swapExactTokensForTokens( swapPath, @@ -595,7 +595,7 @@ const TokenSwap = () => { } else if (toToken === 'HEZ') { // Any Asset → HEZ: swap(Asset→wHEZ) then unwrap(wHEZ→HEZ) // Map token symbol to asset ID - const fromAssetId = fromToken === 'PEZ' ? 1 : fromToken === 'USDT' ? 2 : ASSET_IDS[fromToken as keyof typeof ASSET_IDS]; + const fromAssetId = fromToken === 'PEZ' ? 1 : fromToken === 'USDT' ? 1000 : ASSET_IDS[fromToken as keyof typeof ASSET_IDS]; const swapPath = [fromAssetId, 0]; // source asset → wHEZ const swapTx = api.tx.assetConversion.swapExactTokensForTokens( swapPath, @@ -610,8 +610,8 @@ const TokenSwap = () => { } else { // Direct swap between assets (PEZ ↔ USDT, etc.) // Map token symbols to asset IDs - const fromAssetId = fromToken === 'PEZ' ? 1 : fromToken === 'USDT' ? 2 : ASSET_IDS[fromToken as keyof typeof ASSET_IDS]; - const toAssetId = toToken === 'PEZ' ? 1 : toToken === 'USDT' ? 2 : ASSET_IDS[toToken as keyof typeof ASSET_IDS]; + const fromAssetId = fromToken === 'PEZ' ? 1 : fromToken === 'USDT' ? 1000 : ASSET_IDS[fromToken as keyof typeof ASSET_IDS]; + const toAssetId = toToken === 'PEZ' ? 1 : toToken === 'USDT' ? 1000 : ASSET_IDS[toToken as keyof typeof ASSET_IDS]; const swapPath = [fromAssetId, toAssetId]; tx = api.tx.assetConversion.swapExactTokensForTokens( diff --git a/web/src/components/TransferModal.tsx b/web/src/components/TransferModal.tsx index bd3c369e..62054aeb 100644 --- a/web/src/components/TransferModal.tsx +++ b/web/src/components/TransferModal.tsx @@ -48,7 +48,7 @@ interface Token { const TOKENS: Token[] = [ { symbol: 'HEZ', name: 'Hez Token', decimals: 12, color: 'from-green-600 to-yellow-400' }, { symbol: 'PEZ', name: 'Pez Token', assetId: 1, decimals: 12, color: 'from-blue-600 to-purple-400' }, - { symbol: 'USDT', name: 'Tether USD', assetId: 2, decimals: 6, color: 'from-green-500 to-green-600' }, + { symbol: 'USDT', name: 'Tether USD', assetId: 1000, decimals: 6, color: 'from-green-500 to-green-600' }, { symbol: 'BTC', name: 'Bitcoin', assetId: 3, decimals: 8, color: 'from-orange-500 to-yellow-500' }, { symbol: 'ETH', name: 'Ethereum', assetId: 4, decimals: 18, color: 'from-purple-500 to-blue-500' }, { symbol: 'DOT', name: 'Polkadot', assetId: 5, decimals: 10, color: 'from-pink-500 to-red-500' }, @@ -72,7 +72,7 @@ export const TransferModal: React.FC = ({ isOpen, onClose, s assetId: selectedAsset.assetId, decimals: selectedAsset.decimals, color: selectedAsset.assetId === 0 ? 'from-green-600 to-yellow-400' : - selectedAsset.assetId === 2 ? 'from-emerald-500 to-teal-500' : + selectedAsset.assetId === 1000 ? 'from-emerald-500 to-teal-500' : 'from-cyan-500 to-blue-500', } : TOKENS.find(t => t.symbol === selectedToken) || TOKENS[0]; diff --git a/web/src/components/dex/DEXDashboard.tsx b/web/src/components/dex/DEXDashboard.tsx index 4331e1fa..7c52d778 100644 --- a/web/src/components/dex/DEXDashboard.tsx +++ b/web/src/components/dex/DEXDashboard.tsx @@ -1,23 +1,27 @@ import React, { useState } from 'react'; // import { useNavigate } from 'react-router-dom'; import { useWallet } from '@/contexts/WalletContext'; +import { usePolkadot } from '@/contexts/PolkadotContext'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import TokenSwap from '@/components/TokenSwap'; import PoolDashboard from '@/components/PoolDashboard'; import { CreatePoolModal } from './CreatePoolModal'; import { InitializeHezPoolModal } from './InitializeHezPoolModal'; +import { InitializeUsdtModal } from './InitializeUsdtModal'; import { ArrowRightLeft, Droplet, Settings } from 'lucide-react'; import { isFounderWallet } from '@pezkuwi/utils/auth'; export const DEXDashboard: React.FC = () => { const { account } = useWallet(); + const { sudoKey } = usePolkadot(); const [activeTab, setActiveTab] = useState('swap'); // Admin modal states const [showCreatePoolModal, setShowCreatePoolModal] = useState(false); const [showInitializeHezPoolModal, setShowInitializeHezPoolModal] = useState(false); + const [showInitializeUsdtModal, setShowInitializeUsdtModal] = useState(false); - const isFounder = account ? isFounderWallet(account) : false; + const isFounder = account ? isFounderWallet(account, sudoKey) : false; const handleCreatePool = () => { setShowCreatePoolModal(true); @@ -26,6 +30,7 @@ export const DEXDashboard: React.FC = () => { const handleModalClose = () => { setShowCreatePoolModal(false); setShowInitializeHezPoolModal(false); + setShowInitializeUsdtModal(false); }; const handleSuccess = async () => { @@ -116,6 +121,19 @@ export const DEXDashboard: React.FC = () => { +
+

USDT Token Minting

+

+ Mint wUSDT tokens for testing and liquidity provision +

+ +
+

Pool Management

@@ -154,6 +172,12 @@ export const DEXDashboard: React.FC = () => { onClose={handleModalClose} onSuccess={handleSuccess} /> + +

); }; diff --git a/web/src/components/dex/InitializeUsdtModal.tsx b/web/src/components/dex/InitializeUsdtModal.tsx new file mode 100644 index 00000000..953addb9 --- /dev/null +++ b/web/src/components/dex/InitializeUsdtModal.tsx @@ -0,0 +1,300 @@ +import React, { useState, useEffect } from 'react'; +import { usePolkadot } from '@/contexts/PolkadotContext'; +import { useWallet } from '@/contexts/WalletContext'; +import { X, AlertCircle, Loader2, CheckCircle, Info } from 'lucide-react'; +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { Badge } from '@/components/ui/badge'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Alert, AlertDescription } from '@/components/ui/alert'; +import { useToast } from '@/hooks/use-toast'; +import { ASSET_IDS, ASSET_CONFIGS } from '../../../shared/lib/wallet'; + +interface InitializeUsdtModalProps { + isOpen: boolean; + onClose: () => void; + onSuccess?: () => void; +} + +type TransactionStatus = 'idle' | 'signing' | 'submitting' | 'success' | 'error'; + +const USDT_ASSET_ID = 1000; // wUSDT asset ID (matches runtime WUSDT_ASSET_ID) +const USDT_DECIMALS = 6; // USDT standard decimals + +export const InitializeUsdtModal: React.FC = ({ + isOpen, + onClose, + onSuccess, +}) => { + const { api, isApiReady } = usePolkadot(); + const { account, signer } = useWallet(); + const { toast } = useToast(); + + const [usdtAmount, setUsdtAmount] = useState('10000'); + + const [wusdtBalance, setWusdtBalance] = useState('0'); + + const [txStatus, setTxStatus] = useState('idle'); + const [errorMessage, setErrorMessage] = useState(''); + + // Reset form when modal closes + useEffect(() => { + if (!isOpen) { + setUsdtAmount('10000'); + setTxStatus('idle'); + setErrorMessage(''); + } + }, [isOpen]); + + // Fetch wUSDT balance + useEffect(() => { + const fetchBalance = async () => { + if (!api || !isApiReady || !account) return; + + try { + // wUSDT balance (asset 2) + const wusdtData = await api.query.assets.account(USDT_ASSET_ID, account); + setWusdtBalance(wusdtData.isSome ? wusdtData.unwrap().balance.toString() : '0'); + } catch (error) { + if (import.meta.env.DEV) console.error('Failed to fetch wUSDT balance:', error); + } + }; + + fetchBalance(); + }, [api, isApiReady, account]); + + const handleMint = async () => { + if (!api || !isApiReady || !signer || !account) { + toast({ + title: 'Error', + description: 'Please connect your wallet', + variant: 'destructive', + }); + return; + } + + const usdtAmountRaw = BigInt(parseFloat(usdtAmount) * 10 ** USDT_DECIMALS); + + if (usdtAmountRaw <= BigInt(0)) { + setErrorMessage('Amount must be greater than zero'); + return; + } + + setTxStatus('signing'); + setErrorMessage(''); + + try { + if (import.meta.env.DEV) console.log('💵 Minting wUSDT...', { + usdtAmount, + usdtAmountRaw: usdtAmountRaw.toString(), + assetId: USDT_ASSET_ID, + }); + + const mintTx = api.tx.assets.mint(USDT_ASSET_ID, account, usdtAmountRaw.toString()); + + setTxStatus('submitting'); + + await mintTx.signAndSend( + account, + { signer }, + ({ status, dispatchError, events }) => { + if (import.meta.env.DEV) console.log('📦 Transaction status:', status.type); + + if (status.isInBlock) { + if (import.meta.env.DEV) console.log('✅ In block:', status.asInBlock.toHex()); + + if (dispatchError) { + let errorMsg = ''; + + if (dispatchError.isModule) { + const decoded = api.registry.findMetaError(dispatchError.asModule); + errorMsg = `${decoded.section}.${decoded.name}: ${decoded.docs.join(' ')}`; + if (import.meta.env.DEV) console.error('❌ Module error:', errorMsg); + } else { + errorMsg = dispatchError.toString(); + if (import.meta.env.DEV) console.error('❌ Dispatch error:', errorMsg); + } + + setErrorMessage(errorMsg); + setTxStatus('error'); + toast({ + title: 'Transaction Failed', + description: errorMsg, + variant: 'destructive', + }); + } else { + if (import.meta.env.DEV) console.log('✅ Mint successful!'); + if (import.meta.env.DEV) console.log('📋 Events:', events.map(e => e.event.method).join(', ')); + setTxStatus('success'); + toast({ + title: 'Success!', + description: `Successfully minted ${usdtAmount} wUSDT`, + }); + setTimeout(() => { + onSuccess?.(); + onClose(); + }, 2000); + } + } + } + ); + } catch (error) { + if (import.meta.env.DEV) console.error('Mint failed:', error); + setErrorMessage(error instanceof Error ? error.message : 'Transaction failed'); + setTxStatus('error'); + toast({ + title: 'Error', + description: error instanceof Error ? error.message : 'Mint failed', + variant: 'destructive', + }); + } + }; + + if (!isOpen) return null; + + const wusdtBalanceDisplay = (parseFloat(wusdtBalance) / 10 ** USDT_DECIMALS).toFixed(2); + + return ( +
+ + +
+ + Mint wUSDT Tokens + + +
+ + Admin Only - Token Minting + +
+ + + {/* Info Banner */} + + + + Mint wUSDT (Wrapped USDT) tokens for testing and liquidity pool creation. + Use responsibly! + + + + {/* USDT Amount */} +
+
+ + + Current: {wusdtBalanceDisplay} wUSDT + +
+
+ setUsdtAmount(e.target.value)} + placeholder="10000" + className="w-full px-4 py-3 bg-gray-800 border border-gray-700 rounded-lg text-white text-lg" + disabled={txStatus === 'signing' || txStatus === 'submitting'} + /> +
+ + +
+
+

+ 💡 wUSDT has 6 decimals (same as real USDT) +

+
+ + {/* Current wUSDT Balance */} +
+
Current wUSDT Balance
+
+ {wusdtBalanceDisplay} wUSDT +
+
+ + {/* Error Message */} + {errorMessage && ( + + + + {errorMessage} + + + )} + + {/* Success Message */} + {txStatus === 'success' && ( + + + + Successfully minted {usdtAmount} wUSDT! + + + )} + + {/* Action Buttons */} +
+ + +
+
+
+
+ ); +}; diff --git a/web/src/components/dex/SwapInterface.tsx b/web/src/components/dex/SwapInterface.tsx index 59667054..284a5cba 100644 --- a/web/src/components/dex/SwapInterface.tsx +++ b/web/src/components/dex/SwapInterface.tsx @@ -28,7 +28,7 @@ type TransactionStatus = 'idle' | 'signing' | 'submitting' | 'success' | 'error' const USER_TOKENS = [ { symbol: 'HEZ', emoji: '🟡', assetId: 0, name: 'HEZ', decimals: 12, displaySymbol: 'HEZ' }, // actually wHEZ (asset 0) { symbol: 'PEZ', emoji: '🟣', assetId: 1, name: 'PEZ', decimals: 12, displaySymbol: 'PEZ' }, - { symbol: 'USDT', emoji: '💵', assetId: 2, name: 'USDT', decimals: 6, displaySymbol: 'USDT' }, + { symbol: 'USDT', emoji: '💵', assetId: 1000, name: 'USDT', decimals: 6, displaySymbol: 'USDT' }, ] as const; export const SwapInterface: React.FC = ({ pools }) => { diff --git a/web/src/contexts/PolkadotContext.tsx b/web/src/contexts/PolkadotContext.tsx index 12a09819..b4462ea6 100644 --- a/web/src/contexts/PolkadotContext.tsx +++ b/web/src/contexts/PolkadotContext.tsx @@ -14,6 +14,7 @@ interface PolkadotContextType { connectWallet: () => Promise; disconnectWallet: () => void; error: string | null; + sudoKey: string | null; } const PolkadotContext = createContext(undefined); @@ -32,6 +33,7 @@ export const PolkadotProvider: React.FC = ({ const [accounts, setAccounts] = useState([]); const [selectedAccount, setSelectedAccount] = useState(null); const [error, setError] = useState(null); + const [sudoKey, setSudoKey] = useState(null); // Wrapper to trigger events when wallet changes const handleSetSelectedAccount = (account: InjectedAccountWithMeta | null) => { @@ -88,6 +90,16 @@ export const PolkadotProvider: React.FC = ({ if (import.meta.env.DEV) console.log(`🖥️ Node: ${nodeName} v${nodeVersion}`); } + // Fetch sudo key from blockchain + try { + const sudoAccount = await apiInstance.query.sudo.key(); + const sudoAddress = sudoAccount.toString(); + setSudoKey(sudoAddress); + if (import.meta.env.DEV) console.log(`🔑 Sudo key: ${sudoAddress}`); + } catch (err) { + if (import.meta.env.DEV) console.warn('⚠️ Failed to fetch sudo key (sudo pallet may not be available):', err); + } + return; } catch (err) { lastError = err; @@ -216,6 +228,7 @@ export const PolkadotProvider: React.FC = ({ connectWallet, disconnectWallet, error, + sudoKey, }; return (