From 5f06cc538ad6e497de0b28f21ba2ce4c1aa5e1c6 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Mon, 20 May 2024 11:53:10 -0700 Subject: [PATCH 1/7] add some startup logs --- packages/eventindexer/indexer/indexer.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/eventindexer/indexer/indexer.go b/packages/eventindexer/indexer/indexer.go index 1330a8f0a83..b8ec57c4ef3 100644 --- a/packages/eventindexer/indexer/indexer.go +++ b/packages/eventindexer/indexer/indexer.go @@ -154,6 +154,8 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) error { var taikoL1 *taikol1.TaikoL1 if cfg.L1TaikoAddress.Hex() != ZeroAddress.Hex() { + slog.Info("setting l1TaikoAddress", "addr", cfg.L1TaikoAddress.Hex()) + taikoL1, err = taikol1.NewTaikoL1(cfg.L1TaikoAddress, ethClient) if err != nil { return errors.Wrap(err, "contracts.NewTaikoL1") @@ -163,6 +165,8 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) error { var bridgeContract *bridge.Bridge if cfg.BridgeAddress.Hex() != ZeroAddress.Hex() { + slog.Info("setting bridgeADdress", "addr", cfg.BridgeAddress.Hex()) + bridgeContract, err = bridge.NewBridge(cfg.BridgeAddress, ethClient) if err != nil { return errors.Wrap(err, "contracts.NewBridge") @@ -172,6 +176,8 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) error { var assignmentHookContract *assignmenthook.AssignmentHook if cfg.AssignmentHookAddress.Hex() != ZeroAddress.Hex() { + slog.Info("setting assignmentHookAddress", "addr", cfg.AssignmentHookAddress.Hex()) + assignmentHookContract, err = assignmenthook.NewAssignmentHook(cfg.AssignmentHookAddress, ethClient) if err != nil { return errors.Wrap(err, "contracts.NewAssignmentHook") @@ -182,6 +188,8 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) error { if cfg.SwapAddresses != nil && len(cfg.SwapAddresses) > 0 { for _, v := range cfg.SwapAddresses { + slog.Info("setting swapAddress", "addr", v.Hex()) + swapContract, err := swap.NewSwap(v, ethClient) if err != nil { return errors.Wrap(err, "contracts.NewSwap") @@ -194,6 +202,8 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) error { var sgxVerifierContract *sgxverifier.SgxVerifier if cfg.SgxVerifierAddress.Hex() != ZeroAddress.Hex() { + slog.Info("setting sgxVerifierAddress", "addr", cfg.SgxVerifierAddress.Hex()) + sgxVerifierContract, err = sgxverifier.NewSgxVerifier(cfg.SgxVerifierAddress, ethClient) if err != nil { return errors.Wrap(err, "contracts.NewSgxVerifier") From 0006d8e03ac7e2bf05b468d6614822b174788a9f Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Mon, 20 May 2024 12:18:00 -0700 Subject: [PATCH 2/7] rm unused testnet galxe stuff --- packages/eventindexer/cmd/flags/indexer.go | 16 --- packages/eventindexer/indexer/config.go | 15 --- packages/eventindexer/indexer/config_test.go | 1 - packages/eventindexer/indexer/filter.go | 55 ---------- packages/eventindexer/indexer/indexer.go | 32 ------ .../indexer/save_liquidity_added_event.go | 103 ------------------ .../eventindexer/indexer/save_swap_event.go | 93 ---------------- 7 files changed, 315 deletions(-) delete mode 100644 packages/eventindexer/indexer/save_liquidity_added_event.go delete mode 100644 packages/eventindexer/indexer/save_swap_event.go diff --git a/packages/eventindexer/cmd/flags/indexer.go b/packages/eventindexer/cmd/flags/indexer.go index 0fb28bec735..687ca449dbd 100644 --- a/packages/eventindexer/cmd/flags/indexer.go +++ b/packages/eventindexer/cmd/flags/indexer.go @@ -37,13 +37,6 @@ var ( Category: indexerCategory, EnvVars: []string{"BRIDGE_ADDRESS"}, } - SwapAddresses = &cli.StringFlag{ - Name: "swapAddresses", - Usage: "Comma-delinated list of Swap contract addresses", - Required: false, - Category: indexerCategory, - EnvVars: []string{"SWAP_ADDRESSES"}, - } AssignmentHookAddress = &cli.StringFlag{ Name: "assignmentHookAddress", Usage: "Address of the AssignmentHook contract", @@ -51,13 +44,6 @@ var ( Category: indexerCategory, EnvVars: []string{"ASSIGNMENT_HOOK_ADDRESS"}, } - SgxVerifierAddress = &cli.StringFlag{ - Name: "sgxVerifierAddress", - Usage: "Address of the SGXVerifier contract", - Required: false, - Category: indexerCategory, - EnvVars: []string{"SGX_VERIFIER_ADDRESS"}, - } BlockBatchSize = &cli.Uint64Flag{ Name: "blockBatchSize", Usage: "Block batch size when iterating through blocks", @@ -96,8 +82,6 @@ var IndexerFlags = MergeFlags(CommonFlags, []cli.Flag{ ETHClientTimeout, L1TaikoAddress, BridgeAddress, - SwapAddresses, - SgxVerifierAddress, AssignmentHookAddress, BlockBatchSize, SubscriptionBackoff, diff --git a/packages/eventindexer/indexer/config.go b/packages/eventindexer/indexer/config.go index b00797ace46..c5be80d17ae 100644 --- a/packages/eventindexer/indexer/config.go +++ b/packages/eventindexer/indexer/config.go @@ -2,7 +2,6 @@ package indexer import ( "database/sql" - "strings" "github.com/ethereum/go-ethereum/common" "github.com/taikoxyz/taiko-mono/packages/eventindexer/cmd/flags" @@ -33,8 +32,6 @@ type Config struct { L1TaikoAddress common.Address BridgeAddress common.Address AssignmentHookAddress common.Address - SgxVerifierAddress common.Address - SwapAddresses []common.Address BlockBatchSize uint64 SubscriptionBackoff uint64 SyncMode SyncMode @@ -45,16 +42,6 @@ type Config struct { // NewConfigFromCliContext creates a new config instance from command line flags. func NewConfigFromCliContext(c *cli.Context) (*Config, error) { - // swapAddresses is a comma-delinated list of addresses to index, so we need to - // parse that from a single string. - swapAddresses := strings.Split(c.String(flags.SwapAddresses.Name), ",") - - swaps := make([]common.Address, 0) - - for _, v := range swapAddresses { - swaps = append(swaps, common.HexToAddress(v)) - } - return &Config{ DatabaseUsername: c.String(flags.DatabaseUsername.Name), DatabasePassword: c.String(flags.DatabasePassword.Name), @@ -68,8 +55,6 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { L1TaikoAddress: common.HexToAddress(c.String(flags.L1TaikoAddress.Name)), BridgeAddress: common.HexToAddress(c.String(flags.BridgeAddress.Name)), AssignmentHookAddress: common.HexToAddress(c.String(flags.AssignmentHookAddress.Name)), - SgxVerifierAddress: common.HexToAddress(c.String(flags.SgxVerifierAddress.Name)), - SwapAddresses: swaps, BlockBatchSize: c.Uint64(flags.BlockBatchSize.Name), SubscriptionBackoff: c.Uint64(flags.SubscriptionBackoff.Name), RPCUrl: c.String(flags.IndexerRPCUrl.Name), diff --git a/packages/eventindexer/indexer/config_test.go b/packages/eventindexer/indexer/config_test.go index 7140727d7e7..4ddc84816fd 100644 --- a/packages/eventindexer/indexer/config_test.go +++ b/packages/eventindexer/indexer/config_test.go @@ -78,7 +78,6 @@ func TestNewConfigFromCliContext(t *testing.T) { "--" + flags.DatabaseName.Name, "dbname", "--" + flags.L1TaikoAddress.Name, l1TaikoAddress, "--" + flags.BridgeAddress.Name, bridgeAddress, - "--" + flags.SwapAddresses.Name, swapAddresses, "--" + flags.AssignmentHookAddress.Name, assignmentHookAddress, "--" + flags.MetricsHTTPPort.Name, metricsHttpPort, "--" + flags.DatabaseMaxIdleConns.Name, databaseMaxIdleConns, diff --git a/packages/eventindexer/indexer/filter.go b/packages/eventindexer/indexer/filter.go index d7849d3efee..7f57ba342ad 100644 --- a/packages/eventindexer/indexer/filter.go +++ b/packages/eventindexer/indexer/filter.go @@ -117,61 +117,6 @@ func filterFunc( }) } - if i.swaps != nil { - for _, s := range i.swaps { - swap := s - - wg.Go(func() error { - swaps, err := swap.FilterSwap(filterOpts, nil, nil) - if err != nil { - return errors.Wrap(err, "i.bridge.FilterSwap") - } - - // only save ones above 0.01 ETH, this is only for Galaxe - // and we dont care about the rest - err = i.saveSwapEvents(ctx, chainID, swaps) - if err != nil { - return errors.Wrap(err, "i.saveSwapEvents") - } - - return nil - }) - - wg.Go(func() error { - liquidityAdded, err := swap.FilterMint(filterOpts, nil) - - if err != nil { - return errors.Wrap(err, "i.bridge.FilterMint") - } - - // only save ones above 0.1 ETH, this is only for Galaxe - // and we dont care about the rest - err = i.saveLiquidityAddedEvents(ctx, chainID, liquidityAdded) - if err != nil { - return errors.Wrap(err, "i.saveLiquidityAddedEvents") - } - - return nil - }) - } - } - - if i.sgxVerifier != nil { - wg.Go(func() error { - instancesAdded, err := i.sgxVerifier.FilterInstanceAdded(filterOpts, nil, nil) - if err != nil { - return errors.Wrap(err, "i.sgxVerifier.FilterInstanceAdded") - } - - err = i.saveInstanceAddedEvents(ctx, chainID, instancesAdded) - if err != nil { - return errors.Wrap(err, "i.saveInstanceAddedEvents") - } - - return nil - }) - } - wg.Go(func() error { if err := i.indexRawBlockData(ctx, chainID, filterOpts.Start, *filterOpts.End); err != nil { return errors.Wrap(err, "i.indexRawBlockData") diff --git a/packages/eventindexer/indexer/indexer.go b/packages/eventindexer/indexer/indexer.go index b8ec57c4ef3..56d8a0cdb36 100644 --- a/packages/eventindexer/indexer/indexer.go +++ b/packages/eventindexer/indexer/indexer.go @@ -12,8 +12,6 @@ import ( "github.com/taikoxyz/taiko-mono/packages/eventindexer" "github.com/taikoxyz/taiko-mono/packages/eventindexer/contracts/assignmenthook" "github.com/taikoxyz/taiko-mono/packages/eventindexer/contracts/bridge" - "github.com/taikoxyz/taiko-mono/packages/eventindexer/contracts/sgxverifier" - "github.com/taikoxyz/taiko-mono/packages/eventindexer/contracts/swap" "github.com/taikoxyz/taiko-mono/packages/eventindexer/contracts/taikol1" "github.com/taikoxyz/taiko-mono/packages/eventindexer/pkg/repo" "github.com/urfave/cli/v2" @@ -53,8 +51,6 @@ type Indexer struct { taikol1 *taikol1.TaikoL1 bridge *bridge.Bridge assignmentHook *assignmenthook.AssignmentHook - sgxVerifier *sgxverifier.SgxVerifier - swaps []*swap.Swap indexNfts bool layer string @@ -184,32 +180,6 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) error { } } - var swapContracts []*swap.Swap - - if cfg.SwapAddresses != nil && len(cfg.SwapAddresses) > 0 { - for _, v := range cfg.SwapAddresses { - slog.Info("setting swapAddress", "addr", v.Hex()) - - swapContract, err := swap.NewSwap(v, ethClient) - if err != nil { - return errors.Wrap(err, "contracts.NewSwap") - } - - swapContracts = append(swapContracts, swapContract) - } - } - - var sgxVerifierContract *sgxverifier.SgxVerifier - - if cfg.SgxVerifierAddress.Hex() != ZeroAddress.Hex() { - slog.Info("setting sgxVerifierAddress", "addr", cfg.SgxVerifierAddress.Hex()) - - sgxVerifierContract, err = sgxverifier.NewSgxVerifier(cfg.SgxVerifierAddress, ethClient) - if err != nil { - return errors.Wrap(err, "contracts.NewSgxVerifier") - } - } - i.blockSaveMutex = &sync.Mutex{} i.accountRepo = accountRepository i.eventRepo = eventRepository @@ -222,8 +192,6 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) error { i.taikol1 = taikoL1 i.bridge = bridgeContract i.assignmentHook = assignmentHookContract - i.sgxVerifier = sgxVerifierContract - i.swaps = swapContracts i.blockBatchSize = cfg.BlockBatchSize i.subscriptionBackoff = time.Duration(cfg.SubscriptionBackoff) * time.Second i.wg = &sync.WaitGroup{} diff --git a/packages/eventindexer/indexer/save_liquidity_added_event.go b/packages/eventindexer/indexer/save_liquidity_added_event.go deleted file mode 100644 index e3647b796ae..00000000000 --- a/packages/eventindexer/indexer/save_liquidity_added_event.go +++ /dev/null @@ -1,103 +0,0 @@ -package indexer - -import ( - "context" - "encoding/json" - "math/big" - "time" - - "log/slog" - - "github.com/ethereum/go-ethereum/core/types" - "github.com/pkg/errors" - "github.com/taikoxyz/taiko-mono/packages/eventindexer" - "github.com/taikoxyz/taiko-mono/packages/eventindexer/contracts/swap" -) - -var ( - minLiquidityAddedAmount = big.NewInt(100000000000000000) -) - -func (i *Indexer) saveLiquidityAddedEvents( - ctx context.Context, - chainID *big.Int, - events *swap.SwapMintIterator, -) error { - if !events.Next() || events.Event == nil { - slog.Info("no LiquidityAdded events") - return nil - } - - for { - event := events.Event - - if err := i.saveLiquidityAddedEvent(ctx, chainID, event); err != nil { - eventindexer.LiquidityAddedEventsProcessedError.Inc() - - return errors.Wrap(err, "i.saveSwapEvent") - } - - if !events.Next() { - return nil - } - } -} - -func (i *Indexer) saveLiquidityAddedEvent( - ctx context.Context, - chainID *big.Int, - event *swap.SwapMint, -) error { - tx, _, err := i.ethClient.TransactionByHash(ctx, event.Raw.TxHash) - if err != nil { - return err - } - - from, err := types.Sender(types.LatestSignerForChainID(tx.ChainId()), tx) - if err != nil { - return err - } - - slog.Info("liquidityAdded event for", - "sender", from.Hex(), - "amount0", event.Amount0.String(), - "amount1", event.Amount1.String(), - ) - - // we only want events with > 0.1 ETH swap - if event.Amount0.Cmp(minLiquidityAddedAmount) <= 0 && event.Amount1.Cmp(minLiquidityAddedAmount) <= 0 { - slog.Info("skipping liquidityAdded event, min trade too low", - "amount0", event.Amount0.String(), - "amount1", event.Amount1.String(), - ) - - return nil - } - - marshaled, err := json.Marshal(event) - if err != nil { - return errors.Wrap(err, "json.Marshal(event)") - } - - block, err := i.ethClient.BlockByNumber(ctx, new(big.Int).SetUint64(event.Raw.BlockNumber)) - if err != nil { - return errors.Wrap(err, "i.ethClient.BlockByNumber") - } - - _, err = i.eventRepo.Save(ctx, eventindexer.SaveEventOpts{ - Name: eventindexer.EventNameMint, - Data: string(marshaled), - ChainID: chainID, - Event: eventindexer.EventNameMint, - Address: from.Hex(), - TransactedAt: time.Unix(int64(block.Time()), 0), - EmittedBlockID: event.Raw.BlockNumber, - }) - if err != nil { - return errors.Wrap(err, "i.eventRepo.Save") - } - - eventindexer.LiquidityAddedEventsProcessed.Inc() - - return nil -} diff --git a/packages/eventindexer/indexer/save_swap_event.go b/packages/eventindexer/indexer/save_swap_event.go deleted file mode 100644 index de591a58dd8..00000000000 --- a/packages/eventindexer/indexer/save_swap_event.go +++ /dev/null @@ -1,93 +0,0 @@ -package indexer - -import ( - "context" - "encoding/json" - "fmt" - "math/big" - "time" - - "log/slog" - - "github.com/ethereum/go-ethereum/common" - "github.com/pkg/errors" - "github.com/taikoxyz/taiko-mono/packages/eventindexer" - "github.com/taikoxyz/taiko-mono/packages/eventindexer/contracts/swap" -) - -var ( - minTradeAmount = big.NewInt(10000000000000000) -) - -func (i *Indexer) saveSwapEvents( - ctx context.Context, - chainID *big.Int, - events *swap.SwapSwapIterator, -) error { - if !events.Next() || events.Event == nil { - slog.Info("no Swap events") - return nil - } - - for { - event := events.Event - - if err := i.saveSwapEvent(ctx, chainID, event); err != nil { - eventindexer.SwapEventsProcessedError.Inc() - - return errors.Wrap(err, "i.saveSwapEvent") - } - - if !events.Next() { - return nil - } - } -} - -func (i *Indexer) saveSwapEvent( - ctx context.Context, - chainID *big.Int, - event *swap.SwapSwap, -) error { - slog.Info("swap event", - "sender", fmt.Sprintf("0x%v", common.Bytes2Hex(event.Raw.Topics[2].Bytes()[12:])), - "amount", event.Amount0In.String(), - ) - - // we only want events with > 0.1 ETH swap - if event.Amount0In.Cmp(minTradeAmount) <= 0 && event.Amount1Out.Cmp(minTradeAmount) <= 0 { - slog.Info("skipping skip event, min trade too low", - "amount0", event.Amount0In.String(), - "amount1", event.Amount1Out.String(), - ) - - return nil - } - - marshaled, err := json.Marshal(event) - if err != nil { - return errors.Wrap(err, "json.Marshal(event)") - } - - block, err := i.ethClient.BlockByNumber(ctx, new(big.Int).SetUint64(event.Raw.BlockNumber)) - if err != nil { - return errors.Wrap(err, "i.ethClient.BlockByNumber") - } - - _, err = i.eventRepo.Save(ctx, eventindexer.SaveEventOpts{ - Name: eventindexer.EventNameSwap, - Data: string(marshaled), - ChainID: chainID, - Event: eventindexer.EventNameSwap, - Address: fmt.Sprintf("0x%v", common.Bytes2Hex(event.Raw.Topics[2].Bytes()[12:])), - TransactedAt: time.Unix(int64(block.Time()), 0), - EmittedBlockID: event.Raw.BlockNumber, - }) - if err != nil { - return errors.Wrap(err, "i.eventRepo.Save") - } - - eventindexer.SwapEventsProcessed.Inc() - - return nil -} From 951f86e2e450b979f224d183a2ff26687e22ab6f Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Mon, 20 May 2024 12:18:28 -0700 Subject: [PATCH 3/7] rm routes --- packages/eventindexer/pkg/http/routes.go | 2 -- .../pkg/http/user_added_liquidity.go | 32 ------------------- .../pkg/http/user_swapped_on_taiko.go | 32 ------------------- 3 files changed, 66 deletions(-) delete mode 100644 packages/eventindexer/pkg/http/user_added_liquidity.go delete mode 100644 packages/eventindexer/pkg/http/user_swapped_on_taiko.go diff --git a/packages/eventindexer/pkg/http/routes.go b/packages/eventindexer/pkg/http/routes.go index cffdecfcf43..090ef4b71e7 100644 --- a/packages/eventindexer/pkg/http/routes.go +++ b/packages/eventindexer/pkg/http/routes.go @@ -16,8 +16,6 @@ func (srv *Server) configureRoutes() { galaxeAPI.GET("/user-proposed-block", srv.UserProposedBlock) galaxeAPI.GET("/user-proved-block", srv.UserProvedBlock) galaxeAPI.GET("/user-bridged", srv.UserBridged) - galaxeAPI.GET("/user-swapped-on-taiko", srv.UserSwappedOnTaiko) - galaxeAPI.GET("/user-added-liquidity", srv.UserAddedLiquidity) chartAPI := srv.echo.Group("/chart") diff --git a/packages/eventindexer/pkg/http/user_added_liquidity.go b/packages/eventindexer/pkg/http/user_added_liquidity.go deleted file mode 100644 index 92a370d496d..00000000000 --- a/packages/eventindexer/pkg/http/user_added_liquidity.go +++ /dev/null @@ -1,32 +0,0 @@ -package http - -import ( - "net/http" - - "github.com/cyberhorsey/webutils" - "github.com/labstack/echo/v4" - "github.com/taikoxyz/taiko-mono/packages/eventindexer" -) - -func (srv *Server) UserAddedLiquidity(c echo.Context) error { - event, err := srv.eventRepo.FirstByAddressAndEventName( - c.Request().Context(), - c.QueryParam("address"), - eventindexer.EventNameMint, - ) - if err != nil { - return webutils.LogAndRenderErrors(c, http.StatusUnprocessableEntity, err) - } - - var found bool = false - - if event != nil { - found = true - } - - return c.JSON(http.StatusOK, &galaxeAPIResponse{ - Data: galaxeData{ - IsOK: found, - }, - }) -} diff --git a/packages/eventindexer/pkg/http/user_swapped_on_taiko.go b/packages/eventindexer/pkg/http/user_swapped_on_taiko.go deleted file mode 100644 index c40c8bb9c55..00000000000 --- a/packages/eventindexer/pkg/http/user_swapped_on_taiko.go +++ /dev/null @@ -1,32 +0,0 @@ -package http - -import ( - "net/http" - - "github.com/cyberhorsey/webutils" - "github.com/labstack/echo/v4" - "github.com/taikoxyz/taiko-mono/packages/eventindexer" -) - -func (srv *Server) UserSwappedOnTaiko(c echo.Context) error { - event, err := srv.eventRepo.FirstByAddressAndEventName( - c.Request().Context(), - c.QueryParam("address"), - eventindexer.EventNameSwap, - ) - if err != nil { - return webutils.LogAndRenderErrors(c, http.StatusUnprocessableEntity, err) - } - - var found bool = false - - if event != nil { - found = true - } - - return c.JSON(http.StatusOK, &galaxeAPIResponse{ - Data: galaxeData{ - IsOK: found, - }, - }) -} From 782700bda64f7a8d107c9e4da54237134a957dc0 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Mon, 20 May 2024 14:55:52 -0700 Subject: [PATCH 4/7] rm unused --- packages/eventindexer/indexer/config_test.go | 1 - .../indexer/save_instance_added_event.go | 89 ------------------- 2 files changed, 90 deletions(-) delete mode 100644 packages/eventindexer/indexer/save_instance_added_event.go diff --git a/packages/eventindexer/indexer/config_test.go b/packages/eventindexer/indexer/config_test.go index 4ddc84816fd..a8e6ade2e30 100644 --- a/packages/eventindexer/indexer/config_test.go +++ b/packages/eventindexer/indexer/config_test.go @@ -14,7 +14,6 @@ var ( l1TaikoAddress = "0x63FaC9201494f0bd17B9892B9fae4d52fe3BD377" bridgeAddress = "0x73FaC9201494f0bd17B9892B9fae4d52fe3BD377" assignmentHookAddress = "0x83FaC9201494f0bd17B9892B9fae4d52fe3BD377" - swapAddresses = "0x33FaC9201494f0bd17B9892B9fae4d52fe3BD377,0x13FaC9201494f0bd17B9892B9fae4d52fe3BD377" databaseMaxIdleConns = "10" databaseMaxOpenConns = "10" databaseMaxConnLifetime = "30" diff --git a/packages/eventindexer/indexer/save_instance_added_event.go b/packages/eventindexer/indexer/save_instance_added_event.go deleted file mode 100644 index 68293def2ee..00000000000 --- a/packages/eventindexer/indexer/save_instance_added_event.go +++ /dev/null @@ -1,89 +0,0 @@ -package indexer - -import ( - "context" - "encoding/json" - "math/big" - "time" - - "log/slog" - - "github.com/ethereum/go-ethereum/common" - "github.com/pkg/errors" - "github.com/taikoxyz/taiko-mono/packages/eventindexer" - "github.com/taikoxyz/taiko-mono/packages/eventindexer/contracts/sgxverifier" -) - -func (i *Indexer) saveInstanceAddedEvents( - ctx context.Context, - chainID *big.Int, - events *sgxverifier.SgxVerifierInstanceAddedIterator, -) error { - if !events.Next() || events.Event == nil { - slog.Info("no InstanceAdded events") - return nil - } - - for { - event := events.Event - - slog.Info("new instanceAdded event") - - // Getting the transaction - tx, _, err := i.ethClient.TransactionByHash(context.Background(), event.Raw.TxHash) - if err != nil { - return err - } - - receipt, err := i.ethClient.TransactionReceipt(ctx, tx.Hash()) - - if err != nil { - return err - } - - sender, err := i.ethClient.TransactionSender(ctx, tx, event.Raw.BlockHash, receipt.TransactionIndex) - if err != nil { - return err - } - - if err := i.saveInstanceAddedEvent(ctx, chainID, event, sender); err != nil { - return errors.Wrap(err, "i.saveInstanceAddedEvent") - } - - if !events.Next() { - return nil - } - } -} - -func (i *Indexer) saveInstanceAddedEvent( - ctx context.Context, - chainID *big.Int, - event *sgxverifier.SgxVerifierInstanceAdded, - sender common.Address, -) error { - marshaled, err := json.Marshal(event) - if err != nil { - return errors.Wrap(err, "json.Marshal(event)") - } - - block, err := i.ethClient.BlockByNumber(ctx, new(big.Int).SetUint64(event.Raw.BlockNumber)) - if err != nil { - return errors.Wrap(err, "i.ethClient.BlockByNumber") - } - - _, err = i.eventRepo.Save(ctx, eventindexer.SaveEventOpts{ - Name: eventindexer.EventNameInstanceAdded, - Data: string(marshaled), - ChainID: chainID, - Event: eventindexer.EventNameInstanceAdded, - Address: sender.Hex(), - TransactedAt: time.Unix(int64(block.Time()), 0), - EmittedBlockID: event.Raw.BlockNumber, - }) - if err != nil { - return errors.Wrap(err, "i.eventRepo.Save") - } - - return nil -} From cbcdf3e8c5b92ac963f38e40230ba426b2c41e26 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Mon, 20 May 2024 14:57:38 -0700 Subject: [PATCH 5/7] other startup logs --- .../healthchecker/healthchecker.go | 2 ++ packages/relayer/indexer/indexer.go | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/packages/guardian-prover-health-check/healthchecker/healthchecker.go b/packages/guardian-prover-health-check/healthchecker/healthchecker.go index dca9eaae8a8..722ccd2e410 100644 --- a/packages/guardian-prover-health-check/healthchecker/healthchecker.go +++ b/packages/guardian-prover-health-check/healthchecker/healthchecker.go @@ -97,6 +97,8 @@ func InitFromConfig(ctx context.Context, h *HealthChecker, cfg *Config) (err err return err } + slog.Info("number of guardians", "numGuardians", numGuardians.Int64()) + var guardianProvers []guardianproverhealthcheck.GuardianProver for i := 0; i < int(numGuardians.Uint64()); i++ { diff --git a/packages/relayer/indexer/indexer.go b/packages/relayer/indexer/indexer.go index e4c6914a953..5bc7e24288e 100644 --- a/packages/relayer/indexer/indexer.go +++ b/packages/relayer/indexer/indexer.go @@ -179,6 +179,8 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) (err error) { // taikoL1 will only be set when initializing a L1 - L2 indexer var taikoL1 *taikol1.TaikoL1 if cfg.SrcTaikoAddress != ZeroAddress { + slog.Info("setting srcTaikoAddress", "addr", cfg.SrcTaikoAddress.Hex()) + taikoL1, err = taikol1.NewTaikoL1(cfg.SrcTaikoAddress, srcEthClient) if err != nil { return errors.Wrap(err, "taikol1.NewTaikoL1") @@ -187,6 +189,8 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) (err error) { var signalService relayer.SignalService if cfg.SrcSignalServiceAddress != ZeroAddress { + slog.Info("setting srcSignalServiceAddress", "addr", cfg.SrcSignalServiceAddress.Hex()) + signalService, err = signalservice.NewSignalService(cfg.SrcSignalServiceAddress, srcEthClient) if err != nil { return errors.Wrap(err, "signalservice.NewSignalService") From 1d67bd8efc88baa99873622d53865d34ff527c51 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Tue, 21 May 2024 09:14:42 -0700 Subject: [PATCH 6/7] lint --- packages/relayer/indexer/indexer.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/relayer/indexer/indexer.go b/packages/relayer/indexer/indexer.go index 5bc7e24288e..dfc0f36e89d 100644 --- a/packages/relayer/indexer/indexer.go +++ b/packages/relayer/indexer/indexer.go @@ -178,6 +178,7 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) (err error) { // taikoL1 will only be set when initializing a L1 - L2 indexer var taikoL1 *taikol1.TaikoL1 + if cfg.SrcTaikoAddress != ZeroAddress { slog.Info("setting srcTaikoAddress", "addr", cfg.SrcTaikoAddress.Hex()) @@ -188,6 +189,7 @@ func InitFromConfig(ctx context.Context, i *Indexer, cfg *Config) (err error) { } var signalService relayer.SignalService + if cfg.SrcSignalServiceAddress != ZeroAddress { slog.Info("setting srcSignalServiceAddress", "addr", cfg.SrcSignalServiceAddress.Hex()) From fa66aa6d5ce61d8fe13ab2618b487f7a0e24fd61 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Tue, 21 May 2024 09:25:07 -0700 Subject: [PATCH 7/7] rm disperser, no longer used --- packages/eventindexer/cmd/flags/common.go | 1 - packages/eventindexer/cmd/flags/disperser.go | 41 ------ packages/eventindexer/cmd/main.go | 8 -- packages/eventindexer/disperser/config.go | 99 --------------- packages/eventindexer/disperser/disperser.go | 125 ------------------- 5 files changed, 274 deletions(-) delete mode 100644 packages/eventindexer/cmd/flags/disperser.go delete mode 100644 packages/eventindexer/disperser/config.go delete mode 100644 packages/eventindexer/disperser/disperser.go diff --git a/packages/eventindexer/cmd/flags/common.go b/packages/eventindexer/cmd/flags/common.go index c0f34fae43f..a9a1a258fd5 100644 --- a/packages/eventindexer/cmd/flags/common.go +++ b/packages/eventindexer/cmd/flags/common.go @@ -8,7 +8,6 @@ var ( commonCategory = "COMMON" indexerCategory = "INDEXER" generatorCategory = "GENERATOR" - disperserCategory = "DISPERSER" txmgrCategory = "TX_MANAGER" ) diff --git a/packages/eventindexer/cmd/flags/disperser.go b/packages/eventindexer/cmd/flags/disperser.go deleted file mode 100644 index d835622b39c..00000000000 --- a/packages/eventindexer/cmd/flags/disperser.go +++ /dev/null @@ -1,41 +0,0 @@ -package flags - -import "github.com/urfave/cli/v2" - -var ( - DisperserPrivateKey = &cli.StringFlag{ - Name: "disperserPrivateKey", - Usage: "Disperser private key which contains TTKO", - Required: true, - Category: disperserCategory, - EnvVars: []string{"DISPERSER_PRIVATE_KEY"}, - } - TaikoTokenAddress = &cli.StringFlag{ - Name: "taikoTokenAddress", - Usage: "Address of the TaikoToken contract", - Required: true, - Category: disperserCategory, - EnvVars: []string{"TAIKO_TOKEN_ADDRESS"}, - } - DispersalAmount = &cli.StringFlag{ - Name: "dispersalAmount", - Usage: "Dispersal amount in wei", - Required: true, - Category: disperserCategory, - EnvVars: []string{"DISPERSAL_AMOUNT"}, - } - RPCUrl = &cli.StringFlag{ - Name: "rpcUrl", - Usage: "RPC URL for the source chain", - Required: true, - Category: commonCategory, - EnvVars: []string{"RPC_URL"}, - } -) - -var DisperserFlags = MergeFlags(CommonFlags, TxmgrFlags, []cli.Flag{ - DisperserPrivateKey, - TaikoTokenAddress, - DispersalAmount, - RPCUrl, -}) diff --git a/packages/eventindexer/cmd/main.go b/packages/eventindexer/cmd/main.go index a5ce330e48f..fac9c636791 100644 --- a/packages/eventindexer/cmd/main.go +++ b/packages/eventindexer/cmd/main.go @@ -9,7 +9,6 @@ import ( "github.com/taikoxyz/taiko-mono/packages/eventindexer/api" "github.com/taikoxyz/taiko-mono/packages/eventindexer/cmd/flags" "github.com/taikoxyz/taiko-mono/packages/eventindexer/cmd/utils" - "github.com/taikoxyz/taiko-mono/packages/eventindexer/disperser" "github.com/taikoxyz/taiko-mono/packages/eventindexer/generator" "github.com/taikoxyz/taiko-mono/packages/eventindexer/indexer" "github.com/urfave/cli/v2" @@ -59,13 +58,6 @@ func main() { Description: "Taiko time-series data generator", Action: utils.SubcommandAction(new(generator.Generator)), }, - { - Name: "disperser", - Flags: flags.DisperserFlags, - Usage: "Starts the disperser software", - Description: "Taiko TTKO disperser", - Action: utils.SubcommandAction(new(disperser.Disperser)), - }, } if err := app.Run(os.Args); err != nil { diff --git a/packages/eventindexer/disperser/config.go b/packages/eventindexer/disperser/config.go deleted file mode 100644 index 81575009a13..00000000000 --- a/packages/eventindexer/disperser/config.go +++ /dev/null @@ -1,99 +0,0 @@ -package disperser - -import ( - "crypto/ecdsa" - "database/sql" - "errors" - "fmt" - "math/big" - - "github.com/ethereum-optimism/optimism/op-service/txmgr" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/crypto" - "github.com/taikoxyz/taiko-mono/packages/eventindexer/cmd/flags" - "github.com/taikoxyz/taiko-mono/packages/eventindexer/pkg/db" - pkgFlags "github.com/taikoxyz/taiko-mono/packages/eventindexer/pkg/flags" - "github.com/urfave/cli/v2" - "gorm.io/driver/mysql" - "gorm.io/gorm" - "gorm.io/gorm/logger" -) - -type DB interface { - DB() (*sql.DB, error) - GormDB() *gorm.DB -} - -type Config struct { - // db configs - DatabaseUsername string - DatabasePassword string - DatabaseName string - DatabaseHost string - DatabaseMaxIdleConns uint64 - DatabaseMaxOpenConns uint64 - DatabaseMaxConnLifetime uint64 - MetricsHTTPPort uint64 - DisperserPrivateKey *ecdsa.PrivateKey - DispersalAmount *big.Int - TaikoTokenAddress common.Address - TxmgrConfigs *txmgr.CLIConfig - RPCURL string - OpenDBFunc func() (DB, error) -} - -// NewConfigFromCliContext creates a new config instance from command line flags. -func NewConfigFromCliContext(c *cli.Context) (*Config, error) { - disperserPrivateKey, err := crypto.ToECDSA( - common.Hex2Bytes(c.String(flags.DisperserPrivateKey.Name)), - ) - if err != nil { - return nil, fmt.Errorf("invalid disperserPrivateKey: %w", err) - } - - dispersalAmount, ok := new(big.Int).SetString(c.String(flags.DispersalAmount.Name), 10) - if !ok { - return nil, errors.New("Invalid dispersal amount") - } - - return &Config{ - DatabaseUsername: c.String(flags.DatabaseUsername.Name), - DatabasePassword: c.String(flags.DatabasePassword.Name), - DatabaseName: c.String(flags.DatabaseName.Name), - DatabaseHost: c.String(flags.DatabaseHost.Name), - DatabaseMaxIdleConns: c.Uint64(flags.DatabaseMaxIdleConns.Name), - DatabaseMaxOpenConns: c.Uint64(flags.DatabaseMaxOpenConns.Name), - DatabaseMaxConnLifetime: c.Uint64(flags.DatabaseConnMaxLifetime.Name), - MetricsHTTPPort: c.Uint64(flags.MetricsHTTPPort.Name), - DisperserPrivateKey: disperserPrivateKey, - RPCURL: c.String(flags.RPCUrl.Name), - DispersalAmount: dispersalAmount, - TaikoTokenAddress: common.HexToAddress(c.String(flags.TaikoTokenAddress.Name)), - TxmgrConfigs: pkgFlags.InitTxmgrConfigsFromCli( - c.String(flags.RPCUrl.Name), - disperserPrivateKey, - c, - ), - OpenDBFunc: func() (DB, error) { - return db.OpenDBConnection(db.DBConnectionOpts{ - Name: c.String(flags.DatabaseUsername.Name), - Password: c.String(flags.DatabasePassword.Name), - Database: c.String(flags.DatabaseName.Name), - Host: c.String(flags.DatabaseHost.Name), - MaxIdleConns: c.Uint64(flags.DatabaseMaxIdleConns.Name), - MaxOpenConns: c.Uint64(flags.DatabaseMaxOpenConns.Name), - MaxConnLifetime: c.Uint64(flags.DatabaseConnMaxLifetime.Name), - OpenFunc: func(dsn string) (*db.DB, error) { - gormDB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ - Logger: logger.Default.LogMode(logger.Silent), - }) - if err != nil { - return nil, err - } - - return db.New(gormDB), nil - }, - }) - }, - }, nil -} diff --git a/packages/eventindexer/disperser/disperser.go b/packages/eventindexer/disperser/disperser.go deleted file mode 100644 index ba8c3488f2e..00000000000 --- a/packages/eventindexer/disperser/disperser.go +++ /dev/null @@ -1,125 +0,0 @@ -package disperser - -import ( - "context" - "log/slog" - "math/big" - "os" - - txmgrMetrics "github.com/ethereum-optimism/optimism/op-service/txmgr/metrics" - "github.com/taikoxyz/taiko-mono/packages/eventindexer/encoding" - - "github.com/ethereum-optimism/optimism/op-service/txmgr" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/log" - "github.com/urfave/cli/v2" -) - -var ( - ZeroAddress = common.HexToAddress("0x0000000000000000000000000000000000000000") -) - -// Disperser is a subcommand which is intended to be run on an interval, like -// a cronjob, to parse the indexed data from the database, and generate -// time series data that can easily be displayed via charting libraries. -type Disperser struct { - db DB - dispersalAmount *big.Int - taikoTokenAddress common.Address - txmgr txmgr.TxManager -} - -func (d *Disperser) InitFromCli(ctx context.Context, c *cli.Context) error { - config, err := NewConfigFromCliContext(c) - if err != nil { - return err - } - - return InitFromConfig(ctx, d, config) -} - -func InitFromConfig(ctx context.Context, d *Disperser, cfg *Config) error { - db, err := cfg.OpenDBFunc() - if err != nil { - return err - } - - if d.txmgr, err = txmgr.NewSimpleTxManager( - "disperser", - log.Root(), - new(txmgrMetrics.NoopTxMetrics), - *cfg.TxmgrConfigs, - ); err != nil { - return err - } - - d.db = db - - d.dispersalAmount = cfg.DispersalAmount - d.taikoTokenAddress = cfg.TaikoTokenAddress - - return nil -} - -func (d *Disperser) Name() string { - return "disperser" -} - -func (d *Disperser) Start() error { - addresses, err := d.findAllAddresses() - if err != nil { - return err - } - - slog.Info("addresses", "addresses", addresses) - - for _, address := range addresses { - slog.Info("dispersing to", "address", address) - - data, err := encoding.TaikoTokenABI.Pack("transfer", common.HexToAddress(address), d.dispersalAmount) - if err != nil { - return err - } - - candidate := txmgr.TxCandidate{ - TxData: data, - Blobs: nil, - To: &d.taikoTokenAddress, - } - - receipt, err := d.txmgr.Send(context.Background(), candidate) - if err != nil { - slog.Warn("Failed to send transfer transaction", "error", err.Error()) - return err - } - - slog.Info("sent tx", "tx", receipt.TxHash.Hex()) - } - - os.Exit(0) - - return nil -} - -func (d *Disperser) findAllAddresses() ([]string, error) { - var addresses []string - // Execute raw SQL query to find distinct addresses where event is 'InstanceAdded' - err := d.db.GormDB().Raw("SELECT DISTINCT address FROM events WHERE event = ?", "InstanceAdded").Scan(&addresses).Error - - if err != nil { - return nil, err - } - - return addresses, nil -} - -func (d *Disperser) Close(ctx context.Context) { - sqlDB, err := d.db.DB() - if err != nil { - slog.Error("error getting sqldb when closing Disperser", "err", err.Error()) - } - - if err := sqlDB.Close(); err != nil { - slog.Error("error closing sqlbd connection", "err", err.Error()) - } -}