{"id":20433837,"url":"https://github.com/flashbots/buildernet-orderflow-proxy","last_synced_at":"2025-09-24T12:31:37.293Z","repository":{"id":257819943,"uuid":"862838606","full_name":"flashbots/tdx-orderflow-proxy","owner":"flashbots","description":"An orderflow proxy for running inside a TDX builder instance.","archived":false,"fork":false,"pushed_at":"2024-12-25T00:01:59.000Z","size":9480,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-01-11T15:15:20.518Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flashbots.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-25T09:20:08.000Z","updated_at":"2024-12-25T00:02:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"fcd77a10-ef6d-4e1c-bfa6-2a018f9810a9","html_url":"https://github.com/flashbots/tdx-orderflow-proxy","commit_stats":null,"previous_names":["flashbots/orderflow-proxy"],"tags_count":8,"template":false,"template_full_name":"flashbots/go-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashbots%2Ftdx-orderflow-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashbots%2Ftdx-orderflow-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashbots%2Ftdx-orderflow-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashbots%2Ftdx-orderflow-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flashbots","download_url":"https://codeload.github.com/flashbots/tdx-orderflow-proxy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234081585,"owners_count":18776652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T08:21:41.165Z","updated_at":"2025-09-24T12:31:37.288Z","avatar_url":"https://github.com/flashbots.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# orderflow-proxy\n\n[![Goreport status](https://goreportcard.com/badge/github.com/flashbots/tdx-orderflow-proxy)](https://goreportcard.com/report/github.com/flashbots/go-template)\n[![Test status](https://github.com/flashbots/tdx-orderflow-proxy/actions/workflows/checks.yml/badge.svg?branch=main)](https://github.com/flashbots/go-template/actions?query=workflow%3A%22Checks%22)\n\n## Getting started\n\n**Build**\n\n```bash\nmake build\n```\n\nThere are two separate programs in this repo:\n* receiver proxy that should be part of tdx image\n* sender proxy that is part of infra that sends orderflow to all peers\n\n## Run receiver proxy\n\nReceiver proxy will:\n\n* generate SSL certificate\n* generate orderflow signer\n* create 2 input servers serving TLS with that certificate (local-listen-addr, public-listen-addr)\n* create 1 local http server serving /cert  (cert-listen-addr)\n* create metrics server (metric-addr)\n* proxy requests to local builder\n* proxy local request to other builders in the network\n* archive local requests by sending them to archive endpoint\n\nFlags for the receiver proxy\n\n```\n./build/receiver-proxy -h\nNAME:\n   receiver-proxy - Serve API, and metrics\n\nUSAGE:\n   receiver-proxy [global options] command [command options]\n\nCOMMANDS:\n   help, h  Shows a list of commands or help for one command\n\nGLOBAL OPTIONS:\n   --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]\n   --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]\n   --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]\n   --builder-endpoint value                    address to send local orderflow to (default: \"http://127.0.0.1:8645\") [$BUILDER_ENDPOINT]\n   --rpc-endpoint value                        address of the node RPC that supports eth_blockNumber (default: \"http://127.0.0.1:8545\") [$RPC_ENDPOINT]\n   --builder-confighub-endpoint value          address of the builder config hub endpoint (directly or using the cvm-proxy) (default: \"http://127.0.0.1:14892\") [$BUILDER_CONFIGHUB_ENDPOINT]\n   --orderflow-archive-endpoint value          address of the orderflow archive endpoint (block-processor) (default: \"http://127.0.0.1:14893\") [$ORDERFLOW_ARCHIVE_ENDPOINT]\n   --flashbots-orderflow-signer-address value  orderflow from Flashbots will be signed with this address (default: \"0x5015Fa72E34f75A9eC64f44a4Fcf0837919D1bB7\") [$FLASHBOTS_ORDERFLOW_SIGNER_ADDRESS]\n   --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]\n   --connections-per-peer value                Number of parallel connections for each peer and archival RPC (default: 10) [$CONN_PER_PEER]\n   --max-local-requests-per-second value       Maximum number of unique local requests per second (default: 100) [$MAX_LOCAL_RPS]\n   --cert-duration value                       generated certificate duration (default: 8760h0m0s) [$CERT_DURATION]\n   --cert-hosts value [ --cert-hosts value ]   generated certificate hosts (default: \"127.0.0.1\", \"localhost\") [$CERT_HOSTS]\n   --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]\n   --log-json                                  log in JSON format (default: false) [$LOG_JSON]\n   --log-debug                                 log debug messages (default: false) [$LOG_DEBUG]\n   --log-uid                                   generate a uuid and add to all log messages (default: false) [$LOG_UID]\n   --log-service value                         add 'service' tag to logs (default: \"tdx-orderflow-proxy-receiver\") [$LOG_SERVICE]\n   --pprof                                     enable pprof debug endpoint (pprof is served on $metrics-addr/debug/pprof/*) (default: false) [$PPROF]\n   --help, -h                                  show help\n```\n\nAdditional receiver configuration environment variables:\n\n* `HTTP_READ_TIMEOUT_SEC` - timeout for reading the request, default 60 seconds\n* `HTTP_WRITE_TIMEOUT_SEC` - timeout for writing the response, default 30 seconds\n* `HTTP_IDLE_TIMEOUT_SEC` - timeout for idle connection, default 1 hour (3600 seconds)\n\n## Run sender proxy\n\nSender proxy will:\n* listen for http requests\n* sign request with `orderflow-signer-key`\n* proxy them to the peers received form builder config hub\n\n```\n./build/sender-proxy -h\nNAME:\n   sender-proxy - Serve API, and metrics\n\nUSAGE:\n   sender-proxy [global options] command [command options]\n\nCOMMANDS:\n   help, h  Shows a list of commands or help for one command\n\nGLOBAL OPTIONS:\n   --listen-address value               address to listen on for requests (default: \"127.0.0.1:8080\") [$LISTEN_ADDRESS]\n   --builder-confighub-endpoint value   address of the builder config hub endpoint (directly or using the cvm-proxy) (default: \"http://127.0.0.1:14892\") [$BUILDER_CONFIGHUB_ENDPOINT]\n   --orderflow-signer-key value         orderflow will be signed with this address (default: \"0xfb5ad18432422a84514f71d63b45edf51165d33bef9c2bd60957a48d4c4cb68e\") [$ORDERFLOW_SIGNER_KEY]\n   --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]\n   --connections-per-peer value         Number of parallel connections for each peer (default: 10) [$CONN_PER_PEER]\n   --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]\n   --log-json                           log in JSON format (default: false) [$LOG_JSON]\n   --log-debug                          log debug messages (default: false) [$LOG_DEBUG]\n   --log-uid                            generate a uuid and add to all log messages (default: false) [$LOG_UID]\n   --log-service value                  add 'service' tag to logs (default: \"tdx-orderflow-proxy-sender\") [$LOG_SERVICE]\n   --pprof                              enable pprof debug endpoint (pprof is served on $metrics-addr/debug/pprof/*) (default: false) [$PPROF]\n   --help, -h                           show help\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflashbots%2Fbuildernet-orderflow-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflashbots%2Fbuildernet-orderflow-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflashbots%2Fbuildernet-orderflow-proxy/lists"}