diff --git a/Dev_Docs/Pending_Features/2026-07-08_1225_devnet_topup_izolirovan_ot_mainnet.md b/Dev_Docs/Pending_Features/2026-07-08_1225_devnet_topup_izolirovan_ot_mainnet.md new file mode 100644 index 0000000..06cb8e2 --- /dev/null +++ b/Dev_Docs/Pending_Features/2026-07-08_1225_devnet_topup_izolirovan_ot_mainnet.md @@ -0,0 +1,14 @@ +# Изоляция страницы DEVNET пополнения от mainnet + +- краткое описание фичи: + Страница `shine-UI/js/pages/devnet-topup-view.js` переведена на полностью автономную работу только с `https://api.devnet.solana.com`. Проверка баланса и перевод SOL на этой странице больше не используют общие Solana-настройки UI. +- что именно проверять: + 1. Открыть страницу `devnet-topup-view` с параметром `wallet`. + 2. Убедиться, что на странице отображается сеть `DEVNET`. + 3. Проверить, что балансы отправителя и получателя читаются из devnet. + 4. Выполнить перевод и убедиться, что транзакция проходит именно в devnet. + 5. Убедиться, что изменение глобального Solana endpoint в других экранах UI не влияет на эту страницу. +- ожидаемый результат: + Страница всегда показывает devnet-балансы и отправляет перевод только через devnet, независимо от глобального RPC в приложении. +- статус: + pending diff --git a/VERSION.properties b/VERSION.properties index f3595e5..d5f05a2 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ -client.version=1.2.300 +client.version=1.2.301 server.version=1.2.280 diff --git a/shine-UI/js/pages/devnet-topup-view.js b/shine-UI/js/pages/devnet-topup-view.js index f258de4..adfd836 100644 --- a/shine-UI/js/pages/devnet-topup-view.js +++ b/shine-UI/js/pages/devnet-topup-view.js @@ -1,9 +1,9 @@ import { renderHeader } from '../components/header.js'; import { formatSol, getBalanceSol, transferSol, createSolanaWalletFromPrivateBase58 } from '../services/solana-wallet-service.js'; -import { state } from '../state.js'; export const pageMeta = { id: 'devnet-topup-view', title: 'Пополнение DEVNET', showAppChrome: false }; +const DEVNET_ENDPOINT = 'https://api.devnet.solana.com'; const SENDER_PRIVATE_32_BASE58 = '6xqAuKYvA8qrCdAkcw7Y8aMgvBnYk8JLxWLma5BzbAvu'; const TRANSFER_AMOUNT_SOL = 0.02; @@ -49,7 +49,7 @@ export function render() { status.style.overflowWrap = 'anywhere'; status.style.wordBreak = 'break-word'; status.style.whiteSpace = 'pre-wrap'; - status.textContent = 'Готово к пополнению.'; + status.textContent = `Готово к пополнению.\nСеть: DEVNET (${DEVNET_ENDPOINT})`; const amountHint = document.createElement('p'); amountHint.style.width = 'min(100%, 320px)'; @@ -99,16 +99,14 @@ export function render() { const updateSenderBalance = async () => { if (!senderAddress) return; - const endpoint = state.entrySettings.solanaServer; - const balance = await getBalanceSol({ endpoint, address: senderAddress }); + const balance = await getBalanceSol({ endpoint: DEVNET_ENDPOINT, address: senderAddress }); const senderBalanceEl = senderBox.querySelector('#devnet-topup-sender-balance'); if (senderBalanceEl) senderBalanceEl.textContent = `Баланс: ${formatSol(balance.sol, 6)} SOL`; }; const updateTargetBalance = async () => { if (!targetWallet) return null; - const endpoint = state.entrySettings.solanaServer; - const balance = await getBalanceSol({ endpoint, address: targetWallet }); + const balance = await getBalanceSol({ endpoint: DEVNET_ENDPOINT, address: targetWallet }); const targetBalanceEl = targetBox.querySelector('#devnet-topup-target-balance'); if (targetBalanceEl) targetBalanceEl.textContent = `Баланс: ${formatSol(balance.sol, 6)} SOL`; return balance.sol; @@ -131,9 +129,8 @@ export function render() { closeHint.style.display = 'none'; try { - const endpoint = state.entrySettings.solanaServer; const tx = await transferSol({ - endpoint, + endpoint: DEVNET_ENDPOINT, fromKeypair: senderKeypair, toAddress: targetWallet, amountSol: TRANSFER_AMOUNT_SOL,