{"record":{"id":"00c47b34edbdf889","repo":"nautechsystems/nautilus_trader","slug":"rpc-parsing-of-swap-event-is-not-defined-in-this-d","errorCode":null,"errorMessage":"RPC parsing of swap event is not defined in this dex: {}:{}","messagePattern":"RPC parsing of swap event is not defined in this dex: (.+?):(.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/blockchain/src/exchanges/extended.rs","lineNumber":458,"sourceCode":"        } else {\n            anyhow::bail!(\n                \"RPC parsing of pool created event is not defined in this dex: {}:{}\",\n                self.dex.chain,\n                self.dex.name,\n            )\n        }\n    }\n\n    /// Parses a swap event from an RPC log.\n    ///\n    /// # Errors\n    ///\n    /// Returns an error if the DEX does not have an RPC swap event parser defined or if parsing fails.\n    pub fn parse_swap_event_rpc(&self, log: &RpcLog) -> anyhow::Result<SwapEvent> {\n        if let Some(parse_fn) = &self.parse_swap_event_rpc_fn {\n            parse_fn(self.dex.clone(), log)\n        } else {\n            anyhow::bail!(\n                \"RPC parsing of swap event is not defined in this dex: {}:{}\",\n                self.dex.chain,\n                self.dex.name\n            )\n        }\n    }\n\n    /// Parses a mint event from an RPC log.\n    ///\n    /// # Errors\n    ///\n    /// Returns an error if the DEX does not have an RPC mint event parser defined or if parsing fails.\n    pub fn parse_mint_event_rpc(&self, log: &RpcLog) -> anyhow::Result<MintEvent> {\n        if let Some(parse_fn) = &self.parse_mint_event_rpc_fn {\n            parse_fn(self.dex.clone(), log)\n        } else {\n            anyhow::bail!(\n                \"RPC parsing of mint event is not defined in this dex: {}:{}\",","sourceCodeStart":440,"sourceCodeEnd":476,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/blockchain/src/exchanges/extended.rs#L440-L476","documentation":"Raised by parse_swap_event_rpc when the DEX has no RPC swap-event parser registered (parse_swap_event_rpc_fn is None). Swap events are the most common DEX event, so hitting this means the DEX adapter was deliberately or accidentally constructed without RPC swap decoding, and the call bails with chain:name.","triggerScenarios":"Calling dex.parse_swap_event_rpc(&log) on RPC log streams (eth_subscribe/eth_getLogs) for a DEX built without an RPC swap parser — e.g. a DEX intended for HyperSync-only ingestion.","commonSituations":"Switching a pipeline from HyperSync to RPC transport without adding RPC parsers; new DEX registration with only HyperSync fns wired; forks whose Swap signature differs and were left unimplemented on the RPC side.","solutions":["Register parse_swap_event_rpc_fn for the DEX when RPC ingestion is needed.","Use the DEX's HyperSync swap parser instead if RPC parsing is not supported.","Ensure the log's emitting contract belongs to this DEX before parsing.","Check parser presence before subscribing this DEX to RPC swap topics."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if !dex_supports(dex, DexEvent::SwapRpc) { return Ok(()); } // don't subscribe this dex to RPC swap topics","typeGuard":"fn has_rpc_swap_parser(dex: &Dex) -> bool { dex.parse_swap_event_rpc_fn.is_some() }","tryCatchPattern":"match dex.parse_swap_event_rpc(&log) {\n    Ok(evt) => handle_swap(evt),\n    Err(e) if e.to_string().contains(\"not defined in this dex\") => tracing::debug!(\"RPC swap parsing unsupported on {}\", dex.name()),\n    Err(e) => return Err(e),\n}","preventionTips":["If migrating from HyperSync to RPC, add all required *_rpc_fn parsers first.","Subscribe a DEX to RPC swap topics only after confirming parser registration.","Keep swap parser coverage in CI for every DEX definition.","Validate emitting addresses belong to the DEX before parsing."],"tags":["dex","rpc","event-parsing","swap","rust"],"backgroundTag":"unsupported-operation","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}