From 5f48a8ee049727fdc07ae5ebc5b60841ac3e3ea2 Mon Sep 17 00:00:00 2001 From: Gabriel-Trintinalia Date: Mon, 2 Oct 2023 10:23:46 +1100 Subject: [PATCH 1/4] Add Blob Count validation Signed-off-by: Gabriel-Trintinalia --- .../internal/methods/engine/AbstractEngineNewPayload.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java index 60abf0aa039..46e3775db4a 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java @@ -445,6 +445,13 @@ protected ValidationResult validateBlobs( "Payload BlobGasUsed does not match calculated BlobGasUsed"); } } + + if (protocolSpec.getGasCalculator().blobGasCost(transactionVersionedHashes.size()) > + protocolSpec.getGasLimitCalculator().currentBlobGasLimit()){ + return ValidationResult.invalid( + RpcErrorType.INVALID_PARAMS, + String.format("Invalid Blob Count: %d",transactionVersionedHashes.size())); + } return ValidationResult.valid(); } From 36d065109dcbf8086938bb9796bc0702ae649781 Mon Sep 17 00:00:00 2001 From: Gabriel-Trintinalia Date: Mon, 2 Oct 2023 11:03:45 +1100 Subject: [PATCH 2/4] Fix spotless Signed-off-by: Gabriel-Trintinalia --- .../methods/engine/AbstractEngineNewPayload.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java index 46e3775db4a..c8263450e72 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/AbstractEngineNewPayload.java @@ -446,12 +446,12 @@ protected ValidationResult validateBlobs( } } - if (protocolSpec.getGasCalculator().blobGasCost(transactionVersionedHashes.size()) > - protocolSpec.getGasLimitCalculator().currentBlobGasLimit()){ - return ValidationResult.invalid( - RpcErrorType.INVALID_PARAMS, - String.format("Invalid Blob Count: %d",transactionVersionedHashes.size())); - } + if (protocolSpec.getGasCalculator().blobGasCost(transactionVersionedHashes.size()) + > protocolSpec.getGasLimitCalculator().currentBlobGasLimit()) { + return ValidationResult.invalid( + RpcErrorType.INVALID_PARAMS, + String.format("Invalid Blob Count: %d", transactionVersionedHashes.size())); + } return ValidationResult.valid(); } From d997251674d16be56cbb7291df35fe792cc9cc85 Mon Sep 17 00:00:00 2001 From: Gabriel-Trintinalia Date: Mon, 2 Oct 2023 12:41:13 +1100 Subject: [PATCH 3/4] Fix unit tests Signed-off-by: Gabriel-Trintinalia --- .../jsonrpc/internal/methods/engine/EngineNewPayloadV3Test.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineNewPayloadV3Test.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineNewPayloadV3Test.java index d1984a5795e..99412868c5c 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineNewPayloadV3Test.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineNewPayloadV3Test.java @@ -51,6 +51,7 @@ import org.hyperledger.besu.ethereum.core.encoding.EncodingContext; import org.hyperledger.besu.ethereum.core.encoding.TransactionEncoder; import org.hyperledger.besu.ethereum.mainnet.BodyValidation; +import org.hyperledger.besu.ethereum.mainnet.CancunTargetingGasLimitCalculator; import org.hyperledger.besu.ethereum.mainnet.ValidationResult; import org.hyperledger.besu.evm.gascalculator.CancunGasCalculator; @@ -96,6 +97,7 @@ public void before() { ethPeers, engineCallListener); lenient().when(protocolSpec.getGasCalculator()).thenReturn(new CancunGasCalculator()); + lenient().when(protocolSpec.getGasLimitCalculator()).thenReturn(mock(CancunTargetingGasLimitCalculator.class)); } @Test From b686bc53864d36e9e540de6ee8d14150951ae09c Mon Sep 17 00:00:00 2001 From: Gabriel-Trintinalia Date: Mon, 2 Oct 2023 14:15:37 +1100 Subject: [PATCH 4/4] Fix spotless Signed-off-by: Gabriel-Trintinalia --- .../internal/methods/engine/EngineNewPayloadV3Test.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineNewPayloadV3Test.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineNewPayloadV3Test.java index 99412868c5c..ac7ff585267 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineNewPayloadV3Test.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/engine/EngineNewPayloadV3Test.java @@ -97,7 +97,9 @@ public void before() { ethPeers, engineCallListener); lenient().when(protocolSpec.getGasCalculator()).thenReturn(new CancunGasCalculator()); - lenient().when(protocolSpec.getGasLimitCalculator()).thenReturn(mock(CancunTargetingGasLimitCalculator.class)); + lenient() + .when(protocolSpec.getGasLimitCalculator()) + .thenReturn(mock(CancunTargetingGasLimitCalculator.class)); } @Test