{"record":{"id":"ce31551b110de789","repo":"nautechsystems/nautilus_trader","slug":"invalid-pool-fee-collect-address","errorCode":null,"errorMessage":"Invalid pool fee collect address: {}","messagePattern":"Invalid pool fee collect address: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/adapters/blockchain/src/data/client.rs","lineNumber":685,"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::PoolFeeCollects(cmd) => {\n                log::debug!(\n                    \"Processing subscribe pool fee collects 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!(\n                                \"Invalid pool fee collect address: {}\",\n                                cmd.instrument_id\n                            )\n                        })?;\n                    core_client\n                        .subscription_manager\n                        .subscribe_collects(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":667,"sourceCodeEnd":703,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/blockchain/src/data/client.rs#L667-L703","documentation":"Thrown in `handle_subscribe_command` when the pool address given for a fee-collect (collect-fees) subscription fails `validate_address`. The symbol of the instrument_id must be a valid, checksummed 0x Ethereum address.","triggerScenarios":"A pool fee-collect subscribe command whose `instrument_id.symbol` lacks the 0x prefix, has the wrong length, contains non-hex characters, or fails EIP-55 checksum verification.","commonSituations":"Address case mangled by spreadsheet/JSON round-trips that lowercased it; typos producing invalid hex; using a position manager or NFT address rather than the pool address.","solutions":["Provide the pool contract address in EIP-55 checksummed format as the symbol.","Recompute the checksum casing for the address before subscribing.","Double-check you are using the pool address, not a related contract (position manager, factory).","Trim whitespace and any venue suffix from the address string."],"exampleFix":"// before\n\"factory-0x1f98431c8ad98523631ae4a59f267346ea31f984\"\n// after\n\"0x1F98431c8aD98523631AE4a59f267346ea31F984\"","handlingStrategy":"validation","validationCode":"// Rust\nlet addr = Address::from_str(symbol)\n    .ok()\n    .filter(|_| Address::parse_checksummed(symbol, None).is_ok())\n    .ok_or_else(|| anyhow!(\"'{symbol}' is not a checksummed pool address\"))?;","typeGuard":null,"tryCatchPattern":"match Address::parse_checksummed(symbol, None) {\n    Ok(addr) => subscribe_fee_collect(dex, addr),\n    Err(e) => return Err(anyhow!(\"fee-collect subscribe rejected for '{symbol}': {e}\")),\n}","preventionTips":["Beware tools that lowercase JSON/spreadsheet data — re-checksum after any round-trip.","Use the pool address, not the factory or position manager address.","Validate addresses at config load time with a startup assertion.","Document that instrument symbols for DEX data must be checksummed pool addresses."],"tags":["ethereum","address-validation","fee-collect","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"}