Configure Teku to use a builder network
You can connect to a builder network to generate execution payloads for the consensus client.
The builder recommends new blocks that are validated by the consensus client. If the builder goes down, the local execution client proposes a block instead.
Use the following steps to configure Teku to use a builder network.
1. Enable blinded block production
Enable blinded block production using the
--validators-proposer-blinded-blocks-enabled
command line option.
If --validators-builder-registration-default-enabled
is set to true
, then --validators-proposer-blinded-blocks-enabled
is automatically enabled.
2. Specify the builder endpoint
Specify the builder endpoint using the --builder-endpoint
command line option.
For example:
--builder-endpoint="https://builder-relay-sepolia.flashbots.net/"
View the list of relay endpoints for available endpoints.
You can also use external software such as MEV-Boost to connect to multiple relays. For example:
--builder-endpoint=http://127.0.0.1:18550
3. Register the validator
You must register your validator with the builder before proposing a block.
On the validator client, enable registration for all validators using the
--validators-builder-registration-default-enabled
command line option.
To enable registration for specific validators only, use the
--validators-proposal-config
option and
specify the enabled validators in the proposer_config
field of the
proposer configuration file.
{
"proposer_config": {
"0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a": {
"fee_recipient": "0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3",
"builder": {
"enabled": true,
"gas_limit": "12345654321"
}
}
},
"default_config": {
"fee_recipient": "0x6e35733c5af9B61374A128e6F85f553aF09ff89A",
"builder": {
"enabled": false
}
}
}
In this example, validator 0xa057816...
is registered with the builder, but any validator using
the default configuration isn't.
If you use a proposer configuration, you must enable blinded block production using
--validators-proposer-blinded-blocks-enabled
.
Example builder configurations
In the following example, Teku is running with the beacon node and validator client in a single process.
teku \
--ee-endpoint="http://127.0.0.1:8551" \
--ee-jwt-secret-file="/etc/jwt-secret.hex" \
--validators-builder-registration-default-enabled=true \
--builder-endpoint="http://127.0.0.1:18550" \
--validators-proposer-default-fee-recipient="0x6e35733c5af9B61374A128e6F85f553aF09ff89A"
In the following example, Teku is running with the beacon node and validator client in separate processes. The beacon node runs with no validators in a single process, and the validator client maintains keys in a separate process. The proposer configuration is managed using a proposer configuration file, and the validator client communicates with the beacon node using REST API.
- Beacon node
- Validator client
- Proposer configuration
teku \
--rest-api-enabled=true \
--ee-endpoint="http://127.0.0.1:8551" \
--ee-jwt-secret-file="/etc/jwt-secret.hex" \
--builder-endpoint="http://127.0.0.1:18550" \
--validators-proposer-default-fee-recipient="0x6e35733c5af9B61374A128e6F85f553aF09ff89A"
teku validator-client \
--validators-proposer-blinded-blocks-enabled=true \
--validators-proposer-config="/etc/teku/proposerConfig.json"
{
"proposer_config": {
"0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a": {
"fee_recipient": "0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3"
}
},
"default_config": {
"fee_recipient": "0x6e35733c5af9B61374A128e6F85f553aF09ff89A",
"builder": {
"enabled": true
}
}
}
In the following example, a validator client is connected to a beacon node that is using the builder flow, and all keys use a specified fee recipient from the validator client by default. Each epoch, the validator client will register all of its keys to the specified fee recipient with the beacon node.
- Beacon node
- Validator client
teku \
--rest-api-enabled=true \
--ee-endpoint="http://127.0.0.1:8551" \
--ee-jwt-secret-file="/etc/jwt-secret.hex" \
--builder-endpoint="http://127.0.0.1:18550" \
--validators-proposer-default-fee-recipient="0x6e35733c5af9B61374A128e6F85f553aF09ff89A"
teku validator-client \
--validators-proposer-blinded-blocks-enabled=true \
--validators-builder-registration-default-enabled=true \
--validators-proposer-default-fee-recipient="0x6e35733c5af9B61374A128e6F85f553aF09ff89A"