@@ -319,11 +319,16 @@ func proof(args []string) error {
319319
320320func balanceTree () error {
321321 l2NetworkID := balanceTreeOptions .L2NetworkID
322+ bridgeAddress := common .HexToAddress (balanceTreeOptions .BridgeAddress )
323+ client , err := ethclient .DialContext (context .Background (), balanceTreeOptions .RpcURL )
324+ if err != nil {
325+ return err
326+ }
322327 l2RawClaimsData , l2RawDepositsData , err := getBalanceTreeData ()
323328 if err != nil {
324329 return err
325330 }
326- root , err := computeBalanceTree (l2RawClaimsData , l2NetworkID , l2RawDepositsData )
331+ root , err := computeBalanceTree (client , bridgeAddress , l2RawClaimsData , l2NetworkID , l2RawDepositsData )
327332 if err != nil {
328333 return err
329334 }
@@ -354,11 +359,16 @@ func nullifierTree(args []string) error {
354359
355360func nullifierAndBalanceTree (args []string ) error {
356361 l2NetworkID := balanceTreeOptions .L2NetworkID
362+ bridgeAddress := common .HexToAddress (balanceTreeOptions .BridgeAddress )
363+ client , err := ethclient .DialContext (context .Background (), balanceTreeOptions .RpcURL )
364+ if err != nil {
365+ return err
366+ }
357367 l2RawClaimsData , l2RawDepositsData , err := getBalanceTreeData ()
358368 if err != nil {
359369 return err
360370 }
361- balanceTreeRoot , err := computeBalanceTree (l2RawClaimsData , l2NetworkID , l2RawDepositsData )
371+ balanceTreeRoot , err := computeBalanceTree (client , bridgeAddress , l2RawClaimsData , l2NetworkID , l2RawDepositsData )
362372 if err != nil {
363373 return err
364374 }
@@ -405,15 +415,15 @@ func computeNullifierTree(rawClaims []byte) (common.Hash, error) {
405415 }
406416 root , err = nTree .UpdateNullifierTree (nullifierKey )
407417 if err != nil {
408- log .Error ().Err (err ).Uint32 ("OriginNetwork: " , claim .OriginNetwork ).Msg ("error computing nullifierTree. Claim information: GlobalIndex: " + claim .GlobalIndex .String ()+ ", OriginAddress: " + claim .OriginAddress .String ()+ ", Amount: " + claim .Amount .String ())
418+ log .Error ().Err (err ).Uint32 ("OriginNetwork: " , claim .OriginNetwork ).Msg ("error computing nullifierTree. Claim information: GlobalIndex: " + claim .GlobalIndex .String () + ", OriginAddress: " + claim .OriginAddress .String () + ", Amount: " + claim .Amount .String ())
409419 return common.Hash {}, err
410420 }
411421 }
412422 log .Info ().Msgf ("Final nullifierTree root: %s" , root .String ())
413423 return root , nil
414424}
415425
416- func computeBalanceTree (l2RawClaims []byte , l2NetworkID uint32 , l2RawDeposits []byte ) (common.Hash , error ) {
426+ func computeBalanceTree (client * ethclient. Client , bridgeAddress common. Address , l2RawClaims []byte , l2NetworkID uint32 , l2RawDeposits []byte ) (common.Hash , error ) {
417427 buf := bytes .NewBuffer (l2RawClaims )
418428 scanner := bufio .NewScanner (buf )
419429 scannerBuf := make ([]byte , 0 )
@@ -433,7 +443,15 @@ func computeBalanceTree(l2RawClaims []byte, l2NetworkID uint32, l2RawDeposits []
433443 OriginNetwork : big .NewInt (0 ).SetUint64 (uint64 (l2Claim .OriginNetwork )),
434444 OriginTokenAddress : l2Claim .OriginAddress ,
435445 }
436- log .Info ().Msgf ("L2 Claim. OriginNetwork: %d. TokenAddress: %s. Amount: %s" , token .OriginNetwork , token .OriginTokenAddress .String (), l2Claim .Amount .String ())
446+ isMessage , err := checkClaimCalldata (client , bridgeAddress , l2Claim .Raw .TxHash )
447+ if err != nil {
448+ return common.Hash {}, err
449+ }
450+ if isMessage {
451+ token .OriginNetwork = big .NewInt (0 )
452+ token .OriginTokenAddress = common.Address {}
453+ }
454+ log .Info ().Msgf ("L2 Claim. isMessage: %v OriginNetwork: %d. TokenAddress: %s. Amount: %s" , isMessage , token .OriginNetwork , token .OriginTokenAddress .String (), l2Claim .Amount .String ())
437455 if _ , ok := balances [token .String ()]; ! ok {
438456 balances [token .String ()] = big .NewInt (0 )
439457 }
@@ -2017,13 +2035,15 @@ func (o *FileOptions) AddFlags(cmd *cobra.Command) {
20172035}
20182036
20192037type BalanceTreeOptions struct {
2020- L2ClaimsFile , L2DepositsFile string
2021- L2NetworkID uint32
2038+ L2ClaimsFile , L2DepositsFile , BridgeAddress , RpcURL string
2039+ L2NetworkID uint32
20222040}
20232041
20242042func (o * BalanceTreeOptions ) AddFlags (cmd * cobra.Command ) {
20252043 cmd .Flags ().StringVarP (& o .L2ClaimsFile , ArgL2ClaimsFileName , "" , "" , "An ndjson file with l2 claim events data" )
20262044 cmd .Flags ().StringVarP (& o .L2DepositsFile , ArgL2DepositsFileName , "" , "" , "An ndjson file with l2 deposit events data" )
2045+ cmd .Flags ().StringVarP (& o .BridgeAddress , ArgBridgeAddress , "" , "" , "Bridge Address" )
2046+ cmd .Flags ().StringVarP (& o .RpcURL , ArgRPCURL , "r" , "" , "RPC URL" )
20272047 cmd .Flags ().Uint32VarP (& o .L2NetworkID , ArgL2NetworkID , "" , 0 , "The L2 networkID" )
20282048}
20292049
0 commit comments