PR: #31 (feat/06-chainprovider-ws)
File: crates/charon-scanner/src/provider.rs
Lines: 36-43
Problem: ChainProvider::connect establishes WebSocket and returns Ok(Self) without calling eth_chainId to verify endpoint is BSC (chain ID 56). Misconfigured URL pointing at Ethereum mainnet (chain ID 1) silently succeeds.
Impact: Liquidation transactions broadcast to wrong chain waste gas and fail silently. All subsequent scanner state (block numbers, contract addresses) invalid for BSC. PRD requires BSC-only operation.
Fix: Add expected_chain_id: u64 to ChainConfig (default 56). After on_ws succeeds:
let actual = provider.get_chain_id().await
.context("chain '{name}': eth_chainId probe failed")?;
anyhow::ensure!(
actual == config.expected_chain_id,
"chain '{name}': expected chain ID {}, got {actual}",
config.expected_chain_id
);
PR: #31 (feat/06-chainprovider-ws)
File: crates/charon-scanner/src/provider.rs
Lines: 36-43
Problem:
ChainProvider::connectestablishes WebSocket and returnsOk(Self)without callingeth_chainIdto verify endpoint is BSC (chain ID 56). Misconfigured URL pointing at Ethereum mainnet (chain ID 1) silently succeeds.Impact: Liquidation transactions broadcast to wrong chain waste gas and fail silently. All subsequent scanner state (block numbers, contract addresses) invalid for BSC. PRD requires BSC-only operation.
Fix: Add
expected_chain_id: u64toChainConfig(default 56). Afteron_wssucceeds: