@@ -248,12 +248,16 @@ func (r *Client) Relay(ctx context.Context, signedTxs *sequence.SignedTransactio
248248
249249 var authorization * proto.EIP7702Authorization
250250 if signedTxs .Authorization != nil {
251+ if signedTxs .ChainID .Uint64 () != signedTxs .Authorization .ChainID .Uint64 () {
252+ return "" , nil , nil , fmt .Errorf ("chain ID mismatch between signed transactions and authorization" )
253+ }
254+
251255 var sig [65 ]byte
252256 signedTxs .Authorization .R .WriteToSlice (sig [:32 ])
253257 signedTxs .Authorization .S .WriteToSlice (sig [32 :64 ])
254258 sig [64 ] = signedTxs .Authorization .V
255259 authorization = & proto.EIP7702Authorization {
256- ChainId : signedTxs .ChainID .Uint64 (),
260+ ChainId : signedTxs .Authorization . ChainID .Uint64 (),
257261 Nonce : signedTxs .Authorization .Nonce ,
258262 Implementation : signedTxs .Authorization .Address .Hex (),
259263 Signature : hexutil .Encode (sig [:]),
@@ -303,12 +307,16 @@ func (r *Client) FeeOptions(ctx context.Context, signedTxs *sequence.SignedTrans
303307
304308 var authorization * proto.EIP7702Authorization
305309 if signedTxs .Authorization != nil {
310+ if signedTxs .ChainID .Uint64 () != signedTxs .Authorization .ChainID .Uint64 () {
311+ return nil , nil , fmt .Errorf ("chain ID mismatch between signed transactions and authorization" )
312+ }
313+
306314 var sig [65 ]byte
307315 signedTxs .Authorization .R .WriteToSlice (sig [:32 ])
308316 signedTxs .Authorization .S .WriteToSlice (sig [32 :64 ])
309317 sig [64 ] = signedTxs .Authorization .V
310318 authorization = & proto.EIP7702Authorization {
311- ChainId : signedTxs .ChainID .Uint64 (),
319+ ChainId : signedTxs .Authorization . ChainID .Uint64 (),
312320 Nonce : signedTxs .Authorization .Nonce ,
313321 Implementation : signedTxs .Authorization .Address .Hex (),
314322 Signature : hexutil .Encode (sig [:]),
0 commit comments