{"record":{"id":"a50e025f36dba9ae","repo":"nautechsystems/nautilus_trader","slug":"polymarket-signature-type-signature-type-requi-a50e02","errorCode":null,"errorMessage":"Polymarket {signature_type:?} signature type requires a funder wallet address","messagePattern":"Polymarket (.+?) signature type requires a funder wallet address","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/polymarket/src/execution/mod.rs","lineNumber":244,"sourceCode":"            pending_submits: PendingSubmitTracker::default(),\n            pending_cancels: PendingCancelTracker::default(),\n            order_contexts: Arc::new(OrderContextRegistry::default()),\n            fill_tracker: Arc::new(OrderFillTrackerMap::new()),\n            ws_dispatch_state: Arc::new(Mutex::new(WsDispatchState::default())),\n        })\n    }\n}\n\nfn resolve_maker_address(\n    signature_type: SignatureType,\n    signer_address: &str,\n    funder: Option<&str>,\n) -> anyhow::Result<String> {\n    let maker_address = match signature_type {\n        SignatureType::Eoa => funder.unwrap_or(signer_address),\n        SignatureType::PolyProxy | SignatureType::PolyGnosisSafe | SignatureType::Poly1271 => {\n            funder.ok_or_else(|| {\n                anyhow::anyhow!(\n                    \"Polymarket {signature_type:?} signature type requires a funder wallet address\",\n                )\n            })?\n        }\n    };\n\n    if signature_type != SignatureType::Eoa && maker_address.eq_ignore_ascii_case(signer_address) {\n        anyhow::bail!(\n            \"Polymarket {signature_type:?} signature type requires a funder distinct from the signing address\",\n        );\n    }\n\n    Ok(maker_address.to_string())\n}\n\n#[async_trait(?Send)]\nimpl ExecutionClient for PolymarketExecutionClient {\n    fn is_connected(&self) -> bool {","sourceCodeStart":226,"sourceCodeEnd":262,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/polymarket/src/execution/mod.rs#L226-L262","documentation":"`resolve_maker_address` maps a `SignatureType` plus optional funder address to the maker (wallet) address used for order signing. EOA signature types fall back to the signer address, but proxy-based types (PolyProxy, PolyGnosisSafe, Poly1271) trade from a separate funder/proxy wallet, so a funder address is mandatory. This error is thrown when a proxy signature type is configured without any funder wallet address.","triggerScenarios":"Building the execution client with signature_type = PolyProxy, PolyGnosisSafe, or Poly1271 while secrets/config supply no funder address; EOA with funder unset is fine, proxy types are not.","commonSituations":"Users with a Polymarket proxy or Gnosis Safe account who copy an EOA-style config and omit the funder/proxy wallet field; migrating configs between account types; funder field named differently across config versions.","solutions":["Set the funder wallet address (your Polymarket proxy / Safe address) in the config or secrets for proxy signature types","Or switch signature_type to Eoa if you trade directly from the signer's EOA wallet","Verify the funder address is the account holding USDC collateral on Polymarket, not the EOA signing key","Check config docs for the correct funder field name for your adapter version"],"exampleFix":"// before\nsignature_type: SignatureType::PolyGnosisSafe,\nfunder: None,\n// after\nsignature_type: SignatureType::PolyGnosisSafe,\nfunder: Some(\"0xYourSafeWalletAddress\".to_string()),","handlingStrategy":"validation","validationCode":"fn require_funder_for_proxy_types(sig_type: SignatureType, funder: Option<&str>) -> Result<(), String> {\n    match sig_type {\n        SignatureType::Eoa => Ok(()),\n        _ if funder.map(|f| f.is_empty()).unwrap_or(true) =>\n            Err(format!(\"{sig_type:?} requires a funder wallet address\")),\n        _ => Ok(()),\n    }\n}","typeGuard":null,"tryCatchPattern":"let client = PolymarketExecutionClient::new(...)\n    .map_err(|e| { tracing::error!(\"config: {e:#}\"); e })?;","preventionTips":["For proxy/Safe accounts always configure the funder (proxy wallet) address","Validate the funder is a well-formed 0x address at config load time","Document which signature types require funder in your config templates"],"tags":["rust","config","polymarket","signing"],"backgroundTag":"missing-required-config-field","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"}