6.2 KiB
Linea plugins
Shared components
Profitability calculator
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_estimateGasendpoint- Tx validation for the txpool (if tx profitability check is enabled)
- Tx selection during block creation
CLI options
| 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 |
Module line count validator
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_estimateGasendpoint- Tx validation for the txpool (if tx simulation is enabled)
- Tx selection during block creation
CLI options
| Command Line Argument | Default Value |
|---|---|
--plugin-linea-module-limit-file-path |
moduleLimitFile.toml |
--plugin-linea-over-line-count-limit-cache-size |
10_000 |
L1<>L2 bridge
These values are just passed to the ZkTracer
CLI Options
| Command Line Argument | Default Value |
|---|---|
--plugin-linea-l1l2-bridge-contract |
|
--plugin-linea-l1l2-bridge-topic |
Sequencer
Transaction selection - LineaTransactionSelectorPlugin
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.
CLI options
| 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 |
Transaction validation - LineaTransactionPoolValidatorPlugin
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.
CLI options
| 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 |
Reporting rejected transactions
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 |
RPC methods
Linea Estimate Gas
linea_estimateGas
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.
Parameters
same as eth_estimateGas
Result
{
"jsonrpc": "2.0",
"id": 53,
"result": {
"gasLimit": "0x5208",
"baseFeePerGas": "0x7",
"priorityFeePerGas": "0x123456"
}
}
Linea Set Extra Data
linea_setExtraData
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.
Parameters
same as miner_setExtraData with the added constraint that the number of bytes must be 32
Result
{
"jsonrpc": "2.0",
"id": 53,
"result": "true"
}