From ef378c88a565e7a6d27fa7bb0f7fd6fdb37b5f83 Mon Sep 17 00:00:00 2001 From: andri lim Date: Tue, 26 Mar 2024 22:13:30 +0700 Subject: [PATCH] Fix payload validation in engine_newPayload (#2107) * Fix validatePayload in engine_newPayload * Fix copyright year --- nimbus/beacon/api_handler/api_newpayload.nim | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/nimbus/beacon/api_handler/api_newpayload.nim b/nimbus/beacon/api_handler/api_newpayload.nim index ce439d43f..025b9764b 100644 --- a/nimbus/beacon/api_handler/api_newpayload.nim +++ b/nimbus/beacon/api_handler/api_newpayload.nim @@ -1,5 +1,5 @@ # Nimbus -# Copyright (c) 2023 Status Research & Development GmbH +# Copyright (c) 2023-2024 Status Research & Development GmbH # Licensed under either of # * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) # * MIT license ([LICENSE-MIT](LICENSE-MIT)) @@ -48,6 +48,14 @@ template validateVersion(com, timestamp, version, apiVersion) = " expect ExecutionPayload" & $apiVersion & " but got ExecutionPayload" & $version) +template validatePayload(apiVersion, version, payload) = + if version == Version.V3: + if payload.blobGasUsed.isNone: + raise invalidParams("newPayload" & $apiVersion & + "blobGasUsed is expected from execution payload") + if payload.excessBlobGas.isNone: + raise invalidParams("newPayload" & $apiVersion & + "excessBlobGas is expected from execution payload") proc newPayload*(ben: BeaconEngineRef, apiVersion: Version, @@ -70,6 +78,7 @@ proc newPayload*(ben: BeaconEngineRef, version = payload.version validateVersion(com, timestamp, version, apiVersion) + validatePayload(apiVersion, version, payload) var header = blockHeader(payload, ethHash beaconRoot) let blockHash = ethHash payload.blockHash