From 34faa729887e4e51176caa57ba13685e1ce747c0 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Thu, 21 Nov 2024 15:42:06 +0100 Subject: [PATCH 1/2] Adopt latest changes to request hash computation The `requestType` of empty lists is no longer part of the requests hash. - https://github.com/ethereum/EIPs/pull/8989 --- beacon_chain/spec/helpers.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon_chain/spec/helpers.nim b/beacon_chain/spec/helpers.nim index d77005b61f..09c04e8f8b 100644 --- a/beacon_chain/spec/helpers.nim +++ b/beacon_chain/spec/helpers.nim @@ -462,7 +462,7 @@ func computeRequestsHash( let requestsHash = computeDigest: template mixInRequests(requestType, requestList): untyped = - block: + if requestList.len > 0: let hash = computeDigest: bind h h.update([requestType.byte]) From 0660dc97118fa603e2885695f66ac3e997e7809a Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Fri, 22 Nov 2024 00:06:03 +0100 Subject: [PATCH 2/2] Avoid nested computeDigest scopes --- beacon_chain/spec/helpers.nim | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/beacon_chain/spec/helpers.nim b/beacon_chain/spec/helpers.nim index 09c04e8f8b..be3208cd6f 100644 --- a/beacon_chain/spec/helpers.nim +++ b/beacon_chain/spec/helpers.nim @@ -460,15 +460,16 @@ func computeRequestsHash( WITHDRAWAL_REQUEST_TYPE = 0x01'u8 # EIP-7002 CONSOLIDATION_REQUEST_TYPE = 0x02'u8 # EIP-7251 + template individualHash(requestType, requestList): Digest = + computeDigest: + h.update([requestType.byte]) + for request in requestList: + h.update SSZ.encode(request) + let requestsHash = computeDigest: template mixInRequests(requestType, requestList): untyped = if requestList.len > 0: - let hash = computeDigest: - bind h - h.update([requestType.byte]) - for request in requestList: - h.update SSZ.encode(request) - h.update(hash.data) + h.update(individualHash(requestType, requestList).data) static: doAssert DEPOSIT_REQUEST_TYPE < WITHDRAWAL_REQUEST_TYPE