infra/op-ufm/pkg/metrics/clients/signer.go

43 lines
1.4 KiB
Go
Raw Permalink Normal View History

package clients
import (
"context"
"math/big"
"time"
2023-07-15 01:17:02 +03:00
"github.com/ethereum-optimism/optimism/op-ufm/pkg/metrics"
2023-12-13 03:23:39 +03:00
"github.com/ethereum/go-ethereum/common"
2023-07-15 01:17:02 +03:00
2023-09-27 07:11:06 +03:00
signer "github.com/ethereum-optimism/optimism/op-service/signer"
2023-12-13 03:23:39 +03:00
optls "github.com/ethereum-optimism/optimism/op-service/tls"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/log"
)
type InstrumentedSignerClient struct {
c *signer.SignerClient
providerName string
}
func NewSignerClient(providerName string, logger log.Logger, endpoint string, tlsConfig optls.CLIConfig) (*InstrumentedSignerClient, error) {
start := time.Now()
c, err := signer.NewSignerClient(logger, endpoint, tlsConfig)
if err != nil {
2023-09-07 01:09:03 +03:00
metrics.RecordErrorDetails(providerName, "signer.NewSignerClient", err)
return nil, err
}
metrics.RecordRPCLatency(providerName, "signer", "NewSignerClient", time.Since(start))
return &InstrumentedSignerClient{c: c, providerName: providerName}, nil
}
2023-12-13 03:23:39 +03:00
func (i *InstrumentedSignerClient) SignTransaction(ctx context.Context, chainId *big.Int, from *common.Address, tx *types.Transaction) (*types.Transaction, error) {
start := time.Now()
2023-12-13 03:23:39 +03:00
tx, err := i.c.SignTransaction(ctx, chainId, *from, tx)
if err != nil {
2023-09-07 01:09:03 +03:00
metrics.RecordErrorDetails(i.providerName, "signer.SignTransaction", err)
return nil, err
}
metrics.RecordRPCLatency(i.providerName, "signer", "SignTransaction", time.Since(start))
return tx, err
}