EthereumTransaction lets you execute a raw, RLP-encoded Ethereum transaction on the Hedera network. Legacy, access list (EIP-2930), and dynamic fee (EIP-1559) transactions are supported; see Supported Ethereum transaction types. This enables developers familiar with EVM tooling to reuse their existing knowledge and infrastructure when interacting with the Hedera Smart Contract Service (HSCS).
| Field | Description |
|---|---|
| Ethereum Data | An RLP-encoded Ethereum transaction (legacy, EIP-2930, or EIP-1559) to execute on the Hedera network. This enables developers to leverage existing EVM tooling and workflows with the Hedera Smart Contract Service (HSCS). |
| Call Data File ID | An optional field referencing a file on the Hedera File Service (HFS) containing the callData. When set, the network ignores the callData in ethereumData during execution and instead loads the data from the referenced file. However, the full callData must still be present in the originally signed ethereumData for signature validation. In this case, ethereumData will contain a placeholder where callData normally resides, and the transaction must be “rehydrated” with the HFS content during validation.Note: With HIP-1086, jumbo ethereumData is the preferred approach for large payloads, but callDataFileId remains supported for oversized payloads or legacy workflows. |
| Max Allowance | The maximum amount of HBAR (specified in tinybars) the payer is willing to cover for the gas consumed during transaction execution. This value acts as a ceiling if the actual gas cost (determined by Ordinarily, the account with the ECDSA alias extracted from the |
Supported Ethereum transaction types
EthereumTransaction accepts RLP-encoded Ethereum transactions of the following types:
max_priority_fee_per_gas) is ignored on Hedera because network fees are fixed by the fee schedule rather than a priority market.
Access lists (EIP-2930)
A type 1 (and type 2) transaction can carry anaccessList: a list of addresses and storage keys the transaction expects to touch. Pre-declaring these accesses marks them “warm,” lowering the gas cost of the first access to each. An access list is encoded as an array of { address, storageKeys } entries:
eth_sendRawTransaction) or directly to HAPI via EthereumTransaction, where the access list is part of the RLP-encoded ethereumData.
Handling Large callData Payloads
HIP-1086 introduced support for jumbo Ethereum transactions, allowingethereumData to directly include callData up to 24KB for contract creation and 128KB for contract calls. This removes the need to use callDataFileId for many large payloads. The rest of the protobuf wrapper (signatures, node account ID, etc.) must still fit within 2KB.
Gas Calculation for callData
The gas cost for thecallData in jumbo EthereumTransaction is calculated as:
gasLimit (in the RLP-encoded transaction) and maxGasAllowance (in the wrapper) are set high enough.
📣 For detailed gas and fee calculation, refer to the Gas and Fees page.
Quick reference: Jumbo vs Standard Transactions
| Feature | Jumbo Ethereum Transaction | Standard Ethereum Transaction |
|---|---|---|
| callData Size Limit | 24KB (creation) / 128KB (call) | ~6KB total transaction size |
| callDataFileId Needed? | Only if limits exceeded | Always for large payloads |
| Gas Calculation | Always for large payloads | Same |
| Batch Inclusion | Not supported | Supported |
| Network Throttling | Dedicated throttle bucket | Standard throttling |
Transaction Signing Requirements
The transaction must be signed by the key of the fee-paying account. ForEthereumTransaction, this is:
- The account with the ECDSA alias derived from the public key in
ethereumData, if sufficient gas and fees are authorized. - If the authorized fee from the Ethereum sender is insufficient, the payer of the transaction is charged up to the
maxGasAllowance. - For jumbo transactions, ensure the payer’s key is included and
maxGasAllowanceis set high enough to cover potential gas and fees.
Transaction Fees
The total transaction cost includes:- Base transaction fee
- Gas for
callData, (calculated as:4 × zero bytes + 16 × non-zero bytes) - Execution gas determined by EVM smart contract logic