The profitability calculator is a shared component, that is used to check if a tx is profitable. It's applied, with different configuration to:
linea_estimateGas
endpoint- Tx validation for the txpool (if tx profitability check is enabled)
- Tx selection during block creation
Command Line Argument | Default Value |
---|---|
--plugin-linea-fixed-gas-cost-wei |
0 |
--plugin-linea-variable-gas-cost-wei |
1_000_000_000 |
--plugin-linea-extra-data-pricing-enabled |
false |
--plugin-linea-min-margin |
1.0 |
--plugin-linea-estimate-gas-min-margin |
1.0 |
--plugin-linea-tx-pool-min-margin |
0.5 |
--plugin-linea-extra-data-set-min-gas-price-enabled |
true |
The Module line count validator is a shared component, that is used to check if a tx exceeds any of the configured line count limits. It is used in:
linea_estimateGas
endpoint- Tx validation for the txpool (if tx simulation is enabled)
- Tx selection during block creation
Command Line Argument | Default Value |
---|---|
--plugin-linea-module-limit-file-path |
moduleLimitFile.toml |
--plugin-linea-over-line-count-limit-cache-size |
10_000 |
These values are just passed to the ZkTracer
Command Line Argument | Default Value |
---|---|
--plugin-linea-l1l2-bridge-contract |
|
--plugin-linea-l1l2-bridge-topic |
This plugin extends the standard transaction selection protocols employed by Besu for block creation.
It leverages the TransactionSelectionService
to manage and customize the process of transaction selection.
This includes setting limits such as TraceLineLimit
, maxBlockGas
, and maxCallData
, and check the profitability
of a transaction.
The selectors are in the package net.consensys.linea.sequencer.txselection.selectors
.
Command Line Argument | Default Value |
---|---|
--plugin-linea-max-block-calldata-size |
70000 |
--plugin-linea-module-limit-file-path |
moduleLimitFile.toml |
--plugin-linea-over-line-count-limit-cache-size |
10_000 |
--plugin-linea-max-block-gas |
30_000_000L |
--plugin-linea-unprofitable-cache-size |
100_000 |
--plugin-linea-unprofitable-retry-limit |
10 |
This plugin extends the default transaction validation rules for adding transactions to the
transaction pool. It leverages the PluginTransactionValidatorService
to manage and customize the
process of transaction validation.
This includes setting limits such as TraceLineLimit
, maxTxGasLimit
, and maxTxCallData
, and checking the profitability
of a transaction.
The validators are in the package net.consensys.linea.sequencer.txpoolvalidation.validators
.
Command Line Argument | Default Value |
---|---|
--plugin-linea-deny-list-path |
lineaDenyList.txt |
--plugin-linea-max-tx-gas-limit |
30_000_000 |
--plugin-linea-max-tx-calldata-size |
60_000 |
--plugin-linea-tx-pool-simulation-check-api-enabled |
false |
--plugin-linea-tx-pool-simulation-check-p2p-enabled |
false |
--plugin-linea-tx-pool-profitability-check-api-enabled |
true |
--plugin-linea-tx-pool-profitability-check-p2p-enabled |
false |
The transaction selection and validation plugins can report rejected transactions as JSON-RPC calls to an external service. This feature can be enabled by setting the following CLI options:
Command Line Argument | Default Value | Expected Values |
---|---|---|
--plugin-linea-rejected-tx-endpoint |
null |
A valid URL e.g. http://localhost:9363 to enable reporting |
--plugin-linea-node-type |
null |
One of SEQUENCER , RPC , P2P |
This endpoint simulates a transaction, including line count limit validation, and returns the estimated gas used
(as the standard eth_estimateGas
with strict=true
) plus the estimated gas price to be used when submitting the tx.
same as eth_estimateGas
{
"jsonrpc": "2.0",
"id": 53,
"result": {
"gasLimit": "0x5208",
"baseFeePerGas": "0x7",
"priorityFeePerGas": "0x123456"
}
}
This endpoint is used to configure the extra data based pricing, and it only makes sense to call it on the sequencer.
Internally it sets runtime pricing configuration and then calls, via the in-process RPC service, miner_setExtraData
and miner_setMinGasPrice
to update internal Besu configuration, and add the extra data pricing to the future built blocks.
same as miner_setExtraData
with the added constraint that the number of bytes must be 32
{
"jsonrpc": "2.0",
"id": 53,
"result": "true"
}