@@ -13,7 +13,7 @@ import (
1313 "golang.org/x/exp/maps"
1414
1515 "github.com/gobitfly/beaconchain/internal/contracts"
16- ensContracts "github.com/gobitfly/beaconchain/pkg/commons/contracts/ens"
16+ "github.com/gobitfly/beaconchain/pkg/commons/contracts/ens"
1717 "github.com/gobitfly/beaconchain/pkg/commons/db2/data"
1818 "github.com/gobitfly/beaconchain/pkg/commons/db2/metadataupdates"
1919 "github.com/gobitfly/beaconchain/pkg/commons/erc1155"
@@ -233,7 +233,7 @@ func TransformBlock(chainID string, block *types.Eth1Block, res *IndexedBlock) e
233233 idx .InternalTransactionCount ++
234234 }
235235
236- if t .GetType () == 3 {
236+ if t .GetType () == gethtypes . BlobTxType {
237237 idx .BlobTransactionCount ++
238238 }
239239 }
@@ -537,14 +537,11 @@ func TransformWithdrawal(chainID string, block *types.Eth1Block, res *IndexedBlo
537537}
538538
539539func TransformEnsNameRegistered (chainID string , block * types.Eth1Block , res * IndexedBlock ) error {
540- ensContractAddresses := ensContracts .ENSContractFor (chainID )
540+ ensContractAddresses := ens .ENSContractFor (chainID )
541541 var ensLogs []data.ENSLog
542542 for i , tx := range block .GetTransactions () {
543543 for j , txLog := range tx .GetLogs () {
544- ensContract , ok := ensContractAddresses [common .BytesToAddress (txLog .Address ).String ()]
545- if ! ok {
546- continue
547- }
544+ ensContract := ensContractAddresses [common .BytesToAddress (txLog .Address ).String ()]
548545
549546 topics := txLog .GetTopics ()
550547 ethTopics := make ([]common.Hash , 0 , len (topics ))
@@ -563,89 +560,76 @@ func TransformEnsNameRegistered(chainID string, block *types.Eth1Block, res *Ind
563560 Removed : txLog .GetRemoved (),
564561 }
565562 var ensLog data.ENSLog
566- // TODO there is probably a better way to do this
567563 for _ , lTopic := range topics {
568564 switch ensContract {
569565 case "Registry" :
566+ filterer , _ := ens .NewENSRegistryFilterer (common.Address {}, nil )
570567 switch {
571- case bytes .Equal (lTopic , ensContracts .ENSRegistryParsedABI .Events ["NewResolver" ].ID .Bytes ()):
572- r := & ensContracts.ENSRegistryNewResolver {}
573- if err := ensContracts .ENSRegistryContract .UnpackLog (r , "NewResolver" , ethLog ); err != nil {
574- return err
575- }
568+ case bytes .Equal (lTopic , ens .RegistryNewResolverTopic .Bytes ()):
569+ r , _ := filterer .ParseNewResolver (ethLog )
576570 ensLog .Node = & r .Node
577- case bytes .Equal (lTopic , ensContracts .ENSRegistryParsedABI .Events ["NewOwner" ].ID .Bytes ()):
578- r := & ensContracts.ENSRegistryNewOwner {}
579- if err := ensContracts .ENSRegistryContract .UnpackLog (r , "NewOwner" , ethLog ); err != nil {
580- return err
581- }
571+ case bytes .Equal (lTopic , ens .RegistryNewOwnerTopic .Bytes ()):
572+ r , _ := filterer .ParseNewOwner (ethLog )
582573 ensLog .Owner = & r .Owner
583- case bytes .Equal (lTopic , ensContracts .ENSRegistryParsedABI .Events ["NewTTL" ].ID .Bytes ()):
584- r := & ensContracts.ENSRegistryNewTTL {}
585- if err := ensContracts .ENSRegistryContract .UnpackLog (r , "NewTTL" , ethLog ); err != nil {
586- return err
587- }
574+ case bytes .Equal (lTopic , ens .RegistryNewTTLTopic .Bytes ()):
575+ r , _ := filterer .ParseNewTTL (ethLog )
588576 ensLog .Node = & r .Node
589577 }
590578 case "ETHRegistrarController" :
579+ filterer , _ := ens .NewENSETHRegistrarControllerFilterer (common.Address {}, nil )
591580 switch {
592- case bytes .Equal (lTopic , ensContracts .ENSETHRegistrarControllerParsedABI .Events ["NameRegistered" ].ID .Bytes ()):
593- r := & ensContracts.ENSETHRegistrarControllerNameRegistered {}
594- if err := ensContracts .ENSETHRegistrarControllerContract .UnpackLog (r , "NameRegistered" , ethLog ); err != nil {
595- return err
596- }
581+ case bytes .Equal (lTopic , ens .RegistrarControllerNameRegisteredTopic .Bytes ()):
582+ r , _ := filterer .ParseNameRegistered (ethLog )
597583 if err := verifyName (r .Name ); err != nil {
598584 continue
599585 }
600586 ensLog .Name = & r .Name
601587 ensLog .Owner = & r .Owner
602- case bytes .Equal (lTopic , ensContracts .ENSETHRegistrarControllerParsedABI .Events ["NameRenewed" ].ID .Bytes ()):
603- r := & ensContracts.ENSETHRegistrarControllerNameRenewed {}
604- if err := ensContracts .ENSETHRegistrarControllerContract .UnpackLog (r , "NameRenewed" , ethLog ); err != nil {
605- return err
606- }
588+ case bytes .Equal (lTopic , ens .RegistrarControllerNameRenewedTopic .Bytes ()):
589+ r , _ := filterer .ParseNameRenewed (ethLog )
607590 if err := verifyName (r .Name ); err != nil {
608591 continue
609592 }
610593 ensLog .Name = & r .Name
611594 }
612595 case "OldEnsRegistrarController" :
596+ filterer , _ := ens .NewENSOldRegistrarControllerFilterer (common.Address {}, nil )
613597 switch {
614- case bytes .Equal (lTopic , ensContracts .ENSOldRegistrarControllerParsedABI .Events ["NameRegistered" ].ID .Bytes ()):
615- r := & ensContracts.ENSOldRegistrarControllerNameRegistered {}
616- if err := ensContracts .ENSOldRegistrarControllerContract .UnpackLog (r , "NameRegistered" , ethLog ); err != nil {
617- return err
618- }
598+ case bytes .Equal (lTopic , ens .OldRegistrarControllerNameRegisteredTopic .Bytes ()):
599+ r , _ := filterer .ParseNameRegistered (ethLog )
619600 if err := verifyName (r .Name ); err != nil {
620601 continue
621602 }
622603 ensLog .Name = & r .Name
623604 ensLog .Owner = & r .Owner
624- case bytes .Equal (lTopic , ensContracts .ENSOldRegistrarControllerParsedABI .Events ["NameRenewed" ].ID .Bytes ()):
625- r := & ensContracts.ENSOldRegistrarControllerNameRenewed {}
626- if err := ensContracts .ENSOldRegistrarControllerContract .UnpackLog (r , "NameRenewed" , ethLog ); err != nil {
627- return err
628- }
605+ case bytes .Equal (lTopic , ens .OldRegistrarControllerNameRenewedTopic .Bytes ()):
606+ r , _ := filterer .ParseNameRenewed (ethLog )
629607 if err := verifyName (r .Name ); err != nil {
630608 continue
631609 }
632610 ensLog .Name = & r .Name
633611 }
634612 default :
613+ // try to parse public resolver events
614+ // in that case we are not sure that the log is emitted from a public resolver
615+ // checking the topic is not enough collision is common for events topic
616+ // TODO this might be a source of bug, someone could create a fake ens contract and emit the same
617+ // events and we will parse it like if it was the truth
618+ filterer , _ := ens .NewENSPublicResolver (common.Address {}, nil )
635619 switch {
636- case bytes .Equal (lTopic , ensContracts . ENSPublicResolverParsedABI . Events [ "NameChanged" ]. ID .Bytes ()):
637- r := & ensContracts. ENSPublicResolverNameChanged {}
638- if err := ensContracts . ENSPublicResolverContract . UnpackLog ( r , "NameChanged" , ethLog ); err != nil {
639- return err
620+ case bytes .Equal (lTopic , ens . PublicResolverNameChangedTopic .Bytes ()):
621+ r , err := filterer . ParseNameChanged ( ethLog )
622+ if err != nil {
623+ continue
640624 }
641625 if err := verifyName (r .Name ); err != nil {
642626 continue
643627 }
644628 ensLog .Name = & r .Name
645- case bytes .Equal (lTopic , ensContracts . ENSPublicResolverParsedABI . Events [ "AddressChanged" ]. ID .Bytes ()):
646- r := & ensContracts. ENSPublicResolverAddressChanged {}
647- if err := ensContracts . ENSPublicResolverContract . UnpackLog ( r , "AddressChanged" , ethLog ); err != nil {
648- return err
629+ case bytes .Equal (lTopic , ens . PublicResolverAddressChangedTopic .Bytes ()):
630+ r , err := filterer . ParseAddressChanged ( ethLog )
631+ if err != nil {
632+ continue
649633 }
650634 ensLog .Node = & r .Node
651635 }
@@ -692,7 +676,10 @@ func elConfigForChainID(chainID string) *params.ChainConfig {
692676 case "1" :
693677 return params .MainnetChainConfig
694678 }
695- return nil
679+ return & params.ChainConfig {
680+ ByzantiumBlock : big .NewInt (0 ),
681+ ConstantinopleBlock : big .NewInt (0 ),
682+ }
696683}
697684
698685func verifyName (name string ) error {
0 commit comments