Adopt latest changes to request hash computation (#6718)

* 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

* Avoid nested computeDigest scopes
This commit is contained in:
Etan Kissling 2024-11-24 07:36:39 +01:00 committed by GitHub
parent cd8de2f061
commit ddad30f725
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -460,15 +460,16 @@ func computeRequestsHash(
WITHDRAWAL_REQUEST_TYPE = 0x01'u8 # EIP-7002 WITHDRAWAL_REQUEST_TYPE = 0x01'u8 # EIP-7002
CONSOLIDATION_REQUEST_TYPE = 0x02'u8 # EIP-7251 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: let requestsHash = computeDigest:
template mixInRequests(requestType, requestList): untyped = template mixInRequests(requestType, requestList): untyped =
block: if requestList.len > 0:
let hash = computeDigest: h.update(individualHash(requestType, requestList).data)
bind h
h.update([requestType.byte])
for request in requestList:
h.update SSZ.encode(request)
h.update(hash.data)
static: static:
doAssert DEPOSIT_REQUEST_TYPE < WITHDRAWAL_REQUEST_TYPE doAssert DEPOSIT_REQUEST_TYPE < WITHDRAWAL_REQUEST_TYPE