@@ -223,14 +223,55 @@ impl Tx for Signed<alloy::consensus::TxEip4844Variant> {
223223    } 
224224} 
225225
226+ impl  Tx  for  Signed < alloy:: consensus:: TxEip7702 >  { 
227+     fn  fill_tx_env ( & self ,  tx_env :  & mut  TxEnv )  { 
228+         let  TxEnv  { 
229+             tx_type, 
230+             caller, 
231+             gas_limit, 
232+             gas_price, 
233+             kind, 
234+             value, 
235+             data, 
236+             nonce, 
237+             chain_id, 
238+             access_list, 
239+             gas_priority_fee, 
240+             blob_hashes, 
241+             max_fee_per_blob_gas, 
242+             authorization_list, 
243+         }  = tx_env; 
244+         * tx_type = TxType :: Eip7702  as  u8 ; 
245+         * caller = self . recover_signer ( ) . unwrap ( ) ; 
246+         * gas_limit = self . tx ( ) . gas_limit ; 
247+         * gas_price = self . tx ( ) . max_fee_per_gas ; 
248+         * kind = self . tx ( ) . to . into ( ) ; 
249+         * value = self . tx ( ) . value ; 
250+         * data = self . tx ( ) . input . clone ( ) ; 
251+         * nonce = self . tx ( ) . nonce ; 
252+         * chain_id = Some ( self . tx ( ) . chain_id ) ; 
253+         access_list. clone_from ( & self . tx ( ) . access_list ) ; 
254+         * gas_priority_fee = Some ( self . tx ( ) . max_priority_fee_per_gas ) ; 
255+         blob_hashes. clear ( ) ; 
256+         * max_fee_per_blob_gas = 0 ; 
257+         * authorization_list = self 
258+             . tx ( ) 
259+             . authorization_list 
260+             . iter ( ) 
261+             . cloned ( ) 
262+             . map ( revm:: context:: either:: Either :: Left ) 
263+             . collect ( ) ; 
264+     } 
265+ } 
266+ 
226267impl  Tx  for  alloy:: consensus:: TxEnvelope  { 
227268    fn  fill_tx_env ( & self ,  tx_env :  & mut  TxEnv )  { 
228269        match  self  { 
229270            Self :: Legacy ( t)  => t. fill_tx_env ( tx_env) , 
230271            Self :: Eip2930 ( t)  => t. fill_tx_env ( tx_env) , 
231272            Self :: Eip1559 ( t)  => t. fill_tx_env ( tx_env) , 
232273            Self :: Eip4844 ( t)  => t. fill_tx_env ( tx_env) , 
233-             _  => panic ! ( "Unsupported transaction type" ) , 
274+             Self :: Eip7702 ( t )  => t . fill_tx_env ( tx_env ) , 
234275        } 
235276    } 
236277} 
0 commit comments