From 71ff609ebb24de661525291939afb2b1799cc6d0 Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Mon, 14 Nov 2022 17:02:52 -0300 Subject: [PATCH 1/4] add EIP-5793 dependency --- EIPS/eip-4844.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/EIPS/eip-4844.md b/EIPS/eip-4844.md index f33008e104e90..ef4f7f15636ac 100644 --- a/EIPS/eip-4844.md +++ b/EIPS/eip-4844.md @@ -8,7 +8,7 @@ status: Draft type: Standards Track category: Core created: 2022-02-25 -requires: 1559, 2718, 2930, 4895 +requires: 1559, 2718, 2930, 4895, 5793 --- ## Abstract @@ -468,10 +468,9 @@ instead, they go into the `BeaconBlockBody`. This means that there is now a part Blob transactions have a large data size at the mempool layer, which poses a mempool DoS risk, though not an unprecedented one as this also applies to transactions with large amounts of calldata. -We recommend two solutions: +[EIP-5793](./eip-5793.md) addresses this by adding the transaction type and size to eth/68 announcement messages. Nodes are thus expected to no longer broadcast large transactions - including blob transactions - by default. This allows nodes to load balance or throttle peers based on past behavior. -- include a 1.1x (or potentially higher) data gasprice bump requirement to the mempool replacement rules -- modify the Ethereum Wire Protocol to stop automatically broadcasting large transactions +In addition, we recommend including a 1.1x data gasprice bump requirement to the mempool transaction replacement rules. ## Test Cases From 75f34cf77dfee4c6fda35c5042027bdb4f57801b Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Tue, 22 Nov 2022 01:40:22 -0300 Subject: [PATCH 2/4] specify no blob tx broadcast --- EIPS/eip-4844.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/EIPS/eip-4844.md b/EIPS/eip-4844.md index ef4f7f15636ac..9ea13e1d6e24b 100644 --- a/EIPS/eip-4844.md +++ b/EIPS/eip-4844.md @@ -8,7 +8,7 @@ status: Draft type: Standards Track category: Core created: 2022-02-25 -requires: 1559, 2718, 2930, 4895, 5793 +requires: 1559, 2718, 2930, 4895 --- ## Abstract @@ -322,6 +322,8 @@ The actual `data_fee` as calculated via `calc_data_fee` is deducted from the sen ### Networking +Blob transactions are not automatically broadcast to peers. Instead, they are only announced using `NewPooledTransactionHashes` messages, and can then be manually requested via `GetPooledTransactions`. + Transactions are presented as `TransactionType || TransactionNetworkPayload` on the execution layer network, the payload is a SSZ encoded container: @@ -468,7 +470,9 @@ instead, they go into the `BeaconBlockBody`. This means that there is now a part Blob transactions have a large data size at the mempool layer, which poses a mempool DoS risk, though not an unprecedented one as this also applies to transactions with large amounts of calldata. -[EIP-5793](./eip-5793.md) addresses this by adding the transaction type and size to eth/68 announcement messages. Nodes are thus expected to no longer broadcast large transactions - including blob transactions - by default. This allows nodes to load balance or throttle peers based on past behavior. +By only broadcasting announcements for blob transactions, nodes have control over which and how many transactions to receive, +allowing them to throttle throughput to an acceptable level. +[EIP-5793](./eip-5793.md) will give further fine-grained control to nodes by extending the `NewPooledTransactionHashes` announcement messages to include the transaction type and size. In addition, we recommend including a 1.1x data gasprice bump requirement to the mempool transaction replacement rules. From 1c63a3aad5139e143d7cd785d20cd77660a49ee7 Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Tue, 22 Nov 2022 02:18:51 -0300 Subject: [PATCH 3/4] Update EIPS/eip-4844.md Co-authored-by: xinbenlv --- EIPS/eip-4844.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-4844.md b/EIPS/eip-4844.md index 9ea13e1d6e24b..2c4226b2da65b 100644 --- a/EIPS/eip-4844.md +++ b/EIPS/eip-4844.md @@ -470,7 +470,7 @@ instead, they go into the `BeaconBlockBody`. This means that there is now a part Blob transactions have a large data size at the mempool layer, which poses a mempool DoS risk, though not an unprecedented one as this also applies to transactions with large amounts of calldata. -By only broadcasting announcements for blob transactions, nodes have control over which and how many transactions to receive, +By only broadcasting announcements for blob transactions, receiving nodes will have control over which and how many transactions to receive, allowing them to throttle throughput to an acceptable level. [EIP-5793](./eip-5793.md) will give further fine-grained control to nodes by extending the `NewPooledTransactionHashes` announcement messages to include the transaction type and size. From 61961731849b88fe1aa98563923bbb29d9fd9a9d Mon Sep 17 00:00:00 2001 From: Ansgar Dietrichs Date: Tue, 22 Nov 2022 02:23:55 -0300 Subject: [PATCH 4/4] clarify mandatory behavior --- EIPS/eip-4844.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/EIPS/eip-4844.md b/EIPS/eip-4844.md index 2c4226b2da65b..0523c35bc575d 100644 --- a/EIPS/eip-4844.md +++ b/EIPS/eip-4844.md @@ -322,7 +322,8 @@ The actual `data_fee` as calculated via `calc_data_fee` is deducted from the sen ### Networking -Blob transactions are not automatically broadcast to peers. Instead, they are only announced using `NewPooledTransactionHashes` messages, and can then be manually requested via `GetPooledTransactions`. +Nodes must not automatically broadcast blob transactions to their peers. +Instead, those transactions are only announced using `NewPooledTransactionHashes` messages, and can then be manually requested via `GetPooledTransactions`. Transactions are presented as `TransactionType || TransactionNetworkPayload` on the execution layer network, the payload is a SSZ encoded container: