Skip to content

Latest commit

 

History

History
145 lines (110 loc) · 6.16 KB

plugins.md

File metadata and controls

145 lines (110 loc) · 6.16 KB

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:

  1. linea_estimateGas endpoint
  2. Tx validation for the txpool (if tx profitability check is enabled)
  3. 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:

  1. linea_estimateGas endpoint
  2. Tx validation for the txpool (if tx simulation is enabled)
  3. 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"
}