# List of WS methods to whitelist. ws_method_whitelist = [ "eth_subscribe", "eth_call", "eth_chainId" ] # Enable WS on this backend group. There can only be one WS-enabled backend group. ws_backend_group = "main" [server] # Host for the proxyd RPC server to listen on. rpc_host = "0.0.0.0" # Port for the above. rpc_port = 8080 # Host for the proxyd WS server to listen on. ws_host = "0.0.0.0" # Port for the above # Set the ws_port to 0 to disable WS ws_port = 8085 # Maximum client body size, in bytes, that the server will accept. max_body_size_bytes = 10485760 max_concurrent_rpcs = 1000 # Server log level log_level = "info" [redis] # URL to a Redis instance. url = "redis://localhost:6379" [metrics] # Whether or not to enable Prometheus metrics. enabled = true # Host for the Prometheus metrics endpoint to listen on. host = "0.0.0.0" # Port for the above. port = 9761 [backend] # How long proxyd should wait for a backend response before timing out. response_timeout_seconds = 5 # Maximum response size, in bytes, that proxyd will accept from a backend. max_response_size_bytes = 5242880 # Maximum number of times proxyd will try a backend before giving up. max_retries = 3 # Number of seconds to wait before trying an unhealthy backend again. out_of_service_seconds = 600 # Maximum latency accepted to serve requests, default 10s max_latency_threshold = "30s" # Maximum latency accepted to serve requests before degraded, default 5s max_degraded_latency_threshold = "10s" # Maximum error rate accepted to serve requests, default 0.5 (i.e. 50%) max_error_rate_threshold = 0.3 [backends] # A map of backends by name. [backends.infura] # The URL to contact the backend at. Will be read from the environment # if an environment variable prefixed with $ is provided. rpc_url = "" # The WS URL to contact the backend at. Will be read from the environment # if an environment variable prefixed with $ is provided. ws_url = "" username = "" # An HTTP Basic password to authenticate with the backend. Will be read from # the environment if an environment variable prefixed with $ is provided. password = "" max_rps = 3 max_ws_conns = 1 # Path to a custom root CA. ca_file = "" # Path to a custom client cert file. client_cert_file = "" # Path to a custom client key file. client_key_file = "" # Allows backends to skip peer count checking, default false # consensus_skip_peer_count = true # Specified the target method to get receipts, default "debug_getRawReceipts" # See https://github.com/ethereum-optimism/optimism/blob/186e46a47647a51a658e699e9ff047d39444c2de/op-node/sources/receipts.go#L186-L253 consensus_receipts_target = "eth_getBlockReceipts" [backends.alchemy] rpc_url = "" ws_url = "" username = "" password = "" max_rps = 3 max_ws_conns = 1 consensus_receipts_target = "alchemy_getTransactionReceipts" [backend_groups] [backend_groups.main] backends = ["infura"] # Enable consensus awareness for backend group, making it act as a load balancer, default false # consensus_aware = true # Period in which the backend wont serve requests if banned, default 5m # consensus_ban_period = "1m" # Maximum delay for update the backend, default 30s # consensus_max_update_threshold = "20s" # Maximum block lag, default 8 # consensus_max_block_lag = 16 # Maximum block range (for eth_getLogs method), no default # consensus_max_block_range = 20000 # Minimum peer count, default 3 # consensus_min_peer_count = 4 [backend_groups.alchemy] backends = ["alchemy"] # If the authentication group below is in the config, # proxyd will only accept authenticated requests. [authentication] # Mapping of auth key to alias. The alias is used to provide a human- # readable name for the auth key in monitoring. The auth key will be # read from the environment if an environment variable prefixed with $ # is provided. Note that you will need to quote the environment variable # in order for it to be value TOML, e.g. "$FOO_AUTH_KEY" = "foo_alias". secret = "test" # Mapping of methods to backend groups. [rpc_method_mappings] eth_call = "main" eth_chainId = "main" eth_blockNumber = "alchemy"