Skip to content

Commit

Permalink
update readme's with information about CL node TOML config (#14028)
Browse files Browse the repository at this point in the history
  • Loading branch information
Tofel authored Aug 6, 2024
1 parent 55e7c8b commit 1d81278
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 7 deletions.
5 changes: 3 additions & 2 deletions integration-tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ version = "your tag"

The `./testconfig/overrides.toml` file **should never be committed** and has been added to the [.gitignore](../.gitignore) file as it can often contain secrets like private keys and RPC URLs.

For more information on how to configure the tests, see the [testconfig README](./testconfig/README.md).

## Build

If you'd like to run the tests on a local build of Chainlink, you can point to your own docker image, or build a fresh one with `make`.
Expand Down Expand Up @@ -76,8 +78,7 @@ make test_soak_ocr_reorg_2

Run reorg/automation_reorg_test.go with reorg settings:

1. Use Simulated Geth network and put GethReorgConfig in overrides.toml

1. Use Simulated Geth network and put GethReorgConfig in overrides.toml

```toml
[Network]
Expand Down
9 changes: 6 additions & 3 deletions integration-tests/testconfig/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,9 @@ DefaultTransactionQueueDepth = 0
"""
```
Note that you cannot override individual values in BaseConfigTOML. You must provide the entire configuration.
This corresponds to [Config struct](../../core/services/chainlink/config.go) in Chainlink Node that excludes all chain-specific configuration, which is built based on selected_networks and either Chainlink Node's defaults for each network, or `ChainConfigTOMLByChainID` (if an entry with matching chain id is defined) or `CommonChainConfigTOML` (if no entry with matching chain id is defined).

If BaseConfigTOML is empty, then default base config provided by the Chainlink Node is used. If tracing is enabled unique id will be generated and shared between all Chainlink nodes in the same test.

To set base config for EVM chains use `NodeConfig.CommonChainConfigTOML`. Example:
```toml
Expand All @@ -153,12 +155,12 @@ FeeCapDefault = '200 gwei'
"""
```

This is the default configuration used for all EVM chains unless ChainConfigTOMLByChainID is specified.
This is the default configuration used for all EVM chains unless `ChainConfigTOMLByChainID` is specified. Do remember that if either `ChainConfigTOMLByChainID` or `CommonChainConfigTOML` is defined, it will override any defaults that Chainlink Node might have for the given network. Part of the configuration that defines blockchain node URLs is always dynamically generated based on the EVMNetwork configuration.

To set custom per-chain config use `[NodeConfig.ChainConfigTOMLByChainID]`. Example:
```toml
[NodeConfig.ChainConfigTOMLByChainID]
# applicable for arbitrum-goerli chain
# applicable only to arbitrum-goerli chain
421613 = """
[GasEstimator]
PriceMax = '400 gwei'
Expand All @@ -170,7 +172,8 @@ BumpMin = '100 gwei'
"""
```

For more examples see `example.toml` in product TOML configs like `testconfig/automation/example.toml`.
For more examples see `example.toml` in product TOML configs like `testconfig/automation/example.toml`. If either ChainConfigTOMLByChainID or CommonChainConfigTOML is defined, it will override any defaults that Chainlink Node might have for the given network. Part of the configuration that defines blockchain node URLs is always dynamically generated based on the EVMNetwork configuration.
Currently, all networks are treated as EVM networks. There's no way to provide Solana, Starknet, Cosmos or Aptos configuration yet.

### Setting env vars for Chainlink Node

Expand Down
41 changes: 39 additions & 2 deletions integration-tests/testconfig/default.toml
Original file line number Diff line number Diff line change
@@ -1,37 +1,72 @@
[Logging]
# set to true to flush logs to selected target regardless of test result; otherwise logs are only flushed if test failed
test_log_collect = false

[Logging.LogStream]
# supported targets: file, loki, in-memory. if empty no logs will be persisted
log_targets = ["file"]
# context timeout for starting log producer and also time-frame for requesting logs
log_producer_timeout = "10s"
# number of retries before log producer gives up and stops listening to logs
log_producer_retry_limit = 10

[ChainlinkImage]
# postgres version to use
postgres_version = "15.6"
# chainlink image to use
image = "public.ecr.aws/chainlink/chainlink"
# chainlink image tag to use
version = "2.12.0"

[Common]
# chainlink node funding in native token
chainlink_node_funding = 0.5

[Network]
# slice of networks to use; at lesat one network must be selected; each selected network must either be already defined in the CTF as a known network, or be defined in
# TOML test files as a new network
selected_networks = ["simulated"]

[PrivateEthereumNetwork]
# ethereum version to use; eth1 or eth2 (post-merge)
ethereum_version = "eth1"
# execution layer to use; geth, besu, nethermind, erigon or reth
execution_layer = "geth"

[PrivateEthereumNetwork.EthereumChainConfig]
# duration of single slot, lower => faster block production, must be >= 3
seconds_per_slot = 3
# number of slots in epoch, lower => faster epoch finalisation, must be >= 2
slots_per_epoch = 2
# extra genesis delay, no need to modify, but it should be after all validators/beacon chain starts
genesis_delay = 15
# number of validators in the network
validator_count = 4
# chain id to use
chain_id = 1337
# slice of addresses that will be funded with native token in genesis
addresses_to_fund = ["0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"]

# map of hard fork epochs for each network; key is fork name, value is hard fork epoch
# keep in mind that this depends on the specific version of eth2 client you are using
# this configuration is fault-tolerant and incorrect forks will be ignored
[PrivateEthereumNetwork.EthereumChainConfig.HardForkEpochs]
Deneb = 500

# General config of the Chainklink node corresponding to core/services/chainlink/config.go (Config struct) that excludes
# all chain-specific configuration, which is built based on selected_networks and either Chainlink Node's defaults for
# each network, or ChainConfigTOMLByChainID (if an entry with matching chain id is defined) or CommonChainConfigTOML (if no
# entry with matching chain id is defined).
#
# Please remember that if either ChainConfigTOMLByChainID or CommonChainConfigTOML is defined, it will override any defaults
# that Chainlink Node might have for the given network. Part of the configuration that defines blockchain node URLs is always
# dynamically generated based on the EVMNetwork configuration.
#
# Last, but not least, currently all selected networks are treated as EVM networks. There's no way to provide Solana, Starknet,
# Cosmos or Aptos configuration yet.
#
# If BaseConfigTOML is empty, then default base config provided by the Chainlink Node is used.
# Also, if tracing is enabled unique id will be generated and shared between all Chainlink nodes in the same test.
[NodeConfig]
BaseConfigTOML = """
[Feature]
Expand Down Expand Up @@ -78,12 +113,14 @@ DeltaDial = '500ms'
DeltaReconcile = '5s'
"""

# override config toml related to EVMNode configs for chainlink nodes; applicable to all EVM node configs in chainlink toml
# Overrides default config TOML related to EVMNode configs for chainlink nodes; applicable to all EVM node configs in chainlink TOML.
# Do not use it, if you want the default values to be used. Passing blockchain nodes URLs here will have no effect.
CommonChainConfigTOML = """
"""

[NodeConfig.ChainConfigTOMLByChainID]
# applicable for simulated chain
# Chain-specific EVMNode config TOML for chainlink nodes; applicable to all EVM node configs in chainlink TOML. It takes precedence
# over CommonChainConfigTOML and Chainlink Node's defaults. Passing blockchain nodes URLs here will have no effect.
1337 = """
AutoCreateKey = true
FinalityDepth = 1
Expand Down

0 comments on commit 1d81278

Please sign in to comment.