Source code for teatime.plugins.eth1.tx_limits

"""This module contains plugins around setting transaction-related limits."""
from teatime.plugins import Context, JSONRPCPlugin, NodeType
from teatime.reporting import Issue, Severity


[docs]class ParityTxCeiling(JSONRPCPlugin): """Try to set the maximum transaction gas. Severity: Critical Parity/OpenEthereum: https://openethereum.github.io/wiki/JSONRPC-parity_set-module#parity_setmaxtransactiongas """ INTRUSIVE = True def __init__(self, gas_limit: int): self.gas_limit = hex(gas_limit) def _check(self, context: Context) -> None: if context.node_type != NodeType.PARITY: return payload = self.get_rpc_json( context.target, method="parity_setMaxTransactionGas", params=[self.gas_limit], ) if payload: context.report.add_issue( Issue( title="Transaction maximum gas can be changed", description=( "Anyone can change the maximum transaction " "gas limit using the parity_setMaxTransactionGas RPC call." ), raw_data=payload, severity=Severity.CRITICAL, ) )
[docs]class ParityMinGasPrice(JSONRPCPlugin): """Try to set the minimum transaction gas price. Severity: Critical Parity/OpenEthereum: https://openethereum.github.io/wiki/JSONRPC-parity_set-module#parity_setmingasprice """ INTRUSIVE = True def __init__(self, gas_price: int): self.gas_price = hex(gas_price) def _check(self, context: Context) -> None: if context.node_type != NodeType.PARITY: return payload = self.get_rpc_json( context.target, method="parity_setMinGasPrice", params=[self.gas_price] ) if payload: context.report.add_issue( Issue( title="Transaction minimum gas can be changed", description=( "Anyone can change the minimum transaction gas limit " "using the parity_setMinGasPrice RPC call." ), raw_data=payload, severity=Severity.CRITICAL, ) )