{"record":{"id":"0587eacec5629170","repo":"nautechsystems/nautilus_trader","slug":"invalid-pool-swap-address","errorCode":null,"errorMessage":"Invalid pool swap address: {}","messagePattern":"Invalid pool swap address: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/adapters/blockchain/src/data/client.rs","lineNumber":657,"sourceCode":"                } else {\n                    anyhow::bail!(\n                        \"Invalid venue {}, expected Blockchain DEX format\",\n                        cmd.instrument_id.venue\n                    )\n                }\n\n                Ok(())\n            }\n            DefiSubscribeCommand::PoolLiquidityUpdates(cmd) => {\n                log::debug!(\n                    \"Processing subscribe pool liquidity updates command for address: {}\",\n                    cmd.instrument_id\n                );\n\n                if let Ok((_, dex)) = cmd.instrument_id.venue.parse_dex() {\n                    let pool_address = validate_address(cmd.instrument_id.symbol.as_str())\n                        .map_err(|_| {\n                            anyhow::anyhow!(\"Invalid pool swap address: {}\", cmd.instrument_id)\n                        })?;\n                    core_client\n                        .subscription_manager\n                        .subscribe_burns(dex, pool_address);\n                    core_client\n                        .subscription_manager\n                        .subscribe_mints(dex, pool_address);\n                    Self::update_rpc_pool_event_subscriptions(core_client, dex).await?;\n                    Self::update_hypersync_pool_event_stream(core_client, dex).await?;\n                } else {\n                    anyhow::bail!(\n                        \"Invalid venue {}, expected Blockchain DEX format\",\n                        cmd.instrument_id.venue\n                    )\n                }\n\n                Ok(())\n            }","sourceCodeStart":639,"sourceCodeEnd":675,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/blockchain/src/data/client.rs#L639-L675","documentation":"Thrown in `handle_subscribe_command` when the pool address for a burn-event subscription fails `validate_address`. Same validation rules (0x prefix, 42 chars, hex, EIP-55 checksum); the error message drops the underlying cause and reports only the instrument_id.","triggerScenarios":"Subscribing to pool burn events with a command whose `instrument_id.symbol` is not a valid checksummed Ethereum pool address.","commonSituations":"Addresses copied in all-lowercase from Etherscan's URL; token ticker used instead of pool address; malformed addresses from hand-written configs or CSVs.","solutions":["Use the checksummed pool contract address as the instrument symbol.","Fix the address case to EIP-55 checksum form before issuing the subscribe command.","Validate the address client-side (0x prefix, 42 chars, hex, checksum) before subscribing.","Confirm the pool exists on the configured DEX/venue."],"exampleFix":"// before\n\"0xcbcdf9646c6055eccbd9cb49903b9ac8bad9255f\"\n// after\n\"0xCBcdf9646c6055eCcBD9CB49903b9aC8bAd9255f\"","handlingStrategy":"validation","validationCode":"// Rust\nassert!(symbol.starts_with(\"0x\") && symbol.len() == 42);\nAddress::parse_checksummed(symbol, None)?;","typeGuard":null,"tryCatchPattern":"match Address::parse_checksummed(symbol, None) {\n    Ok(addr) => subscribe_burns(dex, addr),\n    Err(_) => log::error!(\"Cannot subscribe burns: '{instrument_id}' symbol is not a checksummed address\"),\n}","preventionTips":["Copy addresses in checksummed form, not from the lowercase explorer URL bar.","Checksum-normalize all addresses in ingestion/preprocessing code.","Validate the full instrument_id format before building subscribe commands.","Keep a lookup table of pool addresses per DEX to avoid typos."],"tags":["ethereum","address-validation","burn-events","subscribe"],"backgroundTag":"invalid-argument-format","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}