tdx-orderflow-proxy

module
v0.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 7, 2024 License: MIT

README

orderflow-proxy

Goreport status Test status

Getting started

Build

make build

There are two separate programs in this repo:

  • receiver proxy that should be part of tdx image
  • sender proxy that is part of infra that sends orderflow to all peers

Run receiver proxy

Receiver proxy will:

  • generate SSL certificate
  • generate orderflow signer
  • create 2 input servers serving TLS with that certificate (local-listen-addr, public-listen-addr)
  • create 1 local http server serving /cert (cert-listen-addr)
  • create metrics server (metrict-addr)
  • proxy requests to local builder
  • proxy local request to other builders in the network
  • archive local requests by sending them to archive endpoint

Flags for the receiver proxy

./build/receiver-proxy -h
NAME:
   receiver-proxy - Serve API, and metrics

USAGE:
   receiver-proxy [global options] command [command options] 

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --local-listen-addr value                   address to listen on for orderflow proxy API for external users and local operator (default: "127.0.0.1:443") [$LOCAL_LISTEN_ADDR]
   --public-listen-addr value                  address to listen on for orderflow proxy API for other network participants (default: "127.0.0.1:5544") [$PUBLIC_LISTEN_ADDR]
   --cert-listen-addr value                    address to listen on for orderflow proxy serving its SSL certificate on /cert (default: "127.0.0.1:14727") [$CERT_LISTEN_ADDR]
   --builder-endpoint value                    address to send local ordeflow to (default: "http://127.0.0.1:8645") [$BUILDER_ENDPOINT]
   --rpc-endpoint value                        address of the node RPC that supports eth_blockNumber (default: "http://127.0.0.1:8545") [$RPC_ENDPOINT]
   --builder-confighub-endpoint value          address of the builder config hub enpoint (directly or using the cvm-proxy) (default: "http://127.0.0.1:14892") [$BUILDER_CONFIGHUB_ENDPOINT]
   --orderflow-archive-endpoint value          address of the ordreflow archive endpoint (block-processor) (default: "http://127.0.0.1:14893") [$ORDERFLOW_ARCHIVE_ENDPOINT]
   --flashbots-orderflow-signer-address value  ordreflow from Flashbots will be signed with this address (default: "0x5015Fa72E34f75A9eC64f44a4Fcf0837919D1bB7") [$FLASHBOTS_ORDERFLOW_SIGNER_ADDRESS]
   --max-request-body-size-bytes value         Maximum size of the request body, if 0 default will be used (default: 0) [$MAX_REQUEST_BODY_SIZE_BYTES]
   --connections-per-peer value                Number of parallel connections for each peer and archival RPC (default: 10) [$CONN_PER_PEER]
   --max-local-requests-per-second value       Maximum number of unique local requests per second (default: 100) [$MAX_LOCAL_RPS]
   --cert-duration value                       generated certificate duration (default: 8760h0m0s) [$CERT_DURATION]
   --cert-hosts value [ --cert-hosts value ]   generated certificate hosts (default: "127.0.0.1", "localhost") [$CERT_HOSTS]
   --metrics-addr value                        address to listen on for Prometheus metrics (metrics are served on $metrics-addr/metrics) (default: "127.0.0.1:8090") [$METRICS_ADDR]
   --log-json                                  log in JSON format (default: false) [$LOG_JSON]
   --log-debug                                 log debug messages (default: false) [$LOG_DEBUG]
   --log-uid                                   generate a uuid and add to all log messages (default: false) [$LOG_UID]
   --log-service value                         add 'service' tag to logs (default: "tdx-orderflow-proxy-receiver") [$LOG_SERVICE]
   --pprof                                     enable pprof debug endpoint (pprof is served on $metrics-addr/debug/pprof/*) (default: false) [$PPROF]
   --help, -h                                  show help

Run sender proxy

Sender proxy will:

  • listen for http requests
  • sign request with orderflow-signer-key
  • poxy them to the peers received form builder config hub
./build/sender-proxy -h
NAME:
   sender-proxy - Serve API, and metrics

USAGE:
   sender-proxy [global options] command [command options] 

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --listen-address value               address to listen on for requests (default: "127.0.0.1:8080") [$LISTEN_ADDRESS]
   --builder-confighub-endpoint value   address of the builder config hub enpoint (directly or using the cvm-proxy) (default: "http://127.0.0.1:14892") [$BUILDER_CONFIGHUB_ENDPOINT]
   --orderflow-signer-key value         ordreflow will be signed with this address (default: "0xfb5ad18432422a84514f71d63b45edf51165d33bef9c2bd60957a48d4c4cb68e") [$ORDERFLOW_SIGNER_KEY]
   --max-request-body-size-bytes value  Maximum size of the request body, if 0 default will be used (default: 0) [$MAX_REQUEST_BODY_SIZE_BYTES]
   --connections-per-peer value         Number of parallel connections for each peer (default: 10) [$CONN_PER_PEER]
   --metrics-addr value                 address to listen on for Prometheus metrics (metrics are served on $metrics-addr/metrics) (default: "127.0.0.1:8090") [$METRICS_ADDR]
   --log-json                           log in JSON format (default: false) [$LOG_JSON]
   --log-debug                          log debug messages (default: false) [$LOG_DEBUG]
   --log-uid                            generate a uuid and add to all log messages (default: false) [$LOG_UID]
   --log-service value                  add 'service' tag to logs (default: "tdx-orderflow-proxy-sender") [$LOG_SERVICE]
   --pprof                              enable pprof debug endpoint (pprof is served on $metrics-addr/debug/pprof/*) (default: false) [$PPROF]
   --help, -h                           show help

Directories

Path Synopsis
cmd
Package common contains common utilities and functions used by the service.
Package common contains common utilities and functions used by the service.
Package metrics provides a way to collect and expose metrics for the application.
Package metrics provides a way to collect and expose metrics for the application.
Package proxy provides the main proxy server.
Package proxy provides the main proxy server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL