Skip to content

Commit

Permalink
Update EIP-6493: Define engine API for SSZ Transaction
Browse files Browse the repository at this point in the history
Merged by EIP-Bot.
  • Loading branch information
etan-status authored May 27, 2024
1 parent 4153e95 commit 3b79d68
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions EIPS/eip-6493.md
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,44 @@ The semantics of the [`types` element](./eip-5793.md) in transaction gossip anno
| `0x02` | [EIP-1559](./eip-1559.md) transaction |
| `0x03` | [EIP-4844](./eip-4844.md) transaction, or SSZ `PooledTransaction` with `blob_data` |

### Engine API

When exchanging via the engine API, the structure of the `transactions` field in `ExecutionPayload` versions adopting this EIP is changed from `Array of DATA` to `Array of TransactionV1`.

`TransactionV1` is defined to map onto the SSZ `Transaction` `StableContainer`, as follows:

- `payload`: `TransactionPayloadV1` - An `OBJECT` containing the fields of a `TransactionPayloadV1` structure
- `signature`: `TransactionSignatureV1` - An `OBJECT` containing the fields of a `TransactionSignatureV1` structure

`TransactionPayloadV1` is defined to map onto the SSZ `TransactionPayload` `StableContainer`, as follows:

- `type`: `QUANTITY|null`, 8 Bits or `null`
- `chainId`: `QUANTITY|null`, 64 Bits or `null`
- `nonce`: `QUANTITY|null`, 64 Bits or `null`
- `maxFeesPerGas`: `FeesPerGasV1|null` - An `OBJECT` containing the fields of a `FeesPerGasV1` structure or `null`
- `gas`: `QUANTITY|null`, 64 Bits or `null`
- `to`: `DATA|null`, 20 Bytes or `null`
- `value`: `QUANTITY|null`, 256 Bits or `null`
- `input`: `DATA|null`, 0 through `MAX_CALLDATA_SIZE` bytes or `null`
- `accessList`: `Array of AccessTupleV1` - 0 through `MAX_ACCESS_LIST_SIZE` `OBJECT` entries each containing the fields of an `AccessTupleV1` structure, or `null`
- `maxPriorityFeesPerGas`: `FeesPerGasV1|null` - An `OBJECT` containing the fields of a `FeesPerGasV1` structure or `null`
- `blobVersionedHashes`: `Array of DATA|null` - 0 through `MAX_BLOB_COMMITMENTS_PER_BLOCK` `DATA` entries each containing 32 Bytes, or `null`

`FeesPerGasV1` is defined to map onto the SSZ `FeesPerGas` `StableContainer`, as follows:

- `regular`: `QUANTITY|null`, 256 Bits or `null`
- `blob`: `QUANTITY|null`, 256 Bits or `null`

`AccessTupleV1` is defined to map onto the SSZ `AccessTuple` `Container`, as follows:

- `address`: `DATA`, 20 Bytes
- `storageKeys`: `Array of DATA` - 0 through `MAX_ACCESS_LIST_STORAGE_KEYS` `DATA` entries each containing 32 Bytes

`TransactionSignatureV1` is defined to map onto the SSZ `TransactionSignature` `StableContainer`, as follows:

- `from`: `DATA|null`, 20 Bytes or `null`
- `ecdsaSignature`: `DATA|null`, 65 Bytes or `null`

## Rationale

### Why SSZ transactions?
Expand Down

0 comments on commit 3b79d68

Please sign in to comment.