From b3d726e48b61d8fdb27e6a5e06094d12214c2cce Mon Sep 17 00:00:00 2001 From: Kirill Fedoseev Date: Mon, 23 May 2022 19:11:24 +0400 Subject: [PATCH] Fix varnamelen linter --- .golangci.yml | 14 +++++++++++++- config/config.go | 6 +++--- contract/utils.go | 8 ++++---- entity/log.go | 12 ++++++------ monitor/alerts/alert_manager.go | 8 ++++---- monitor/contract_monitor.go | 20 ++++++++++---------- monitor/handlers.go | 12 ++++++------ presenter/presenter.go | 8 ++++---- repository/postgres/block_timestamps.go | 6 +++--- 9 files changed, 53 insertions(+), 41 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index ba595e6..85b3aef 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -9,7 +9,6 @@ linters: - wrapcheck - tagliatelle - gomnd - - varnamelen - nlreturn - gochecknoglobals - lll @@ -33,3 +32,16 @@ linters-settings: funlen: lines: 130 statements: 60 + varnamelen: + ignore-names: + - db + - tx + - q + ignore-decls: + - w http.ResponseWriter + - r *http.Request + - r chi.Router + - bt *entity.BlockTimestamp + - ok bool + - wg *sync.WaitGroup + - i int \ No newline at end of file diff --git a/config/config.go b/config/config.go index 3bd693f..64645f2 100644 --- a/config/config.go +++ b/config/config.go @@ -94,13 +94,13 @@ type Config struct { } func readYamlConfig(cfg *Config) error { - f, err := os.ReadFile("config.yml") + blob, err := os.ReadFile("config.yml") if err != nil { return fmt.Errorf("can't access config file: %w", err) } - f = []byte(os.ExpandEnv(string(f))) + blob = []byte(os.ExpandEnv(string(blob))) - dec := yaml.NewDecoder(bytes.NewReader(f)) + dec := yaml.NewDecoder(bytes.NewReader(blob)) dec.KnownFields(true) err = dec.Decode(cfg) if err != nil { diff --git a/contract/utils.go b/contract/utils.go index baa8c24..7ed20ef 100644 --- a/contract/utils.go +++ b/contract/utils.go @@ -33,16 +33,16 @@ func FindMatchingEventABI(contractABI abi.ABI, topics []common.Hash) *abi.Event func DecodeEventLog(event *abi.Event, topics []common.Hash, data []byte) (map[string]interface{}, error) { indexed := Indexed(event.Inputs) - m := make(map[string]interface{}) + values := make(map[string]interface{}) if len(indexed) < len(event.Inputs) { - if err := event.Inputs.UnpackIntoMap(m, data); err != nil { + if err := event.Inputs.UnpackIntoMap(values, data); err != nil { return nil, fmt.Errorf("can't unpack data: %w", err) } } - if err := abi.ParseTopicsIntoMap(m, indexed, topics[1:]); err != nil { + if err := abi.ParseTopicsIntoMap(values, indexed, topics[1:]); err != nil { return nil, fmt.Errorf("can't unpack topics: %w", err) } - return m, nil + return values, nil } func ParseLog(contractABI abi.ABI, log *entity.Log) (string, map[string]interface{}, error) { diff --git a/entity/log.go b/entity/log.go index a892f5a..1636faf 100644 --- a/entity/log.go +++ b/entity/log.go @@ -33,7 +33,7 @@ type LogsRepo interface { } func NewLog(chainID string, log types.Log) *Log { - e := &Log{ + res := &Log{ ChainID: chainID, Address: log.Address, Data: log.Data, @@ -42,18 +42,18 @@ func NewLog(chainID string, log types.Log) *Log { TransactionHash: log.TxHash, } if len(log.Topics) > 0 { - e.Topic0 = &log.Topics[0] + res.Topic0 = &log.Topics[0] if len(log.Topics) > 1 { - e.Topic1 = &log.Topics[1] + res.Topic1 = &log.Topics[1] if len(log.Topics) > 2 { - e.Topic2 = &log.Topics[2] + res.Topic2 = &log.Topics[2] if len(log.Topics) > 3 { - e.Topic3 = &log.Topics[3] + res.Topic3 = &log.Topics[3] } } } } - return e + return res } func (l *Log) Topics() []common.Hash { diff --git a/monitor/alerts/alert_manager.go b/monitor/alerts/alert_manager.go index 1981adf..5593327 100644 --- a/monitor/alerts/alert_manager.go +++ b/monitor/alerts/alert_manager.go @@ -142,17 +142,17 @@ func NewAlertManager(logger logging.Logger, db *db.DB, cfg *config.BridgeConfig) } func (m *AlertManager) Start(ctx context.Context, isSynced func() bool) { - t := time.NewTicker(10 * time.Second) + ticker := time.NewTicker(10 * time.Second) for !isSynced() { select { case <-ctx.Done(): - t.Stop() + ticker.Stop() return - case <-t.C: + case <-ticker.C: m.logger.Debug("waiting for bridge monitor to be synchronized on both sides") } } - t.Stop() + ticker.Stop() m.logger.Info("both sides of the monitor are synced, starting alert manager jobs") for name, job := range m.jobs { diff --git a/monitor/contract_monitor.go b/monitor/contract_monitor.go index 2482f9f..50c0db1 100644 --- a/monitor/contract_monitor.go +++ b/monitor/contract_monitor.go @@ -244,7 +244,7 @@ func (m *ContractMonitor) StartLogsFetcher(ctx context.Context) { } func (m *ContractMonitor) buildFilterQueries(blocksRange *BlocksRange) []ethereum.FilterQuery { - var qs []ethereum.FilterQuery + var queries []ethereum.FilterQuery q := ethereum.FilterQuery{ FromBlock: big.NewInt(int64(blocksRange.From)), ToBlock: big.NewInt(int64(blocksRange.To)), @@ -253,7 +253,7 @@ func (m *ContractMonitor) buildFilterQueries(blocksRange *BlocksRange) []ethereu if blocksRange.Topic != nil { q.Topics = [][]common.Hash{{*blocksRange.Topic}} } - qs = append(qs, q) + queries = append(queries, q) if m.bridgeCfg.BridgeMode == config.BridgeModeErcToNative { for _, token := range m.cfg.ErcToNativeTokens { if token.StartBlock > 0 && blocksRange.To < token.StartBlock { @@ -262,23 +262,23 @@ func (m *ContractMonitor) buildFilterQueries(blocksRange *BlocksRange) []ethereu if token.EndBlock > 0 && blocksRange.From > token.EndBlock { continue } - qc := q + q = ethereum.FilterQuery{} if blocksRange.Topic != nil { - qc.Topics = [][]common.Hash{{*blocksRange.Topic}, {}, {m.cfg.Address.Hash()}} + q.Topics = [][]common.Hash{{*blocksRange.Topic}, {}, {m.cfg.Address.Hash()}} } else { - qc.Topics = [][]common.Hash{{}, {}, {m.cfg.Address.Hash()}} + q.Topics = [][]common.Hash{{}, {}, {m.cfg.Address.Hash()}} } - qc.Addresses = []common.Address{token.Address} + q.Addresses = []common.Address{token.Address} if token.StartBlock > 0 && token.StartBlock > blocksRange.From { - qc.FromBlock = big.NewInt(int64(token.StartBlock)) + q.FromBlock = big.NewInt(int64(token.StartBlock)) } if token.EndBlock > 0 && token.EndBlock < blocksRange.To { - qc.ToBlock = big.NewInt(int64(token.EndBlock)) + q.ToBlock = big.NewInt(int64(token.EndBlock)) } - qs = append(qs, qc) + queries = append(queries, q) } } - return qs + return queries } func (m *ContractMonitor) tryToFetchLogs(ctx context.Context, blocksRange *BlocksRange) error { diff --git a/monitor/handlers.go b/monitor/handlers.go index 37a79b9..2cb639d 100644 --- a/monitor/handlers.go +++ b/monitor/handlers.go @@ -146,14 +146,14 @@ func (p *BridgeEventHandler) HandleErcToNativeUserRequestForAffirmation(ctx cont return fmt.Errorf("failed to get transaction logs for %s: %w", log.TransactionHash, err) } var sender common.Address - for _, l := range logs { - if l.Topic0 != nil && *l.Topic0 == abi.ErcToNativeABI.Events["Transfer"].ID && l.Topic1 != nil && l.Topic2 != nil && len(l.Data) == 32 { - transferSender := common.BytesToAddress(l.Topic1[:]) - transferReceiver := common.BytesToAddress(l.Topic2[:]) - transferValue := new(big.Int).SetBytes(l.Data) + for _, txLog := range logs { + if len(txLog.Topics()) >= 3 && *txLog.Topic0 == abi.ErcToNativeABI.Events["Transfer"].ID && len(txLog.Data) == 32 { + transferSender := common.BytesToAddress(txLog.Topic1[:]) + transferReceiver := common.BytesToAddress(txLog.Topic2[:]) + transferValue := new(big.Int).SetBytes(txLog.Data) if transferReceiver == p.cfg.Foreign.Address && value.Cmp(transferValue) == 0 { for _, t := range p.cfg.Foreign.ErcToNativeTokens { - if l.Address == t.Address && l.BlockNumber >= t.StartBlock && (t.EndBlock == 0 || l.BlockNumber <= t.EndBlock) { + if txLog.Address == t.Address && txLog.BlockNumber >= t.StartBlock && (t.EndBlock == 0 || txLog.BlockNumber <= t.EndBlock) { sender = transferSender } } diff --git a/presenter/presenter.go b/presenter/presenter.go index df9b529..ebb6e3a 100644 --- a/presenter/presenter.go +++ b/presenter/presenter.go @@ -82,7 +82,7 @@ func (p *Presenter) Serve(addr string) error { return http.ListenAndServe(addr, p.root) } -func (p *Presenter) JSON(w http.ResponseWriter, r *http.Request, status int, v interface{}) { +func (p *Presenter) JSON(w http.ResponseWriter, r *http.Request, status int, res interface{}) { enc := json.NewEncoder(w) if pretty, _ := strconv.ParseBool(chi.URLParam(r, "pretty")); pretty { @@ -90,7 +90,7 @@ func (p *Presenter) JSON(w http.ResponseWriter, r *http.Request, status int, v i } w.WriteHeader(status) - if err := enc.Encode(v); err != nil { + if err := enc.Encode(res); err != nil { p.Error(w, r, fmt.Errorf("failed to marshal JSON result: %w", err)) return } @@ -680,13 +680,13 @@ func (p *Presenter) getTxInfo(ctx context.Context, logID uint) (*TxInfo, error) if err != nil { return nil, err } - ts, err := p.repo.BlockTimestamps.GetByBlockNumber(ctx, log.ChainID, log.BlockNumber) + bt, err := p.repo.BlockTimestamps.GetByBlockNumber(ctx, log.ChainID, log.BlockNumber) if err != nil { return nil, err } return &TxInfo{ BlockNumber: log.BlockNumber, - Timestamp: ts.Timestamp, + Timestamp: bt.Timestamp, Link: logToTxLink(log), }, nil } diff --git a/repository/postgres/block_timestamps.go b/repository/postgres/block_timestamps.go index 480d097..92f23a2 100644 --- a/repository/postgres/block_timestamps.go +++ b/repository/postgres/block_timestamps.go @@ -47,13 +47,13 @@ func (r *blockTimestampsRepo) GetByBlockNumber(ctx context.Context, chainID stri if err != nil { return nil, fmt.Errorf("can't build query: %w", err) } - ts := new(entity.BlockTimestamp) - err = r.db.GetContext(ctx, ts, q, args...) + bt := new(entity.BlockTimestamp) + err = r.db.GetContext(ctx, bt, q, args...) if err != nil { if errors.Is(err, sql.ErrNoRows) { return nil, db.ErrNotFound } return nil, fmt.Errorf("can't get block timestamp: %w", err) } - return ts, nil + return bt, nil }