Skip to main content

Orderflow encryption and attestation

This page outlines how orderflow is end-to-end encrypted in BuilderNet.

Key ports

Every builder node exposes these key ports used for orderflow communication:

PortUseEncryption
443Receive orderflow from operator, users, walletsLocally generated TLS certificate
5544Receive orderflow from BuilderNet nodes and FlashbotsLocally generated TLS certificate
7936Serving the locally generated TLS certificateAttested TLS (aTLS)

Orderflow encryption

Orderflow sent to a builder node is end-to-end encrypted using HTTPS/TLS. Once inside BuilderNet, orderflow is only accessible to services running inside BuilderNet nodes.

Each builder node creates a local TLS certificate on startup, and uses this certificate for receiving orderflow on ports 443 and 5544. The private key for this certificate provably resides only inside the TEE instance.

Client requests require the server to own the private key for this particular TLS certificate.


TEE attestation of the certificate

TEE attestation allows you to verify that a given TLS certificate belongs to a particular VM image (with specific codebase and configuration). On every builder node, an API on port 7936 serves the local certificate over an aTLS attested channel.

info

Read more about aTLS in the Constellation documentation.

As part of the aTLS handshake, the client (i.e. user) can verify that the server runs inside a TEE instance with specific measurements (i.e. specific codebase and configuration).

You can use this tool to get the certificate with TEE attestation:

go run cmd/get-measurements/main.go \
--addr=https://instance_ip:7936/cert \
--out-measurements=measurements.json \
--out-response=builder-cert.pem

You can now check that the verified TEE measurements match expected measurements from https://measurements.builder.flashbots.net. This will also allow you to look up instructions for verifying the measurements through reproducible builds.

If you just want the certificate, you can request it without attestation using curl like this:

curl --insecure https://instance_ip:7936/cert