From a33bcbcbfd2d2410569c58b45f5ed485d26c7acd Mon Sep 17 00:00:00 2001 From: jholdstock Date: Thu, 14 Sep 2023 14:08:53 +0100 Subject: [PATCH] multi: Reuse CurrentVoteVersion helper. Moving CurrentVoteVersion to the config package allows it to be reused in vote-validator. --- cmd/vote-validator/main.go | 7 +------ internal/config/network.go | 12 ++++++++++++ internal/webapi/helpers.go | 11 ----------- internal/webapi/payfee.go | 2 +- internal/webapi/setvotechoices.go | 2 +- 5 files changed, 15 insertions(+), 19 deletions(-) diff --git a/cmd/vote-validator/main.go b/cmd/vote-validator/main.go index a7a06cd..d1d09e9 100644 --- a/cmd/vote-validator/main.go +++ b/cmd/vote-validator/main.go @@ -69,12 +69,7 @@ func run() int { // Get the latest vote version. Any votes which don't match this version // will be ignored. - var latestVoteVersion uint32 - for version := range network.Deployments { - if version > latestVoteVersion { - latestVoteVersion = version - } - } + latestVoteVersion := network.CurrentVoteVersion() // Open database. log := slog.NewBackend(os.Stdout).Logger("") diff --git a/internal/config/network.go b/internal/config/network.go index a275f6c..7f08dd2 100644 --- a/internal/config/network.go +++ b/internal/config/network.go @@ -59,3 +59,15 @@ var SimNet = Network{ func (n *Network) DCP5Active(height int64) bool { return height >= n.DCP0005Height } + +// CurrentVoteVersion returns the most recent version in the current networks +// consensus agenda deployments. +func (n *Network) CurrentVoteVersion() uint32 { + var latestVersion uint32 + for version := range n.Deployments { + if latestVersion < version { + latestVersion = version + } + } + return latestVersion +} diff --git a/internal/webapi/helpers.go b/internal/webapi/helpers.go index 4790e68..dd09aaa 100644 --- a/internal/webapi/helpers.go +++ b/internal/webapi/helpers.go @@ -11,7 +11,6 @@ import ( "github.com/decred/dcrd/blockchain/stake/v5" "github.com/decred/dcrd/chaincfg/chainhash" - "github.com/decred/dcrd/chaincfg/v3" "github.com/decred/dcrd/dcrec/secp256k1/v4" "github.com/decred/dcrd/dcrutil/v4" dcrdtypes "github.com/decred/dcrd/rpc/jsonrpc/types/v4" @@ -20,16 +19,6 @@ import ( "github.com/decred/vspd/internal/config" ) -func currentVoteVersion(params *chaincfg.Params) uint32 { - var latestVersion uint32 - for version := range params.Deployments { - if latestVersion < version { - latestVersion = version - } - } - return latestVersion -} - // validConsensusVoteChoices returns an error if provided vote choices are not // valid for the most recent consensus agendas. func validConsensusVoteChoices(network *config.Network, voteVersion uint32, voteChoices map[string]string) error { diff --git a/internal/webapi/payfee.go b/internal/webapi/payfee.go index 052107e..78059ca 100644 --- a/internal/webapi/payfee.go +++ b/internal/webapi/payfee.go @@ -103,7 +103,7 @@ func (s *server) payFee(c *gin.Context) { // the ticket should still be registered. validVoteChoices := true - err = validConsensusVoteChoices(s.cfg.Network, currentVoteVersion(s.cfg.Network.Params), request.VoteChoices) + err = validConsensusVoteChoices(s.cfg.Network, s.cfg.Network.CurrentVoteVersion(), request.VoteChoices) if err != nil { validVoteChoices = false s.log.Warnf("%s: Invalid consensus vote choices (clientIP=%s, ticketHash=%s): %v", diff --git a/internal/webapi/setvotechoices.go b/internal/webapi/setvotechoices.go index 272852f..3863dc5 100644 --- a/internal/webapi/setvotechoices.go +++ b/internal/webapi/setvotechoices.go @@ -95,7 +95,7 @@ func (s *server) setVoteChoices(c *gin.Context) { // Validate vote choices (consensus, tspend policy and treasury policy). - err = validConsensusVoteChoices(s.cfg.Network, currentVoteVersion(s.cfg.Network.Params), request.VoteChoices) + err = validConsensusVoteChoices(s.cfg.Network, s.cfg.Network.CurrentVoteVersion(), request.VoteChoices) if err != nil { s.log.Warnf("%s: Invalid consensus vote choices (clientIP=%s, ticketHash=%s): %v", funcName, c.ClientIP(), ticket.Hash, err)