pub struct DydxAdapterConfig {Show 17 fields
pub network: DydxNetwork,
pub base_url: String,
pub ws_url: String,
pub grpc_url: String,
pub grpc_urls: Vec<String>,
pub chain_id: String,
pub timeout_secs: u64,
pub wallet_address: Option<String>,
pub subaccount: u32,
pub private_key: Option<String>,
pub authenticator_ids: Vec<u64>,
pub max_retries: u32,
pub retry_delay_initial_ms: u64,
pub retry_delay_max_ms: u64,
pub grpc_rate_limit_per_second: Option<u32>,
pub proxy_url: Option<String>,
pub transport_backend: TransportBackend,
}Expand description
Configuration for the dYdX adapter.
URL fields (base_url, ws_url, grpc_url, grpc_urls) default to mainnet in the
builder. Use DydxAdapterConfig::for_network to build a config whose URLs and chain
ID match the target network, or override each URL explicitly.
Fields§
§network: DydxNetworkNetwork environment (mainnet or testnet).
base_url: StringBase URL for the HTTP API.
ws_url: StringBase URL for the WebSocket API.
grpc_url: StringBase URL for the gRPC API (Cosmos SDK transactions).
For backwards compatibility, a single URL can be provided.
Consider using grpc_urls for fallback support.
grpc_urls: Vec<String>List of gRPC URLs with fallback support.
If provided, the client will attempt to connect to each URL in order until a successful connection is established. This is recommended for production use in DEX environments where nodes can fail.
chain_id: StringChain ID (e.g., “dydx-mainnet-1” for mainnet, “dydx-testnet-4” for testnet).
timeout_secs: u64Request timeout in seconds.
wallet_address: Option<String>Wallet address for the account.
If not provided, falls back to environment variable:
- Mainnet:
DYDX_WALLET_ADDRESS - Testnet:
DYDX_TESTNET_WALLET_ADDRESS
Use resolve_wallet_address() to resolve from config or environment.
subaccount: u32Subaccount number (default: 0).
private_key: Option<String>Private key (hex) for wallet signing.
If not provided, falls back to environment variable:
- Mainnet:
DYDX_PRIVATE_KEY - Testnet:
DYDX_TESTNET_PRIVATE_KEY
Use DydxCredential::resolve() to resolve from config or environment.
authenticator_ids: Vec<u64>Authenticator IDs for permissioned key trading.
When provided, transactions will include a TxExtension to enable trading via sub-accounts using delegated signing keys. This is an advanced feature for institutional setups with separated hot/cold wallet architectures.
See https://docs.dydx.xyz/concepts/trading/authenticators for details on permissioned keys and authenticator configuration.
max_retries: u32Maximum number of retries for failed requests (default: 3).
retry_delay_initial_ms: u64Initial retry delay in milliseconds (default: 1000ms).
retry_delay_max_ms: u64Maximum retry delay in milliseconds (default: 10000ms).
grpc_rate_limit_per_second: Option<u32>gRPC rate limit: maximum broadcast requests per second.
Controls the rate of gRPC broadcast_tx calls to prevent 429 (ResourceExhausted)
errors from validator nodes. Known provider limits:
- Polkachu: 300 req/min (~5 req/s)
- KingNodes: 250 req/min (~4.2 req/s)
- AutoStake: 4 req/s
Default: 4 requests per second (conservative, works across all public providers).
When None, rate limiting is disabled.
proxy_url: Option<String>Optional proxy URL for HTTP and WebSocket transports.
transport_backend: TransportBackendWebSocket transport backend (defaults to Tungstenite).
Implementations§
Source§impl DydxAdapterConfig
impl DydxAdapterConfig
Sourcepub fn builder() -> DydxAdapterConfigBuilder
pub fn builder() -> DydxAdapterConfigBuilder
Create an instance of DydxAdapterConfig using the builder syntax
Source§impl DydxAdapterConfig
impl DydxAdapterConfig
Sourcepub fn for_network(network: DydxNetwork) -> Self
pub fn for_network(network: DydxNetwork) -> Self
Creates a config with URLs and chain ID resolved for the given network.
Use this instead of Default::default() when constructing a testnet config
without explicit URL overrides. Retains the non-URL defaults from
Default::default (retries, timeouts, gRPC rate limit).
Sourcepub fn get_grpc_urls(&self) -> Vec<String>
pub fn get_grpc_urls(&self) -> Vec<String>
Get the list of gRPC URLs to use for connection with fallback support.
Returns grpc_urls if non-empty, otherwise falls back to a single-element
vector containing grpc_url.
Sourcepub const fn get_chain_id(&self) -> ChainId
pub const fn get_chain_id(&self) -> ChainId
Map the configured network to the underlying chain ID.
This is the recommended way to get the chain ID for transaction submission.
Sourcepub const fn is_testnet(&self) -> bool
pub const fn is_testnet(&self) -> bool
Returns whether this is a testnet configuration.
Sourcepub fn grpc_quota(&self) -> Option<Quota>
pub fn grpc_quota(&self) -> Option<Quota>
Returns the gRPC rate limiting quota, if configured.
Trait Implementations§
Source§impl Clone for DydxAdapterConfig
impl Clone for DydxAdapterConfig
Source§fn clone(&self) -> DydxAdapterConfig
fn clone(&self) -> DydxAdapterConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DydxAdapterConfig
impl Debug for DydxAdapterConfig
Source§impl Default for DydxAdapterConfig
impl Default for DydxAdapterConfig
Source§impl<'de> Deserialize<'de> for DydxAdapterConfig
impl<'de> Deserialize<'de> for DydxAdapterConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for DydxAdapterConfig
impl RefUnwindSafe for DydxAdapterConfig
impl Send for DydxAdapterConfig
impl Sync for DydxAdapterConfig
impl Unpin for DydxAdapterConfig
impl UnsafeUnpin for DydxAdapterConfig
impl UnwindSafe for DydxAdapterConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].