Skip to content

Commit

Permalink
Update EIP-5793: update for change to types
Browse files Browse the repository at this point in the history
Merged by EIP-Bot.
  • Loading branch information
fjl authored Aug 18, 2023
1 parent 18726c8 commit 223a4b4
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion EIPS/eip-5793.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,21 @@ The added metadata fields will also enable future - upgradeless - protocol tweak
Modify the `NewPooledTransactionHashes (0x08)` message:

* **(eth/67)**: `[hash_0: B_32, hash_1: B_32, ...]`
* **(eth/68)**: `[[type_0: B_1, type_1: B_1, ...], [size_0: P, size_1: P, ...], [hash_0: B_32, hash_1: B_32, ...]]`
* **(eth/68)**: `[types: B, [size_0: P, size_1: P, ...], [hash_0: B_32, hash_1: B_32, ...]]`

The new `types` element refers to the transaction types of the announced hashes. Note the
transaction types are packed as a 'byte array' instead of a list.

The `size_0`, `size_1` etc. elements refer to the transaction sizes of the announced hashes.

## Rationale

This change will make the `eth` protocol future-proof for new transaction types that might not be relevant for all nodes. It gives the receiving node better control over the data it fetches from the peer as well as allow throttling the download of specific types.

The `types` message element is a byte array because early implementations of this EIP
erroneously implemented it that way. It was later decided to keep this behavior in order
to minimize work.

## Backwards Compatibility

This EIP changes the `eth` protocol and requires rolling out a new version, `eth/68`. Supporting multiple versions of a wire protocol is possible. Rolling out a new version does not break older clients immediately, since they can keep using protocol version `eth/67`.
Expand Down

0 comments on commit 223a4b4

Please sign in to comment.