From 5a75704e37304f02e611dcc9b9cee3607a76f2a2 Mon Sep 17 00:00:00 2001 From: terence tsao Date: Fri, 23 Dec 2022 14:02:33 +0800 Subject: [PATCH 1/6] Clarify behavior for empty blobs sidecar --- specs/eip4844/p2p-interface.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/specs/eip4844/p2p-interface.md b/specs/eip4844/p2p-interface.md index 420a6da057..2ab39ea096 100644 --- a/specs/eip4844/p2p-interface.md +++ b/specs/eip4844/p2p-interface.md @@ -226,6 +226,8 @@ The request MUST be encoded as an SSZ-container. The response MUST consist of zero or more `response_chunk`. Each _successful_ `response_chunk` MUST contain a single `BlobsSidecar` payload. +In cases where a slot contains empty blob, no `blobs_sidecar` is returned. + Clients MUST keep a record of signed blobs sidecars seen on the epoch range `[max(current_epoch - MIN_EPOCHS_FOR_BLOBS_SIDECARS_REQUESTS, EIP4844_FORK_EPOCH), current_epoch]` where `current_epoch` is defined by the current wall-clock time, @@ -247,6 +249,8 @@ disconnect and/or temporarily ban such an un-synced or semi-synced client. Clients MUST respond with at least the first blobs sidecar that exists in the range, if they have it, and no more than `MAX_REQUEST_BLOBS_SIDECARS` sidecars. +Clients MUST not respond with empty blobs sidecars. + The following blobs sidecars, where they exist, MUST be sent in consecutive order. Clients MAY limit the number of blobs sidecars in the response. From 42121adeb062a5f2bf9118720dc6c74c6caa61f1 Mon Sep 17 00:00:00 2001 From: terence tsao Date: Fri, 23 Dec 2022 14:30:30 +0800 Subject: [PATCH 2/6] Clarify what empty means --- specs/eip4844/p2p-interface.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/eip4844/p2p-interface.md b/specs/eip4844/p2p-interface.md index 2ab39ea096..3acfe65002 100644 --- a/specs/eip4844/p2p-interface.md +++ b/specs/eip4844/p2p-interface.md @@ -226,7 +226,7 @@ The request MUST be encoded as an SSZ-container. The response MUST consist of zero or more `response_chunk`. Each _successful_ `response_chunk` MUST contain a single `BlobsSidecar` payload. -In cases where a slot contains empty blob, no `blobs_sidecar` is returned. +In cases where a slot contains a `BlobSidecar` that does not contain any blobs, but contain non-zero `beacon_block_root` and `beacon_block_slot`, no `blobs_sidecar` is returned. Clients MUST keep a record of signed blobs sidecars seen on the epoch range `[max(current_epoch - MIN_EPOCHS_FOR_BLOBS_SIDECARS_REQUESTS, EIP4844_FORK_EPOCH), current_epoch]` From 518c49bbbabe4ddaa0d4cf1d6cc44bedd3598164 Mon Sep 17 00:00:00 2001 From: terencechain Date: Fri, 23 Dec 2022 20:47:14 +0800 Subject: [PATCH 3/6] Update specs/eip4844/p2p-interface.md Co-authored-by: g11tech --- specs/eip4844/p2p-interface.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/eip4844/p2p-interface.md b/specs/eip4844/p2p-interface.md index 3acfe65002..b01304ec8e 100644 --- a/specs/eip4844/p2p-interface.md +++ b/specs/eip4844/p2p-interface.md @@ -226,7 +226,7 @@ The request MUST be encoded as an SSZ-container. The response MUST consist of zero or more `response_chunk`. Each _successful_ `response_chunk` MUST contain a single `BlobsSidecar` payload. -In cases where a slot contains a `BlobSidecar` that does not contain any blobs, but contain non-zero `beacon_block_root` and `beacon_block_slot`, no `blobs_sidecar` is returned. +In cases where a slot contains a `BlobSidecar` that does not contain any blobs, but contain non-zero `beacon_block_root` and `beacon_block_slot`, `blobs_sidecar` **may be** skipped. Clients MUST keep a record of signed blobs sidecars seen on the epoch range `[max(current_epoch - MIN_EPOCHS_FOR_BLOBS_SIDECARS_REQUESTS, EIP4844_FORK_EPOCH), current_epoch]` From 491bb1d20778edd70cdac818f8ce392f5b73fcdf Mon Sep 17 00:00:00 2001 From: terence tsao Date: Fri, 23 Dec 2022 22:21:51 +0800 Subject: [PATCH 4/6] Clean ups --- specs/eip4844/p2p-interface.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specs/eip4844/p2p-interface.md b/specs/eip4844/p2p-interface.md index 3acfe65002..06a7634047 100644 --- a/specs/eip4844/p2p-interface.md +++ b/specs/eip4844/p2p-interface.md @@ -226,7 +226,7 @@ The request MUST be encoded as an SSZ-container. The response MUST consist of zero or more `response_chunk`. Each _successful_ `response_chunk` MUST contain a single `BlobsSidecar` payload. -In cases where a slot contains a `BlobSidecar` that does not contain any blobs, but contain non-zero `beacon_block_root` and `beacon_block_slot`, no `blobs_sidecar` is returned. +In cases where a slot contains a `BlobSidecar` that does not contain any blobs, but contain non-zero `beacon_block_root`, `beacon_block_slot` and a valid `kzg_aggregated_proof`, `blobs_sidecar` MAY be skipped. Clients MUST keep a record of signed blobs sidecars seen on the epoch range `[max(current_epoch - MIN_EPOCHS_FOR_BLOBS_SIDECARS_REQUESTS, EIP4844_FORK_EPOCH), current_epoch]` @@ -249,7 +249,7 @@ disconnect and/or temporarily ban such an un-synced or semi-synced client. Clients MUST respond with at least the first blobs sidecar that exists in the range, if they have it, and no more than `MAX_REQUEST_BLOBS_SIDECARS` sidecars. -Clients MUST not respond with empty blobs sidecars. +Clients MAY skip to respond empty blobs sidecars. The following blobs sidecars, where they exist, MUST be sent in consecutive order. From 96a553615ab5546296c58952c852daccbda8c013 Mon Sep 17 00:00:00 2001 From: terence tsao Date: Tue, 10 Jan 2023 10:28:19 -0800 Subject: [PATCH 5/6] Add rate limit suggestion --- specs/eip4844/p2p-interface.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/specs/eip4844/p2p-interface.md b/specs/eip4844/p2p-interface.md index ead9ba15c3..53199b6fd2 100644 --- a/specs/eip4844/p2p-interface.md +++ b/specs/eip4844/p2p-interface.md @@ -226,8 +226,6 @@ The request MUST be encoded as an SSZ-container. The response MUST consist of zero or more `response_chunk`. Each _successful_ `response_chunk` MUST contain a single `BlobsSidecar` payload. -In cases where a slot contains a `BlobSidecar` that does not contain any blobs, but contain non-zero `beacon_block_root`, `beacon_block_slot` and a valid `kzg_aggregated_proof`, `blobs_sidecar` may be skipped. - Clients MUST keep a record of signed blobs sidecars seen on the epoch range `[max(current_epoch - MIN_EPOCHS_FOR_BLOBS_SIDECARS_REQUESTS, EIP4844_FORK_EPOCH), current_epoch]` where `current_epoch` is defined by the current wall-clock time, @@ -249,12 +247,12 @@ disconnect and/or temporarily ban such an un-synced or semi-synced client. Clients MUST respond with at least the first blobs sidecar that exists in the range, if they have it, and no more than `MAX_REQUEST_BLOBS_SIDECARS` sidecars. -Clients MAY skip to respond empty blobs sidecars. - The following blobs sidecars, where they exist, MUST be sent in consecutive order. Clients MAY limit the number of blobs sidecars in the response. +Clients MAY not want to rate limit `BlobSidecar` that does not contain any blobs, but contain non-zero `beacon_block_root`, `beacon_block_slot` and a valid `kzg_aggregated_proof`. + The response MUST contain no more than `count` blobs sidecars. Clients MUST respond with blobs sidecars from their view of the current fork choice From 8d841c864b13d3c9be7505662d39e0c258c54a83 Mon Sep 17 00:00:00 2001 From: Danny Ryan Date: Wed, 11 Jan 2023 19:44:39 -0700 Subject: [PATCH 6/6] minor copy edit --- specs/eip4844/p2p-interface.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/specs/eip4844/p2p-interface.md b/specs/eip4844/p2p-interface.md index 53199b6fd2..f7c296aa8f 100644 --- a/specs/eip4844/p2p-interface.md +++ b/specs/eip4844/p2p-interface.md @@ -251,7 +251,8 @@ The following blobs sidecars, where they exist, MUST be sent in consecutive orde Clients MAY limit the number of blobs sidecars in the response. -Clients MAY not want to rate limit `BlobSidecar` that does not contain any blobs, but contain non-zero `beacon_block_root`, `beacon_block_slot` and a valid `kzg_aggregated_proof`. +An empty `BlobSidecar` is one that does not contain any blobs, but contains non-zero `beacon_block_root`, `beacon_block_slot` and a valid `kzg_aggregated_proof`. +Clients MAY NOT want to consider empty `BlobSidecar`s in rate limiting logic. The response MUST contain no more than `count` blobs sidecars.