Configuration

We generate config specification for all our components automatically.

Here is full specification for what can be specificed in env.toml for devenv.

.out fields are useful in case you want to use remote component, or integrate in other language than Go, otherwise can be ignored.

Fakes

Fake HTTP service with recording capabilities.

[fakes]
  # Fake service image, usually can be found in our ECR with $project-fakes name
  image = ''
  # The port which Docker container is exposing
  port = 0

  # Fakes service config output
  [fakes.out]
    # Whether to respect caching or not, if cache = true component won't be deployed again
    use_cache = false
    # Base URL which can be used when running locally
    base_url_host = ''
    # Base URL to reach fakes service from other Docker containers
    base_url_docker = ''

Blockchains

Various types of blockchain nodes.

[[blockchains]]
  # Type can be one of: anvil geth besu solana aptos tron sui ton canton, this struct describes common configuration we are using across all blockchains
  type = ''
  # Blockchain node image in format: $registry:$image, ex.: ghcr.io/foundry-rs/foundry:stable
  image = ''
  # Whether to pull image or not when creating Docker container
  pull_image = false
  # The port Docker container will expose
  port = ''
  # Docker container name
  container_name = ''
  # WebSocket port container will expose
  port_ws = ''
  # Blockchain chain ID
  chain_id = ''
  # Docker command parameters override, ex. for Anvil: ["-b", "1", "--mixed-mining"]
  docker_cmd_params = []
  # Public key to mint when solana-test-validator starts
  public_key = ''
  # Solana's contracts directory
  contracts_dir = ''
  # Custom ports pairs in format $host_port_number:$docker_port_number
  custom_ports = []
  # Sui blockchain network faucet port
  faucet_port = ''
  # Number of Canton network validators
  number_of_canton_validators = 0
  # GAPv2 specific paramter: host netowork mode, if 'true' will run environment in host network mode
  host_network_mode = false
  # GAPv2 specific parameter: path to default Ubuntu's certificates
  certificates_path = ''
  # Docker image platform, default is 'linux/amd64'
  image_platform = ''

  # blockchain deployment output
  [blockchains.out]
    # Whether to respect caching or not, if cache = true component won't be deployed again
    use_cache = false
    # Type can be one of: anvil geth besu solana aptos tron sui ton canton, this struct describes common configuration we are using across all blockchains
    type = ''
    # Blockchain family, can be one of: evm solana aptos sui tron ton canton
    family = ''
    # Blockchain Docker container name
    container_name = ''
    # Chain ID
    chain_id = ''

    # Blockchain network-specific data
    [blockchains.out.network_specific_data]
      # Sui network account info
      [blockchains.out.network_specific_data.sui_account]
        # Alias key name, usually null
        alias = ''
        # -
        flag = 0
        # Sui key scheme
        key_scheme = ''
        # Sui key mnemonic
        mnemonic = ''
        # Sui key peer ID
        peer_id = ''
        # Sui key in base64 format
        public_base64_key = ''
        # Sui key address
        sui_address = ''

      # Canton network endpoints info
      [blockchains.out.network_specific_data.canton_endpoints]
        # https://docs.sync.global/app_dev/scan_api/index.html
        scan_api_url = ''
        # https://docs.sync.global/app_dev/token_standard/index.html#api-references
        registry_api_url = ''

        # Canton network super validator
        [blockchains.out.network_specific_data.canton_endpoints.super_validator]
          # https://docs.digitalasset.com/build/3.5/reference/json-api/json-api.html
          json_ledger_api_url = ''
          # https://docs.digitalasset.com/build/3.5/reference/lapi-proto-docs.html
          grpc_ledger_api_url = ''
          # https://docs.digitalasset.com/operate/3.5/howtos/configure/apis/admin_api.html
          admin_api_url = ''
          # https://docs.sync.global/app_dev/validator_api/index.html
          validator_api_url = ''
          # HTTP health check endpoint, responds on GET /health
          http_health_check_url = ''
          # GRPC health check endpoint, responds to grpc.health.v1.Health/Check
          grpc_health_check_url = ''
          # JSON Web Token for this participant
          jwt = ''

        # Canton participant endpoints
        [[blockchains.out.network_specific_data.canton_endpoints.participants]]
          # https://docs.digitalasset.com/build/3.5/reference/json-api/json-api.html
          json_ledger_api_url = ''
          # https://docs.digitalasset.com/build/3.5/reference/lapi-proto-docs.html
          grpc_ledger_api_url = ''
          # https://docs.digitalasset.com/operate/3.5/howtos/configure/apis/admin_api.html
          admin_api_url = ''
          # https://docs.sync.global/app_dev/validator_api/index.html
          validator_api_url = ''
          # HTTP health check endpoint, responds on GET /health
          http_health_check_url = ''
          # GRPC health check endpoint, responds to grpc.health.v1.Health/Check
          grpc_health_check_url = ''
          # JSON Web Token for this participant
          jwt = ''

    # Blockchain nodes info
    [[blockchains.out.nodes]]
      # External blockchain node WebSocket URL
      ws_url = ''
      # External blockchain node HTTP URL
      http_url = ''
      # Internal blockchain node WebSocket URL
      internal_ws_url = ''
      # Internal blockchain node HTTP URL
      internal_http_url = ''

  # Solana's programs, map of program name to program ID, there needs to be a matching .so file in contracts_dir
  [blockchains.solana_programs]

  # Docker container resources
  [blockchains.resources]
    # CPU shares, ex.: 2
    cpus = 0.0
    # Memory in MegaBytes, ex.:"200"
    memory_mb = 0

  # Docker container environment variables in TOML format key = value
  [blockchains.custom_env]

Node Set

Chainlink node set forming a Decentralized Oracle Network.

[[nodesets]]
  # Node set name, ex.:'don-1', Docker containers will be prefixed with this name so tests can distinguish one DON from another
  name = ''
  # Number of nodes in node set
  nodes = 0
  # HTTP ports range starting with port X and increasing by 1
  http_port_range_start = 0
  # P2P ports range starting with port X and increasing by 1
  p2p_port_range_start = 0
  # Delve debugger ports range starting with port X and increasing by 1
  dlv_port_range_start = 0
  # Override mode, applicable only to 'localcre'. Changes how config overrides to TOML nodes apply
  override_mode = ''
  # Turn DNS on, helpful to isolate container from the internet
  no_dns = false

  # Shared node set data base input for PostgreSQL
  [nodesets.db]
    # PostgreSQL Docker image in format: $registry:$tag
    image = ''
    # PostgreSQL connection port
    port = 0
    # PostgreSQL container name
    name = ''
    # PostgreSQL docker volume name
    volume_name = ''
    # Number of pre-created databases for Chainlink nodes
    databases = 0
    # Whether to create JobDistributor database or not
    jd_database = false
    # JobDistributor database dump path to load
    jd_sql_dump_path = ''
    # Whether to pull PostgreSQL image or not
    pull_image = false

    # Docker container resources
    [nodesets.db.resources]
      # CPU shares, ex.: 2
      cpus = 0.0
      # Memory in MegaBytes, ex.:"200"
      memory_mb = 0

    # PostgreSQL config output
    [nodesets.db.out]
      # PostgreSQL connection URL
      url = ''
      # Docker container name
      container_name = ''
      # PostgreSQL internal connection URL
      internal_url = ''
      # PostgreSQL internal connection URL to JobDistributor database
      jd_url = ''
      # PostgreSQL internal connection URL to JobDistributor database
      jd_internal_url = ''

  # Chainlink node TOML configurations
  [[nodesets.node_specs]]
    # whether to allow DNS in Docker containers or not, useful for isolating containers from network if set to 'false'
    no_dns = false

    # PostgreSQL database configuration
    [nodesets.node_specs.db]
      # PostgreSQL Docker image in format: $registry:$tag
      image = ''
      # PostgreSQL connection port
      port = 0
      # PostgreSQL container name
      name = ''
      # PostgreSQL docker volume name
      volume_name = ''
      # Number of pre-created databases for Chainlink nodes
      databases = 0
      # Whether to create JobDistributor database or not
      jd_database = false
      # JobDistributor database dump path to load
      jd_sql_dump_path = ''
      # Whether to pull PostgreSQL image or not
      pull_image = false

      # Docker container resources
      [nodesets.node_specs.db.resources]
        # CPU shares, ex.: 2
        cpus = 0.0
        # Memory in MegaBytes, ex.:"200"
        memory_mb = 0

      # PostgreSQL config output
      [nodesets.node_specs.db.out]
        # PostgreSQL connection URL
        url = ''
        # Docker container name
        container_name = ''
        # PostgreSQL internal connection URL
        internal_url = ''
        # PostgreSQL internal connection URL to JobDistributor database
        jd_url = ''
        # PostgreSQL internal connection URL to JobDistributor database
        jd_internal_url = ''

    # Chainlink node configuration
    [nodesets.node_specs.node]
      # Chainlink node Docker image in format $registry:$tag
      image = ''
      # Chainlink node Docker container name
      name = ''
      # Docker file path to rebuild, relative to 'docker_ctx' field path
      docker_file = ''
      # Docker build context path
      docker_ctx = ''
      # Whether to pull Docker image or not
      pull_image = false
      # Chainlink CRE capabilities paths for WASM binaries
      capabilities = []
      # path to capabilities inside Docker container (capabilities are copied inside container from local path)
      capabilities_container_dir = ''
      # node config overrides field for programmatic usage in tests
      test_config_overrides = ''
      # node config overrides field for manual overrides from env.toml configs
      user_config_overrides = ''
      # node secrets config overrides field for programmatic usage in tests
      test_secrets_overrides = ''
      # node secrets config overrides field for manual overrides from env.toml configs
      user_secrets_overrides = ''
      # Chainlink node API HTTP port
      port = 0
      # Chainlink node P2P port
      p2p_port = 0
      # Custom ports pairs in format $host_port_number:$docker_port_number
      custom_ports = []
      # Delve debugger port
      debugger_port = 0

      # Docker build args in format key = value or map format, ex.: "CL_IS_PROD_BUILD" = "false" 
      [nodesets.node_specs.node.docker_build_args]

      # Docker container resources
      [nodesets.node_specs.node.resources]
        # CPU shares, ex.: 2
        cpus = 0.0
        # Memory in MegaBytes, ex.:"200"
        memory_mb = 0

      # Docker container environment variables
      [nodesets.node_specs.node.env_vars]

    # Chainlink node configuration output
    [nodesets.node_specs.out]
      # Whether to respect caching or not, if cache = true component won't be deployed again
      use_cache = false

      # Chainlink node config output
      [nodesets.node_specs.out.node]
        # User name for basic login/password authorization in Chainlink node
        api_auth_user = ''
        # Password for basic login/password authorization in Chainlink node
        api_auth_password = ''
        # Node Docker contaner name
        container_name = ''
        # Node external API HTTP URL
        url = ''
        # Node internal API HTTP URL
        internal_url = ''
        # Node internal P2P URL
        p2p_internal_url = ''
        # Node internal IP
        internal_ip = ''

      # PostgreSQL config output
      [nodesets.node_specs.out.postgresql]
        # PostgreSQL connection URL
        url = ''
        # Docker container name
        container_name = ''
        # PostgreSQL internal connection URL
        internal_url = ''
        # PostgreSQL internal connection URL to JobDistributor database
        jd_url = ''
        # PostgreSQL internal connection URL to JobDistributor database
        jd_internal_url = ''

  # Nodeset config output
  [nodesets.out]
    # Whether to respect caching or not, if cache = true component won't be deployed again
    use_cache = false

    # Nodeset shared database output (PostgreSQL)
    [nodesets.out.db_out]
      # PostgreSQL connection URL
      url = ''
      # Docker container name
      container_name = ''
      # PostgreSQL internal connection URL
      internal_url = ''
      # PostgreSQL internal connection URL to JobDistributor database
      jd_url = ''
      # PostgreSQL internal connection URL to JobDistributor database
      jd_internal_url = ''

    # Chainlink node config outputs
    [[nodesets.out.cl_nodes]]
      # Whether to respect caching or not, if cache = true component won't be deployed again
      use_cache = false

      # Chainlink node config output
      [nodesets.out.cl_nodes.node]
        # User name for basic login/password authorization in Chainlink node
        api_auth_user = ''
        # Password for basic login/password authorization in Chainlink node
        api_auth_password = ''
        # Node Docker contaner name
        container_name = ''
        # Node external API HTTP URL
        url = ''
        # Node internal API HTTP URL
        internal_url = ''
        # Node internal P2P URL
        p2p_internal_url = ''
        # Node internal IP
        internal_ip = ''

      # PostgreSQL config output
      [nodesets.out.cl_nodes.postgresql]
        # PostgreSQL connection URL
        url = ''
        # Docker container name
        container_name = ''
        # PostgreSQL internal connection URL
        internal_url = ''
        # PostgreSQL internal connection URL to JobDistributor database
        jd_url = ''
        # PostgreSQL internal connection URL to JobDistributor database
        jd_internal_url = ''