@@ -57,30 +57,35 @@ export const validateAndGen7685RequestsHash = (
5757 common : Common ,
5858 executionRequests : PrefixedHexString [ ] ,
5959) : PrefixedHexString => {
60- let validationError : string | null = null
61-
6260 const requests : CLRequest < CLRequestType > [ ] = [ ]
63- let requestIndex = 0
64- if ( common . isActivatedEIP ( 6110 ) ) {
65- requests . push ( new CLRequest ( CLRequestType . Deposit , hexToBytes ( executionRequests [ requestIndex ] ) ) )
66- requestIndex ++
67- }
68- if ( common . isActivatedEIP ( 7002 ) ) {
69- requests . push (
70- new CLRequest ( CLRequestType . Withdrawal , hexToBytes ( executionRequests [ requestIndex ] ) ) ,
71- )
72- requestIndex ++
73- }
74- if ( common . isActivatedEIP ( 7251 ) ) {
75- requests . push (
76- new CLRequest ( CLRequestType . Consolidation , hexToBytes ( executionRequests [ requestIndex ] ) ) ,
77- )
78- requestIndex ++
79- }
8061
81- if ( requestIndex !== executionRequests . length ) {
82- validationError = `Invalid executionRequests=${ executionRequests . length } expected=${ requestIndex } `
83- throw validationError
62+ for ( const request of executionRequests ) {
63+ const bytes = hexToBytes ( request )
64+ if ( bytes . length === 0 ) {
65+ throw new Error ( 'Got a request without a request-identifier' )
66+ }
67+ switch ( bytes [ 0 ] ) {
68+ case CLRequestType . Deposit :
69+ if ( ! common . isActivatedEIP ( 6110 ) ) {
70+ throw new Error ( `Deposit requests are not active` )
71+ }
72+ requests . push ( new CLRequest ( CLRequestType . Deposit , bytes . slice ( 1 ) ) )
73+ break
74+ case CLRequestType . Withdrawal :
75+ if ( ! common . isActivatedEIP ( 7002 ) ) {
76+ throw new Error ( `Withdrawal requests are not active` )
77+ }
78+ requests . push ( new CLRequest ( CLRequestType . Withdrawal , bytes . slice ( 1 ) ) )
79+ break
80+ case CLRequestType . Consolidation :
81+ if ( ! common . isActivatedEIP ( 7251 ) ) {
82+ throw new Error ( `Consolidation requests are not active` )
83+ }
84+ requests . push ( new CLRequest ( CLRequestType . Consolidation , bytes . slice ( 1 ) ) )
85+ break
86+ default :
87+ throw new Error ( `Unknown request identifier: got ${ bytes [ 0 ] } ` )
88+ }
8489 }
8590
8691 const sha256Function = common . customCrypto . sha256 ?? sha256
0 commit comments