From d4f922c26ef8962712ef54a5a5ce87b8116c33b5 Mon Sep 17 00:00:00 2001 From: defiQUG Date: Sun, 10 May 2026 12:56:30 -0700 Subject: [PATCH] chore: metamask networks, explorer SPA, nginx scripts; ignore Python cache - Dual-chain / GRU deployment JSON sync - Frontend explorer SPA + MetaMask components - Scripts: nginx fixes, link deploy, local SPA serve helper - Token icon chain-138.png; .gitignore __pycache__ Co-authored-by: Cursor --- .gitignore | 4 + .../config/metamask/DUAL_CHAIN_NETWORKS.json | 4 +- .../GRU_V2_PUBLIC_DEPLOYMENT_STATUS.json | 2 +- .../config/metamask/DUAL_CHAIN_NETWORKS.json | 6 +- frontend/FRONTEND_TASKS_AND_REVIEW.md | 2 +- frontend/public/explorer-spa.js | 868 +++++++++++++++++- frontend/public/index.html | 145 ++- frontend/public/token-icons/chain-138.png | Bin 0 -> 218003 bytes .../src/components/common/EntityBadge.tsx | 19 +- .../src/components/wallet/AddToMetaMask.tsx | 319 ++++++- .../apply-nginx-token-aggregation-proxy.sh | 7 +- scripts/comprehensive-link-deployment.sh | 2 +- scripts/deploy-and-verify-link.sh | 2 +- scripts/deploy-link-token.sh | 2 +- scripts/fix-nginx-conflicts-vmid5000.sh | 68 +- scripts/serve-explorer-local.sh | 34 +- scripts/serve_explorer_spa.py | 56 ++ 17 files changed, 1449 insertions(+), 91 deletions(-) create mode 100644 frontend/public/token-icons/chain-138.png create mode 100755 scripts/serve_explorer_spa.py diff --git a/.gitignore b/.gitignore index a68d9dc..e965055 100644 --- a/.gitignore +++ b/.gitignore @@ -55,6 +55,10 @@ backend/bin/ backend/api/rest/cmd/api-server backend/cmd +# Python +__pycache__/ +*.py[cod] + # Tooling / scratch directories out/ cache/ diff --git a/backend/api/rest/config/metamask/DUAL_CHAIN_NETWORKS.json b/backend/api/rest/config/metamask/DUAL_CHAIN_NETWORKS.json index e6c1198..ffa6b0e 100644 --- a/backend/api/rest/config/metamask/DUAL_CHAIN_NETWORKS.json +++ b/backend/api/rest/config/metamask/DUAL_CHAIN_NETWORKS.json @@ -3,10 +3,10 @@ "version": {"major": 1, "minor": 2, "patch": 0}, "defaultChainId": 138, "explorerUrl": "https://explorer.d-bis.org", - "tokenListUrl": "https://explorer.d-bis.org/api/config/token-list", + "tokenListUrl": "https://explorer.d-bis.org/api/v1/report/token-list?chainId=138", "generatedBy": "DBIS Explorer", "chains": [ - {"chainId":"0x8a","chainIdDecimal":138,"chainName":"DeFi Oracle Meta Mainnet","shortName":"dbis","rpcUrls":["https://rpc-http-pub.d-bis.org","https://rpc.d-bis.org","https://rpc2.d-bis.org","https://rpc.defi-oracle.io"],"nativeCurrency":{"name":"Ether","symbol":"ETH","decimals":18},"blockExplorerUrls":["https://explorer.d-bis.org","https://blockscout.defi-oracle.io"],"iconUrls":["https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png"],"infoURL":"https://explorer.d-bis.org","explorerApiUrl":"https://explorer.d-bis.org/api/v2","testnet":false}, + {"chainId":"0x8a","chainIdDecimal":138,"chainName":"DeFi Oracle Meta Mainnet","shortName":"dbis","rpcUrls":["https://rpc-http-pub.d-bis.org","https://rpc.d-bis.org","https://rpc2.d-bis.org","https://rpc.defi-oracle.io"],"nativeCurrency":{"name":"Ether","symbol":"ETH","decimals":18},"blockExplorerUrls":["https://explorer.d-bis.org","https://blockscout.defi-oracle.io"],"iconUrls":["https://explorer.d-bis.org/token-icons/chain-138.png","https://explorer.d-bis.org/api/v1/report/logo/chain-138","https://explorer.d-bis.org/favicon.ico"],"infoURL":"https://explorer.d-bis.org","explorerApiUrl":"https://explorer.d-bis.org/api/v2","testnet":false}, {"chainId":"0x1","chainIdDecimal":1,"chainName":"Ethereum Mainnet","shortName":"eth","rpcUrls":["https://eth.llamarpc.com","https://rpc.ankr.com/eth","https://ethereum.publicnode.com","https://1rpc.io/eth"],"nativeCurrency":{"name":"Ether","symbol":"ETH","decimals":18},"blockExplorerUrls":["https://etherscan.io"],"iconUrls":["https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png"],"infoURL":"https://ethereum.org","testnet":false}, {"chainId":"0x9f2c4","chainIdDecimal":651940,"chainName":"ALL Mainnet","shortName":"all","rpcUrls":["https://mainnet-rpc.alltra.global"],"nativeCurrency":{"name":"Ether","symbol":"ETH","decimals":18},"blockExplorerUrls":["https://alltra.global"],"iconUrls":["https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png"],"infoURL":"https://alltra.global","testnet":false}, {"chainId":"0x19","chainIdDecimal":25,"chainName":"Cronos Mainnet","rpcUrls":["https://evm.cronos.org","https://cronos-rpc.publicnode.com"],"nativeCurrency":{"name":"CRO","symbol":"CRO","decimals":18},"blockExplorerUrls":["https://cronos.org/explorer"],"iconUrls":["https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong"]}, diff --git a/backend/api/rest/config/metamask/GRU_V2_PUBLIC_DEPLOYMENT_STATUS.json b/backend/api/rest/config/metamask/GRU_V2_PUBLIC_DEPLOYMENT_STATUS.json index 9eafa26..1def54f 100644 --- a/backend/api/rest/config/metamask/GRU_V2_PUBLIC_DEPLOYMENT_STATUS.json +++ b/backend/api/rest/config/metamask/GRU_V2_PUBLIC_DEPLOYMENT_STATUS.json @@ -129,7 +129,7 @@ "coveredSymbols": 10, "missingSymbols": [] }, - "note": "The public EVM cW token mesh is complete on the currently loaded 10-chain set, but Wemix remains a desired target without a cW suite in deployment-status.json." + "note": "The public EVM cW token mesh is aligned to the nine-chain promoted surface (Cronos excluded from that count); Wemix remains a desired target without a cW suite in deployment-status.json." }, "transport": { "liveTransportAssets": [ diff --git a/backend/config/metamask/DUAL_CHAIN_NETWORKS.json b/backend/config/metamask/DUAL_CHAIN_NETWORKS.json index 73ee120..f8dc9b0 100644 --- a/backend/config/metamask/DUAL_CHAIN_NETWORKS.json +++ b/backend/config/metamask/DUAL_CHAIN_NETWORKS.json @@ -25,7 +25,9 @@ "https://explorer.d-bis.org" ], "iconUrls": [ - "https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png" + "https://explorer.d-bis.org/token-icons/chain-138.png", + "https://explorer.d-bis.org/api/v1/report/logo/chain-138", + "https://explorer.d-bis.org/favicon.ico" ] }, { @@ -90,4 +92,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/frontend/FRONTEND_TASKS_AND_REVIEW.md b/frontend/FRONTEND_TASKS_AND_REVIEW.md index 2315cf1..2933c3a 100644 --- a/frontend/FRONTEND_TASKS_AND_REVIEW.md +++ b/frontend/FRONTEND_TASKS_AND_REVIEW.md @@ -97,7 +97,7 @@ - **Wallet status (1639, 1722)** – `statusEl.innerHTML` uses `shortenHash(userAddress)`. If `userAddress` were ever from an untrusted source, it should be escaped. **Action:** Use `escapeHtml(shortenHash(userAddress))` for consistency (in **H1**). - **loadGasAndNetworkStats (2509)** – `el.innerHTML` uses `gasGwei`, `blockTimeSec`, `tps`. These are from API; escaping is low risk but recommended for defense in depth. **Action:** Escape these values (in **H1** or small follow-up). - **Token list: `#/token/' + contract`** – The `contract` in `href="#/token/' + contract + '"` can break the attribute if it contains a quote. **Action:** Encode or validate; include in **H2** (safe href/attributes). -- **External link (3800)** – `'https://explorer.d-bis.org/address/' + addr + '/contract'` – `addr` should be validated or encoded so the URL cannot be malformed. **Action:** Use `encodeURIComponent(addr)` for the path segment (in **H2**). +- **External link (3800)** – `'https://explorer.d-bis.org/addresses/' + addr + '/contract'` – `addr` should be validated or encoded so the URL cannot be malformed. **Action:** Use `encodeURIComponent(addr)` for the path segment (in **H2**). ### 2.3 SPA: onclick and attribute injection diff --git a/frontend/public/explorer-spa.js b/frontend/public/explorer-spa.js index bde3f3e..e9e2e17 100644 --- a/frontend/public/explorer-spa.js +++ b/frontend/public/explorer-spa.js @@ -332,9 +332,11 @@ setTimeout(function() { input.focus(); input.select(); + if (typeof focusTrapStart === 'function') focusTrapStart(modal); }, 0); } function closeSmartSearchModal() { + if (typeof focusTrapEnd === 'function') focusTrapEnd(); var modal = document.getElementById('smartSearchModal'); if (!modal) return; modal.style.display = 'none'; @@ -964,6 +966,138 @@ function addToWatchlist(addr) { if (!addr || !/^0x[a-fA-F0-9]{40}$/i.test(addr)) return false; var a = getWatchlist(); var lower = addr.toLowerCase(); if (a.indexOf(lower) === -1) { a.push(lower); try { localStorage.setItem('explorerWatchlist', JSON.stringify(a)); return true; } catch(e){} } return false; } function removeFromWatchlist(addr) { var a = getWatchlist().filter(function(x){ return x !== addr.toLowerCase(); }); try { localStorage.setItem('explorerWatchlist', JSON.stringify(a)); return true; } catch(e){ return false; } } function isInWatchlist(addr) { return getWatchlist().indexOf((addr || '').toLowerCase()) !== -1; } + + var INSTITUTION_PREFS_KEY = 'explorer_inst_prefs_v1'; + function getInstitutionPrefs() { + try { + var j = localStorage.getItem(INSTITUTION_PREFS_KEY); + var o = j ? JSON.parse(j) : {}; + return { + dateFormat: o.dateFormat === 'local' ? 'local' : 'iso', + gasUnit: o.gasUnit === 'eth' ? 'eth' : 'gwei', + externalLinks: o.externalLinks === 'blockscout' ? 'blockscout' : 'spa', + addressRows: o.addressRows === 'compact' ? 'compact' : 'rich' + }; + } catch (e) { + return { dateFormat: 'iso', gasUnit: 'gwei', externalLinks: 'spa', addressRows: 'rich' }; + } + } + function setInstitutionPrefs(patch) { + var cur = getInstitutionPrefs(); + Object.assign(cur, patch || {}); + try { localStorage.setItem(INSTITUTION_PREFS_KEY, JSON.stringify(cur)); } catch (e) {} + applyInstitutionPrefsToDom(); + if (typeof syncContractVerifyBlockscoutLink === 'function') syncContractVerifyBlockscoutLink(); + return cur; + } + function applyInstitutionPrefsToDom() { + var p = getInstitutionPrefs(); + try { + document.body.classList.toggle('explorer-compact-table-rows', p.addressRows === 'compact'); + } catch (e) {} + } + function formatInstitutionTimestamp(isoOrMs) { + if (isoOrMs == null || isoOrMs === '') return '—'; + var d = typeof isoOrMs === 'number' ? new Date(isoOrMs) : new Date(isoOrMs); + if (!Number.isFinite(d.getTime())) return '—'; + var p = getInstitutionPrefs(); + if (p.dateFormat === 'local') return d.toLocaleString(); + return d.toISOString(); + } + var SAVED_VIEWS_KEY = 'explorer_saved_views_v1'; + function getSavedViews() { + try { var j = localStorage.getItem(SAVED_VIEWS_KEY); var a = j ? JSON.parse(j) : []; return Array.isArray(a) ? a : []; } catch (e) { return []; } + } + function saveSavedViews(arr) { try { localStorage.setItem(SAVED_VIEWS_KEY, JSON.stringify((arr || []).slice(0, 40))); } catch (e) {} } + var FILTER_PRESETS_KEY = 'explorer_filter_presets_v1'; + function getFilterPresets() { try { var j = localStorage.getItem(FILTER_PRESETS_KEY); return j ? JSON.parse(j) : {}; } catch (e) { return {}; } } + function setFilterPresets(m) { try { localStorage.setItem(FILTER_PRESETS_KEY, JSON.stringify(m || {})); } catch (e) {} } + var NOTIF_SETTINGS_KEY = 'explorer_notif_settings_v1'; + function getNotifSettings() { + try { + var j = localStorage.getItem(NOTIF_SETTINGS_KEY); + var o = j ? JSON.parse(j) : {}; + return { + enabled: !!o.enabled, + intervalMin: Math.max(5, Math.min(1440, parseInt(o.intervalMin, 10) || 60)) + }; + } catch (e) { return { enabled: false, intervalMin: 60 }; } + } + function setNotifSettings(patch) { + var cur = getNotifSettings(); + Object.assign(cur, patch || {}); + try { localStorage.setItem(NOTIF_SETTINGS_KEY, JSON.stringify(cur)); } catch (e) {} + return cur; + } + var NOTIF_SNAP_KEY = 'explorer_notif_snap_v1'; + function getNotifSnap() { try { var j = localStorage.getItem(NOTIF_SNAP_KEY); return j ? JSON.parse(j) : {}; } catch (e) { return {}; } } + function setNotifSnap(m) { try { localStorage.setItem(NOTIF_SNAP_KEY, JSON.stringify(m || {})); } catch (e) {} } + var REPORT_SCHED_KEY = 'explorer_report_schedules_v1'; + function getReportSchedules() { try { var j = localStorage.getItem(REPORT_SCHED_KEY); var a = j ? JSON.parse(j) : []; return Array.isArray(a) ? a : []; } catch (e) { return []; } } + function setReportSchedules(a) { try { localStorage.setItem(REPORT_SCHED_KEY, JSON.stringify((a || []).slice(0, 20))); } catch (e) {} } + + function decodeExplorerJwtPayload(token) { + if (!token || typeof token !== 'string') return null; + var parts = token.split('.'); + if (parts.length < 2) return null; + try { + var b64 = parts[1].replace(/-/g, '+').replace(/_/g, '/'); + var pad = b64.length % 4 ? '='.repeat(4 - (b64.length % 4)) : ''; + var json = atob(b64 + pad); + return JSON.parse(json); + } catch (e) { return null; } + } + + var _focusTrapState = null; + function focusTrapStart(rootEl) { + focusTrapEnd(); + if (!rootEl) return; + function selectable(el) { + if (!el || el.disabled || el.getAttribute('aria-hidden') === 'true') return false; + var ti = el.getAttribute('tabindex'); + if (ti === '-1') return false; + return el.tabIndex >= 0 || el.matches('a[href],button:not([disabled]),textarea,input,select,[tabindex]:not([tabindex="-1"])'); + } + function listFocusable() { + return Array.prototype.slice.call(rootEl.querySelectorAll('a[href],button,textarea,input,select,[tabindex]')).filter(selectable); + } + var onKeydown = function(e) { + if (e.key !== 'Tab') return; + var nodes = listFocusable(); + if (!nodes.length) return; + var first = nodes[0]; + var last = nodes[nodes.length - 1]; + if (e.shiftKey) { + if (document.activeElement === first) { e.preventDefault(); last.focus(); } + } else { + if (document.activeElement === last) { e.preventDefault(); first.focus(); } + } + }; + rootEl.addEventListener('keydown', onKeydown); + _focusTrapState = { root: rootEl, onKeydown: onKeydown }; + var n = listFocusable(); + if (n.length) setTimeout(function() { n[0].focus(); }, 0); + } + function focusTrapEnd() { + if (!_focusTrapState || !_focusTrapState.root) { _focusTrapState = null; return; } + try { _focusTrapState.root.removeEventListener('keydown', _focusTrapState.onKeydown); } catch (e) {} + _focusTrapState = null; + } + + function updateNavAriaCurrentFromPath(path) { + var raw = path != null ? String(path) : (window.location.pathname || '/'); + var p = raw.split('?')[0].replace(/\/$/, '') || '/'; + var links = document.querySelectorAll('#navLinks a[href^="/"]'); + links.forEach(function(a) { + var h = (a.getAttribute('href') || '').split('?')[0].replace(/\/$/, '') || '/'; + if (h === p || (h !== '/' && (p === h || p.indexOf(h + '/') === 0))) { + a.setAttribute('aria-current', 'page'); + } else { + a.removeAttribute('aria-current'); + } + }); + } + let currentView = 'home'; let _poolsRouteTreeRefreshTimer = null; let currentDetailKey = ''; @@ -988,7 +1122,7 @@ _blocksScrollAnimationId = null; } currentView = viewName; - var detailViews = ['blockDetail','transactionDetail','addressDetail','tokenDetail','nftDetail','watchlist','searchResults','tokens','addresses','pools','routes','liquidity','more','system']; + var detailViews = ['blockDetail','transactionDetail','addressDetail','tokenDetail','nftDetail','watchlist','searchResults','tokens','addresses','pools','routes','liquidity','more','bridge','weth','system','institution','compare','analytics','operator']; if (detailViews.indexOf(viewName) === -1) currentDetailKey = ''; var homeEl = document.getElementById('homeView'); if (homeEl) homeEl.style.display = viewName === 'home' ? 'block' : 'none'; @@ -1067,7 +1201,65 @@ const operatorNav = document.getElementById('operatorNav'); if (analyticsNav) analyticsNav.style.display = hasAccess(3) ? 'block' : 'none'; if (operatorNav) operatorNav.style.display = hasAccess(4) ? 'block' : 'none'; + const userAccountNav = document.getElementById('userAccountNav'); + const verifyContractsRow = document.getElementById('userMenuVerifyContractsRow'); + const identityLabel = document.getElementById('userMenuIdentityLabel'); + if (userAccountNav) { + userAccountNav.style.display = authToken ? '' : 'none'; + } + if (verifyContractsRow) { + verifyContractsRow.style.display = authToken && hasAccess(4) ? '' : 'none'; + } + var instRow = document.getElementById('userMenuInstitutionRow'); + var cmpRow = document.getElementById('userMenuCompareRow'); + var kbRow = document.getElementById('userMenuKeyboardRow'); + var diagRow = document.getElementById('userMenuDiagnosticsRow'); + var incRow = document.getElementById('userMenuIncidentsRow'); + if (instRow) instRow.style.display = authToken && hasAccess(2) ? '' : 'none'; + if (cmpRow) cmpRow.style.display = authToken && hasAccess(2) ? '' : 'none'; + if (kbRow) kbRow.style.display = authToken ? '' : 'none'; + if (diagRow) diagRow.style.display = authToken && hasAccess(2) ? '' : 'none'; + if (incRow) incRow.style.display = authToken && hasAccess(4) ? '' : 'none'; + if (identityLabel && userAddress) { + identityLabel.textContent = 'Signed in: ' + shortenHash(userAddress); + } else if (identityLabel) { + identityLabel.textContent = 'Signed in'; + } } + + window.disconnectExplorerWallet = async function disconnectExplorerWallet() { + var tok = authToken; + if (tok) { + try { + await fetch(EXPLORER_API_V1_BASE + '/auth/logout', { + method: 'POST', + headers: { 'Authorization': 'Bearer ' + tok, 'Content-Type': 'application/json' } + }); + } catch (e) {} + } + try { + localStorage.removeItem('authToken'); + localStorage.removeItem('userAddress'); + } catch (e) {} + authToken = null; + userAddress = null; + userTrack = 1; + const walletBtn = document.getElementById('walletConnectBtn'); + const walletStatus = document.getElementById('walletStatus'); + const walletAddress = document.getElementById('walletAddress'); + if (walletBtn) { + walletBtn.style.display = 'block'; + walletBtn.disabled = false; + } + if (walletStatus) walletStatus.style.display = 'none'; + if (walletAddress) walletAddress.textContent = ''; + focusTrapEnd(); + updateUIForTrack(); + loadFeatureFlags(); + if (typeof showToast === 'function') { + showToast('Signed out', 'success'); + } + }; let connectingWallet = false; async function readApiErrorMessage(response, fallbackMessage) { @@ -2524,6 +2716,22 @@ } window._showAddresses = renderAddressesView; + window.loadInstitutionAnalyticsCohortSnapshot = async function() { + var el = document.getElementById('institutionCohortSnapshot'); + if (!el) return; + var out = { at: new Date().toISOString() }; + var strip = document.getElementById('missionControlHealthStrip'); + if (strip) out.missionControlStrip = strip.textContent; + try { + var r = await fetch(EXPLORER_TRACK1_BASE + '/bridge/status', { credentials: 'omit' }); + if (r.ok) out.bridgeStatus = await r.json(); + else out.bridgeHttp = r.status; + } catch (e) { + out.bridgeError = String(e.message || e); + } + el.textContent = JSON.stringify(out, null, 2); + }; + function buildAnalyticsViewHtml() { var html = ''; html += '
'; @@ -2543,6 +2751,11 @@ html += '
Block cadence
Inspect live block production, miner attribution, gas usage, and exportable block history.
'; html += '
Transaction flow
Review the recent transaction stream and drill into decoded execution details and internal calls.
'; html += '
Route coverage
Open the dedicated route-decision tree for swap-path coverage, bridge branches, and missing quote-token diagnostics.
'; + html += '
'; + html += '
Flow & cohort snapshot (institution)
'; + html += '

Cohort-style snapshot: combine live bridge status with the mission-control strip. Use for internal reporting until dedicated analytics endpoints are enabled.

'; + html += ''; + html += '
Click refresh after this page loads.
'; html += '
'; html += ''; return html; @@ -2773,7 +2986,7 @@ function showView(viewName) { currentView = viewName; - var detailViews = ['blockDetail','transactionDetail','addressDetail','tokenDetail','nftDetail','watchlist','searchResults','tokens','addresses','pools','routes','liquidity','more','analytics','operator','system']; + var detailViews = ['blockDetail','transactionDetail','addressDetail','tokenDetail','nftDetail','watchlist','searchResults','tokens','addresses','pools','routes','liquidity','more','analytics','operator','system','bridge','weth','institution','compare']; if (detailViews.indexOf(viewName) === -1) currentDetailKey = ''; document.querySelectorAll('.detail-view').forEach(v => v.classList.remove('active')); const homeView = document.getElementById('homeView'); @@ -2809,9 +3022,427 @@ if (typeof history !== 'undefined' && history.pushState) { history.pushState(null, '', path); } + if (typeof updateNavAriaCurrentFromPath === 'function') { + updateNavAriaCurrentFromPath(path); + } } window.updatePath = updatePath; + + window.refreshWalletJwt = async function refreshWalletJwt() { + if (!authToken) return; + try { + var r = await fetch(EXPLORER_API_V1_BASE + '/auth/refresh', { + method: 'POST', + headers: { 'Authorization': 'Bearer ' + authToken, 'Content-Type': 'application/json' } + }); + var data = await r.json().catch(function() { return null; }); + if (!r.ok || !data || !data.token) { + if (typeof showToast === 'function') showToast('Session refresh failed (HTTP ' + r.status + ').', 'error'); + return; + } + authToken = data.token; + if (data.track != null) userTrack = parseInt(data.track, 10) || userTrack; + try { localStorage.setItem('authToken', authToken); } catch (e) {} + updateUIForTrack(); + await loadFeatureFlags(); + if (typeof showToast === 'function') showToast('Session refreshed', 'success'); + if (typeof renderInstitutionView === 'function' && currentView === 'institution') renderInstitutionView(); + } catch (e) { + if (typeof showToast === 'function') showToast('Session refresh failed.', 'error'); + } + }; + + window.showInstitutionConsole = function showInstitutionConsole() { + if (!authToken || !hasAccess(2)) { + if (typeof showToast === 'function') showToast('Institution console requires track 2+ after wallet sign-in.', 'warning'); + return; + } + switchToView('institution'); + updatePath('/institution'); + renderInstitutionView(); + }; + + window.showCompareAddresses = function showCompareAddresses(a, b) { + if (!authToken || !hasAccess(2)) { + if (typeof showToast === 'function') showToast('Compare addresses requires track 2+.', 'warning'); + return; + } + var aa = a ? safeAddress(String(a)) : null; + var bb = b ? safeAddress(String(b)) : null; + switchToView('compare'); + if (aa && bb) { + updatePath('/compare/' + encodeURIComponent(aa) + '/' + encodeURIComponent(bb)); + } else { + updatePath('/compare'); + } + renderCompareView(aa || '', bb || ''); + }; + + window.openInstitutionSavedViewById = function(id) { + var views = getSavedViews(); + for (var i = 0; i < views.length; i++) { + if (views[i].id === id) { + if (typeof history !== 'undefined' && history.pushState) { + history.pushState(null, '', views[i].path); + } + applyHashRoute(); + return; + } + } + }; + + window.removeInstitutionSavedViewById = function(id) { + saveSavedViews(getSavedViews().filter(function(v) { return v.id !== id; })); + if (typeof renderInstitutionView === 'function') renderInstitutionView(); + }; + + window.saveCurrentPageAsInstitutionView = function() { + var name = window.prompt('Name for this saved view (e.g. Bridge dashboard)', 'Saved view'); + if (name == null) return; + name = String(name).trim() || 'Saved view'; + var path = window.location.pathname || '/'; + var views = getSavedViews(); + views.unshift({ id: 'sv_' + Date.now(), name: name, path: path }); + saveSavedViews(views); + if (typeof showToast === 'function') showToast('Saved view stored in this browser.', 'success'); + renderInstitutionView(); + }; + + window.promptSaveFilterPresetInstitution = function(key) { + var name = window.prompt('Preset name for ' + key, 'My filter'); + if (name == null) return; + name = String(name).trim() || 'Preset'; + var val = getExplorerPageFilter(key); + var all = getFilterPresets(); + if (!all[key]) all[key] = []; + all[key].push({ id: 'fp_' + Date.now(), name: name, value: val }); + setFilterPresets(all); + if (typeof showToast === 'function') showToast('Filter preset saved locally.', 'success'); + renderInstitutionView(); + }; + + window.applyFilterPresetInstitution = function(key, value) { + setExplorerPageFilter(key, value || ''); + if (key === 'blocksList' && typeof loadAllBlocks === 'function') loadAllBlocks(blocksListPage); + if (key === 'transactionsList' && typeof loadAllTransactions === 'function') loadAllTransactions(transactionsListPage); + if (typeof showToast === 'function') showToast('Filter applied. Open Blocks or Transactions to see results.', 'info'); + }; + + window.applyFilterPresetByIdInstitution = function(key, pid) { + var arr = (getFilterPresets()[key] || []).filter(function(p) { return p.id === pid; }); + if (!arr.length) return; + applyFilterPresetInstitution(key, arr[0].value); + }; + + window.removeFilterPresetInstitution = function(key, pid) { + var all = getFilterPresets(); + if (!all[key]) return; + all[key] = all[key].filter(function(p) { return p.id !== pid; }); + setFilterPresets(all); + renderInstitutionView(); + }; + + window.saveInstitutionNotifSettingsFromForm = function() { + var en = document.getElementById('instNotifEnabled'); + var iv = document.getElementById('instNotifInterval'); + setNotifSettings({ + enabled: !!(en && en.checked), + intervalMin: iv ? parseInt(iv.value, 10) || 60 : 60 + }); + if (typeof showToast === 'function') showToast('Notification settings saved.', 'success'); + renderInstitutionView(); + if (typeof restartWatchlistInstitutionNotifications === 'function') restartWatchlistInstitutionNotifications(); + }; + + window.saveInstitutionReportSchedule = function() { + if (!hasAccess(3)) return; + var name = window.prompt('Report schedule name', 'Weekly digest'); + if (name == null) return; + var freq = window.prompt('Frequency: manual, daily, or weekly', 'weekly'); + if (freq == null) return; + freq = String(freq).toLowerCase(); + if (freq !== 'daily' && freq !== 'weekly' && freq !== 'manual') freq = 'manual'; + var list = getReportSchedules(); + list.push({ id: 'rs_' + Date.now(), name: String(name).trim() || 'Report', frequency: freq, createdAt: new Date().toISOString() }); + setReportSchedules(list); + renderInstitutionView(); + }; + + window.removeInstitutionReportSchedule = function(rid) { + setReportSchedules(getReportSchedules().filter(function(r) { return r.id !== rid; })); + renderInstitutionView(); + }; + + function renderInstitutionView() { + var c = document.getElementById('institutionContent'); + if (!c) return; + if (!authToken || !hasAccess(2)) { + c.innerHTML = '

Institution console requires track 2+ wallet authentication.

'; + return; + } + var prefs = getInstitutionPrefs(); + var jwt = decodeExplorerJwtPayload(authToken); + var expText = '—'; + if (jwt && jwt.exp) { + expText = formatInstitutionTimestamp(jwt.exp * 1000); + if (jwt.jti) expText += ' · jti: ' + escapeHtml(String(jwt.jti).slice(0, 14)) + '…'; + } + var views = getSavedViews(); + var viewRows = views.length + ? views.map(function(v) { + return '' + escapeHtml(v.name) + '' + escapeHtml(v.path) + ' '; + }).join('') + : 'No saved views. Browse the explorer, then click “Save current page”.'; + var fp = getFilterPresets(); + function fpRows(key) { + var arr = fp[key] || []; + if (!arr.length) return 'None'; + return arr.map(function(p) { + return '' + escapeHtml(p.name) + '' + escapeHtml(p.value || '(empty)') + ' '; + }).join(''); + } + var ns = getNotifSettings(); + var rs = getReportSchedules(); + var rsRows = !hasAccess(3) + ? 'Track 3+ unlocks scheduled report metadata.' + : (rs.length ? rs.map(function(r) { + return '' + escapeHtml(r.name) + '' + escapeHtml(r.frequency) + ''; + }).join('') : 'No schedules. Add a label for compliance tracking; snapshot download is manual from this browser.'); + var apiBlock = !hasAccess(3) + ? '

Track 3+ users: RPC API keys and usage audit live under the access console (email session), not the wallet JWT. See EXPLORER_API_ACCESS.md.

' + : '

RPC products and keys: GET ' + escapeHtml(EXPLORER_API_V1_BASE) + '/access/products (public) and GET …/access/api-keys with an email access token from POST …/auth/register / login. Wallet JWTs gate explorer tracks, not the RPC key store.

'; + + c.innerHTML = '' + + '
' + + '

Session & security

' + + '

Wallet: ' + escapeHtml(userAddress || '') + ' · Track: ' + escapeHtml(String(userTrack)) + '

' + + '

JWT expiry (decoded): ' + expText + '

' + + '

Only the current browser session is shown. Revoking this token uses Sign out (server POST /auth/logout). Organization-wide “sign out everywhere” needs operator revocation of all JTIs for the address (not exposed here).

' + + '
' + + + '

Preferences (this browser)

' + + '
' + + '' + + '' + + '' + + '' + + '' + + '
' + + + '

Saved views

' + + '' + + '' + viewRows + '
NamePath
' + + + '

Filter presets (blocks / transactions lists)

' + + '

Apply filters on Blocks or Transactions pages first, then capture a preset here.

' + + ' ' + + '' + + '

Blocks

' + fpRows('blocksList') + '
NameValue
' + + '

Transactions

' + fpRows('transactionsList') + '
NameValue
' + + + '

Watchlist notifications

' + + '

While this tab is open, the explorer compares cached transaction counts for watchlist addresses on your chosen interval.

' + + '' + + ' ' + + '
' + + + (hasAccess(3) ? '

Reports & snapshots

' + + '

Download a JSON bundle for audit / ticketing. Email delivery is not wired in-browser; export and attach to your SOC workflow.

' + + ' ' + + '' + + '' + rsRows + '
NameFrequency
' : '') + + + '

API & RPC access

' + apiBlock + '
' + + + '

Address comparison

' + + '
' + + '
'; + } + + function renderCompareView(a, b) { + var c = document.getElementById('compareContent'); + if (!c) return; + if (!authToken || !hasAccess(2)) { + c.innerHTML = '

Track 2+ required.

'; + return; + } + var aa = a ? safeAddress(String(a)) : null; + var bb = b ? safeAddress(String(b)) : null; + var form = '
' + + '

' + + '

' + + '
'; + if (!aa || !bb) { + c.innerHTML = form + '

Enter two contract or EOA addresses to compare balances and activity counters side by side.

'; + return; + } + c.innerHTML = form + '
Loading both addresses…
'; + Promise.all([fetchChain138AddressDetail(aa), fetchChain138AddressDetail(bb)]).then(function(results) { + var ra = results[0] && results[0].address; + var rb = results[1] && results[1].address; + var rowBal = 'Balance (ETH)' + (ra ? escapeHtml(formatEther(ra.balance || '0')) : '—') + '' + (rb ? escapeHtml(formatEther(rb.balance || '0')) : '—') + ''; + var rowTx = 'Tx count' + (ra ? escapeHtml(String(ra.transaction_count != null ? ra.transaction_count : 0)) : '—') + '' + (rb ? escapeHtml(String(rb.transaction_count != null ? rb.transaction_count : 0)) : '—') + ''; + var rowTy = 'Type' + (ra ? (ra.is_contract ? 'Contract' : 'EOA') : '—') + '' + (rb ? (rb.is_contract ? 'Contract' : 'EOA') : '—') + ''; + var rowTk = 'Tokens' + (ra ? escapeHtml(String(ra.token_count != null ? ra.token_count : 0)) : '—') + '' + (rb ? escapeHtml(String(rb.token_count != null ? rb.token_count : 0)) : '—') + ''; + c.innerHTML = form + '' + rowBal + rowTx + rowTy + rowTk + '
MetricAB
'; + }).catch(function(err) { + c.innerHTML = form + '

' + escapeHtml(err.message || String(err)) + '

'; + }); + } + + window.closeKeyboardShortcutsModal = function() { + focusTrapEnd(); + var m = document.getElementById('keyboardShortcutsModal'); + if (m) { + m.style.display = 'none'; + m.setAttribute('aria-hidden', 'true'); + } + document.body.style.overflow = ''; + }; + window.showKeyboardShortcutsModal = function() { + var m = document.getElementById('keyboardShortcutsModal'); + if (!m) return; + if (typeof closeAllNavDropdowns === 'function') closeAllNavDropdowns(); + m.style.display = 'block'; + m.setAttribute('aria-hidden', 'false'); + document.body.style.overflow = 'hidden'; + focusTrapStart(m); + }; + + window.closeIncidentLinksModal = function() { + focusTrapEnd(); + var m = document.getElementById('incidentLinksModal'); + if (m) { + m.style.display = 'none'; + m.setAttribute('aria-hidden', 'true'); + } + document.body.style.overflow = ''; + }; + window.showIncidentLinksModal = function() { + if (!authToken || !hasAccess(4)) { + if (typeof showToast === 'function') showToast('Incident hub is limited to operator-track wallets.', 'warning'); + return; + } + var m = document.getElementById('incidentLinksModal'); + if (!m) return; + if (typeof closeAllNavDropdowns === 'function') closeAllNavDropdowns(); + m.style.display = 'block'; + m.setAttribute('aria-hidden', 'false'); + document.body.style.overflow = 'hidden'; + focusTrapStart(m); + }; + + window.copyExplorerDiagnosticsBundle = async function() { + if (!authToken) { + if (typeof showToast === 'function') showToast('Sign in to copy diagnostics.', 'warning'); + return; + } + var pl = decodeExplorerJwtPayload(authToken); + var bundle = { + exportedAt: new Date().toISOString(), + pathname: window.location.pathname, + userTrack: userTrack, + wallet: userAddress, + jwtExp: pl && pl.exp, + jwtJtiPrefix: pl && pl.jti ? String(pl.jti).slice(0, 12) : null, + chainId: typeof CHAIN_ID !== 'undefined' ? CHAIN_ID : null, + userAgent: navigator.userAgent, + explorerApi: EXPLORER_API_V1_BASE + }; + var strip = document.getElementById('missionControlHealthStrip'); + if (strip) bundle.missionControlStrip = strip.textContent; + var txt = JSON.stringify(bundle, null, 2); + try { + await navigator.clipboard.writeText(txt); + if (typeof showToast === 'function') showToast('Diagnostics bundle copied', 'success'); + } catch (e) { + window.prompt('Copy diagnostics:', txt); + } + }; + + window.downloadInstitutionReportSnapshot = async function() { + if (!hasAccess(3)) { + if (typeof showToast === 'function') showToast('Track 3+ required for report snapshot.', 'warning'); + return; + } + var snap = { + generatedAt: new Date().toISOString(), + userTrack: userTrack, + pathname: window.location.pathname, + schedules: getReportSchedules() + }; + var strip = document.getElementById('missionControlHealthStrip'); + if (strip) snap.missionControlStrip = strip.textContent; + var g = document.getElementById('gasCurrentValue'); + if (g) snap.gasHomeLabel = g.textContent; + try { + var r = await fetch(EXPLORER_TRACK1_BASE + '/bridge/status', { credentials: 'omit' }); + if (r.ok) snap.bridgeStatus = await r.json(); + } catch (e) {} + var blob = new Blob([JSON.stringify(snap, null, 2)], { type: 'application/json' }); + var url = URL.createObjectURL(blob); + var a = document.createElement('a'); + a.href = url; + a.download = 'explorer-institution-snapshot-' + snap.generatedAt.slice(0, 19).replace(/[:]/g, '-') + '.json'; + a.click(); + URL.revokeObjectURL(url); + var list = getReportSchedules(); + for (var i = 0; i < list.length; i++) { + list[i].lastDownloadAt = snap.generatedAt; + } + setReportSchedules(list); + if (typeof showToast === 'function') showToast('Snapshot downloaded', 'success'); + renderInstitutionView(); + }; + + var _watchlistNotifTimer = null; + function restartWatchlistInstitutionNotifications() { + if (_watchlistNotifTimer) { + clearInterval(_watchlistNotifTimer); + _watchlistNotifTimer = null; + } + _watchlistNotifTimer = setInterval(tickWatchlistInstitutionNotifications, 60000); + } + window.restartWatchlistInstitutionNotifications = restartWatchlistInstitutionNotifications; + + async function tickWatchlistInstitutionNotifications() { + var s = getNotifSettings(); + if (!authToken || !s.enabled) return; + var wl = getWatchlist(); + if (!wl.length) return; + var last = 0; + try { last = parseInt(sessionStorage.getItem('explorer_notif_last_run') || '0', 10); } catch (e) {} + var now = Date.now(); + if (now - last < s.intervalMin * 60000) return; + try { sessionStorage.setItem('explorer_notif_last_run', String(now)); } catch (e) {} + var snap = getNotifSnap(); + var slice = wl.slice(0, 8); + for (var i = 0; i < slice.length; i++) { + var addr = slice[i]; + try { + var res = await fetchChain138AddressDetail(addr); + var ad = res && res.address; + var tc = ad && ad.transaction_count != null ? ad.transaction_count : 0; + var prev = snap[addr.toLowerCase()]; + if (prev != null && tc > prev && typeof showToast === 'function') { + showToast('Watchlist activity: ' + shortenHash(addr) + ' tx count ' + prev + ' → ' + tc, 'info', 8000); + } + snap[addr.toLowerCase()] = tc; + } catch (e) {} + } + setNotifSnap(snap); + } + function applyHashRoute() { + try { var route = ''; var fromPath = (window.location.pathname || '/').replace(/^\//, '').replace(/\/$/, '').replace(/^index\.html$/i, ''); var fromHash = (window.location.hash || '').replace(/^#/, ''); @@ -2840,9 +3471,28 @@ if (parts[0] === 'liquidity') { if (currentView !== 'liquidity') showLiquidityAccess(); return; } if (parts[0] === 'more') { if (currentView !== 'more') showMore(); return; } if (parts[0] === 'tokens') { if (typeof showTokensList === 'function') showTokensList(); else focusSearchWithHint('token'); return; } + if (parts[0] === 'institution') { + if (!authToken || !hasAccess(2)) { if (currentView !== 'home') showHome(); return; } + if (currentView !== 'institution') switchToView('institution'); + renderInstitutionView(); + return; + } + if (parts[0] === 'compare') { + if (!authToken || !hasAccess(2)) { if (currentView !== 'home') showHome(); return; } + var c1 = parts[1] ? decode(parts[1]) : ''; + var c2 = parts[2] ? decode(parts[2]) : ''; + if (currentView !== 'compare') switchToView('compare'); + renderCompareView(c1, c2); + return; + } if (parts[0] === 'analytics') { if (currentView !== 'analytics') showAnalytics(); return; } if (parts[0] === 'operator') { if (currentView !== 'operator') showOperator(); return; } if (parts[0] === 'system') { if (currentView !== 'system') showSystemTopology(); return; } + } finally { + if (typeof updateNavAriaCurrentFromPath === 'function') { + updateNavAriaCurrentFromPath(window.location.pathname); + } + } } window.applyHashRoute = applyHashRoute; var hasRouteOnReady = window.location.hash || ((window.location.pathname || '').replace(/^\//, '').replace(/\/$/, '')); @@ -4940,6 +5590,161 @@ if (/^0x0{40}$/i.test(s)) return null; return s; } + + function guessContractAddressFromPath() { + var path = (typeof window !== 'undefined' && window.location && window.location.pathname) ? window.location.pathname : ''; + var m = path.match(/^\/addresses\/(0x[a-fA-F0-9]{40})\/?/i); + if (m) return m[1]; + m = path.match(/^\/address\/(0x[a-fA-F0-9]{40})\/?/i); + return m ? m[1] : ''; + } + + function institutionExternalLinksBlockscout() { + return (getInstitutionPrefs().externalLinks || 'spa') === 'blockscout'; + } + function clearExplorerPendingAddressInitialTabFor(addr) { + var p = window.__explorerPendingAddressInitialTab; + var low = addr && String(addr).toLowerCase(); + if (p && low && p.address === low) { + window.__explorerPendingAddressInitialTab = null; + } + } + function institutionOpenContractInExplorer(addr) { + var a = safeAddress(addr); + if (!a) return; + try { + window.__explorerPendingAddressInitialTab = { tab: 'contract', address: a.toLowerCase() }; + if (typeof showAddressDetail === 'function') showAddressDetail(a); + if (typeof updatePath === 'function') updatePath('/addresses/' + a + '/contract'); + } catch (e) {} + } + window.institutionOpenContractInExplorer = institutionOpenContractInExplorer; + + function institutionContractExploreAnchor(addr, extLabel, spaLabel, inlineStyle) { + var a = safeAddress(addr); + if (!a) return ''; + var sty = inlineStyle ? ' style="' + escapeAttr(inlineStyle) + '"' : ''; + if (institutionExternalLinksBlockscout()) { + return '' + escapeHtml(extLabel) + ''; + } + var addressForJs = a.replace(/\\/g, '\\\\').replace(/'/g, "\\'"); + return '' + escapeHtml(spaLabel) + ''; + } + function institutionAddressContractLinkHtml(addr) { + return institutionContractExploreAnchor(addr, 'View contract on Blockscout', 'Open contract tab', 'color: var(--primary); font-size: 0.875rem;'); + } + + function syncContractVerifyBlockscoutLink() { + var input = document.getElementById('contractVerifyAddressInput'); + var link = document.getElementById('contractVerifyBlockscoutLink'); + if (!link) return; + var raw = input && input.value ? String(input.value).trim() : ''; + var addr = safeAddress(raw) || safeAddress(guessContractAddressFromPath()); + link.onclick = null; + if (addr) { + if (institutionExternalLinksBlockscout()) { + link.href = EXPLORER_ORIGIN + '/address/' + encodeURIComponent(addr) + '/contract'; + link.setAttribute('target', '_blank'); + link.setAttribute('rel', 'noopener noreferrer'); + } else { + link.href = '#'; + link.removeAttribute('target'); + link.removeAttribute('rel'); + (function (contractAddr) { + link.onclick = function (ev) { + ev.preventDefault(); + institutionOpenContractInExplorer(contractAddr); + if (typeof closeContractVerifyHelpModal === 'function') closeContractVerifyHelpModal(); + return false; + }; + })(addr); + } + link.setAttribute('aria-disabled', 'false'); + link.style.pointerEvents = ''; + link.style.opacity = ''; + } else { + link.href = '#'; + link.removeAttribute('target'); + link.removeAttribute('rel'); + link.onclick = function (ev) { ev.preventDefault(); return false; }; + link.setAttribute('aria-disabled', 'true'); + link.style.pointerEvents = 'none'; + link.style.opacity = '0.55'; + } + } + + function closeContractVerifyHelpModal() { + if (typeof focusTrapEnd === 'function') focusTrapEnd(); + var modal = document.getElementById('contractVerifyHelpModal'); + if (!modal) return; + modal.style.display = 'none'; + modal.setAttribute('aria-hidden', 'true'); + document.body.style.overflow = ''; + } + + window.showContractVerificationHelp = function showContractVerificationHelp(prefillAddress) { + if (!authToken || !hasAccess(4)) { + if (typeof showToast === 'function') { + showToast('Contract verification tools are available to operator-approved accounts.', 'warning'); + } else { + alert('Contract verification tools are available to operator-approved accounts.'); + } + return; + } + var modal = document.getElementById('contractVerifyHelpModal'); + if (!modal) return; + if (typeof closeAllNavDropdowns === 'function') { + closeAllNavDropdowns(); + } + var input = document.getElementById('contractVerifyAddressInput'); + var fromArg = prefillAddress && safeAddress(prefillAddress); + var fromPath = guessContractAddressFromPath(); + var initial = fromArg || fromPath || (input && input.value ? safeAddress(input.value) : null); + if (input) { + input.value = initial || ''; + } + syncContractVerifyBlockscoutLink(); + modal.style.display = 'block'; + modal.setAttribute('aria-hidden', 'false'); + document.body.style.overflow = 'hidden'; + if (typeof focusTrapStart === 'function') focusTrapStart(modal); + }; + + function initContractVerifyHelpModal() { + var modal = document.getElementById('contractVerifyHelpModal'); + var backdrop = document.getElementById('contractVerifyHelpBackdrop'); + var closeBtn = document.getElementById('contractVerifyHelpCloseBtn'); + var input = document.getElementById('contractVerifyAddressInput'); + var copyBtn = document.getElementById('contractVerifyCopyCommandBtn'); + var cmdEl = document.getElementById('contractVerifyScriptCommand'); + if (backdrop) { + backdrop.addEventListener('click', closeContractVerifyHelpModal); + } + if (closeBtn) { + closeBtn.addEventListener('click', function (e) { + e.preventDefault(); + closeContractVerifyHelpModal(); + }); + } + if (input) { + input.addEventListener('input', syncContractVerifyBlockscoutLink); + } + if (copyBtn && cmdEl) { + copyBtn.addEventListener('click', function (e) { + e.preventDefault(); + var text = cmdEl.textContent || './scripts/verify/run-contract-verification-with-proxy.sh'; + if (navigator.clipboard && navigator.clipboard.writeText) { + navigator.clipboard.writeText(text).then(function () { + if (typeof showToast === 'function') showToast('Command copied', 'success'); + }).catch(function () { + window.prompt('Copy:', text); + }); + } else { + window.prompt('Copy:', text); + } + }); + } + } function escapeJsSingleQuoted(value) { return String(value == null ? '' : value).replace(/\\/g, '\\\\').replace(/'/g, "\\'"); } @@ -5942,6 +6747,7 @@ try { // Validate address format if (!/^0x[a-fA-F0-9]{40}$/.test(address)) { + clearExplorerPendingAddressInitialTabFor(address); container.innerHTML = '
Invalid address format
'; return; } @@ -5959,6 +6765,7 @@ throw new Error('Address not found'); } } catch (error) { + clearExplorerPendingAddressInitialTabFor(address); var retryAddress = String(address || '').replace(/\\/g, '\\\\').replace(/'/g, "\\'"); container.innerHTML = '
Failed to load address: ' + escapeHtml(error.message || 'Unknown error') + '.
'; return; @@ -5975,19 +6782,25 @@ if (a) { const balanceEth = formatEther(a.balance || '0'); const isContract = !!a.is_contract; + if (window.__explorerPendingAddressInitialTab && window.__explorerPendingAddressInitialTab.tab === 'contract' && window.__explorerPendingAddressInitialTab.address === address.toLowerCase() && !isContract) { + window.__explorerPendingAddressInitialTab = null; + } const verifiedBadge = a.is_verified ? 'Verified' : ''; const encodedAddress = encodeURIComponent(address); const escapedAddress = escapeHtml(address); const addressForJs = address.replace(/\\/g, '\\\\').replace(/'/g, "\\'"); - const contractLink = isContract ? `View contract on Blockscout` : ''; + const contractLink = isContract ? institutionAddressContractLinkHtml(address) : ''; const savedLabel = getAddressLabel(address); const inWatchlist = isInWatchlist(address); const fallbackNotice = addressDetailSource === 'rpc_fallback' ? `
RPC fallback mode. Indexed address metadata is temporarily unavailable or responding too slowly, so this view is using live RPC for balance, nonce-derived transaction count, and contract detection. Transactions, token balances, internal txns, and NFTs remain best-effort while the explorer API recovers.
` : ''; + const institutionOpStrip = (isContract && authToken && hasAccess(4)) + ? `
Institution operator tools · ${contractLink ? ' · ' + contractLink : ''}
` + : ''; container.innerHTML = ` - ${fallbackNotice} + ${fallbackNotice}${institutionOpStrip}
Address
${escapedAddress}
@@ -6084,6 +6897,11 @@ } } window.switchAddressTab = switchAddressTab; + var pend = window.__explorerPendingAddressInitialTab; + if (pend && pend.tab === 'contract' && pend.address === address.toLowerCase() && isContract) { + window.__explorerPendingAddressInitialTab = null; + switchAddressTab('contract', address); + } async function loadAddressTokenBalances(addr) { const el = document.getElementById('addressTokenBalances'); @@ -6243,7 +7061,7 @@ } el.dataset.loaded = '1'; if (!data) { - el.innerHTML = '

Contract source not indexed. Verify on Blockscout

'; + el.innerHTML = '

Contract source not indexed. ' + institutionContractExploreAnchor(addr, 'Verify on Blockscout', 'Open contract tab', 'color: var(--primary);') + '

'; return; } const abi = data.abi || data.abi_interface || []; @@ -6271,7 +7089,7 @@ html += ''; html += '
'; } - html += '

Read / Write contract on Blockscout

'; + html += '

' + institutionContractExploreAnchor(addr, 'Read / Write contract on Blockscout', 'Read / Write contract in explorer', 'color: var(--primary);') + '

'; el.innerHTML = html; if (viewFns.length > 0) { (function setupReadContract(contractAddr, abiJson, viewFunctions) { @@ -6434,9 +7252,11 @@ if (txContainer) txContainer.innerHTML = '

Failed to load transactions

'; } } else { + clearExplorerPendingAddressInitialTabFor(address); container.innerHTML = '
Address not found
'; } } catch (error) { + clearExplorerPendingAddressInitialTabFor(address); container.innerHTML = '
Failed to load address: ' + escapeHtml(error.message) + '
'; } } @@ -7192,6 +8012,24 @@ closeSmartSearchModal(); return; } + var kbdModal = document.getElementById('keyboardShortcutsModal'); + if (e.key === 'Escape' && kbdModal && kbdModal.style.display === 'block') { + e.preventDefault(); + if (typeof closeKeyboardShortcutsModal === 'function') closeKeyboardShortcutsModal(); + return; + } + var incModal = document.getElementById('incidentLinksModal'); + if (e.key === 'Escape' && incModal && incModal.style.display === 'block') { + e.preventDefault(); + if (typeof closeIncidentLinksModal === 'function') closeIncidentLinksModal(); + return; + } + var contractHelpModal = document.getElementById('contractVerifyHelpModal'); + if (e.key === 'Escape' && contractHelpModal && contractHelpModal.style.display === 'block') { + e.preventDefault(); + closeContractVerifyHelpModal(); + return; + } if ((e.key === '/' || ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'k')) && !isEditable) { e.preventDefault(); openSmartSearchModal(''); @@ -7203,6 +8041,24 @@ if (e.target.closest('a')) closeNavMenu(); }); initNavDropdowns(); + initContractVerifyHelpModal(); + var kbdBackdrop = document.getElementById('keyboardShortcutsBackdrop'); + var kbdClose = document.getElementById('keyboardShortcutsCloseBtn'); + if (kbdBackdrop) kbdBackdrop.addEventListener('click', function() { if (typeof closeKeyboardShortcutsModal === 'function') closeKeyboardShortcutsModal(); }); + if (kbdClose) kbdClose.addEventListener('click', function(ev) { ev.preventDefault(); if (typeof closeKeyboardShortcutsModal === 'function') closeKeyboardShortcutsModal(); }); + var incBackdrop = document.getElementById('incidentLinksBackdrop'); + var incClose = document.getElementById('incidentLinksCloseBtn'); + if (incBackdrop) incBackdrop.addEventListener('click', function() { if (typeof closeIncidentLinksModal === 'function') closeIncidentLinksModal(); }); + if (incClose) incClose.addEventListener('click', function(ev) { ev.preventDefault(); if (typeof closeIncidentLinksModal === 'function') closeIncidentLinksModal(); }); + } + if (typeof updateNavAriaCurrentFromPath === 'function') { + updateNavAriaCurrentFromPath(window.location.pathname); + } + if (typeof restartWatchlistInstitutionNotifications === 'function') { + restartWatchlistInstitutionNotifications(); + } + if (typeof applyInstitutionPrefsToDom === 'function') { + applyInstitutionPrefsToDom(); } ensureMissionControlHealthStrip(); startMissionControlEventSource(); diff --git a/frontend/public/index.html b/frontend/public/index.html index 5b7d67c..003c9d6 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -156,6 +156,15 @@ body.dark-theme .table th { background: #334155; color: var(--text); } body.dark-theme .table tr:hover { background: #1e293b; } body.dark-theme .skeleton { background: linear-gradient(90deg, #334155 25%, #475569 50%, #334155 75%); } + body.explorer-compact-table-rows .table tbody td, + body.explorer-compact-table-rows .table tbody th { + padding: 0.35rem 0.5rem; + font-size: 0.85rem; + } + body.explorer-compact-table-rows .table thead th { + padding: 0.45rem 0.55rem; + font-size: 0.82rem; + } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; background: var(--light); @@ -267,6 +276,31 @@ opacity: 1; } .nav-dropdown-menu li { margin: 0; } + .nav-dropdown-menu li.user-menu-meta { + padding: 0.55rem 1rem 0.65rem; + font-size: 0.8rem; + color: rgba(255,255,255,0.72); + border-bottom: 1px solid rgba(255,255,255,0.12); + margin-bottom: 0.15rem; + } + .nav-links a:focus-visible, + .nav-dropdown-trigger:focus-visible, + .nav-actions button:focus-visible, + .nav-actions select:focus-visible { + outline: 2px solid rgba(255,255,255,0.95); + outline-offset: 2px; + } + body.dark-theme .nav-links a:focus-visible, + body.dark-theme .nav-dropdown-trigger:focus-visible { + outline-color: #fbbf24; + } + .nav-actions { + flex-wrap: wrap; + justify-content: flex-end; + } + @media (max-width: 1100px) { + .nav-actions #walletConnect { width: 100%; justify-content: flex-end; margin-top: 0.35rem; } + } .search-box { flex: 1; max-width: 560px; @@ -1251,6 +1285,19 @@
  • MetaMask Snap
  • Operations
  • + +
    +
    Proxmox repo (LAN + Foundry)
    +

    From the repository root on a host that can reach Blockscout and your RPC (see forge-verification-proxy in-repo):

    +
    + ./scripts/verify/run-contract-verification-with-proxy.sh + +
    +
    +

    The public SPA cannot run forge verify. Use Blockscout’s form or the script above. Optional alternate bridge verify: set VERIFY_ALTERNATE_CCIPWETH9_BRIDGE=1 when using scripts/verify-contracts-blockscout.sh (see repo docs).

    + + + + + + + + +
    @@ -1778,6 +1895,32 @@
    + +
    + +
    +
    + +

    Institution console

    +
    +
    +
    Loading…
    +
    +
    +
    + +
    + +
    +
    + +

    Compare addresses

    +
    +
    +
    Loading…
    +
    +
    +
    @@ -1816,6 +1959,6 @@
    - + diff --git a/frontend/public/token-icons/chain-138.png b/frontend/public/token-icons/chain-138.png new file mode 100644 index 0000000000000000000000000000000000000000..ae7dea398ca3eb0126ec460c789378b550f7c7ca GIT binary patch literal 218003 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 IM6N<$f`r|!u>b%7 literal 0 HcmV?d00001 diff --git a/frontend/src/components/common/EntityBadge.tsx b/frontend/src/components/common/EntityBadge.tsx index 773f211..a5dc730 100644 --- a/frontend/src/components/common/EntityBadge.tsx +++ b/frontend/src/components/common/EntityBadge.tsx @@ -13,8 +13,14 @@ function toneClasses(tone: 'neutral' | 'success' | 'warning' | 'info') { } } -export function getEntityBadgeTone(tag: string): 'neutral' | 'success' | 'warning' | 'info' { - const normalized = tag.toLowerCase() +function normalizeBadgeLabel(value: unknown): string { + if (typeof value === 'string') return value + if (typeof value === 'number' || typeof value === 'bigint' || typeof value === 'boolean') return String(value) + return 'unknown' +} + +export function getEntityBadgeTone(tag: unknown): 'neutral' | 'success' | 'warning' | 'info' { + const normalized = normalizeBadgeLabel(tag).toLowerCase() if (normalized === 'compliant' || normalized === 'listed' || normalized === 'verified' || normalized === 'gru') { return 'success' } @@ -27,15 +33,16 @@ export function getEntityBadgeTone(tag: string): 'neutral' | 'success' | 'warnin return 'neutral' } -export function formatEntityBadgeLabel(label: string): string { - const normalized = label.toLowerCase() +export function formatEntityBadgeLabel(label: unknown): string { + const resolvedLabel = normalizeBadgeLabel(label) + const normalized = resolvedLabel.toLowerCase() const labels: Record = { 'reference-asset': 'reference asset', 'electronic-money': 'cash e-money', 'treasury-bond': 'treasury / gov bond', gru: 'GRU', } - return labels[normalized] || label + return labels[normalized] || resolvedLabel } export default function EntityBadge({ @@ -43,7 +50,7 @@ export default function EntityBadge({ tone, className, }: { - label: string + label: unknown tone?: 'neutral' | 'success' | 'warning' | 'info' className?: string }) { diff --git a/frontend/src/components/wallet/AddToMetaMask.tsx b/frontend/src/components/wallet/AddToMetaMask.tsx index 34b2df9..906f825 100644 --- a/frontend/src/components/wallet/AddToMetaMask.tsx +++ b/frontend/src/components/wallet/AddToMetaMask.tsx @@ -84,6 +84,32 @@ export type CapabilitiesCatalog = { } } +type WatchAssetEntry = { + type: 'ERC20' + options: { + address: string + symbol: string + decimals: number + image?: string + } + metadata?: { + name?: string + registryFamily?: string + familySymbol?: string + deploymentVersion?: string + deploymentStatus?: string + } +} + +type MetaMaskConfig = { + source?: string + version?: string + chainId?: number + addEthereumChain?: WalletChain + watchAssets?: WatchAssetEntry[] + caveats?: string[] +} + export type FetchMetadata = { source?: string | null lastModified?: string | null @@ -109,7 +135,11 @@ const FALLBACK_CHAIN_138: WalletChain = { nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 }, rpcUrls: ['https://rpc-http-pub.d-bis.org', 'https://rpc.d-bis.org', 'https://rpc2.d-bis.org'], blockExplorerUrls: ['https://explorer.d-bis.org', 'https://blockscout.defi-oracle.io'], - iconUrls: ['https://raw.githubusercontent.com/ethereum/ethereum.org/main/static/images/eth-diamond-black.png'], + iconUrls: [ + 'https://explorer.d-bis.org/api/v1/report/logo/chain-138', + 'https://explorer.d-bis.org/token-icons/chain-138.png', + 'https://explorer.d-bis.org/favicon.ico', + ], shortName: 'dbis', infoURL: 'https://explorer.d-bis.org', explorerApiUrl: 'https://explorer.d-bis.org/api/v2', @@ -139,6 +169,22 @@ const FALLBACK_ALL_MAINNET: WalletChain = { infoURL: 'https://alltra.global', } +const MAINNET_CWUSDC_TOKEN: TokenListToken = { + chainId: 1, + address: '0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a', + symbol: 'cWUSDC', + name: 'Wrapped cUSDC', + decimals: 6, + logoURI: 'https://explorer.d-bis.org/api/v1/report/logo/cUSDC?v=20260510', + tags: ['mainnet', 'cw', 'usd'], + extensions: { + registryFamily: 'iso4217', + familySymbol: 'USD', + canonicalSourceChainId: 138, + canonicalSourceSymbol: 'cUSDC', + }, +} + const FEATURED_TOKEN_SYMBOLS = ['cUSDT', 'cUSDC', 'USDT', 'USDC', 'cXAUC', 'cXAUT'] /** npm-published Snap using open Snap permissions only; stable MetaMask still requires MetaMask’s install allowlist. */ @@ -218,12 +264,62 @@ function isCapabilitiesCatalog(value: unknown): value is CapabilitiesCatalog { ) } +function isWatchAssetEntry(value: unknown): value is WatchAssetEntry { + if (!value || typeof value !== 'object') return false + + const candidate = value as Partial + const options = (candidate.options || {}) as Partial + return ( + candidate.type === 'ERC20' && + typeof options.address === 'string' && + options.address.trim().length > 0 && + typeof options.symbol === 'string' && + options.symbol.trim().length > 0 && + typeof options.decimals === 'number' + ) +} + +function isMetaMaskConfig(value: unknown): value is MetaMaskConfig { + if (!value || typeof value !== 'object') return false + + const candidate = value as Partial + return ( + typeof candidate.chainId === 'number' && + !!candidate.addEthereumChain && + Array.isArray(candidate.watchAssets) + ) +} + +function watchAssetToToken(entry: WatchAssetEntry): TokenListToken { + return { + chainId: 138, + address: entry.options.address, + symbol: entry.options.symbol, + name: entry.metadata?.name || entry.options.symbol, + decimals: entry.options.decimals, + logoURI: entry.options.image, + extensions: { + registryFamily: entry.metadata?.registryFamily, + familySymbol: entry.metadata?.familySymbol, + deploymentVersion: entry.metadata?.deploymentVersion, + deploymentStatus: entry.metadata?.deploymentStatus, + }, + } +} + function getApiBase() { return resolveExplorerApiBase({ - serverFallback: 'https://blockscout.defi-oracle.io', + browserOrigin: '', + serverFallback: 'https://explorer.d-bis.org', }) } +function formatStableTimestamp(value: string): string { + const timestamp = Date.parse(value) + if (Number.isNaN(timestamp)) return value + return new Date(timestamp).toISOString() +} + export function AddToMetaMask({ initialNetworks = null, initialTokenList = null, @@ -253,19 +349,20 @@ export function AddToMetaMask({ lastModified: FALLBACK_CAPABILITIES_138.timestamp || null, }), ) + const [metamaskConfig, setMetamaskConfig] = useState(null) + const [metamaskConfigMeta, setMetamaskConfigMeta] = useState(null) + const [watchAssetProgress, setWatchAssetProgress] = useState<{ current: number; total: number } | null>(null) const ethereum = typeof window !== 'undefined' ? (window as unknown as { ethereum?: EthereumProvider }).ethereum : undefined const apiBase = getApiBase().replace(/\/$/, '') - const tokenListUrl = `${apiBase}/api/config/token-list` + const tokenListUrl = `${apiBase}/api/v1/report/token-list?chainId=138` const networksUrl = `${apiBase}/api/config/networks` + const metamaskConfigUrl = `${apiBase}/api/v1/config/metamask?chainId=138` const capabilitiesUrl = `${apiBase}/api/config/capabilities` - const staticCapabilitiesUrl = - typeof window !== 'undefined' - ? `${window.location.origin.replace(/\/$/, '')}/config/CHAIN138_RPC_CAPABILITIES.json` - : `${apiBase}/config/CHAIN138_RPC_CAPABILITIES.json` + const staticCapabilitiesUrl = `${apiBase}/config/CHAIN138_RPC_CAPABILITIES.json` useEffect(() => { let active = true @@ -293,6 +390,7 @@ export function AddToMetaMask({ fetchJson(tokenListUrl), fetchJson(capabilitiesUrl), ]) + const metamaskConfigResponse = await fetchJson(metamaskConfigUrl).catch(() => null) let resolvedCapabilities = capabilitiesResponse if (!isCapabilitiesCatalog(resolvedCapabilities.json)) { @@ -320,6 +418,10 @@ export function AddToMetaMask({ setNetworks(networksResponse.json) setTokenList(tokenListResponse.json) setCapabilities(resolvedCapabilities.json) + if (isMetaMaskConfig(metamaskConfigResponse?.json)) { + setMetamaskConfig(metamaskConfigResponse.json) + setMetamaskConfigMeta(metamaskConfigResponse.meta) + } setNetworksMeta(networksResponse.meta) setTokenListMeta(tokenListResponse.meta) setCapabilitiesMeta(resolvedCapabilities.meta) @@ -328,6 +430,7 @@ export function AddToMetaMask({ setNetworks((current) => current) setTokenList((current) => current) setCapabilities((current) => current || FALLBACK_CAPABILITIES_138) + setMetamaskConfig((current) => current) setNetworksMeta((current) => current) setTokenListMeta((current) => current) setCapabilitiesMeta((current) => @@ -351,7 +454,7 @@ export function AddToMetaMask({ active = false if (timer) clearTimeout(timer) } - }, [capabilitiesUrl, networksUrl, staticCapabilitiesUrl, tokenListUrl]) + }, [capabilitiesUrl, metamaskConfigUrl, networksUrl, staticCapabilitiesUrl, tokenListUrl]) const catalogTokens = useMemo( () => (Array.isArray(tokenList?.tokens) ? tokenList.tokens.filter(isTokenListToken) : []), @@ -367,12 +470,12 @@ export function AddToMetaMask({ } return { - chain138: chainMap.get(138) || FALLBACK_CHAIN_138, + chain138: metamaskConfig?.addEthereumChain || chainMap.get(138) || FALLBACK_CHAIN_138, ethereum: chainMap.get(1) || FALLBACK_ETHEREUM, allMainnet: chainMap.get(651940) || FALLBACK_ALL_MAINNET, total: (networks?.chains || []).length, } - }, [networks]) + }, [metamaskConfig, networks]) const featuredTokens = useMemo(() => { const tokenMap = new Map() @@ -387,6 +490,15 @@ export function AddToMetaMask({ .filter((token): token is TokenListToken => !!token) }, [catalogTokens]) + const watchAssetTokens = useMemo(() => { + const endpointTokens = (metamaskConfig?.watchAssets || []) + .filter(isWatchAssetEntry) + .map(watchAssetToToken) + + if (endpointTokens.length > 0) return endpointTokens + return catalogTokens.filter((token) => token.chainId === 138) + }, [catalogTokens, metamaskConfig]) + const addChain = async (chain: WalletChain) => { setError(null) setStatus(null) @@ -412,6 +524,39 @@ export function AddToMetaMask({ } } + const switchOrAddChain = async (chain: WalletChain) => { + if (!ethereum) { + setError('MetaMask or another Web3 wallet is not installed.') + return false + } + + try { + await ethereum.request({ + method: 'wallet_switchEthereumChain', + params: [{ chainId: chain.chainId }], + }) + return true + } catch (e) { + const err = e as { code?: number; message?: string } + if (err.code !== 4902) { + setError(err.message || `Failed to switch to ${chain.chainName}.`) + return false + } + } + + try { + await ethereum.request({ + method: 'wallet_addEthereumChain', + params: [chain], + }) + return true + } catch (e) { + const err = e as { message?: string } + setError(err.message || `Failed to add ${chain.chainName}.`) + return false + } + } + const installOpenSnap = async () => { setError(null) setStatus(null) @@ -435,7 +580,7 @@ export function AddToMetaMask({ const allowlistBlocked = /allowlist/i.test(msg) if (allowlistBlocked && msg) { setError( - `${msg} Production MetaMask only installs allowlisted Snaps from npm. Use MetaMask Flask for unrestricted installs during development, or request allowlisting via MetaMask’s Snaps documentation.`, + `${msg} This is expected on Stable MetaMask until this exact Snap package and version are accepted on MetaMask's install allowlist. The production path on this page is Add Chain 138 plus EIP-747 Add Tokens; use MetaMask Flask for Snap testing or submit/update the Snap allowlist request before using this button with Stable MetaMask.`, ) } else { setError( @@ -481,6 +626,63 @@ export function AddToMetaMask({ } } + const refreshMainnetCwusdc = async () => { + setError(null) + setStatus(null) + + const switched = await switchOrAddChain(chains.ethereum) + if (!switched) return + + await watchToken(MAINNET_CWUSDC_TOKEN) + } + + const watchTokensSequentially = async (tokens: TokenListToken[], label: string) => { + setError(null) + setStatus(null) + setWatchAssetProgress(null) + + if (!ethereum) { + setError('MetaMask or another Web3 wallet is not installed.') + return + } + + const validTokens = tokens.filter(isTokenListToken) + if (validTokens.length === 0) { + setError('No complete token metadata is available for wallet_watchAsset right now.') + return + } + + let addedCount = 0 + for (let index = 0; index < validTokens.length; index += 1) { + const token = validTokens[index] + setWatchAssetProgress({ current: index + 1, total: validTokens.length }) + try { + const added = await ethereum.request({ + method: 'wallet_watchAsset', + params: { + type: 'ERC20', + options: { + address: token.address, + symbol: token.symbol, + decimals: token.decimals, + image: token.logoURI, + }, + }, + }) + if (added) addedCount += 1 + } catch (e) { + const err = e as { message?: string } + setError(err.message || `Stopped while adding ${token.symbol}.`) + setStatus(`${addedCount} of ${validTokens.length} ${label} token requests were accepted before the flow stopped.`) + setWatchAssetProgress(null) + return + } + } + + setWatchAssetProgress(null) + setStatus(`${addedCount} of ${validTokens.length} ${label} token requests were accepted by the wallet.`) + } + const copyText = async (value: string, label: string) => { setError(null) setStatus(null) @@ -510,8 +712,8 @@ export function AddToMetaMask({ The wallet tools now read the same explorer-served network catalog and token list that MetaMask can consume. That keeps chain metadata, token metadata, and optional extensions aligned with the live explorer API instead of relying on stale frontend-only defaults. MetaMask does not run built-in token detection on custom networks such - as Chain 138: add the token list URL below under Settings → Security & privacy → Token lists so tokens and - icons load automatically when you are on this chain. + as Chain 138, so this page uses EIP-747 wallet_watchAsset prompts from the live MetaMask payload to add token + metadata directly to the wallet.

    @@ -538,17 +740,19 @@ export function AddToMetaMask({
    -
    -
    Chain 138 Open Snap
    +
    +
    Optional Chain 138 Open Snap

    - Optional MetaMask Snap that uses{' '} + This is not required for the production + wallet flow above. The normal production path is to add Chain 138, then add tokens through EIP-747 + wallet_watchAsset prompts. The optional Snap uses{' '} only open Snap permissions (minimal privileged APIs in the Snap itself).{' '} Stable MetaMask still only installs npm - Snaps that appear on MetaMask's install allowlist; if install fails with "not on the allowlist", - use MetaMask Flask for development or apply - for allowlisting. It adds in-wallet weekly reminders, Chain 138 transaction/signature hints, and the token list - URL on the Snap home page. The package on npm is{' '} + Snaps that appear on MetaMask's install allowlist; if install fails with "not on the allowlist", that is + an external MetaMask review gate rather than an explorer/network failure. Use{' '} + MetaMask Flask for development or apply + for allowlisting before using this with Stable MetaMask. The package on npm is{' '} {CHAIN138_OPEN_SNAP_ID} — publish from the repo with scripts/deployment/publish-chain138-open-snap.sh after{' '} npm login. @@ -556,9 +760,9 @@ export function AddToMetaMask({

    @@ -568,8 +772,10 @@ export function AddToMetaMask({

    Networks catalog: {chains.total > 0 ? `${chains.total} chains` : 'using frontend fallback values'}

    Chain 138 token entries: {tokenCount138}

    +

    EIP-747 watchAsset entries: {watchAssetTokens.length}

    Networks source: {networksMeta?.source || 'unknown'}

    Token list source: {tokenListMeta?.source || 'unknown'}

    +

    MetaMask payload source: {metamaskConfigMeta?.source || 'unknown'}

    {metadataKeywordString ?

    Keywords: {metadataKeywordString}

    : null}
    @@ -597,6 +803,18 @@ export function AddToMetaMask({
    +
    +

    EIP-747 MetaMask payload URL

    + {metamaskConfigUrl} +
    + + + Open JSON + +
    +

    Token list URL

    {tokenListUrl} @@ -653,7 +871,7 @@ export function AddToMetaMask({ ))} {capabilitiesMeta?.lastModified ? (

    - Last modified: {new Date(capabilitiesMeta.lastModified).toLocaleString()} + Last modified: {formatStableTimestamp(capabilitiesMeta.lastModified)}

    ) : null}
    @@ -662,9 +880,31 @@ export function AddToMetaMask({
    Featured Chain 138 tokens

    - These tokens come from the explorer token list and use `wallet_watchAsset` so the wallet gets the same symbol, - decimals, image, and optional token metadata that the explorer publishes. + These tokens come from the explorer MetaMask payload and use wallet_watchAsset so the wallet gets the same + symbol, decimals, image, and optional token metadata that the explorer publishes. MetaMask requires a user + approval for each token, so the bulk actions below run as a guided sequence of wallet prompts.

    +
    + + + {watchAssetProgress ? ( + + Prompt {watchAssetProgress.current} of {watchAssetProgress.total} + + ) : null} +
    {featuredTokens.length === 0 ? (

    Featured token metadata is not available right now.

    @@ -698,6 +938,35 @@ export function AddToMetaMask({ ))}
    + +
    +
    Ethereum Mainnet cWUSDC
    +

    + This refreshes the Mainnet cWUSDC custom asset metadata with the DBIS-hosted image URL. MetaMask fiat price + display still depends on MetaMask and upstream asset/price providers accepting the Mainnet listing. +

    +
    +
    +
    +
    + {MAINNET_CWUSDC_TOKEN.symbol}{' '} + ({MAINNET_CWUSDC_TOKEN.name}) +
    +
    {MAINNET_CWUSDC_TOKEN.address}
    +
    + Ethereum Mainnet • Decimals: {MAINNET_CWUSDC_TOKEN.decimals} +
    +
    + +
    +
    +
    {status ?

    {status}

    : null} diff --git a/scripts/apply-nginx-token-aggregation-proxy.sh b/scripts/apply-nginx-token-aggregation-proxy.sh index 68eb5f1..91c3e72 100755 --- a/scripts/apply-nginx-token-aggregation-proxy.sh +++ b/scripts/apply-nginx-token-aggregation-proxy.sh @@ -1,13 +1,14 @@ #!/usr/bin/env bash # Add nginx proxy for token-aggregation service at /api/v1/ on explorer.d-bis.org (VMID 5000). -# Run on the explorer VM. Requires token-aggregation running (default port 3000). +# Run on the explorer VM. Requires token-aggregation listening on TOKEN_AGG_PORT (VMID 5000 +# production default 3001 per fix-nginx-conflicts-vmid5000.sh; local dev often PORT=3000). # Chain 138 Snap companion site (GATSBY_SNAP_API_BASE_URL=https://explorer.d-bis.org) then gets # market data, swap quotes, and bridge routes from this API. -# Usage: [TOKEN_AGG_PORT=3000] [CONFIG_FILE=/etc/nginx/sites-available/blockscout] bash apply-nginx-token-aggregation-proxy.sh +# Usage: [TOKEN_AGG_PORT=3001] [CONFIG_FILE=/etc/nginx/sites-available/blockscout] bash apply-nginx-token-aggregation-proxy.sh set -euo pipefail -TOKEN_AGG_PORT="${TOKEN_AGG_PORT:-3000}" +TOKEN_AGG_PORT="${TOKEN_AGG_PORT:-3001}" CONFIG_FILE="${CONFIG_FILE:-/etc/nginx/sites-available/blockscout}" if [ ! -f "$CONFIG_FILE" ]; then diff --git a/scripts/comprehensive-link-deployment.sh b/scripts/comprehensive-link-deployment.sh index 55d21ce..2139086 100755 --- a/scripts/comprehensive-link-deployment.sh +++ b/scripts/comprehensive-link-deployment.sh @@ -128,5 +128,5 @@ echo "" echo "If deployment still pending:" echo " 1. Wait additional time (5-10 minutes)" echo " 2. Use Remix IDE (instructions above)" -echo " 3. Check block explorer: https://explorer.d-bis.org/address/$ACCOUNT" +echo " 3. Check block explorer: https://explorer.d-bis.org/addresses/$ACCOUNT" echo "" diff --git a/scripts/deploy-and-verify-link.sh b/scripts/deploy-and-verify-link.sh index 1916fe6..3533899 100755 --- a/scripts/deploy-and-verify-link.sh +++ b/scripts/deploy-and-verify-link.sh @@ -154,7 +154,7 @@ if [ "$CONFIRMED" != "true" ]; then echo "2. Transaction may have failed" echo "3. RPC node may be out of sync" echo "" - echo "Check block explorer: https://explorer.d-bis.org/address/$ACCOUNT" + echo "Check block explorer: https://explorer.d-bis.org/addresses/$ACCOUNT" exit 1 fi diff --git a/scripts/deploy-link-token.sh b/scripts/deploy-link-token.sh index 75eb47b..5b1976e 100755 --- a/scripts/deploy-link-token.sh +++ b/scripts/deploy-link-token.sh @@ -255,7 +255,7 @@ if [ -n "$DEPLOYED_ADDRESS" ] && [ "$DEPLOYED_ADDRESS" != "0x0000000000000000000 log_info "Next steps:" log_info "1. Update config/address-inventory.json with LINK token address" log_info "2. Fund bridge contracts: ./scripts/fund-bridge-contracts.sh 10" - log_info "3. Verify contract on explorer: https://explorer.d-bis.org/address/$DEPLOYED_ADDRESS" + log_info "3. Verify contract on explorer: https://explorer.d-bis.org/addresses/$DEPLOYED_ADDRESS" exit 0 else diff --git a/scripts/fix-nginx-conflicts-vmid5000.sh b/scripts/fix-nginx-conflicts-vmid5000.sh index a196292..27a2886 100644 --- a/scripts/fix-nginx-conflicts-vmid5000.sh +++ b/scripts/fix-nginx-conflicts-vmid5000.sh @@ -66,6 +66,36 @@ server { } location = /snap { rewrite ^ /snap/ last; } + # Token-aggregation + static config on HTTP (plain :80) so /api/v1/* never hits Blockscout by mistake + location /api/v1/ { + proxy_pass http://127.0.0.1:3001/api/v1/; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_read_timeout 60s; + add_header Access-Control-Allow-Origin *; + } + location = /api/config/token-list { + default_type application/json; + add_header Access-Control-Allow-Origin *; + add_header Cache-Control "public, max-age=3600"; + alias /var/www/html/config/DUAL_CHAIN_TOKEN_LIST.tokenlist.json; + } + location = /api/config/networks { + default_type application/json; + add_header Access-Control-Allow-Origin *; + add_header Cache-Control "public, max-age=3600"; + alias /var/www/html/config/DUAL_CHAIN_NETWORKS.json; + } + location = /api/config/capabilities { + default_type application/json; + add_header Access-Control-Allow-Origin *; + add_header Cache-Control "public, max-age=3600"; + alias /var/www/html/config/CHAIN138_RPC_CAPABILITIES.json; + } + location / { if ($redirect_to_https = 1) { return 301 https://$host$request_uri; } proxy_pass http://127.0.0.1:4000; @@ -112,24 +142,7 @@ server { add_header Cache-Control "no-store, no-cache, must-revalidate"; } - # Blockscout Explorer endpoint - proxy to Blockscout - location / { - proxy_pass http://127.0.0.1:4000; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header Connection ""; - proxy_buffering off; - proxy_request_buffering off; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - proxy_read_timeout 300s; - proxy_connect_timeout 75s; - } - - # Token-aggregation API at /api/v1/ (Chain 138 Snap: market data, swap quote, bridge). Service runs on port 3001. + # Token-aggregation API at /api/v1/ — define BEFORE /api/ and / so longest-prefix routing is explicit (Snap + dApps). location /api/v1/ { proxy_pass http://127.0.0.1:3001/api/v1/; proxy_http_version 1.1; @@ -162,7 +175,7 @@ server { alias /var/www/html/config/CHAIN138_RPC_CAPABILITIES.json; } - # API endpoint (for Blockscout API) + # Blockscout API (excludes /api/v1/ which is handled above) location /api/ { proxy_pass http://127.0.0.1:4000; proxy_http_version 1.1; @@ -184,6 +197,23 @@ server { proxy_set_header Host $host; add_header Content-Type application/json; } + + # Blockscout Explorer UI (catch-all) + location / { + proxy_pass http://127.0.0.1:4000; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Connection ""; + proxy_buffering off; + proxy_request_buffering off; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + proxy_read_timeout 300s; + proxy_connect_timeout 75s; + } } # WebSocket upgrade mapping diff --git a/scripts/serve-explorer-local.sh b/scripts/serve-explorer-local.sh index 921273a..8f8e0ab 100755 --- a/scripts/serve-explorer-local.sh +++ b/scripts/serve-explorer-local.sh @@ -1,26 +1,16 @@ -#!/bin/bash -# Simple local server for explorer (fallback option) -# Usage: ./serve-explorer-local.sh [port] +#!/usr/bin/env bash +# Local static explorer with SPA path fallback (/institution, /compare, /addresses/… → index.html). +# Usage: SERVE_BIND=0.0.0.0 ./scripts/serve-explorer-local.sh [port] +# Requires: Python 3.7+ -PORT=${1:-8080} -FRONTEND_DIR="$(cd "$(dirname "$0")/../frontend/public" && pwd)" +set -euo pipefail +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PORT="${1:-8080}" +BIND="${SERVE_BIND:-127.0.0.1}" -if [ ! -f "$FRONTEND_DIR/index.html" ]; then - echo "❌ Frontend not found at: $FRONTEND_DIR/index.html" - exit 1 +if ! command -v python3 >/dev/null 2>&1; then + echo "python3 required" >&2 + exit 1 fi -echo "Serving explorer on http://localhost:$PORT" -echo "Frontend: $FRONTEND_DIR" - -cd "$FRONTEND_DIR" - -# Try Python 3 first, then Python 2 -if command -v python3 >/dev/null 2>&1; then - python3 -m http.server "$PORT" -elif command -v python >/dev/null 2>&1; then - python -m SimpleHTTPServer "$PORT" -else - echo "❌ Python not found. Install Python to use this script." - exit 1 -fi +exec python3 "$SCRIPT_DIR/serve_explorer_spa.py" "$PORT" --bind "$BIND" diff --git a/scripts/serve_explorer_spa.py b/scripts/serve_explorer_spa.py new file mode 100755 index 0000000..0c4d63a --- /dev/null +++ b/scripts/serve_explorer_spa.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +"""Static explorer with SPA fallback: unknown paths serve index.html (client router). +API paths (/api/, /explorer-api/) are not rewritten so missing backends still 404 clearly.""" +from __future__ import annotations + +import argparse +import os +import sys +from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer +from urllib.parse import urlparse + + +def main() -> int: + p = argparse.ArgumentParser(description="Serve explorer-monorepo/frontend/public with SPA fallback.") + p.add_argument("port", nargs="?", type=int, default=8080, help="Listen port (default 8080)") + p.add_argument( + "--bind", + default="127.0.0.1", + help="Bind address (default 127.0.0.1)", + ) + args = p.parse_args() + script_dir = os.path.dirname(os.path.abspath(__file__)) + root = os.path.normpath(os.path.join(script_dir, "..", "frontend", "public")) + if not os.path.isfile(os.path.join(root, "index.html")): + print(f"ERROR: index.html not found under {root}", file=sys.stderr) + return 1 + + class Handler(SimpleHTTPRequestHandler): + def __init__(self, *a, **kw): + super().__init__(*a, directory=root, **kw) + + def do_GET(self) -> None: # noqa: N802 + path = urlparse(self.path).path + if path.startswith("/api/") or path.startswith("/explorer-api"): + return super().do_GET() + rel = path.lstrip("/") + if rel.startswith(".."): + self.send_error(403, "Forbidden") + return + fs = os.path.join(root, rel) if rel else root + if os.path.isfile(fs): + return super().do_GET() + self.path = "/index.html" + return super().do_GET() + + httpd = ThreadingHTTPServer((args.bind, args.port), Handler) + print(f"Serving SPA explorer: http://{args.bind}:{args.port}/ (root={root})", flush=True) + try: + httpd.serve_forever() + except KeyboardInterrupt: + print("\nStopped.", flush=True) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())