- Updated branding from "SolaceScanScout" to "Solace" across various files including deployment scripts, API responses, and documentation. - Changed default base URL for Playwright tests and updated security headers to reflect the new branding. - Enhanced README and API documentation to include new authentication endpoints and product access details. This refactor aligns the project branding and improves clarity in the API documentation.
749 lines
26 KiB
HTML
749 lines
26 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Chain 138 — Visual Command Center</title>
|
||
<!-- Mermaid: local copy preferred; runtime fallback loader below -->
|
||
<script src="/thirdparty/mermaid.min.js"></script>
|
||
<style>
|
||
:root {
|
||
--bg: #0b0f14;
|
||
--panel: #0f172a;
|
||
--header: #111827;
|
||
--border: #1f2937;
|
||
--text: #e6edf3;
|
||
--muted: #94a3b8;
|
||
--accent: #2563eb;
|
||
--accent-hover: #1d4ed8;
|
||
}
|
||
* { box-sizing: border-box; }
|
||
body {
|
||
margin: 0;
|
||
font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, sans-serif;
|
||
background: var(--bg);
|
||
color: var(--text);
|
||
min-height: 100vh;
|
||
}
|
||
header {
|
||
padding: 1rem 1.25rem;
|
||
background: var(--header);
|
||
border-bottom: 1px solid var(--border);
|
||
}
|
||
header h1 {
|
||
margin: 0;
|
||
font-size: 1.25rem;
|
||
font-weight: 700;
|
||
}
|
||
header p {
|
||
margin: 0.35rem 0 0;
|
||
font-size: 0.875rem;
|
||
color: var(--muted);
|
||
max-width: 52rem;
|
||
line-height: 1.45;
|
||
}
|
||
.toolbar {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
align-items: center;
|
||
gap: 0.5rem;
|
||
padding: 0.65rem 1rem;
|
||
border-bottom: 1px solid var(--border);
|
||
background: rgba(17, 24, 39, 0.85);
|
||
position: sticky;
|
||
top: 0;
|
||
z-index: 10;
|
||
}
|
||
.tabs {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 0.25rem;
|
||
}
|
||
.tab {
|
||
padding: 0.5rem 0.85rem;
|
||
cursor: pointer;
|
||
border: 1px solid transparent;
|
||
border-radius: 8px;
|
||
font-size: 0.8125rem;
|
||
font-weight: 600;
|
||
color: var(--muted);
|
||
background: transparent;
|
||
}
|
||
.tab:hover {
|
||
color: var(--text);
|
||
background: var(--border);
|
||
}
|
||
.tab.active {
|
||
color: #fff;
|
||
background: var(--accent);
|
||
border-color: var(--accent-hover);
|
||
}
|
||
.toolbar a.back {
|
||
margin-left: auto;
|
||
font-size: 0.8125rem;
|
||
color: #93c5fd;
|
||
text-decoration: none;
|
||
}
|
||
.toolbar a.back:hover { text-decoration: underline; }
|
||
.content {
|
||
display: none;
|
||
padding: 1.25rem;
|
||
max-width: 120rem;
|
||
margin: 0 auto;
|
||
}
|
||
.content.active { display: block; }
|
||
.panel-desc {
|
||
color: var(--muted);
|
||
font-size: 0.875rem;
|
||
line-height: 1.5;
|
||
margin-bottom: 1rem;
|
||
max-width: 56rem;
|
||
}
|
||
.mermaid-wrap {
|
||
background: var(--panel);
|
||
padding: 1.25rem;
|
||
border-radius: 12px;
|
||
border: 1px solid var(--border);
|
||
overflow-x: auto;
|
||
margin-bottom: 1.25rem;
|
||
}
|
||
.mermaid-wrap h3 {
|
||
margin: 0 0 0.75rem;
|
||
font-size: 0.95rem;
|
||
font-weight: 700;
|
||
color: #cbd5e1;
|
||
}
|
||
.mermaid-wrap + .mermaid-wrap { margin-top: 0.5rem; }
|
||
footer {
|
||
padding: 1.5rem;
|
||
border-top: 1px solid var(--border);
|
||
font-size: 0.75rem;
|
||
color: var(--muted);
|
||
text-align: center;
|
||
}
|
||
footer code { color: #a5b4fc; }
|
||
.status-note {
|
||
margin: 0.75rem 1.25rem 0;
|
||
padding: 0.85rem 1rem;
|
||
border-radius: 12px;
|
||
border: 1px solid #334155;
|
||
background: rgba(15, 23, 42, 0.8);
|
||
color: var(--muted);
|
||
font-size: 0.875rem;
|
||
line-height: 1.5;
|
||
}
|
||
.status-note a {
|
||
color: #93c5fd;
|
||
text-decoration: none;
|
||
}
|
||
.status-note a:hover { text-decoration: underline; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<header>
|
||
<h1>Chain 138 — deployment and liquidity topology</h1>
|
||
<p>Operator-style view of the architecture in <code>docs/02-architecture/SMOM_DBIS_138_FULL_DEPLOYMENT_FLOW_MAP.md</code>. Diagrams are informational only; contract addresses live in explorer config and repo references. The main explorer remains the canonical live operational surface. Deep links: <code>?tab=mission-control</code> or numeric <code>?tab=0</code>–<code>8</code> (slug per tab).</p>
|
||
</header>
|
||
|
||
<div class="status-note" id="mermaid-status">
|
||
Loading local diagram assets. If the local Mermaid bundle is unavailable, the page will try a trusted CDN fallback automatically.
|
||
</div>
|
||
|
||
<div class="status-note" id="command-center-fallback">
|
||
If diagram rendering is unavailable, use the main explorer operational surfaces directly:
|
||
<a href="/operations">Operations Hub</a>,
|
||
<a href="/bridge">Bridge Monitoring</a>,
|
||
<a href="/routes">Routes</a>,
|
||
<a href="/system">System</a>,
|
||
and <a href="/operator">Operator</a>.
|
||
</div>
|
||
|
||
<div class="toolbar">
|
||
<div class="tabs" role="tablist" aria-label="Topology panels">
|
||
<button type="button" id="tab-0" class="tab active" role="tab" aria-selected="true" aria-controls="panel-0" data-tab="0" tabindex="0">Master map</button>
|
||
<button type="button" id="tab-1" class="tab" role="tab" aria-selected="false" aria-controls="panel-1" data-tab="1" tabindex="-1">Network</button>
|
||
<button type="button" id="tab-2" class="tab" role="tab" aria-selected="false" aria-controls="panel-2" data-tab="2" tabindex="-1">Stack</button>
|
||
<button type="button" id="tab-3" class="tab" role="tab" aria-selected="false" aria-controls="panel-3" data-tab="3" tabindex="-1">Flows</button>
|
||
<button type="button" id="tab-4" class="tab" role="tab" aria-selected="false" aria-controls="panel-4" data-tab="4" tabindex="-1">Cross-chain</button>
|
||
<button type="button" id="tab-5" class="tab" role="tab" aria-selected="false" aria-controls="panel-5" data-tab="5" tabindex="-1">Public cW</button>
|
||
<button type="button" id="tab-6" class="tab" role="tab" aria-selected="false" aria-controls="panel-6" data-tab="6" tabindex="-1">Off-chain</button>
|
||
<button type="button" id="tab-7" class="tab" role="tab" aria-selected="false" aria-controls="panel-7" data-tab="7" tabindex="-1">Integrations</button>
|
||
<button type="button" id="tab-8" class="tab" role="tab" aria-selected="false" aria-controls="panel-8" data-tab="8" tabindex="-1">Mission Control</button>
|
||
</div>
|
||
<a class="back" href="/operations">Back to Operations</a>
|
||
</div>
|
||
|
||
<!-- 0 Master -->
|
||
<div class="content active" id="panel-0" role="tabpanel" aria-labelledby="tab-0">
|
||
<p class="panel-desc">Hub, leaf endings, CCIP destinations, Alltra, the dedicated Avalanche cW corridor, the public cW mesh, and pending programs. Mainnet cW mint corridors and the optional TRUU rail are summarized under the Ethereum anchor.</p>
|
||
<div class="mermaid-wrap"><div class="mermaid" id="g-master">
|
||
flowchart TB
|
||
subgraph LEAF_INGRESS["Leaves — access to 138"]
|
||
WU[Wallets · MetaMask Snaps · Ledger · Chainlist · SDKs · ethers.js]
|
||
OPS[Operators · Foundry scripts · relay · systemd · deploy hooks]
|
||
RPCPUB[Public RPC FQDNs · thirdweb mirrors]
|
||
FB[Fireblocks Web3 RPC]
|
||
end
|
||
|
||
subgraph LEAF_EDGE["Leaves — services that index or front 138"]
|
||
EXP[Explorer · Blockscout · token-aggregation]
|
||
INFO[info.defi-oracle.io]
|
||
DAPP[dapp.d-bis.org bridge UI]
|
||
DBIS[dbis-api Core hosts]
|
||
X402[x402 payment API]
|
||
MCP[MCP PMM controller]
|
||
end
|
||
|
||
subgraph HUB["CHAIN 138 — origin hub"]
|
||
C138["Besu EVM · tokens core · DODO PMM V2/V3 · RouterV2 · UniV3 / Balancer / Curve / 1inch pilots · CCIP bridges + router · AlltraAdapter · BridgeVault · ISO channels · mirror reserve vault settlement · Lockbox · Truth / Tron / Solana adapters"]
|
||
end
|
||
|
||
subgraph CCIP_ETH["Ethereum 1 — CCIP anchor"]
|
||
ETH1["WETH9 / WETH10 bridges · CCIPRelayRouter · RelayBridge · Logger · optional trustless stack"]
|
||
LEAF_ETH["Leaf — Mainnet native DEX venues · Li.Fi touchpoints on other chains · first-wave cW DODO pools · optional TRUU PMM rail"]
|
||
end
|
||
|
||
subgraph CCIP_L2["Other live CCIP EVM destinations"]
|
||
L2CLU["OP 10 · Base 8453 · Arb 42161 · Polygon 137 · BSC 56 · Avax 43114 · Gnosis 100 · Celo 42220 · Cronos 25"]
|
||
LEAF_L2["Leaf — per-chain native DEX · cW token transport · partial edge pools"]
|
||
end
|
||
|
||
subgraph ALLTRA["ALL Mainnet 651940"]
|
||
A651["AlltraAdapter peer · AUSDT · WETH · WALL · HYDX · DEX env placeholders"]
|
||
LEAF_651["Leaf — ALL native venues when configured"]
|
||
end
|
||
|
||
subgraph SPECIAL["Dedicated corridor from 138"]
|
||
AVAXCW["138 cUSDT to Avax cWUSDT mint path"]
|
||
LEAF_AVAX["Leaf — recipient on 43114"]
|
||
end
|
||
|
||
subgraph CW_MESH["Public cW GRU mesh"]
|
||
CW["Cross-public-EVM token matrix · pool design · Mainnet DODO concentration"]
|
||
end
|
||
|
||
subgraph PENDING["Pending separate scaffold"]
|
||
WEMIX[Wemix 1111 CCIP pending]
|
||
XDC[XDC Zero parallel program]
|
||
SCAFF[Etherlink Tezos OP L2 design]
|
||
PNON[Truth pointer · Tron adapter · Solana partial]
|
||
end
|
||
|
||
WU --> RPCPUB
|
||
RPCPUB --> C138
|
||
WU --> C138
|
||
OPS --> C138
|
||
EXP --> C138
|
||
INFO --> C138
|
||
DAPP --> C138
|
||
DBIS --> C138
|
||
X402 --> C138
|
||
MCP --> C138
|
||
FB --> C138
|
||
|
||
C138 <--> ETH1
|
||
C138 <--> L2CLU
|
||
C138 <--> A651
|
||
C138 --> AVAXCW
|
||
AVAXCW --> LEAF_AVAX
|
||
|
||
ETH1 <--> L2CLU
|
||
ETH1 --> LEAF_ETH
|
||
L2CLU --> LEAF_L2
|
||
A651 --> LEAF_651
|
||
|
||
CW -.->|pool and peg design| LEAF_ETH
|
||
CW -.->|token mesh| L2CLU
|
||
|
||
C138 -.-> WEMIX
|
||
C138 -.-> XDC
|
||
C138 -.-> SCAFF
|
||
C138 -.-> PNON
|
||
</div></div>
|
||
</div>
|
||
|
||
<!-- 1 Network -->
|
||
<div class="content" id="panel-1" role="tabpanel" aria-labelledby="tab-1" hidden>
|
||
<p class="panel-desc">Chain 138 to the public EVM mesh, Alltra, pending or scaffold targets, Avalanche cW minting, and the separate Mainnet cW mint corridor that sits alongside the standard WETH-class CCIP rail.</p>
|
||
<div class="mermaid-wrap"><div class="mermaid">
|
||
flowchart TB
|
||
subgraph C138["Chain 138 — primary"]
|
||
CORE[Core registry vault oracle ISO router]
|
||
PMM[DODO PMM V2 DVM + pools]
|
||
R2[EnhancedSwapRouterV2]
|
||
D3[D3MM pilot]
|
||
CCIPB[CCIP WETH9 WETH10 bridges]
|
||
ALLA[AlltraAdapter]
|
||
ADP[Truth Tron Solana adapters partial]
|
||
end
|
||
|
||
subgraph PUB["Public EVM mesh (cW*)"]
|
||
E1[Ethereum 1]
|
||
E10[Optimism 10]
|
||
E25[Cronos 25]
|
||
E56[BSC 56]
|
||
E100[Gnosis 100]
|
||
E137[Polygon 137]
|
||
E42161[Arbitrum 42161]
|
||
E43114[Avalanche 43114]
|
||
E8453[Base 8453]
|
||
E42220[Celo 42220]
|
||
end
|
||
|
||
subgraph PEND["Pending or separate"]
|
||
WEMIX[Wemix 1111 CCIP pending]
|
||
XDC[XDC Zero parallel program]
|
||
SCAFF[Etherlink Tezos OP L2 scaffold design]
|
||
end
|
||
|
||
subgraph A651["ALL Mainnet 651940"]
|
||
ALLTOK[AUSDT USDC WETH WALL HYDX]
|
||
end
|
||
|
||
C138 -->|CCIP WETH| PUB
|
||
C138 -->|CCIP WETH| E1
|
||
C138 -->|mainnet cW mint corridor| E1
|
||
C138 -->|AlltraAdapter| A651
|
||
PUB -->|CCIP return| C138
|
||
E1 -->|CCIP return| C138
|
||
C138 -.->|operator completion| WEMIX
|
||
C138 -.->|not CCIP matrix row| XDC
|
||
C138 -.->|future gated| SCAFF
|
||
|
||
C138 -->|avax cw corridor| E43114
|
||
</div></div>
|
||
<p class="panel-desc">Topology note: Mainnet now represents two Ethereum-facing patterns in production, the standard WETH-class CCIP rail and the dedicated <code>cUSDC/cUSDT -> cWUSDC/cWUSDT</code> mint corridor.</p>
|
||
</div>
|
||
|
||
<!-- 2 Stack -->
|
||
<div class="content" id="panel-2" role="tabpanel" aria-labelledby="tab-2" hidden>
|
||
<p class="panel-desc">On-chain layers: tokens, core, liquidity, cross-domain, reserve and settlement.</p>
|
||
<div class="mermaid-wrap"><div class="mermaid">
|
||
flowchart TB
|
||
subgraph L1["Tokens and compliance"]
|
||
CT[cUSDT · cUSDC · cEUR* · cXAU* · mirrors · USDT · USDC]
|
||
GEN[WETH WETH10 LINK]
|
||
end
|
||
|
||
subgraph L2["Core infrastructure"]
|
||
REG[Compliance TokenFactory TokenRegistry BridgeVault]
|
||
POL[PolicyManager DebtRegistry FeeCollector]
|
||
ISO[ISO20022Router]
|
||
end
|
||
|
||
subgraph L3["Liquidity and execution"]
|
||
DVM[DVMFactory VendingMachine DODOPMMIntegration]
|
||
PRV[DODOPMMProvider PrivatePoolRegistry]
|
||
R2[EnhancedSwapRouterV2]
|
||
VEN[Uniswap v3 lane Balancer Curve 1inch pilots]
|
||
D3[D3Oracle D3Vault D3Proxy D3MMFactory]
|
||
end
|
||
|
||
subgraph L4["Cross-domain"]
|
||
CCIP[CCIP Router CCIPWETH9 CCIPWETH10]
|
||
ALL[AlltraAdapter]
|
||
LBX[Lockbox138]
|
||
CH[PaymentChannel Mirror AddressMapper]
|
||
end
|
||
|
||
subgraph L5["Reserve vault settlement"]
|
||
RS[ReserveSystem OraclePriceFeed]
|
||
VF[VaultFactory Ledger Liquidation XAUOracle]
|
||
MSR[MerchantSettlementRegistry WithdrawalEscrow]
|
||
end
|
||
|
||
L1 --> L2
|
||
L2 --> L3
|
||
L3 --> R2
|
||
R2 --> VEN
|
||
L2 --> L4
|
||
L2 --> L5
|
||
DVM --> PRV
|
||
</div></div>
|
||
</div>
|
||
|
||
<!-- 3 Flows -->
|
||
<div class="content" id="panel-3" role="tabpanel" aria-labelledby="tab-3" hidden>
|
||
<p class="panel-desc">Same-chain 138: PMM pools, RouterV2 venues, D3 pilot.</p>
|
||
<div class="mermaid-wrap"><div class="mermaid">
|
||
flowchart LR
|
||
subgraph inputs["Typical inputs"]
|
||
U1[cUSDT]
|
||
U2[cUSDC]
|
||
U3[USDT mirror]
|
||
U4[USDC mirror]
|
||
U5[cEURT]
|
||
U6[cXAUC]
|
||
end
|
||
|
||
subgraph path_pmm["DODO PMM"]
|
||
INT[DODOPMMIntegration]
|
||
POOL[Stable pools XAU public pools Private XAU registry]
|
||
end
|
||
|
||
subgraph path_r2["Router v2"]
|
||
R2[EnhancedSwapRouterV2]
|
||
UV3[Uniswap v3 WETH stable]
|
||
PILOT[Balancer Curve 1inch]
|
||
end
|
||
|
||
subgraph path_d3["Pilot"]
|
||
D3[D3MM WETH10 pilot pool]
|
||
end
|
||
|
||
inputs --> INT
|
||
INT --> POOL
|
||
inputs --> R2
|
||
R2 --> UV3
|
||
R2 --> PILOT
|
||
GEN2[WETH WETH10] --> R2
|
||
GEN2 --> D3
|
||
</div></div>
|
||
</div>
|
||
|
||
<!-- 4 Cross-chain -->
|
||
<div class="content" id="panel-4" role="tabpanel" aria-labelledby="tab-4" hidden>
|
||
<p class="panel-desc">CCIP transport, Alltra round-trip, the dedicated c-to-cW mint corridors, and the orchestrated swap-bridge-swap target.</p>
|
||
<div class="mermaid-wrap">
|
||
<h3>CCIP — WETH primary transport</h3>
|
||
<div class="mermaid">
|
||
sequenceDiagram
|
||
participant U as User or bot
|
||
participant C138 as Chain 138
|
||
participant BR as CCIPWETH9 or WETH10 bridge
|
||
participant R as CCIP Router
|
||
participant D as Destination EVM
|
||
|
||
U->>C138: Fund WETH bridge fee LINK
|
||
U->>BR: Initiate cross-chain WETH transfer
|
||
BR->>R: CCIP message
|
||
R->>D: Deliver WETH class asset
|
||
Note over D: Native DEX or cW pools where deployed
|
||
D->>R: Optional return leg
|
||
R->>C138: Inbound to receiver bridge
|
||
</div>
|
||
</div>
|
||
<div class="mermaid-wrap">
|
||
<h3>Alltra — 138 to ALL Mainnet</h3>
|
||
<div class="mermaid">
|
||
flowchart LR
|
||
A[Chain 138] -->|AlltraAdapter| B[ALL 651940]
|
||
B -->|AlltraAdapter| A
|
||
</div>
|
||
</div>
|
||
<div class="mermaid-wrap">
|
||
<h3>Special corridors — c* to cW* mint</h3>
|
||
<div class="mermaid">
|
||
flowchart LR
|
||
S1[cUSDT on 138] -->|avax cw relay mint| T1[cWUSDT on Avalanche]
|
||
S2[cUSDC on 138] -->|mainnet relay mint| T2[cWUSDC on Mainnet]
|
||
S3[cUSDT on 138] -->|mainnet relay mint| T3[cWUSDT on Mainnet]
|
||
</div>
|
||
</div>
|
||
<div class="mermaid-wrap">
|
||
<h3>Orchestrated swap-bridge-swap (design target)</h3>
|
||
<div class="mermaid">
|
||
flowchart LR
|
||
Q[QuoteService POST api bridge quote] --> S1[Source leg e.g. 138 PMM]
|
||
S1 --> BR[Bridge CCIP Alltra or special]
|
||
BR --> S2[Destination leg DEX or cW pool]
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 5 Public cW -->
|
||
<div class="content" id="panel-5" role="tabpanel" aria-labelledby="tab-5" hidden>
|
||
<p class="panel-desc">Ethereum Mainnet first-wave cW DODO mesh, plus the separate optional TRUU PMM rail. See PMM_DEX_ROUTING_STATUS and cross-chain-pmm-lps deployment-status for live detail.</p>
|
||
<div class="mermaid-wrap"><div class="mermaid">
|
||
flowchart TB
|
||
subgraph ETH["Ethereum Mainnet"]
|
||
CW[cWUSDT cWUSDC cWEURC cWGBPC cWAUDC cWCADC cWJPYC cWCHFC]
|
||
HUB[USDC USDT]
|
||
DODO[DODO PMM Wave 1 pools]
|
||
end
|
||
|
||
CW <--> DODO
|
||
HUB <--> DODO
|
||
</div></div>
|
||
<p class="panel-desc">TRUU note: the optional Mainnet Truth rail is a separate volatile PMM lane and is not part of the default cW stable mesh.</p>
|
||
<div class="mermaid-wrap">
|
||
<h3>Mainnet TRUU PMM (volatile, optional)</h3>
|
||
<div class="mermaid">
|
||
flowchart LR
|
||
subgraph TRUUmesh["Mainnet TRUU rail optional"]
|
||
CWu[cWUSDT or cWUSDC]
|
||
TRUU[TRUU ERC-20]
|
||
PMM[DODO PMM integration]
|
||
end
|
||
|
||
CWu <--> PMM
|
||
TRUU <--> PMM
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 6 Off-chain -->
|
||
<div class="content" id="panel-6" role="tabpanel" aria-labelledby="tab-6" hidden>
|
||
<p class="panel-desc">Wallets, edge FQDNs, APIs, operators feeding Chain 138 RPC, plus the explorer-hosted Mission Control visual surfaces.</p>
|
||
<div class="mermaid-wrap"><div class="mermaid">
|
||
flowchart TB
|
||
subgraph users["Wallets and tools"]
|
||
MM[MetaMask custom network Snaps]
|
||
MCP[MCP PMM controller allowlist 138]
|
||
end
|
||
|
||
subgraph edge["Public edge"]
|
||
EXP[explorer.d-bis.org Blockscout token-aggregation]
|
||
MC[Mission Control visual panels]
|
||
INFO[info.defi-oracle.io]
|
||
DAPP[dapp.d-bis.org bridge UI]
|
||
RPC[rpc-http-pub.d-bis.org public RPC]
|
||
end
|
||
|
||
subgraph api["APIs"]
|
||
TA[token-aggregation v1 v2 quote pools bridge routes]
|
||
DBIS[dbis-api Core runtime]
|
||
X402[x402-api readiness surface]
|
||
end
|
||
|
||
subgraph ops["Operator"]
|
||
REL[CCIP relay systemd]
|
||
SCR[smom-dbis-138 forge scripts]
|
||
end
|
||
|
||
users --> edge
|
||
EXP --> MC
|
||
edge --> api
|
||
MC --> api
|
||
api --> C138[Chain 138 RPC]
|
||
ops --> C138
|
||
</div></div>
|
||
<p class="panel-desc">Mission Control note: the live visual display lives in the main explorer SPA, especially the bridge-monitoring and operator surfaces. This command center stays focused on the static architecture view.</p>
|
||
</div>
|
||
|
||
<!-- 7 Integrations -->
|
||
<div class="content" id="panel-7" role="tabpanel" aria-labelledby="tab-7" hidden>
|
||
<p class="panel-desc">Contract families vs wallet/client integrations not spelled out in every zoom diagram. Wormhole remains docs/MCP scope, not canonical 138 addresses.</p>
|
||
<div class="mermaid-wrap"><div class="mermaid">
|
||
flowchart LR
|
||
subgraph chain138_tech["Chain 138 contract families"]
|
||
A[Besu EVM]
|
||
B[ERC-20 core registries]
|
||
C[DODO V2 V3]
|
||
D[UniV3 Bal Curve 1inch pilots]
|
||
E[CCIP bridges router]
|
||
F[Alltra Vault ISO channels]
|
||
end
|
||
|
||
subgraph public_integrations["Wallet and client integrations"]
|
||
L[Ledger]
|
||
CL[Chainlist]
|
||
TW[thirdweb RPC]
|
||
ETH[ethers.js]
|
||
MM[MetaMask Snaps]
|
||
end
|
||
|
||
chain138_tech --> public_integrations
|
||
</div></div>
|
||
</div>
|
||
|
||
<!-- 8 Mission Control -->
|
||
<div class="content" id="panel-8" role="tabpanel" aria-labelledby="tab-8" hidden>
|
||
<p class="panel-desc">Mission Control is the live explorer surface for SSE health, labeled bridge traces, cached liquidity proxy results, and operator-facing API references. The interactive controls live in the main explorer SPA; this tab is the architecture companion with direct entry points.</p>
|
||
<div class="mermaid-wrap">
|
||
<h3>Mission Control visual flow</h3>
|
||
<div class="mermaid">
|
||
flowchart LR
|
||
UI[Explorer SPA Mission Control panels]
|
||
SSE[SSE stream]
|
||
TRACE[Bridge trace]
|
||
LIQ[Liquidity proxy]
|
||
T4[Track 4 script API]
|
||
API[Explorer Go API]
|
||
UP[Blockscout and token-aggregation upstreams]
|
||
|
||
UI --> SSE
|
||
UI --> TRACE
|
||
UI --> LIQ
|
||
UI -.->|operator-only| T4
|
||
SSE --> API
|
||
TRACE --> API
|
||
LIQ --> API
|
||
T4 --> API
|
||
TRACE --> UP
|
||
LIQ --> UP
|
||
</div>
|
||
</div>
|
||
<div class="mermaid-wrap">
|
||
<h3>Live entry points</h3>
|
||
<p class="panel-desc">Use the main explorer UI for the visual Mission Control experience, then open the raw APIs when you need direct payloads or verification.</p>
|
||
<div style="display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:0.75rem;">
|
||
<a href="/operator" style="display:block; text-decoration:none; color:inherit; border:1px solid var(--border); border-radius:14px; padding:1rem; background:var(--panel);"><div style="font-weight:700; margin-bottom:0.3rem;">Operator hub</div><div style="color:var(--muted); line-height:1.5;">Explorer SPA surface with Mission Control and operator-facing API references.</div></a>
|
||
<a href="/bridge" style="display:block; text-decoration:none; color:inherit; border:1px solid var(--border); border-radius:14px; padding:1rem; background:var(--panel);"><div style="font-weight:700; margin-bottom:0.3rem;">Bridge monitoring</div><div style="color:var(--muted); line-height:1.5;">Includes the visible Mission Control bridge-trace card and SSE stream entry point.</div></a>
|
||
<a href="/explorer-api/v1/mission-control/stream" target="_blank" rel="noopener noreferrer" style="display:block; text-decoration:none; color:inherit; border:1px solid var(--border); border-radius:14px; padding:1rem; background:var(--panel);"><div style="font-weight:700; margin-bottom:0.3rem;">SSE stream</div><div style="color:var(--muted); line-height:1.5;"><code>GET /explorer-api/v1/mission-control/stream</code></div></a>
|
||
<a href="/explorer-api/v1/mission-control/bridge/trace?tx=0x2f31d4f9a97be754b800f4af1a9eedf3b107d353bfa1a19e81417497a76c05c2" target="_blank" rel="noopener noreferrer" style="display:block; text-decoration:none; color:inherit; border:1px solid var(--border); border-radius:14px; padding:1rem; background:var(--panel);"><div style="font-weight:700; margin-bottom:0.3rem;">Bridge trace example</div><div style="color:var(--muted); line-height:1.5;"><code>GET /explorer-api/v1/mission-control/bridge/trace</code></div></a>
|
||
<a href="/explorer-api/v1/mission-control/liquidity/token/0x93E66202A11B1772E55407B32B44e5Cd8eda7f22/pools" target="_blank" rel="noopener noreferrer" style="display:block; text-decoration:none; color:inherit; border:1px solid var(--border); border-radius:14px; padding:1rem; background:var(--panel);"><div style="font-weight:700; margin-bottom:0.3rem;">Liquidity example</div><div style="color:var(--muted); line-height:1.5;"><code>GET /explorer-api/v1/mission-control/liquidity/token/{address}/pools</code></div></a>
|
||
<div style="border:1px solid var(--border); border-radius:14px; padding:1rem; background:var(--panel);"><div style="font-weight:700; margin-bottom:0.3rem;">Track 4 script API</div><div style="color:var(--muted); line-height:1.5;"><code>POST /explorer-api/v1/track4/operator/run-script</code><br>Requires wallet auth, IP allowlisting, and backend allowlist config.</div></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<footer>
|
||
Source: <code>proxmox/docs/02-architecture/SMOM_DBIS_138_FULL_DEPLOYMENT_FLOW_MAP.md</code> — addresses: <code>config/smart-contracts-master.json</code> and CONTRACT_ADDRESSES_REFERENCE.
|
||
</footer>
|
||
|
||
<script>
|
||
(function () {
|
||
mermaid.initialize({
|
||
startOnLoad: false,
|
||
theme: 'dark',
|
||
securityLevel: 'loose',
|
||
flowchart: { curve: 'basis', padding: 12 },
|
||
sequence: { actorMargin: 24, boxMargin: 8 }
|
||
});
|
||
|
||
var TAB_SLUGS = ['master', 'network', 'stack', 'flows', 'cross-chain', 'public-cw', 'off-chain', 'integrations', 'mission-control'];
|
||
var TAB_BY_NAME = {};
|
||
TAB_SLUGS.forEach(function (s, i) { TAB_BY_NAME[s] = i; });
|
||
|
||
var tabs = document.querySelectorAll('.tab');
|
||
var panels = document.querySelectorAll('.content[role="tabpanel"]');
|
||
var tablist = document.querySelector('[role="tablist"]');
|
||
var done = {};
|
||
|
||
function parseInitialTab() {
|
||
var q = new URLSearchParams(window.location.search).get('tab');
|
||
if (q == null || q === '') return 0;
|
||
var n = parseInt(q, 10);
|
||
if (!isNaN(n) && n >= 0 && n < tabs.length) return n;
|
||
var key = String(q).toLowerCase().trim().replace(/\s+/g, '-');
|
||
if (Object.prototype.hasOwnProperty.call(TAB_BY_NAME, key)) return TAB_BY_NAME[key];
|
||
return 0;
|
||
}
|
||
|
||
function ensureMermaid() {
|
||
if (window.mermaid && typeof window.mermaid.run === 'function') {
|
||
return Promise.resolve(window.mermaid);
|
||
}
|
||
return new Promise(function (resolve, reject) {
|
||
var script = document.createElement('script');
|
||
script.src = 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js';
|
||
script.async = true;
|
||
script.onload = function () {
|
||
if (window.mermaid && typeof window.mermaid.run === 'function') resolve(window.mermaid);
|
||
else reject(new Error('Mermaid fallback loaded without runtime'));
|
||
};
|
||
script.onerror = function () {
|
||
reject(new Error('Mermaid fallback failed to load'));
|
||
};
|
||
document.head.appendChild(script);
|
||
});
|
||
}
|
||
|
||
function syncUrl(index) {
|
||
var slug = TAB_SLUGS[index] != null ? TAB_SLUGS[index] : String(index);
|
||
try {
|
||
var u = new URL(window.location.href);
|
||
u.searchParams.set('tab', slug);
|
||
history.replaceState(null, '', u.pathname + u.search + u.hash);
|
||
} catch (e) { /* file:// or restricted */ }
|
||
}
|
||
|
||
function setActive(index) {
|
||
if (index < 0) index = 0;
|
||
if (index >= tabs.length) index = tabs.length - 1;
|
||
tabs.forEach(function (t, i) {
|
||
var on = i === index;
|
||
t.classList.toggle('active', on);
|
||
t.setAttribute('aria-selected', on ? 'true' : 'false');
|
||
t.setAttribute('tabindex', on ? '0' : '-1');
|
||
});
|
||
panels.forEach(function (p, i) {
|
||
var on = i === index;
|
||
p.classList.toggle('active', on);
|
||
if (on) p.removeAttribute('hidden');
|
||
else p.setAttribute('hidden', '');
|
||
});
|
||
}
|
||
|
||
async function renderPanel(index) {
|
||
var panel = document.getElementById('panel-' + index);
|
||
if (!panel || done[index]) return;
|
||
done[index] = true;
|
||
var nodes = panel.querySelectorAll('.mermaid');
|
||
if (nodes.length) {
|
||
try {
|
||
await ensureMermaid();
|
||
await mermaid.run({ nodes: nodes });
|
||
var status = document.getElementById('mermaid-status');
|
||
if (status) status.textContent = 'Diagram assets loaded. This page is a public reference surface; the main explorer remains the canonical live operational view.';
|
||
} catch (e) {
|
||
console.error('Mermaid render failed for panel', index, e);
|
||
var statusError = document.getElementById('mermaid-status');
|
||
if (statusError) statusError.textContent = 'Diagram rendering failed. Use the Operations Hub or the main explorer for live operational surfaces.';
|
||
}
|
||
}
|
||
}
|
||
|
||
async function showTab(index, opts) {
|
||
opts = opts || {};
|
||
setActive(index);
|
||
await renderPanel(index);
|
||
if (!opts.skipUrl) syncUrl(index);
|
||
}
|
||
|
||
tabs.forEach(function (tab) {
|
||
tab.addEventListener('click', function () {
|
||
var i = parseInt(tab.getAttribute('data-tab'), 10);
|
||
showTab(i);
|
||
});
|
||
});
|
||
|
||
if (tablist) {
|
||
tablist.addEventListener('keydown', function (e) {
|
||
var cur = -1;
|
||
tabs.forEach(function (t, idx) {
|
||
if (t.getAttribute('aria-selected') === 'true') cur = idx;
|
||
});
|
||
if (cur < 0) return;
|
||
var next = cur;
|
||
if (e.key === 'ArrowRight') {
|
||
e.preventDefault();
|
||
next = (cur + 1) % tabs.length;
|
||
} else if (e.key === 'ArrowLeft') {
|
||
e.preventDefault();
|
||
next = (cur - 1 + tabs.length) % tabs.length;
|
||
} else if (e.key === 'Home') {
|
||
e.preventDefault();
|
||
next = 0;
|
||
} else if (e.key === 'End') {
|
||
e.preventDefault();
|
||
next = tabs.length - 1;
|
||
} else {
|
||
return;
|
||
}
|
||
showTab(next).then(function () {
|
||
tabs[next].focus();
|
||
});
|
||
});
|
||
}
|
||
|
||
async function boot() {
|
||
var initial = parseInitialTab();
|
||
await showTab(initial, { skipUrl: true });
|
||
try {
|
||
var u = new URL(window.location.href);
|
||
if (u.searchParams.has('tab')) syncUrl(initial);
|
||
} catch (e2) { /* ignore */ }
|
||
}
|
||
if (document.readyState === 'loading') {
|
||
document.addEventListener('DOMContentLoaded', boot);
|
||
} else {
|
||
boot();
|
||
}
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html>
|