From 7791a144c3e38baa11f7ec006806a80fb99ed654 Mon Sep 17 00:00:00 2001 From: Advaita Saha Date: Fri, 24 Jan 2025 18:31:49 +0530 Subject: [PATCH 1/4] clear re-org misconception --- nimbus/beacon/api_handler/api_forkchoice.nim | 2 +- nimbus/core/validate.nim | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nimbus/beacon/api_handler/api_forkchoice.nim b/nimbus/beacon/api_handler/api_forkchoice.nim index e887e2537..eb0f490a9 100644 --- a/nimbus/beacon/api_handler/api_forkchoice.nim +++ b/nimbus/beacon/api_handler/api_forkchoice.nim @@ -65,7 +65,7 @@ template validateHeaderTimestamp(header, com, apiVersion) = # See fCUV2 specification No.2 bullet 1 # https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/shanghai.md#specification-1 elif com.isShanghaiOrLater(header.timestamp): - if apiVersion != Version.V2: + if apiVersion != Version.V2 or apiVersion != Version.V3: raise invalidAttr("forkChoiceUpdated" & $apiVersion & " doesn't support head block with Shanghai timestamp") else: diff --git a/nimbus/core/validate.nim b/nimbus/core/validate.nim index 68ed07f2e..12a0abec8 100644 --- a/nimbus/core/validate.nim +++ b/nimbus/core/validate.nim @@ -267,7 +267,7 @@ proc validateTxBasic*( let maxBlobsPerBlock = getMaxBlobsPerBlock(com, fork) if tx.versionedHashes.len.uint64 > maxBlobsPerBlock: - return err(&"invalid tx: versioned hashes len exceeds MAX_BLOBS_PER_BLOCK={maxBlobsPerBlock}. get={tx.versionedHashes.len}") + return err(&"invalid tx: versioned hashes len exceeds MAX_BLOBS_PER_BLOCK={maxBlobsPerBlock}, get={tx.versionedHashes.len}, fork={fork}") for i, bv in tx.versionedHashes: if bv.data[0] != VERSIONED_HASH_VERSION_KZG: From 1f838558711561eb9079e36ac44416a2b227a4a8 Mon Sep 17 00:00:00 2001 From: Advaita Saha Date: Fri, 24 Jan 2025 19:22:18 +0530 Subject: [PATCH 2/4] fcuV3 allow shanghai head --- nimbus/beacon/api_handler/api_forkchoice.nim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nimbus/beacon/api_handler/api_forkchoice.nim b/nimbus/beacon/api_handler/api_forkchoice.nim index eb0f490a9..b055c147b 100644 --- a/nimbus/beacon/api_handler/api_forkchoice.nim +++ b/nimbus/beacon/api_handler/api_forkchoice.nim @@ -64,10 +64,10 @@ template validateHeaderTimestamp(header, com, apiVersion) = " doesn't support head block with timestamp >= Cancun") # See fCUV2 specification No.2 bullet 1 # https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/shanghai.md#specification-1 - elif com.isShanghaiOrLater(header.timestamp): - if apiVersion != Version.V2 or apiVersion != Version.V3: - raise invalidAttr("forkChoiceUpdated" & $apiVersion & - " doesn't support head block with Shanghai timestamp") + # elif com.isShanghaiOrLater(header.timestamp): + # if apiVersion != Version.V2: + # raise invalidAttr("forkChoiceUpdated" & $apiVersion & + # " doesn't support head block with Shanghai timestamp") else: if apiVersion != Version.V1: raise invalidAttr("forkChoiceUpdated" & $apiVersion & From 1469844fe1d4dd79150c819185260243477d64a6 Mon Sep 17 00:00:00 2001 From: Advaita Saha Date: Fri, 24 Jan 2025 20:55:30 +0530 Subject: [PATCH 3/4] add fallback blobcount for custom network --- nimbus/beacon/api_handler/api_forkchoice.nim | 8 ++++---- nimbus/common/chain_config.nim | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nimbus/beacon/api_handler/api_forkchoice.nim b/nimbus/beacon/api_handler/api_forkchoice.nim index b055c147b..c01b2cd00 100644 --- a/nimbus/beacon/api_handler/api_forkchoice.nim +++ b/nimbus/beacon/api_handler/api_forkchoice.nim @@ -68,10 +68,10 @@ template validateHeaderTimestamp(header, com, apiVersion) = # if apiVersion != Version.V2: # raise invalidAttr("forkChoiceUpdated" & $apiVersion & # " doesn't support head block with Shanghai timestamp") - else: - if apiVersion != Version.V1: - raise invalidAttr("forkChoiceUpdated" & $apiVersion & - " doesn't support head block with timestamp earlier than Shanghai") + # else: + # if apiVersion != Version.V1: + # raise invalidAttr("forkChoiceUpdated" & $apiVersion & + # " doesn't support head block with timestamp earlier than Shanghai") proc forkchoiceUpdated*(ben: BeaconEngineRef, apiVersion: Version, diff --git a/nimbus/common/chain_config.nim b/nimbus/common/chain_config.nim index 0120bc2ee..05b6cd571 100644 --- a/nimbus/common/chain_config.nim +++ b/nimbus/common/chain_config.nim @@ -394,7 +394,7 @@ proc validateChainConfig(conf: ChainConfig): bool = proc configureBlobSchedule(conf: ChainConfig) = var prevFork = Cancun if conf.blobSchedule[Cancun].isNone: - conf.blobSchedule[Cancun] = Opt.some(BlobSchedule()) + conf.blobSchedule[Cancun] = Opt.some(BlobSchedule(target: 3'u64, max: 6'u64)) for fork in Prague..HardFork.high: if conf.blobSchedule[fork].isNone: conf.blobSchedule[fork] = conf.blobSchedule[prevFork] From 11a00fba79267d49a4f13ebb2dbdd520ece09db3 Mon Sep 17 00:00:00 2001 From: Advaita Saha Date: Fri, 24 Jan 2025 23:07:07 +0530 Subject: [PATCH 4/4] fix tests --- nimbus/beacon/api_handler/api_forkchoice.nim | 16 ++++++++-------- nimbus/core/validate.nim | 2 +- tests/test_genesis.nim | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/nimbus/beacon/api_handler/api_forkchoice.nim b/nimbus/beacon/api_handler/api_forkchoice.nim index c01b2cd00..e887e2537 100644 --- a/nimbus/beacon/api_handler/api_forkchoice.nim +++ b/nimbus/beacon/api_handler/api_forkchoice.nim @@ -64,14 +64,14 @@ template validateHeaderTimestamp(header, com, apiVersion) = " doesn't support head block with timestamp >= Cancun") # See fCUV2 specification No.2 bullet 1 # https://github.com/ethereum/execution-apis/blob/v1.0.0-beta.4/src/engine/shanghai.md#specification-1 - # elif com.isShanghaiOrLater(header.timestamp): - # if apiVersion != Version.V2: - # raise invalidAttr("forkChoiceUpdated" & $apiVersion & - # " doesn't support head block with Shanghai timestamp") - # else: - # if apiVersion != Version.V1: - # raise invalidAttr("forkChoiceUpdated" & $apiVersion & - # " doesn't support head block with timestamp earlier than Shanghai") + elif com.isShanghaiOrLater(header.timestamp): + if apiVersion != Version.V2: + raise invalidAttr("forkChoiceUpdated" & $apiVersion & + " doesn't support head block with Shanghai timestamp") + else: + if apiVersion != Version.V1: + raise invalidAttr("forkChoiceUpdated" & $apiVersion & + " doesn't support head block with timestamp earlier than Shanghai") proc forkchoiceUpdated*(ben: BeaconEngineRef, apiVersion: Version, diff --git a/nimbus/core/validate.nim b/nimbus/core/validate.nim index 12a0abec8..f40e13b9a 100644 --- a/nimbus/core/validate.nim +++ b/nimbus/core/validate.nim @@ -267,7 +267,7 @@ proc validateTxBasic*( let maxBlobsPerBlock = getMaxBlobsPerBlock(com, fork) if tx.versionedHashes.len.uint64 > maxBlobsPerBlock: - return err(&"invalid tx: versioned hashes len exceeds MAX_BLOBS_PER_BLOCK={maxBlobsPerBlock}, get={tx.versionedHashes.len}, fork={fork}") + return err(&"invalid tx: versioned hashes len exceeds MAX_BLOBS_PER_BLOCK={maxBlobsPerBlock}, get={tx.versionedHashes.len}") for i, bv in tx.versionedHashes: if bv.data[0] != VERSIONED_HASH_VERSION_KZG: diff --git a/tests/test_genesis.nim b/tests/test_genesis.nim index 66b204efb..09c37d859 100644 --- a/tests/test_genesis.nim +++ b/tests/test_genesis.nim @@ -171,7 +171,7 @@ proc customGenesisTest() = validateBlobSchedule(cg, Osaka, 6, 9) check loadNetworkParams("blobschedule_prague.json".findFilePath, cg) - validateBlobSchedule(cg, Cancun, 0, 0) + validateBlobSchedule(cg, Cancun, 3, 6) # default fallback case validateBlobSchedule(cg, Prague, 6, 9) validateBlobSchedule(cg, Osaka, 6, 9)