11use anyhow:: { anyhow, Error } ;
22use anyhow:: { ensure, Context } ;
3- use graph:: abi;
43use graph:: abi:: EventExt ;
54use graph:: abi:: FunctionExt ;
65use graph:: blockchain:: { BlockPtr , TriggerWithHandler } ;
@@ -16,8 +15,11 @@ use graph::env::ENV_VARS;
1615use graph:: futures03:: future:: try_join;
1716use graph:: futures03:: stream:: FuturesOrdered ;
1817use graph:: futures03:: TryStreamExt ;
19- use graph:: prelude:: { Link , SubgraphManifestValidationError } ;
18+ use graph:: prelude:: alloy:: primitives:: { Address , B256 } ;
19+ use graph:: prelude:: alloy:: rpc:: types:: Log ;
20+ use graph:: prelude:: { alloy, b256_to_h256, Link , SubgraphManifestValidationError } ;
2021use graph:: slog:: { debug, error, o, trace} ;
22+ use graph:: { abi, alloy_todo} ;
2123use itertools:: Itertools ;
2224use serde:: de:: Error as ErrorD ;
2325use serde:: { Deserialize , Deserializer } ;
@@ -32,7 +34,7 @@ use graph::{
3234 blockchain:: { self , Blockchain } ,
3335 prelude:: {
3436 async_trait, serde_json, warn,
35- web3:: types:: { Address , Log , Transaction , H160 , H256 } ,
37+ web3:: types:: { H160 , H256 } ,
3638 BlockNumber , CheapClone , EthereumCall , LightEthereumBlock , LightEthereumBlockExt ,
3739 LinkResolver , Logger ,
3840 } ,
@@ -459,7 +461,7 @@ impl DataSource {
459461 } )
460462 }
461463
462- fn handlers_for_log ( & self , log : & Log ) -> Vec < MappingEventHandler > {
464+ fn handlers_for_log ( & self , log : & alloy :: rpc :: types :: Log ) -> Vec < MappingEventHandler > {
463465 self . mapping
464466 . event_handlers
465467 . iter ( )
@@ -637,7 +639,7 @@ impl DataSource {
637639 return true ;
638640 } ;
639641
640- ds_address == * trigger_address
642+ ds_address == trigger_address
641643 }
642644
643645 /// Checks if `trigger` matches this data source, and if so decodes it into a `MappingTrigger`.
@@ -745,17 +747,18 @@ impl DataSource {
745747 // See also ca0edc58-0ec5-4c89-a7dd-2241797f5e50.
746748 // There is another special case in zkSync-era, where the transaction hash in this case would be zero
747749 // See https://docs.zksync.io/zk-stack/concepts/blocks.html#fictive-l2-block-finalizing-the-batch
748- let transaction = if log. transaction_hash == block. hash_h256 ( )
749- || log. transaction_hash == Some ( H256 :: zero ( ) )
750+ let transaction = if log. transaction_hash == Some ( block. hash ( ) )
751+ || log. transaction_hash == Some ( B256 :: ZERO )
750752 {
751- Transaction {
752- hash : log. transaction_hash . unwrap ( ) ,
753- block_hash : block. hash_h256 ( ) ,
754- block_number : block. number_web3_u64 ( ) ,
755- transaction_index : log. transaction_index ,
756- from : Some ( H160 :: zero ( ) ) ,
757- ..Transaction :: default ( )
758- }
753+ // Transaction {
754+ // hash: log.transaction_hash.unwrap(),
755+ // block_hash: block.hash_h256(),
756+ // block_number: block.number_web3_u64(),
757+ // transaction_index: log.transaction_index,
758+ // from: Some(H160::zero()),
759+ // ..Transaction::default()
760+ // }
761+ alloy_todo ! ( )
759762 } else {
760763 // This is the general case where the log's transaction hash does not match the block's hash
761764 // and is not a special zero hash, implying a real transaction associated with this log.
@@ -1405,12 +1408,12 @@ pub struct MappingCallHandler {
14051408#[ derive( Clone , Debug , Hash , Eq , PartialEq , Deserialize ) ]
14061409pub struct MappingEventHandler {
14071410 pub event : String ,
1408- pub topic0 : Option < H256 > ,
1409- #[ serde( deserialize_with = "deserialize_h256_vec " , default ) ]
1410- pub topic1 : Option < Vec < H256 > > ,
1411- #[ serde( deserialize_with = "deserialize_h256_vec " , default ) ]
1412- pub topic2 : Option < Vec < H256 > > ,
1413- #[ serde( deserialize_with = "deserialize_h256_vec " , default ) ]
1411+ pub topic0 : Option < B256 > ,
1412+ #[ serde( deserialize_with = "deserialize_b256_vec " , default ) ]
1413+ pub topic1 : Option < Vec < B256 > > ,
1414+ #[ serde( deserialize_with = "deserialize_b256_vec " , default ) ]
1415+ pub topic2 : Option < Vec < B256 > > ,
1416+ #[ serde( deserialize_with = "deserialize_b256_vec " , default ) ]
14141417 pub topic3 : Option < Vec < H256 > > ,
14151418 pub handler : String ,
14161419 #[ serde( default ) ]
@@ -1420,27 +1423,27 @@ pub struct MappingEventHandler {
14201423}
14211424
14221425// Custom deserializer for H256 fields that removes the '0x' prefix before parsing
1423- fn deserialize_h256_vec < ' de , D > ( deserializer : D ) -> Result < Option < Vec < H256 > > , D :: Error >
1426+ fn deserialize_b256_vec < ' de , D > ( deserializer : D ) -> Result < Option < Vec < H256 > > , D :: Error >
14241427where
14251428 D : Deserializer < ' de > ,
14261429{
14271430 let s: Option < Vec < String > > = Option :: deserialize ( deserializer) ?;
14281431
14291432 match s {
14301433 Some ( vec) => {
1431- let mut h256_vec = Vec :: new ( ) ;
1434+ let mut b256_vec = Vec :: new ( ) ;
14321435 for hex_str in vec {
14331436 // Remove '0x' prefix if present
14341437 let clean_hex_str = hex_str. trim_start_matches ( "0x" ) ;
14351438 // Ensure the hex string is 64 characters long, after removing '0x'
14361439 let padded_hex_str = format ! ( "{:0>64}" , clean_hex_str) ;
14371440 // Parse the padded string into H256, handling potential errors
1438- h256_vec . push (
1439- H256 :: from_str ( & padded_hex_str)
1440- . map_err ( |e| D :: Error :: custom ( format ! ( "Failed to parse H256 : {}" , e) ) ) ?,
1441+ b256_vec . push (
1442+ B256 :: from_str ( & padded_hex_str)
1443+ . map_err ( |e| D :: Error :: custom ( format ! ( "Failed to parse B256 : {}" , e) ) ) ?,
14411444 ) ;
14421445 }
1443- Ok ( Some ( h256_vec ) )
1446+ Ok ( Some ( b256_vec ) )
14441447 }
14451448 None => Ok ( None ) ,
14461449 }
@@ -1453,16 +1456,16 @@ impl MappingEventHandler {
14531456 }
14541457
14551458 pub fn matches ( & self , log : & Log ) -> bool {
1456- let matches_topic = |index : usize , topic_opt : & Option < Vec < H256 > > | -> bool {
1459+ let matches_topic = |index : usize , topic_opt : & Option < Vec < B256 > > | -> bool {
14571460 topic_opt. as_ref ( ) . map_or ( true , |topic_vec| {
1458- log. topics
1461+ log. topics ( )
14591462 . get ( index)
14601463 . map_or ( false , |log_topic| topic_vec. contains ( log_topic) )
14611464 } )
14621465 } ;
14631466
1464- if let Some ( topic0) = log. topics . get ( 0 ) {
1465- return self . topic0 ( ) == * topic0
1467+ if let Some ( topic0) = log. topics ( ) . get ( 0 ) {
1468+ return self . topic0 ( ) == b256_to_h256 ( * topic0)
14661469 && matches_topic ( 1 , & self . topic1 )
14671470 && matches_topic ( 2 , & self . topic2 )
14681471 && matches_topic ( 3 , & self . topic3 ) ;
0 commit comments