From 448b142f7c245753e239a1121af0a7bf16c1b6dd Mon Sep 17 00:00:00 2001 From: Mohammed Sohail Date: Wed, 29 Mar 2023 07:37:59 +0000 Subject: [PATCH] refactor: nonce store interface * A nonce value can now be bootstrapped externally from any source * Removed unecessary SetNewAccountNonce method --- internal/nonce/nonce.go | 3 +- internal/nonce/redis.go | 38 ++++--------------------- internal/tasker/task/account_prepare.go | 2 +- 3 files changed, 7 insertions(+), 36 deletions(-) diff --git a/internal/nonce/nonce.go b/internal/nonce/nonce.go index 9817ae2..12a35a8 100644 --- a/internal/nonce/nonce.go +++ b/internal/nonce/nonce.go @@ -7,6 +7,5 @@ type Noncestore interface { Peek(context.Context, string) (uint64, error) Acquire(context.Context, string) (uint64, error) Return(context.Context, string) error - SyncNetworkNonce(context.Context, string) (uint64, error) - SetNewAccountNonce(context.Context, string) error + SetAccountNonce(context.Context, string, uint64) error } diff --git a/internal/nonce/redis.go b/internal/nonce/redis.go index e7705e5..c0915fa 100644 --- a/internal/nonce/redis.go +++ b/internal/nonce/redis.go @@ -3,27 +3,21 @@ package nonce import ( "context" - "github.com/grassrootseconomics/celoutils" redispool "github.com/grassrootseconomics/cic-custodial/pkg/redis" - "github.com/grassrootseconomics/w3-celo-patch" - "github.com/grassrootseconomics/w3-celo-patch/module/eth" ) type Opts struct { - RedisPool *redispool.RedisPool - CeloProvider *celoutils.Provider + RedisPool *redispool.RedisPool } // RedisNoncestore implements `Noncestore` type RedisNoncestore struct { - chainProvider *celoutils.Provider - redis *redispool.RedisPool + redis *redispool.RedisPool } func NewRedisNoncestore(o Opts) Noncestore { return &RedisNoncestore{ - redis: o.RedisPool, - chainProvider: o.CeloProvider, + redis: o.RedisPool, } } @@ -70,30 +64,8 @@ func (n *RedisNoncestore) Return(ctx context.Context, publicKey string) error { return nil } -func (n *RedisNoncestore) SyncNetworkNonce(ctx context.Context, publicKey string) (uint64, error) { - var ( - networkNonce uint64 - ) - - err := n.chainProvider.Client.CallCtx( - ctx, - eth.Nonce(w3.A(publicKey), nil).Returns(&networkNonce), - ) - if err != nil { - return 0, err - } - - err = n.redis.Client.Set(ctx, publicKey, networkNonce, 0).Err() - if err != nil { - return 0, err - } - - return networkNonce, nil -} - -func (n *RedisNoncestore) SetNewAccountNonce(ctx context.Context, publicKey string) error { - err := n.redis.Client.Set(ctx, publicKey, 0, 0).Err() - if err != nil { +func (n *RedisNoncestore) SetAccountNonce(ctx context.Context, publicKey string, nonce uint64) error { + if err := n.redis.Client.Set(ctx, publicKey, nonce, 0).Err(); err != nil { return err } diff --git a/internal/tasker/task/account_prepare.go b/internal/tasker/task/account_prepare.go index 00755ac..6d75ed6 100644 --- a/internal/tasker/task/account_prepare.go +++ b/internal/tasker/task/account_prepare.go @@ -24,7 +24,7 @@ func AccountPrepare(cu *custodial.Custodial) func(context.Context, *asynq.Task) return fmt.Errorf("account: failed %v: %w", err, asynq.SkipRetry) } - if err := cu.Noncestore.SetNewAccountNonce(ctx, payload.PublicKey); err != nil { + if err := cu.Noncestore.SetAccountNonce(ctx, payload.PublicKey, 0); err != nil { return err }