From b311c095fe868bcf7e5d53987e635de564ec43a2 Mon Sep 17 00:00:00 2001 From: Arran Schlosberg Date: Thu, 19 Jun 2025 12:51:07 +0100 Subject: [PATCH 1/2] update named-block label definitions --- .../README.md | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/ACPs/194-streaming-asynchronous-execution/README.md b/ACPs/194-streaming-asynchronous-execution/README.md index 510f8ce4..34ad0583 100644 --- a/ACPs/194-streaming-asynchronous-execution/README.md +++ b/ACPs/194-streaming-asynchronous-execution/README.md @@ -403,15 +403,21 @@ In particular, the API method `eth_getBlockReceipts` MUST return the receipts co #### Named blocks The Ethereum Mainnet APIs allow for retrieving blocks by named parameters that the API server resolves based on their consensus mechanism. -Other than the _earliest_ (genesis) named block, which MUST be interpreted in the same manner, all other named blocks are mapped to SAE in terms of the _execution_ status of blocks and MUST be interpreted as follows: +C-Chain does not currently support _pending_, _safe_, and _finalized_ labels. +This ACP modifies the meaning of _latest_ and adopts an altered definition of _safe_, which MUST each be resolved as: - * _pending_: the most recently _accepted_ block; - * _latest_: the block that was most recently _executed_; - * _safe_ and _finalized_: the block that was most recently _settled_. + * _latest_: the block that was most recently _executed_; and + * _safe_: the block that was most recently _settled_. -> [!NOTE] -> The finality guarantees of Snowman consensus remove any distinction between _safe_ and _finalized_. -> Furthermore, the _latest_ block is not at risk of re-org, only of a negligible risk of data corruption local to the API node. +The interpretation of _latest_ with respect to execution instead of consensus creates APIs that give the illusion of synchronous execution. +This is useful for integration with existing tooling, especially wallets. +The block number returned by APIs MUST, similarly, correspond to _latest_. + +Unlike Ethereum's treatment of the _safe_ label (denoting a degree of safety against re-org) under this ACP, safety is absolute and with respect to hard-drive corruption on a specific node, which could result in invalid state. +Such corruption is rare, and waiting for a _safe_ block is therefore only necessary for the most sensitive of applications. +Similar guarantees can also be achieved by comparing a block's post-execution state root across multiple trusted nodes—all would have to be corrupted in the exact same way for such a check to result in a false negative. + +The finality guarantees of Snowman consensus obviate the need for a _finalized_ label. ### Observations around transaction prioritisation From 724696bad1286c1ad0e95263a37cbb742d5b91d8 Mon Sep 17 00:00:00 2001 From: Arran Schlosberg Date: Thu, 26 Jun 2025 09:44:55 +0100 Subject: [PATCH 2/2] fix: current C-Chain support of named blocks --- ACPs/194-streaming-asynchronous-execution/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ACPs/194-streaming-asynchronous-execution/README.md b/ACPs/194-streaming-asynchronous-execution/README.md index 34ad0583..4af20be2 100644 --- a/ACPs/194-streaming-asynchronous-execution/README.md +++ b/ACPs/194-streaming-asynchronous-execution/README.md @@ -403,8 +403,8 @@ In particular, the API method `eth_getBlockReceipts` MUST return the receipts co #### Named blocks The Ethereum Mainnet APIs allow for retrieving blocks by named parameters that the API server resolves based on their consensus mechanism. -C-Chain does not currently support _pending_, _safe_, and _finalized_ labels. -This ACP modifies the meaning of _latest_ and adopts an altered definition of _safe_, which MUST each be resolved as: +C-Chain does not currently differentiate between _pending_, _safe_, and _finalized_ labels. +This ACP removes support for _finalized_, and modifies the meanings of _latest_ and _safe_, which MUST each be resolved as: * _latest_: the block that was most recently _executed_; and * _safe_: the block that was most recently _settled_.