Skip to main content

Linea prover configuration reference

Advanced options

Some configuration keys are operational or environment-specific and are included for completeness. Their presence does not indicate that changing them is recommended or supported for every deployment. Verify their applicability against the relevant release and deployment guidance.

Defaults

Defaults are values defined in the prover Go source (config_default.go). They are not recommended production settings and may be overridden by deployment configuration. Sample config-*.toml files are never used as the source of defaults.

This reference lists Linea prover TOML configuration keys, grouped by section. Descriptions come from Go doc comments on the config structs; defaults are shown in the Default column.

Generated from LFDT-Lineth/lineth-monorepo@555fa72.

Options may differ in other Linea prover releases.

Top-level

Config keyDescriptionDefaultTypeAllowed / required
assets_dirAssetsDir stores the root of the directory where the assets are stored (setup) or accessed (prover).string
environmentEnvironment is informational only — it indicates which environment (e.g. devnet, sepolia, mainnet) the config file targets. It is not used for setup paths or any runtime logic; all environments share the same setup and are differentiated only by layer2 public inputs.string
log_levelLogLevel sets the log level for the logger.uint8required; gte=0; lte=6
versionif we supply as is to coordinator in responses, coordinator should parse semverstringrequired; semver

Controller

Config keyDescriptionDefaultTypeAllowed / required
controller.defer_to_other_large_codesList of exit codes for which the job will put back the job to be reexecuted in large mode.[137][]int
controller.enable_aggregationEnableAggregation controls whether aggregation jobs are picked up.truebool
controller.enable_data_availabilityEnableDataAvailability controls whether data-availability jobs are picked up.truebool
controller.enable_executionEnableExecution controls whether execution jobs are picked up.truebool
controller.enable_invalidityEnableInvalidity controls whether invalidity jobs are picked up.truebool
controller.prometheus.enabledEnabled toggles the Prometheus metrics endpoint on or off.bool
controller.prometheus.portPort for the metrics endpoint; defaults to 9090 (Prometheus library default, not set by the prover).int
controller.prometheus.routeThe default implementation default to /metrics. The route should be prefixed with a "/". If it is not, the underlying implementation will assign it.string
controller.retry_delaysThe delays at which we retry when we find no files in the queue. If this is set to [0, 1, 2, 3, 4, 5]. It will retry after 0 sec the first time it cannot find a file in the queue, 1 sec the second time and so on. Once it reaches the final value it keeps it as a final retry delay.[0, 1, 2, 3, 5, 8, 13, 21, 44, 85][]int
controller.retry_locally_with_large_codesList of exit codes for which the job will retry in large mode[77, 333, 2][]int
controller.spot_instance_reclaim_time_secondsThe number of seconds infra (AWS) waits before reclaiming a spot instance120int
controller.termination_grace_period_secondsThe number of seconds the controller should wait before killing a worker after receiving a SIGTERM2700int
controller.worker_cmd_large_tmplWorkerCmdLarge is the template string for spawning a large-mode worker process.prover prove --config \{\{.ConfFile\}\} --in \{\{.InFile\}\} --out \{\{.OutFile\}\} --largestring
controller.worker_cmd_tmplWorkerCmd is the template string for spawning a standard worker process.prover prove --config \{\{.ConfFile\}\} --in \{\{.InFile\}\} --out \{\{.OutFile\}\}string

Execution

Config keyDescriptionDefaultTypeAllowed / required
execution.can_run_full_largeCanRunFullLarge indicates whether the prover is running on a large machine (and can run full large traces).bool
execution.conflated_traces_dirConflatedTracesDir stores the directory where the conflation traces are stored./shared/traces/conflatedstringrequired
execution.ignore_compatibility_checkIgnoreCompatiblityCheck indicates whether to ignore constaints version checking between trace files and zkevm.bin constraint files. Specifically, this check ensures that the zkevm.bin file used within the prover was generated from the same commit of linea-constraints as the generated lt trace file. Set this to true to disable compatibility checks (default: false).falsebool
execution.keep_traces_until_blockKeepTraceUntil is an optional parameter (default to 0) that indicates a maximum block height under which the prover will not delete the execution traces from EFS. The block height that is compared to this value is the "end" block of the request range.int
execution.limitless_with_debugLimitlessWithDebug is only looked at when the limitless prover is activated. When set to true, the limitless prover will only run in debug mode and not produce any proof. This is useful to investigate bugs in the limitless prover. The field is optional and defaults to false.bool
execution.prover_modeProverMode stores the kind of prover to use.stringrequired; dev|partial|full|proofless|bench|check-only|limitless
execution.requests_root_dirRequestsRootDir is the root directory for incoming job requests and completed results./shared/prover-executionstringrequired
execution.serializationSerialization enables loading the inner circuit (wizard IOP) from a serialized file on disk via memory-mapping, instead of compiling it at proving time. The file is produced during setup by protocol/serde.falsebool

Data availability

Config keyDescriptionDefaultTypeAllowed / required
data_availability.dict_nb_bytesDictNbBytes is the number of bytes in the prover dictionary.65536intgt=0
data_availability.dict_pathsDictPaths points to dictionaries used for decompressing executions data stored in the DA layer.[]string
data_availability.max_nb_batchesMaxNbBatches is the maximum number of execution batches allowed in a single DA proof.100intrequired; gt=0
data_availability.max_uncompressed_nb_bytesMaxUncompressedNbBytes is the maximum number of bytes in the uncompressed blob payload.intrequired; gt=0
data_availability.prover_modeProverMode stores the kind of prover to use.stringrequired; dev|full
data_availability.requests_root_dirRequestsRootDir is the root directory for incoming job requests and completed results./shared/prover-compressionstringrequired

Invalidity

Config keyDescriptionDefaultTypeAllowed / required
invalidity.can_run_full_largeCanRunFullLarge indicates whether the prover can run with large trace limits.bool
invalidity.limitless_with_debugLimitlessWithDebug is only looked at when the limitless invalidity prover is activated. When set to true, the limitless invalidity prover will only run in debug mode and not produce any proof. This is useful to investigate bugs in the limitless invalidity prover. The field is optional and defaults to false.bool
invalidity.max_rlp_byte_sizeMaxRlpByteSize specifies the maximum size of the RLP-encoded data, in bytes (this is the payload size without signature)intgte=0
invalidity.prover_modeProverMode stores the kind of prover to use.stringrequired; dev|partial|full|limitless
invalidity.requests_root_dirRequestsRootDir is the root directory for incoming job requests and completed results./shared/prover-invaliditystringrequired

Aggregation

Config keyDescriptionDefaultTypeAllowed / required
aggregation.is_allowed_circuit_idIsAllowedCircuitID is a bitmask encoding which circuit IDs are allowed. Bit i (LSb to MSb) indicates whether circuit ID i is allowed. This should be computed based on the environment (testnet vs mainnet). Use circuits.GlobalCircuitIDMapping to set the appropriate bits.uint64required
aggregation.num_proofsNumProofs is the list of supported aggregation batch sizes (circuit variants), e.g. [10, 20, 50, 100].[]intrequired; gt=0
aggregation.prover_modeProverMode stores the kind of prover to use.stringrequired; dev|full
aggregation.requests_root_dirRequestsRootDir is the root directory for incoming job requests and completed results./shared/prover-aggregationstringrequired
aggregation.verifier_idVerifierID is assigned to the proof and used by L1 contracts to select the Solidity Plonk verifier contract.intgte=0

Public input interconnection

Config keyDescriptionDefaultTypeAllowed / required
public_input_interconnection.execution_max_nb_msgExecutionMaxNbMsg is the max number of L2-to-L1 messages per execution proof.intgte=0
public_input_interconnection.l2_msg_max_nb_merkleL2MsgMaxNbMerkle is the max number of L2-to-L1 Merkle trees per aggregation; auto-computed when zero.intgte=0
public_input_interconnection.l2_msg_merkle_depthL2MsgMerkleDepth is the depth of each L2-to-L1 message Merkle tree.intgte=0
public_input_interconnection.max_nb_circuitsMaxNbCircuits is an optional combined cap across all proof types; zero disables the check.intgte=0
public_input_interconnection.max_nb_data_availabilityMaxNbDataAvailability is the max number of DA proofs per aggregation.intgte=0
public_input_interconnection.max_nb_executionMaxNbExecution is the max number of execution proofs per aggregation.intgte=0
public_input_interconnection.max_nb_invalidityMaxNbInvalidity is the max number of invalidity proofs per aggregation.intgte=0

Debug

Config keyDescriptionDefaultTypeAllowed / required
debug.performance_monitor.activeActive enables granular per-step or per-round CPU profiling of the prover.falsebool
debug.performance_monitor.profileProfile selects the profiling scope: "prover-steps", "prover-rounds", or "all".prover-roundsstringprover-steps|prover-rounds|all
debug.performance_monitor.profile_dirProfileDir is the directory where performance profile files are written./shared/prover-execution/profilingstring
debug.performance_monitor.sample_durationSampleDuration is the sampling interval used when collecting performance profiles.1stime.Duration
debug.profilingProfiling indicates whether we want to generate profiles using the [runtime/pprof] pkg. Profiles the entire execution proof request-response lifecyclefalsebool
debug.tracingTracing indicates whether we want to generate traces using the [runtime/trace] pkg. Traces can later be read using the `go tool trace` command.falsebool

Layer2

Config keyDescriptionDefaultTypeAllowed / required
layer2.base_feeNo validator tag: presence is enforced in newConfigFromFile via viper.IsSet. `required` would reject 0, which is valid on gasless chains where every block has baseFeePerGas=0.uint
layer2.chain_idChainID stores the ID of the Linea L2 network to consider.uintrequired
layer2.coin_baseCoinBaseStr stores the coinbase address of Linea as a string.stringrequired; eth_addr
layer2.message_service_contractMsgSvcContractStr stores the unique ID of the Service Contract (SC), that is, it's address, as a string. The Service Contract (SC) is a smart contract that the L2 network uses to send messages (i.e., transactions) to the L1 (mainnet). Use this field when you need the ETH address as a string.stringrequired; eth_addr

Traces limits

The traces_limits section configures per-arithmetization-module row budgets used during execution proving.

It is a list of module entries under traces_limits.modules, each with:

  • module (string, required) — module name prefix; the empty string is the default fallback
  • limit (int, required, power of 2) — limit used in normal mode
  • limit_large (int, required, power of 2) — limit used when large mode is active
  • is_not_scalable (bool, optional) — when true, limitless scaling must not multiply this entry

Lookup uses longest-prefix matching after sorting entries in reverse alphabetical order. Large mode (for example via --large) selects limit_large instead of limit. When a scaling factor is applied and is_not_scalable is false, the selected limit is multiplied.

Concrete module tables are environment-specific; see the prover sample config-*.toml files for examples. Those samples are not portable defaults and are not reproduced here.

Was this page helpful?