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 } ;
@@ -19,8 +18,11 @@ use graph::env::ENV_VARS;
1918use graph:: futures03:: future:: try_join;
2019use graph:: futures03:: stream:: FuturesOrdered ;
2120use graph:: futures03:: TryStreamExt ;
22- use graph:: prelude:: { Link , SubgraphManifestValidationError } ;
21+ use graph:: prelude:: alloy:: primitives:: { Address , B256 } ;
22+ use graph:: prelude:: alloy:: rpc:: types:: Log ;
23+ use graph:: prelude:: { alloy, b256_to_h256, Link , SubgraphManifestValidationError } ;
2324use graph:: slog:: { debug, error, o, trace} ;
25+ use graph:: { abi, alloy_todo} ;
2426use itertools:: Itertools ;
2527use serde:: de:: Error as ErrorD ;
2628use serde:: { Deserialize , Deserializer } ;
@@ -35,7 +37,7 @@ use graph::{
3537 blockchain:: { self , Blockchain } ,
3638 prelude:: {
3739 async_trait, serde_json, warn,
38- web3:: types:: { Address , Log , Transaction , H160 , H256 } ,
40+ web3:: types:: { H160 , H256 } ,
3941 BlockNumber , CheapClone , EthereumCall , LightEthereumBlock , LightEthereumBlockExt ,
4042 LinkResolver , Logger ,
4143 } ,
@@ -462,7 +464,7 @@ impl DataSource {
462464 } )
463465 }
464466
465- fn handlers_for_log ( & self , log : & Log ) -> Vec < MappingEventHandler > {
467+ fn handlers_for_log ( & self , log : & alloy :: rpc :: types :: Log ) -> Vec < MappingEventHandler > {
466468 self . mapping
467469 . event_handlers
468470 . iter ( )
@@ -640,7 +642,7 @@ impl DataSource {
640642 return true ;
641643 } ;
642644
643- ds_address == * trigger_address
645+ ds_address == trigger_address
644646 }
645647
646648 /// Checks if `trigger` matches this data source, and if so decodes it into a `MappingTrigger`.
@@ -748,17 +750,18 @@ impl DataSource {
748750 // See also ca0edc58-0ec5-4c89-a7dd-2241797f5e50.
749751 // There is another special case in zkSync-era, where the transaction hash in this case would be zero
750752 // See https://docs.zksync.io/zk-stack/concepts/blocks.html#fictive-l2-block-finalizing-the-batch
751- let transaction = if log. transaction_hash == block. hash_h256 ( )
752- || log. transaction_hash == Some ( H256 :: zero ( ) )
753+ let transaction = if log. transaction_hash == Some ( block. hash ( ) )
754+ || log. transaction_hash == Some ( B256 :: ZERO )
753755 {
754- Transaction {
755- hash : log. transaction_hash . unwrap ( ) ,
756- block_hash : block. hash_h256 ( ) ,
757- block_number : block. number_web3_u64 ( ) ,
758- transaction_index : log. transaction_index ,
759- from : Some ( H160 :: zero ( ) ) ,
760- ..Transaction :: default ( )
761- }
756+ // Transaction {
757+ // hash: log.transaction_hash.unwrap(),
758+ // block_hash: block.hash_h256(),
759+ // block_number: block.number_web3_u64(),
760+ // transaction_index: log.transaction_index,
761+ // from: Some(H160::zero()),
762+ // ..Transaction::default()
763+ // }
764+ alloy_todo ! ( )
762765 } else {
763766 // This is the general case where the log's transaction hash does not match the block's hash
764767 // and is not a special zero hash, implying a real transaction associated with this log.
@@ -1438,12 +1441,12 @@ pub struct MappingCallHandler {
14381441#[ derive( Clone , Debug , Eq , PartialEq , Deserialize ) ]
14391442pub struct UnresolvedMappingEventHandler {
14401443 pub event : String ,
1441- pub topic0 : Option < H256 > ,
1442- #[ serde( deserialize_with = "deserialize_h256_vec " , default ) ]
1443- pub topic1 : Option < Vec < H256 > > ,
1444- #[ serde( deserialize_with = "deserialize_h256_vec " , default ) ]
1445- pub topic2 : Option < Vec < H256 > > ,
1446- #[ serde( deserialize_with = "deserialize_h256_vec " , default ) ]
1444+ pub topic0 : Option < B256 > ,
1445+ #[ serde( deserialize_with = "deserialize_b256_vec " , default ) ]
1446+ pub topic1 : Option < Vec < B256 > > ,
1447+ #[ serde( deserialize_with = "deserialize_b256_vec " , default ) ]
1448+ pub topic2 : Option < Vec < B256 > > ,
1449+ #[ serde( deserialize_with = "deserialize_b256_vec " , default ) ]
14471450 pub topic3 : Option < Vec < H256 > > ,
14481451 pub handler : String ,
14491452 #[ serde( default ) ]
@@ -1488,27 +1491,27 @@ pub struct MappingEventHandler {
14881491}
14891492
14901493// Custom deserializer for H256 fields that removes the '0x' prefix before parsing
1491- fn deserialize_h256_vec < ' de , D > ( deserializer : D ) -> Result < Option < Vec < H256 > > , D :: Error >
1494+ fn deserialize_b256_vec < ' de , D > ( deserializer : D ) -> Result < Option < Vec < H256 > > , D :: Error >
14921495where
14931496 D : Deserializer < ' de > ,
14941497{
14951498 let s: Option < Vec < String > > = Option :: deserialize ( deserializer) ?;
14961499
14971500 match s {
14981501 Some ( vec) => {
1499- let mut h256_vec = Vec :: new ( ) ;
1502+ let mut b256_vec = Vec :: new ( ) ;
15001503 for hex_str in vec {
15011504 // Remove '0x' prefix if present
15021505 let clean_hex_str = hex_str. trim_start_matches ( "0x" ) ;
15031506 // Ensure the hex string is 64 characters long, after removing '0x'
15041507 let padded_hex_str = format ! ( "{:0>64}" , clean_hex_str) ;
15051508 // Parse the padded string into H256, handling potential errors
1506- h256_vec . push (
1507- H256 :: from_str ( & padded_hex_str)
1508- . map_err ( |e| D :: Error :: custom ( format ! ( "Failed to parse H256 : {}" , e) ) ) ?,
1509+ b256_vec . push (
1510+ B256 :: from_str ( & padded_hex_str)
1511+ . map_err ( |e| D :: Error :: custom ( format ! ( "Failed to parse B256 : {}" , e) ) ) ?,
15091512 ) ;
15101513 }
1511- Ok ( Some ( h256_vec ) )
1514+ Ok ( Some ( b256_vec ) )
15121515 }
15131516 None => Ok ( None ) ,
15141517 }
@@ -1521,16 +1524,16 @@ impl MappingEventHandler {
15211524 }
15221525
15231526 pub fn matches ( & self , log : & Log ) -> bool {
1524- let matches_topic = |index : usize , topic_opt : & Option < Vec < H256 > > | -> bool {
1527+ let matches_topic = |index : usize , topic_opt : & Option < Vec < B256 > > | -> bool {
15251528 topic_opt. as_ref ( ) . map_or ( true , |topic_vec| {
1526- log. topics
1529+ log. topics ( )
15271530 . get ( index)
15281531 . map_or ( false , |log_topic| topic_vec. contains ( log_topic) )
15291532 } )
15301533 } ;
15311534
1532- if let Some ( topic0) = log. topics . get ( 0 ) {
1533- return self . topic0 ( ) == * topic0
1535+ if let Some ( topic0) = log. topics ( ) . get ( 0 ) {
1536+ return self . topic0 ( ) == b256_to_h256 ( * topic0)
15341537 && matches_topic ( 1 , & self . topic1 )
15351538 && matches_topic ( 2 , & self . topic2 )
15361539 && matches_topic ( 3 , & self . topic3 ) ;
0 commit comments