nautechsystems/nautilus_trader · error
Polymarket {signature_type:?} signature type requires a fund
Error message
Polymarket {signature_type:?} signature type requires a funder wallet address What it means
`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.
Source
Thrown at crates/adapters/polymarket/src/execution/mod.rs:244
pending_submits: PendingSubmitTracker::default(),
pending_cancels: PendingCancelTracker::default(),
order_contexts: Arc::new(OrderContextRegistry::default()),
fill_tracker: Arc::new(OrderFillTrackerMap::new()),
ws_dispatch_state: Arc::new(Mutex::new(WsDispatchState::default())),
})
}
}
fn resolve_maker_address(
signature_type: SignatureType,
signer_address: &str,
funder: Option<&str>,
) -> anyhow::Result<String> {
let maker_address = match signature_type {
SignatureType::Eoa => funder.unwrap_or(signer_address),
SignatureType::PolyProxy | SignatureType::PolyGnosisSafe | SignatureType::Poly1271 => {
funder.ok_or_else(|| {
anyhow::anyhow!(
"Polymarket {signature_type:?} signature type requires a funder wallet address",
)
})?
}
};
if signature_type != SignatureType::Eoa && maker_address.eq_ignore_ascii_case(signer_address) {
anyhow::bail!(
"Polymarket {signature_type:?} signature type requires a funder distinct from the signing address",
);
}
Ok(maker_address.to_string())
}
#[async_trait(?Send)]
impl ExecutionClient for PolymarketExecutionClient {
fn is_connected(&self) -> bool {View on GitHub (pinned to 18893faf8b)
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
Example fix
// before
signature_type: SignatureType::PolyGnosisSafe,
funder: None,
// after
signature_type: SignatureType::PolyGnosisSafe,
funder: Some("0xYourSafeWalletAddress".to_string()), Defensive patterns
Strategy: validation
Validate before calling
fn require_funder_for_proxy_types(sig_type: SignatureType, funder: Option<&str>) -> Result<(), String> {
match sig_type {
SignatureType::Eoa => Ok(()),
_ if funder.map(|f| f.is_empty()).unwrap_or(true) =>
Err(format!("{sig_type:?} requires a funder wallet address")),
_ => Ok(()),
}
} Try / catch
let client = PolymarketExecutionClient::new(...)
.map_err(|e| { tracing::error!("config: {e:#}"); e })?; Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- Invalid config type for PolymarketExecutionClientFactory. Ex
- Invalid config type for AxExecutionClientFactory. Expected A
- Invalid factory address for DEX {name} on chain {chain} for
- heartbeat_secs must be positive when set
- Invalid price_match value: {s:?}
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/a50e025f36dba9ae.
Report an issue: GitHub.