From 80eb15bd91b21ffd7f00b3951f00b7e349b734bc Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 21:55:32 +0000 Subject: [PATCH 001/120] refactor(shared): centralized config_protos --- Makefile | 5 +---- .../configs}/proto/consensus_config.proto | 5 +++-- .../configs}/proto/logger_config.proto | 5 +++-- .../types => runtime/configs}/proto/p2p_config.proto | 4 ++-- .../configs}/proto/persistence_config.proto | 7 ++++--- runtime/configs/proto/rpc_config.proto | 12 ++++++++++++ .../configs}/proto/telemetry_config.proto | 7 ++++--- .../configs/proto/utility_config.proto | 7 ++++--- 8 files changed, 33 insertions(+), 19 deletions(-) rename {consensus/types => runtime/configs}/proto/consensus_config.proto (77%) rename {logger => runtime/configs}/proto/logger_config.proto (80%) rename {p2p/types => runtime/configs}/proto/p2p_config.proto (84%) rename {persistence => runtime/configs}/proto/persistence_config.proto (67%) create mode 100644 runtime/configs/proto/rpc_config.proto rename {telemetry => runtime/configs}/proto/telemetry_config.proto (77%) rename utility/types/proto/util_config.proto => runtime/configs/proto/utility_config.proto (58%) diff --git a/Makefile b/Makefile index 4c74fae79..673805c06 100644 --- a/Makefile +++ b/Makefile @@ -279,10 +279,7 @@ protogen_local: go_protoc-go-inject-tag protoc --go_opt=paths=source_relative -I=./utility/types/proto --go_out=./utility/types ./utility/types/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./consensus/types/proto --go_out=./consensus/types ./consensus/types/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./p2p/raintree/types/proto --go_out=./p2p/types ./p2p/raintree/types/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./p2p/types/proto --go_out=./p2p/types ./p2p/types/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./telemetry/proto --go_out=./telemetry ./telemetry/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./logger/proto --go_out=./logger ./logger/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./rpc/types/proto --go_out=./rpc/types ./rpc/types/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./runtime/configs/proto --go_out=./runtime/configs ./runtime/configs/proto/*.proto --experimental_allow_proto3_optional echo "View generated proto files by running: make protogen_show" .PHONY: protogen_docker_m1 diff --git a/consensus/types/proto/consensus_config.proto b/runtime/configs/proto/consensus_config.proto similarity index 77% rename from consensus/types/proto/consensus_config.proto rename to runtime/configs/proto/consensus_config.proto index c7662cd80..9830a1672 100644 --- a/consensus/types/proto/consensus_config.proto +++ b/runtime/configs/proto/consensus_config.proto @@ -1,7 +1,8 @@ syntax = "proto3"; -package consensus; -option go_package = "github.com/pokt-network/pocket/consensus/types"; +package configs; + +option go_package = "github.com/pokt-network/pocket/runtime/configs"; message ConsensusConfig { string private_key = 1; diff --git a/logger/proto/logger_config.proto b/runtime/configs/proto/logger_config.proto similarity index 80% rename from logger/proto/logger_config.proto rename to runtime/configs/proto/logger_config.proto index ef64ec56f..8ff2e6eaa 100644 --- a/logger/proto/logger_config.proto +++ b/runtime/configs/proto/logger_config.proto @@ -1,7 +1,8 @@ syntax = "proto3"; -package logger; -option go_package = "github.com/pokt-network/pocket/logger"; +package configs; + +option go_package = "github.com/pokt-network/pocket/runtime/configs"; message LoggerConfig { string level = 1; diff --git a/p2p/types/proto/p2p_config.proto b/runtime/configs/proto/p2p_config.proto similarity index 84% rename from p2p/types/proto/p2p_config.proto rename to runtime/configs/proto/p2p_config.proto index 6b4700a55..492a8664a 100644 --- a/p2p/types/proto/p2p_config.proto +++ b/runtime/configs/proto/p2p_config.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package p2p; +package configs; -option go_package = "github.com/pokt-network/pocket/p2p/types"; +option go_package = "github.com/pokt-network/pocket/runtime/configs"; message P2PConfig { string private_key = 1; diff --git a/persistence/proto/persistence_config.proto b/runtime/configs/proto/persistence_config.proto similarity index 67% rename from persistence/proto/persistence_config.proto rename to runtime/configs/proto/persistence_config.proto index ffe70c3b3..9296902fb 100644 --- a/persistence/proto/persistence_config.proto +++ b/runtime/configs/proto/persistence_config.proto @@ -1,7 +1,8 @@ syntax = "proto3"; -package persistence; -option go_package = "github.com/pokt-network/pocket/persistence/types"; +package configs; + +option go_package = "github.com/pokt-network/pocket/runtime/configs"; message PersistenceConfig { string postgres_url = 1; @@ -9,4 +10,4 @@ message PersistenceConfig { string block_store_path = 3; string tx_indexer_path = 4; string trees_store_dir = 5; -} \ No newline at end of file +} diff --git a/runtime/configs/proto/rpc_config.proto b/runtime/configs/proto/rpc_config.proto new file mode 100644 index 000000000..a46b8d361 --- /dev/null +++ b/runtime/configs/proto/rpc_config.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +package configs; + +option go_package = "github.com/pokt-network/pocket/runtime/configs"; + +message RPCConfig { + bool enabled = 1; + string port = 2; + uint64 timeout = 3; + bool use_cors = 4; +} diff --git a/telemetry/proto/telemetry_config.proto b/runtime/configs/proto/telemetry_config.proto similarity index 77% rename from telemetry/proto/telemetry_config.proto rename to runtime/configs/proto/telemetry_config.proto index 36e4f2eea..27ad461eb 100644 --- a/telemetry/proto/telemetry_config.proto +++ b/runtime/configs/proto/telemetry_config.proto @@ -1,10 +1,11 @@ syntax = "proto3"; -package telemetry; -option go_package = "github.com/pokt-network/pocket/telemetry"; +package configs; + +option go_package = "github.com/pokt-network/pocket/runtime/configs"; message TelemetryConfig { bool enabled = 1; string address = 2; // The address the telemetry module will use to listen for metrics PULL requests (e.g. 0.0.0.0:9000 for prometheus) string endpoint = 3; // The endpoint available to fetch recorded metrics (e.g. /metrics for prometheus) -} \ No newline at end of file +} diff --git a/utility/types/proto/util_config.proto b/runtime/configs/proto/utility_config.proto similarity index 58% rename from utility/types/proto/util_config.proto rename to runtime/configs/proto/utility_config.proto index a56191f30..ca491a54f 100644 --- a/utility/types/proto/util_config.proto +++ b/runtime/configs/proto/utility_config.proto @@ -1,9 +1,10 @@ syntax = "proto3"; -package utility; -option go_package = "github.com/pokt-network/pocket/utility/types"; +package configs; + +option go_package = "github.com/pokt-network/pocket/runtime/configs"; message UtilityConfig { uint64 max_mempool_transaction_bytes = 1; uint32 max_mempool_transactions = 2; -} \ No newline at end of file +} From 35b128a55df4f91ba6726528953525aa33cc579b Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 21:56:59 +0000 Subject: [PATCH 002/120] feat(test_artifacts): deterministic keygen --- runtime/test_artifacts/generator.go | 105 +++++------------- runtime/test_artifacts/keygenerator/keygen.go | 66 +++++++++++ 2 files changed, 94 insertions(+), 77 deletions(-) create mode 100644 runtime/test_artifacts/keygenerator/keygen.go diff --git a/runtime/test_artifacts/generator.go b/runtime/test_artifacts/generator.go index 313e4028f..cd77d778e 100644 --- a/runtime/test_artifacts/generator.go +++ b/runtime/test_artifacts/generator.go @@ -2,51 +2,24 @@ package test_artifacts // Cross module imports are okay because this is only used for testing and not business logic import ( - "bytes" - "encoding/binary" "fmt" - "math/rand" - "os" "strconv" typesCons "github.com/pokt-network/pocket/consensus/types" - typesP2P "github.com/pokt-network/pocket/p2p/types" typesPers "github.com/pokt-network/pocket/persistence/types" "github.com/pokt-network/pocket/runtime" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/runtime/defaults" + "github.com/pokt-network/pocket/runtime/test_artifacts/keygenerator" "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" - typesTelemetry "github.com/pokt-network/pocket/telemetry" "github.com/pokt-network/pocket/utility/types" typesUtil "github.com/pokt-network/pocket/utility/types" "google.golang.org/protobuf/types/known/timestamppb" ) -// HACK: This is a hack used to enable deterministic key generation via an environment variable. -// In order to avoid this, `NewGenesisState` and all downstream functions would need to be -// refactored. Alternatively, the seed would need to be passed via the runtime manager. -// To avoid these large scale changes, this is a temporary approach to enable deterministic -// key generation. -// IMPROVE(#361): Design a better way to generate deterministic keys for testing. -const PrivateKeySeedEnv = "DEFAULT_PRIVATE_KEY_SEED" - -var privateKeySeed int - -// Intentionally not using `init` in case the caller sets this before `NewGenesisState` is called.s -func loadPrivateKeySeed() { - privateKeySeedEnvValue := os.Getenv(PrivateKeySeedEnv) - if seedInt, err := strconv.Atoi(privateKeySeedEnvValue); err == nil { - privateKeySeed = seedInt - } else { - rand.Seed(timestamppb.Now().Seconds) - privateKeySeed = rand.Int() - } -} - // IMPROVE: Generate a proper genesis suite in the future. func NewGenesisState(numValidators, numServiceNodes, numApplications, numFisherman int) (modules.GenesisState, []string) { - loadPrivateKeySeed() - apps, appsPrivateKeys := NewActors(types.ActorType_App, numApplications) vals, validatorPrivateKeys := NewActors(types.ActorType_Validator, numValidators) serviceNodes, snPrivateKeys := NewActors(types.ActorType_ServiceNode, numServiceNodes) @@ -74,50 +47,47 @@ func NewGenesisState(numValidators, numServiceNodes, numApplications, numFisherm return genesisState, validatorPrivateKeys } -func NewDefaultConfigs(privateKeys []string) (configs []modules.Config) { +func NewDefaultConfigs(privateKeys []string) (configs []*configs.Config) { for i, pk := range privateKeys { configs = append(configs, NewDefaultConfig(i, pk)) } return } -func NewDefaultConfig(i int, pk string) modules.Config { - return runtime.NewConfig( - &runtime.BaseConfig{ - RootDirectory: "/go/src/github.com/pocket-network", - PrivateKey: pk, +func NewDefaultConfig(i int, pk string) *configs.Config { + return &configs.Config{ + RootDirectory: "/go/src/github.com/pocket-network", + PrivateKey: pk, + Consensus: &configs.ConsensusConfig{ + MaxMempoolBytes: 500000000, + PacemakerConfig: &configs.PacemakerConfig{ + TimeoutMsec: 5000, + Manual: true, + DebugTimeBetweenStepsMsec: 1000, + }, + PrivateKey: pk, }, - runtime.WithConsensusConfig( - &typesCons.ConsensusConfig{ - MaxMempoolBytes: 500000000, - PacemakerConfig: &typesCons.PacemakerConfig{ - TimeoutMsec: 5000, - Manual: true, - DebugTimeBetweenStepsMsec: 1000, - }, - PrivateKey: pk, - }), - runtime.WithUtilityConfig(&typesUtil.UtilityConfig{ + Utility: &configs.UtilityConfig{ MaxMempoolTransactionBytes: 1024 * 1024 * 1024, // 1GB V0 defaults MaxMempoolTransactions: 9000, - }), - runtime.WithPersistenceConfig(&typesPers.PersistenceConfig{ + }, + Persistence: &configs.PersistenceConfig{ PostgresUrl: "postgres://postgres:postgres@pocket-db:5432/postgres", NodeSchema: "node" + strconv.Itoa(i+1), BlockStorePath: "/var/blockstore", - }), - runtime.WithP2PConfig(&typesP2P.P2PConfig{ + }, + P2P: &configs.P2PConfig{ ConsensusPort: 8080, UseRainTree: true, IsEmptyConnectionType: false, PrivateKey: pk, - }), - runtime.WithTelemetryConfig(&typesTelemetry.TelemetryConfig{ + }, + Telemetry: &configs.TelemetryConfig{ Enabled: true, Address: "0.0.0.0:9000", Endpoint: "/metrics", - }), - ) + }, + } } func NewPools() (pools []modules.Account) { // TODO (Team) in the real testing suite, we need to populate the pool amounts dependent on the actors @@ -139,7 +109,7 @@ func NewPools() (pools []modules.Account) { // TODO (Team) in the real testing s func NewAccounts(n int, privateKeys ...string) (accounts []modules.Account) { for i := 0; i < n; i++ { - _, _, addr := generateNewKeysStrings() + _, _, addr := keygenerator.GetInstance().Next() if privateKeys != nil { pk, _ := crypto.NewPrivateKey(privateKeys[i]) addr = pk.Address().String() @@ -153,7 +123,8 @@ func NewAccounts(n int, privateKeys ...string) (accounts []modules.Account) { } // TODO: The current implementation of NewActors will have overlapping `ServiceUrl` for different -// types of actors which needs to be fixed. +// +// types of actors which needs to be fixed. func NewActors(actorType typesUtil.ActorType, n int) (actors []modules.Actor, privateKeys []string) { for i := 0; i < n; i++ { genericParam := getServiceUrl(i + 1) @@ -173,7 +144,7 @@ func getServiceUrl(n int) string { } func NewDefaultActor(actorType int32, genericParam string) (actor modules.Actor, privateKey string) { - privKey, pubKey, addr := generateNewKeysStrings() + privKey, pubKey, addr := keygenerator.GetInstance().Next() chains := defaults.DefaultChains if actorType == int32(typesPers.ActorType_Val) { chains = nil @@ -192,23 +163,3 @@ func NewDefaultActor(actorType int32, genericParam string) (actor modules.Actor, ActorType: typesPers.ActorType(actorType), }, privKey } - -// TECHDEBT: This function has the side effect of incrementing the global variable `privateKeySeed` -// in order to guarantee unique keys, but that are still deterministic for testing purposes. -func generateNewKeysStrings() (privateKey, publicKey, address string) { - privateKeySeed += 1 // Different on every call but deterministic - cryptoSeed := make([]byte, crypto.SeedSize) - binary.LittleEndian.PutUint32(cryptoSeed, uint32(privateKeySeed)) - - reader := bytes.NewReader(cryptoSeed) - privateKeyBz, err := crypto.GeneratePrivateKeyWithReader(reader) - if err != nil { - panic(err) - } - - privateKey = privateKeyBz.String() - publicKey = privateKeyBz.PublicKey().String() - address = privateKeyBz.PublicKey().Address().String() - - return -} diff --git a/runtime/test_artifacts/keygenerator/keygen.go b/runtime/test_artifacts/keygenerator/keygen.go new file mode 100644 index 000000000..c5186868c --- /dev/null +++ b/runtime/test_artifacts/keygenerator/keygen.go @@ -0,0 +1,66 @@ +package keygenerator + +import ( + "bytes" + "encoding/binary" + "math/rand" + "sync" + + "github.com/pokt-network/pocket/shared/crypto" + "google.golang.org/protobuf/types/known/timestamppb" +) + +var keygenInitOnce sync.Once +var keygen *keyGenerator + +type keyGenerator struct { + privateKeySeed int +} + +func GetInstance() *keyGenerator { + if keygen == nil { + var privateKeySeed int + keygenInitOnce.Do(func() { + privateKeySeed = getPrivateKeySeed() + keygen = &keyGenerator{ + privateKeySeed: privateKeySeed, + } + }) + } + return keygen +} + +func (k *keyGenerator) reset() { + k.privateKeySeed = getPrivateKeySeed() +} + +func (k *keyGenerator) SetSeed(seed int) (teardown func()) { + k.privateKeySeed = seed + return func() { + k.reset() + } +} + +func (k *keyGenerator) Next() (privateKey, publicKey, address string) { + k.privateKeySeed += 1 // Different on every call but deterministic + cryptoSeed := make([]byte, crypto.SeedSize) + binary.LittleEndian.PutUint32(cryptoSeed, uint32(k.privateKeySeed)) + + reader := bytes.NewReader(cryptoSeed) + privateKeyBz, err := crypto.GeneratePrivateKeyWithReader(reader) + if err != nil { + panic(err) + } + + privateKey = privateKeyBz.String() + publicKey = privateKeyBz.PublicKey().String() + address = privateKeyBz.PublicKey().Address().String() + + return +} + +func getPrivateKeySeed() (privateKeySeed int) { + rand.Seed(timestamppb.Now().Seconds) + privateKeySeed = rand.Int() + return +} From df5c92eeec83127d5ed208e2af429772d0557531 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 21:57:49 +0000 Subject: [PATCH 003/120] refactor(runtime): refactored to use centralized configs --- runtime/base_config.go | 18 -------- runtime/config.go | 97 --------------------------------------- runtime/configs/config.go | 14 ++++++ runtime/manager.go | 25 ++++------ 4 files changed, 24 insertions(+), 130 deletions(-) delete mode 100644 runtime/base_config.go delete mode 100644 runtime/config.go create mode 100644 runtime/configs/config.go diff --git a/runtime/base_config.go b/runtime/base_config.go deleted file mode 100644 index 149d9dd7d..000000000 --- a/runtime/base_config.go +++ /dev/null @@ -1,18 +0,0 @@ -package runtime - -import "github.com/pokt-network/pocket/shared/modules" - -var _ modules.BaseConfig = &BaseConfig{} - -type BaseConfig struct { - RootDirectory string `json:"root_directory"` - PrivateKey string `json:"private_key"` // TODO (#150) better architecture for key management (keybase, keyfiles, etc.) -} - -func (c *BaseConfig) GetRootDirectory() string { - return c.RootDirectory -} - -func (c *BaseConfig) GetPrivateKey() string { - return c.PrivateKey -} diff --git a/runtime/config.go b/runtime/config.go deleted file mode 100644 index c6d9aca50..000000000 --- a/runtime/config.go +++ /dev/null @@ -1,97 +0,0 @@ -package runtime - -import ( - typesCons "github.com/pokt-network/pocket/consensus/types" - typesLogger "github.com/pokt-network/pocket/logger" - typesP2P "github.com/pokt-network/pocket/p2p/types" - typesPers "github.com/pokt-network/pocket/persistence/types" - typesRPC "github.com/pokt-network/pocket/rpc/types" - "github.com/pokt-network/pocket/shared/modules" - typesTelemetry "github.com/pokt-network/pocket/telemetry" - typesUtil "github.com/pokt-network/pocket/utility/types" -) - -var _ modules.Config = &runtimeConfig{} - -type runtimeConfig struct { - Base *BaseConfig `json:"base"` - Consensus *typesCons.ConsensusConfig `json:"consensus"` - Utility *typesUtil.UtilityConfig `json:"utility"` - Persistence *typesPers.PersistenceConfig `json:"persistence"` - P2P *typesP2P.P2PConfig `json:"p2p"` - Telemetry *typesTelemetry.TelemetryConfig `json:"telemetry"` - Logger *typesLogger.LoggerConfig `json:"logger"` - RPC *typesRPC.RPCConfig `json:"rpc"` -} - -func NewConfig(base *BaseConfig, otherConfigs ...func(modules.Config)) *runtimeConfig { - rc := &runtimeConfig{ - Base: base, - } - for _, oc := range otherConfigs { - oc(rc) - } - return rc -} - -func WithConsensusConfig(consensusConfig modules.ConsensusConfig) func(modules.Config) { - return func(rc modules.Config) { - rc.(*runtimeConfig).Consensus = consensusConfig.(*typesCons.ConsensusConfig) - } -} - -func WithUtilityConfig(utilityConfig modules.UtilityConfig) func(modules.Config) { - return func(rc modules.Config) { - rc.(*runtimeConfig).Utility = utilityConfig.(*typesUtil.UtilityConfig) - } -} - -func WithPersistenceConfig(persistenceConfig modules.PersistenceConfig) func(modules.Config) { - return func(rc modules.Config) { - rc.(*runtimeConfig).Persistence = persistenceConfig.(*typesPers.PersistenceConfig) - } -} - -func WithP2PConfig(p2pConfig modules.P2PConfig) func(modules.Config) { - return func(rc modules.Config) { - rc.(*runtimeConfig).P2P = p2pConfig.(*typesP2P.P2PConfig) - } -} - -func WithTelemetryConfig(telemetryConfig modules.TelemetryConfig) func(modules.Config) { - return func(rc modules.Config) { - rc.(*runtimeConfig).Telemetry = telemetryConfig.(*typesTelemetry.TelemetryConfig) - } -} - -func (c *runtimeConfig) GetBaseConfig() modules.BaseConfig { - return c.Base -} - -func (c *runtimeConfig) GetConsensusConfig() modules.ConsensusConfig { - return c.Consensus -} - -func (c *runtimeConfig) GetUtilityConfig() modules.UtilityConfig { - return c.Utility -} - -func (c *runtimeConfig) GetPersistenceConfig() modules.PersistenceConfig { - return c.Persistence -} - -func (c *runtimeConfig) GetP2PConfig() modules.P2PConfig { - return c.P2P -} - -func (c *runtimeConfig) GetTelemetryConfig() modules.TelemetryConfig { - return c.Telemetry -} - -func (c *runtimeConfig) GetLoggerConfig() modules.LoggerConfig { - return c.Logger -} - -func (c *runtimeConfig) GetRPCConfig() modules.RPCConfig { - return c.RPC -} diff --git a/runtime/configs/config.go b/runtime/configs/config.go new file mode 100644 index 000000000..348de9858 --- /dev/null +++ b/runtime/configs/config.go @@ -0,0 +1,14 @@ +package configs + +type Config struct { + RootDirectory string `json:"root_directory"` + PrivateKey string `json:"private_key"` // TODO (#150) better architecture for key management (keybase, keyfiles, etc.) + + Consensus *ConsensusConfig `json:"consensus"` + Utility *UtilityConfig `json:"utility"` + Persistence *PersistenceConfig `json:"persistence"` + P2P *P2PConfig `json:"p2p"` + Telemetry *TelemetryConfig `json:"telemetry"` + Logger *LoggerConfig `json:"logger"` + RPC *RPCConfig `json:"rpc"` +} diff --git a/runtime/manager.go b/runtime/manager.go index 1110de3c1..1ff7ceb62 100644 --- a/runtime/manager.go +++ b/runtime/manager.go @@ -10,8 +10,7 @@ import ( "github.com/benbjohnson/clock" "github.com/mitchellh/mapstructure" - typesCons "github.com/pokt-network/pocket/consensus/types" - typesP2P "github.com/pokt-network/pocket/p2p/types" + "github.com/pokt-network/pocket/runtime/configs" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" "github.com/spf13/viper" @@ -20,7 +19,7 @@ import ( var _ modules.RuntimeMgr = &Manager{} type Manager struct { - config *runtimeConfig + config *configs.Config genesis *runtimeGenesis clock clock.Clock @@ -51,7 +50,7 @@ func NewManagerFromFiles(configPath, genesisPath string, options ...func(*Manage // // Note: currently unused, here as a reference func NewManagerFromReaders(configReader, genesisReader io.Reader, options ...func(*Manager)) *Manager { - var cfg *runtimeConfig + var cfg *configs.Config parse(configReader, cfg) var genesis *runtimeGenesis @@ -70,9 +69,9 @@ func NewManagerFromReaders(configReader, genesisReader io.Reader, options ...fun return mgr } -func NewManager(config modules.Config, genesis modules.GenesisState, options ...func(*Manager)) *Manager { +func NewManager(config *configs.Config, genesis modules.GenesisState, options ...func(*Manager)) *Manager { mgr := &Manager{ - config: config.(*runtimeConfig), + config: config, genesis: genesis.(*runtimeGenesis), clock: clock.New(), } @@ -84,7 +83,7 @@ func NewManager(config modules.Config, genesis modules.GenesisState, options ... return mgr } -func (rc *Manager) init(configPath, genesisPath string) (config *runtimeConfig, genesis *runtimeGenesis, err error) { +func (rc *Manager) init(configPath, genesisPath string) (config *configs.Config, genesis *runtimeGenesis, err error) { dir, file := path.Split(configPath) filename := strings.TrimSuffix(file, filepath.Ext(file)) @@ -112,15 +111,11 @@ func (rc *Manager) init(configPath, genesisPath string) (config *runtimeConfig, return } - if config.Base == nil { - config.Base = &BaseConfig{} - } - genesis, err = parseGenesisJSON(genesisPath) return } -func (b *Manager) GetConfig() modules.Config { +func (b *Manager) GetConfig() *configs.Config { return b.config } @@ -133,7 +128,7 @@ func (b *Manager) GetClock() clock.Clock { } type supportedStructs interface { - *runtimeConfig | *runtimeGenesis + *configs.Config | *runtimeGenesis } func parse[T supportedStructs](reader io.Reader, target T) { @@ -161,12 +156,12 @@ func WithRandomPK() func(*Manager) { func WithPK(pk string) func(*Manager) { return func(b *Manager) { if b.config.Consensus == nil { - b.config.Consensus = &typesCons.ConsensusConfig{} + b.config.Consensus = &configs.ConsensusConfig{} } b.config.Consensus.PrivateKey = pk if b.config.P2P == nil { - b.config.P2P = &typesP2P.P2PConfig{} + b.config.P2P = &configs.P2PConfig{} } b.config.P2P.PrivateKey = pk } From 97803dd89d547825e85d2f25109b9988474b82d7 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 21:58:39 +0000 Subject: [PATCH 004/120] refactor(Consensus): refactored to use centralized config --- consensus/consensus_tests/pacemaker_test.go | 5 ++-- consensus/consensus_tests/utils_test.go | 23 ++++++++-------- consensus/hotstuff_leader.go | 2 +- consensus/module.go | 30 ++++++--------------- consensus/pacemaker.go | 28 ++++++------------- consensus/types/types.go | 4 --- shared/modules/consensus_module.go | 2 -- 7 files changed, 31 insertions(+), 63 deletions(-) diff --git a/consensus/consensus_tests/pacemaker_test.go b/consensus/consensus_tests/pacemaker_test.go index 421df67b5..d2077f5fe 100644 --- a/consensus/consensus_tests/pacemaker_test.go +++ b/consensus/consensus_tests/pacemaker_test.go @@ -26,9 +26,8 @@ func TestTinyPacemakerTimeouts(t *testing.T) { paceMakerTimeout := 50 * time.Millisecond runtimeMgrs := GenerateNodeRuntimeMgrs(t, numValidators, clockMock) for _, runtimeConfig := range runtimeMgrs { - if consCfg, ok := runtimeConfig.GetConfig().GetConsensusConfig().(consensus.HasPacemakerConfig); ok { - consCfg.GetPacemakerConfig().SetTimeoutMsec(paceMakerTimeoutMsec) - } + consCfg := runtimeConfig.GetConfig().Consensus.PacemakerConfig + consCfg.TimeoutMsec = paceMakerTimeoutMsec } // Create & start test pocket nodes diff --git a/consensus/consensus_tests/utils_test.go b/consensus/consensus_tests/utils_test.go index 208224177..f1bddee7a 100644 --- a/consensus/consensus_tests/utils_test.go +++ b/consensus/consensus_tests/utils_test.go @@ -17,6 +17,7 @@ import ( "github.com/pokt-network/pocket/consensus" typesCons "github.com/pokt-network/pocket/consensus/types" "github.com/pokt-network/pocket/runtime" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/runtime/test_artifacts" "github.com/pokt-network/pocket/shared" "github.com/pokt-network/pocket/shared/codec" @@ -66,17 +67,17 @@ func GenerateNodeRuntimeMgrs(_ *testing.T, validatorCount int, clockMgr clock.Cl runtimeMgrs := make([]runtime.Manager, validatorCount) var validatorKeys []string genesisState, validatorKeys := test_artifacts.NewGenesisState(validatorCount, 1, 1, 1) - configs := test_artifacts.NewDefaultConfigs(validatorKeys) - for i, config := range configs { - runtime.WithConsensusConfig(&typesCons.ConsensusConfig{ - PrivateKey: config.GetBaseConfig().GetPrivateKey(), + cfgs := test_artifacts.NewDefaultConfigs(validatorKeys) + for i, config := range cfgs { + config.Consensus = &configs.ConsensusConfig{ + PrivateKey: config.PrivateKey, MaxMempoolBytes: 500000000, - PacemakerConfig: &typesCons.PacemakerConfig{ + PacemakerConfig: &configs.PacemakerConfig{ TimeoutMsec: 5000, Manual: false, DebugTimeBetweenStepsMsec: 0, }, - })(config) + } runtimeMgrs[i] = *runtime.NewManager(config, genesisState, runtime.WithClock(clockMgr)) } return runtimeMgrs @@ -91,9 +92,9 @@ func CreateTestConsensusPocketNodes( // TODO(design): The order here is important in order for NodeId to be set correctly below. // This logic will need to change once proper leader election is implemented. sort.Slice(runtimeMgrs, func(i, j int) bool { - pk, err := cryptoPocket.NewPrivateKey(runtimeMgrs[i].GetConfig().GetBaseConfig().GetPrivateKey()) + pk, err := cryptoPocket.NewPrivateKey(runtimeMgrs[i].GetConfig().PrivateKey) require.NoError(t, err) - pk2, err := cryptoPocket.NewPrivateKey(runtimeMgrs[j].GetConfig().GetBaseConfig().GetPrivateKey()) + pk2, err := cryptoPocket.NewPrivateKey(runtimeMgrs[j].GetConfig().PrivateKey) require.NoError(t, err) return pk.Address().String() < pk2.Address().String() }) @@ -114,9 +115,9 @@ func CreateTestConsensusPocketNodesNew( // TODO(design): The order here is important in order for NodeId to be set correctly below. // This logic will need to change once proper leader election is implemented. sort.Slice(runtimeMgrs, func(i, j int) bool { - pk, err := cryptoPocket.NewPrivateKey(runtimeMgrs[i].GetConfig().GetBaseConfig().GetPrivateKey()) + pk, err := cryptoPocket.NewPrivateKey(runtimeMgrs[i].GetConfig().PrivateKey) require.NoError(t, err) - pk2, err := cryptoPocket.NewPrivateKey(runtimeMgrs[j].GetConfig().GetBaseConfig().GetPrivateKey()) + pk2, err := cryptoPocket.NewPrivateKey(runtimeMgrs[j].GetConfig().PrivateKey) require.NoError(t, err) return pk.Address().String() < pk2.Address().String() }) @@ -149,7 +150,7 @@ func CreateTestConsensusPocketNode( require.NoError(t, err) - pk, err := cryptoPocket.NewPrivateKey(runtimeMgr.GetConfig().GetBaseConfig().GetPrivateKey()) + pk, err := cryptoPocket.NewPrivateKey(runtimeMgr.GetConfig().PrivateKey) require.NoError(t, err) pocketNode := shared.NewNodeWithP2PAddress(pk.Address()) diff --git a/consensus/hotstuff_leader.go b/consensus/hotstuff_leader.go index ecefe05ec..118be9c5f 100644 --- a/consensus/hotstuff_leader.go +++ b/consensus/hotstuff_leader.go @@ -321,7 +321,7 @@ func (m *consensusModule) validatePartialSignature(msg *typesCons.HotstuffMessag // and does not recursively determine the size of all the underlying elements // Add proper tests and implementation once the mempool is implemented. func (m *consensusModule) tempIndexHotstuffMessage(msg *typesCons.HotstuffMessage) { - if m.consCfg.GetMaxMempoolBytes() < uint64(unsafe.Sizeof(m.messagePool)) { + if m.consCfg.MaxMempoolBytes < uint64(unsafe.Sizeof(m.messagePool)) { m.nodeLogError(typesCons.DisregardHotstuffMessage, typesCons.ErrConsensusMempoolFull) return } diff --git a/consensus/module.go b/consensus/module.go index 271ef6d4d..94a894007 100644 --- a/consensus/module.go +++ b/consensus/module.go @@ -9,6 +9,7 @@ import ( "github.com/pokt-network/pocket/consensus/leader_election" consensusTelemetry "github.com/pokt-network/pocket/consensus/telemetry" typesCons "github.com/pokt-network/pocket/consensus/types" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/shared/codec" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" @@ -21,8 +22,8 @@ const ( ) var ( - _ modules.ConsensusModule = &consensusModule{} - _ modules.ConsensusConfig = &typesCons.ConsensusConfig{} + _ modules.ConsensusModule = &consensusModule{} + // _ modules.ConsensusConfig = &typesCons.ConsensusConfig{} _ modules.ConsensusGenesisState = &typesCons.ConsensusGenesisState{} _ ConsensusDebugModule = &consensusModule{} ) @@ -31,7 +32,7 @@ type consensusModule struct { bus modules.Bus privateKey cryptoPocket.Ed25519PrivateKey - consCfg modules.ConsensusConfig + consCfg *configs.ConsensusConfig consGenesis modules.ConsensusGenesisState // m is a mutex used to control synchronization when multiple goroutines are accessing the struct and its fields / properties. @@ -117,11 +118,7 @@ func Create(runtimeMgr modules.RuntimeMgr) (modules.Module, error) { func (*consensusModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, error) { var m *consensusModule - cfg := runtimeMgr.GetConfig() - if err := m.ValidateConfig(cfg); err != nil { - return nil, fmt.Errorf("config validation failed: %w", err) - } - consensusCfg := cfg.GetConsensusConfig() + consensusCfg := runtimeMgr.GetConfig().Consensus genesis := runtimeMgr.GetGenesis() if err := m.ValidateGenesis(genesis); err != nil { @@ -142,7 +139,7 @@ func (*consensusModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, e valMap := typesCons.ActorListToValidatorMap(consensusGenesis.GetVals()) - privateKey, err := cryptoPocket.NewPrivateKey(consensusCfg.GetPrivateKey()) + privateKey, err := cryptoPocket.NewPrivateKey(consensusCfg.PrivateKey) if err != nil { return nil, err } @@ -155,7 +152,7 @@ func (*consensusModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, e bus: nil, privateKey: privateKey.(cryptoPocket.Ed25519PrivateKey), - consCfg: cfg.GetConsensusConfig(), + consCfg: consensusCfg, consGenesis: genesis.GetConsensusGenesisState(), height: 0, @@ -233,11 +230,6 @@ func (m *consensusModule) SetBus(pocketBus modules.Bus) { m.leaderElectionMod.SetBus(pocketBus) } -func (*consensusModule) ValidateConfig(cfg modules.Config) error { - // TODO (#334): implement this - return nil -} - func (*consensusModule) ValidateGenesis(genesis modules.GenesisState) error { // Sort the validators by their generic param (i.e. service URL) vals := genesis.GetConsensusGenesisState().GetVals() @@ -264,7 +256,7 @@ func (*consensusModule) ValidateGenesis(genesis modules.GenesisState) error { } func (m *consensusModule) GetPrivateKey() (cryptoPocket.PrivateKey, error) { - return cryptoPocket.NewPrivateKey(m.consCfg.GetPrivateKey()) + return cryptoPocket.NewPrivateKey(m.consCfg.PrivateKey) } func (m *consensusModule) HandleMessage(message *anypb.Any) error { @@ -327,9 +319,3 @@ func (m *consensusModule) loadPersistedState() error { return nil } - -// HasPacemakerConfig is used to determine if a ConsensusConfig includes a PacemakerConfig without having to cast to the struct -// (which would break mocks and/or pollute the codebase with mock types casts and checks) -type HasPacemakerConfig interface { - GetPacemakerConfig() *typesCons.PacemakerConfig -} diff --git a/consensus/pacemaker.go b/consensus/pacemaker.go index bb7b3c3ca..0f1e90590 100644 --- a/consensus/pacemaker.go +++ b/consensus/pacemaker.go @@ -2,12 +2,12 @@ package consensus import ( "context" - "fmt" "log" timePkg "time" consensusTelemetry "github.com/pokt-network/pocket/consensus/telemetry" typesCons "github.com/pokt-network/pocket/consensus/types" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/shared/modules" ) @@ -31,10 +31,8 @@ type Pacemaker interface { } var ( - _ modules.Module = &paceMaker{} - _ modules.ConfigurableModule = &paceMaker{} - _ PacemakerDebug = &paceMaker{} - _ modules.PacemakerConfig = &typesCons.PacemakerConfig{} + _ modules.Module = &paceMaker{} + _ PacemakerDebug = &paceMaker{} ) type paceMaker struct { @@ -46,7 +44,7 @@ type paceMaker struct { // a great idea in production code. consensusMod *consensusModule - pacemakerCfg modules.PacemakerConfig + pacemakerCfg *configs.PacemakerConfig stepCancelFunc context.CancelFunc @@ -61,11 +59,8 @@ func CreatePacemaker(runtimeMgr modules.RuntimeMgr) (modules.Module, error) { func (m *paceMaker) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, error) { cfg := runtimeMgr.GetConfig() - if err := m.ValidateConfig(cfg); err != nil { - log.Fatalf("config validation failed: %v", err) - } - pacemakerCfg := cfg.GetConsensusConfig().(HasPacemakerConfig).GetPacemakerConfig() + pacemakerCfg := cfg.Consensus.PacemakerConfig return &paceMaker{ bus: nil, @@ -76,8 +71,8 @@ func (m *paceMaker) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, error stepCancelFunc: nil, // Only set on restarts paceMakerDebug: paceMakerDebug{ - manualMode: pacemakerCfg.GetManual(), - debugTimeBetweenStepsMsec: pacemakerCfg.GetDebugTimeBetweenStepsMsec(), + manualMode: pacemakerCfg.Manual, + debugTimeBetweenStepsMsec: pacemakerCfg.DebugTimeBetweenStepsMsec, quorumCertificate: nil, }, }, nil @@ -106,13 +101,6 @@ func (m *paceMaker) GetBus() modules.Bus { return m.bus } -func (*paceMaker) ValidateConfig(cfg modules.Config) error { - if _, ok := cfg.GetConsensusConfig().(HasPacemakerConfig); !ok { - return fmt.Errorf("cannot cast to PacemakeredConsensus") - } - return nil -} - func (m *paceMaker) SetConsensusModule(c *consensusModule) { m.consensusMod = c } @@ -259,6 +247,6 @@ func (p *paceMaker) startNextView(qc *typesCons.QuorumCertificate, forceNextView // TODO(olshansky): Increase timeout using exponential backoff. func (p *paceMaker) getStepTimeout(round uint64) timePkg.Duration { - baseTimeout := timePkg.Duration(int64(timePkg.Millisecond) * int64(p.pacemakerCfg.GetTimeoutMsec())) + baseTimeout := timePkg.Duration(int64(timePkg.Millisecond) * int64(p.pacemakerCfg.TimeoutMsec)) return baseTimeout } diff --git a/consensus/types/types.go b/consensus/types/types.go index a73637d6a..febcc2a10 100644 --- a/consensus/types/types.go +++ b/consensus/types/types.go @@ -41,10 +41,6 @@ func GetValAddrToIdMap(validatorMap ValidatorMap) (ValAddrToIdMap, IdToValAddrMa return valToIdMap, idToValMap } -func (x *PacemakerConfig) SetTimeoutMsec(u uint64) { - x.TimeoutMsec = u -} - func ValidatorMapToModulesValidatorMap(validatorMap ValidatorMap) (vm modules.ValidatorMap) { vm = make(modules.ValidatorMap) for _, v := range validatorMap { diff --git a/shared/modules/consensus_module.go b/shared/modules/consensus_module.go index 689b8ec47..3241288ca 100644 --- a/shared/modules/consensus_module.go +++ b/shared/modules/consensus_module.go @@ -15,8 +15,6 @@ type ValidatorMap map[string]Actor // Make sure that you are not locking again within the same call to avoid deadlocks (for example when the methods below call each other in your implementation). type ConsensusModule interface { Module - ConfigurableModule - GenesisDependentModule KeyholderModule // Consensus Engine Handlers From d4394591464d8f073f6bedb4fa0702015b77a46c Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 21:59:16 +0000 Subject: [PATCH 005/120] refactor(logger): refactored to use centralized logging --- logger/module.go | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/logger/module.go b/logger/module.go index 0171ef999..775299fee 100644 --- a/logger/module.go +++ b/logger/module.go @@ -4,6 +4,7 @@ import ( "os" "strings" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/shared/modules" "github.com/rs/zerolog" ) @@ -11,7 +12,7 @@ import ( type loggerModule struct { bus modules.Bus logger modules.Logger - config modules.LoggerConfig + config *configs.LoggerConfig } // All loggers branch out of mainLogger, that way configuration changes to mainLogger propagate to others. @@ -28,19 +29,19 @@ const ( ModuleName = "logger" ) -var pocketLogLevelToZeroLog = map[LogLevel]zerolog.Level{ - LogLevel_LOG_LEVEL_UNSPECIFIED: zerolog.NoLevel, - LogLevel_LOG_LEVEL_DEBUG: zerolog.DebugLevel, - LogLevel_LOG_LEVEL_INFO: zerolog.InfoLevel, - LogLevel_LOG_LEVEL_WARN: zerolog.WarnLevel, - LogLevel_LOG_LEVEL_ERROR: zerolog.ErrorLevel, - LogLevel_LOG_LEVEL_FATAL: zerolog.FatalLevel, - LogLevel_LOG_LEVEL_PANIC: zerolog.PanicLevel, +var pocketLogLevelToZeroLog = map[configs.LogLevel]zerolog.Level{ + configs.LogLevel_LOG_LEVEL_UNSPECIFIED: zerolog.NoLevel, + configs.LogLevel_LOG_LEVEL_DEBUG: zerolog.DebugLevel, + configs.LogLevel_LOG_LEVEL_INFO: zerolog.InfoLevel, + configs.LogLevel_LOG_LEVEL_WARN: zerolog.WarnLevel, + configs.LogLevel_LOG_LEVEL_ERROR: zerolog.ErrorLevel, + configs.LogLevel_LOG_LEVEL_FATAL: zerolog.FatalLevel, + configs.LogLevel_LOG_LEVEL_PANIC: zerolog.PanicLevel, } -var pocketLogFormatToEnum = map[string]LogFormat{ - "json": LogFormat_LOG_FORMAT_JSON, - "pretty": LogFormat_LOG_FORMAT_PRETTY, +var pocketLogFormatToEnum = map[string]configs.LogFormat{ + "json": configs.LogFormat_LOG_FORMAT_JSON, + "pretty": configs.LogFormat_LOG_FORMAT_PRETTY, } func Create(runtimeMgr modules.RuntimeMgr) (modules.Module, error) { @@ -54,19 +55,19 @@ func (*loggerModule) CreateLoggerForModule(moduleName string) modules.Logger { func (*loggerModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, error) { cfg := runtimeMgr.GetConfig() m := loggerModule{ - config: cfg.GetLoggerConfig(), + config: cfg.Logger, } m.InitLogger() // Mapping config string value to the proto enum - if pocketLogLevel, ok := LogLevel_value[`LogLevel_LOG_LEVEL_`+strings.ToUpper(m.config.GetLevel())]; ok { - zerolog.SetGlobalLevel(pocketLogLevelToZeroLog[LogLevel(pocketLogLevel)]) + if pocketLogLevel, ok := configs.LogLevel_value[`LogLevel_LOG_LEVEL_`+strings.ToUpper(m.config.Level)]; ok { + zerolog.SetGlobalLevel(pocketLogLevelToZeroLog[configs.LogLevel(pocketLogLevel)]) } else { zerolog.SetGlobalLevel(zerolog.NoLevel) } - if pocketLogFormatToEnum[m.config.GetFormat()] == LogFormat_LOG_FORMAT_PRETTY { + if pocketLogFormatToEnum[m.config.Format] == configs.LogFormat_LOG_FORMAT_PRETTY { mainLogger = mainLogger.Output(zerolog.ConsoleWriter{Out: os.Stderr}) mainLogger.Info().Msg("using pretty log format") } From 807086f9b14d2973d5ac998a117c513331297f36 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 21:59:40 +0000 Subject: [PATCH 006/120] refactor(P2P): refactored to use centralized configs --- p2p/addrbook_provider/persistence.go | 5 +++-- p2p/module.go | 18 +++++------------- p2p/raintree/network.go | 9 +++++---- p2p/raintree/network_test.go | 16 +++++++++------- p2p/raintree/peers_manager_test.go | 25 +++++++++++++------------ p2p/stdnetwork/network.go | 3 ++- p2p/transport/transport.go | 24 ++++++++++++------------ p2p/types/p2p_config.go | 12 ------------ p2p/types/transport.go | 4 ++-- p2p/utils_test.go | 21 ++++++++++----------- shared/modules/p2p_module.go | 1 - 11 files changed, 61 insertions(+), 77 deletions(-) delete mode 100644 p2p/types/p2p_config.go diff --git a/p2p/addrbook_provider/persistence.go b/p2p/addrbook_provider/persistence.go index eee396d5d..7eeb81e05 100644 --- a/p2p/addrbook_provider/persistence.go +++ b/p2p/addrbook_provider/persistence.go @@ -6,6 +6,7 @@ import ( "github.com/pokt-network/pocket/p2p/transport" typesP2P "github.com/pokt-network/pocket/p2p/types" + "github.com/pokt-network/pocket/runtime/configs" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" ) @@ -15,11 +16,11 @@ var _ typesP2P.AddrBookProvider = &persistenceAddrBookProvider{} type persistenceAddrBookProvider struct { bus modules.Bus - p2pCfg modules.P2PConfig + p2pCfg *configs.P2PConfig connFactory typesP2P.ConnectionFactory } -func NewPersistenceAddrBookProvider(bus modules.Bus, p2pCfg modules.P2PConfig, options ...func(*persistenceAddrBookProvider)) *persistenceAddrBookProvider { +func NewPersistenceAddrBookProvider(bus modules.Bus, p2pCfg *configs.P2PConfig, options ...func(*persistenceAddrBookProvider)) *persistenceAddrBookProvider { pabp := &persistenceAddrBookProvider{ bus: bus, p2pCfg: p2pCfg, diff --git a/p2p/module.go b/p2p/module.go index 54f5a52bb..177aeecd7 100644 --- a/p2p/module.go +++ b/p2p/module.go @@ -1,7 +1,6 @@ package p2p import ( - "fmt" "log" "github.com/pokt-network/pocket/p2p/addrbook_provider" @@ -9,6 +8,7 @@ import ( "github.com/pokt-network/pocket/p2p/stdnetwork" "github.com/pokt-network/pocket/p2p/transport" typesP2P "github.com/pokt-network/pocket/p2p/types" + "github.com/pokt-network/pocket/runtime/configs" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/messaging" "github.com/pokt-network/pocket/shared/modules" @@ -25,7 +25,7 @@ const ( type p2pModule struct { bus modules.Bus - p2pCfg modules.P2PConfig // TODO (olshansky): to remove this since it'll be available via the bus + p2pCfg *configs.P2PConfig // TODO (olshansky): to remove this since it'll be available via the bus listener typesP2P.Transport address cryptoPocket.Address @@ -47,16 +47,13 @@ func (*p2pModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, error) var m *p2pModule cfg := runtimeMgr.GetConfig() - if err := m.ValidateConfig(cfg); err != nil { - return nil, fmt.Errorf("config validation failed: %w", err) - } - p2pCfg := cfg.GetP2PConfig() + p2pCfg := cfg.P2P l, err := transport.CreateListener(p2pCfg) if err != nil { return nil, err } - privateKey, err := cryptoPocket.NewPrivateKey(p2pCfg.GetPrivateKey()) + privateKey, err := cryptoPocket.NewPrivateKey(p2pCfg.PrivateKey) if err != nil { return nil, err } @@ -100,7 +97,7 @@ func (m *p2pModule) Start() error { addrbookProvider := addrbook_provider.NewPersistenceAddrBookProvider(m.GetBus(), m.p2pCfg) - if m.p2pCfg.GetUseRainTree() { + if m.p2pCfg.UseRainTree { m.network = raintree.NewRainTreeNetwork(m.address, m.GetBus(), m.p2pCfg, addrbookProvider) } else { m.network = stdnetwork.NewNetwork(m.GetBus(), m.p2pCfg, addrbookProvider) @@ -158,11 +155,6 @@ func (m *p2pModule) Send(addr cryptoPocket.Address, msg *anypb.Any) error { return m.network.NetworkSend(data, addr) } -func (*p2pModule) ValidateConfig(cfg modules.Config) error { - // TODO (#334): implement this - return nil -} - func (m *p2pModule) handleNetworkMessage(networkMsgData []byte) { appMsgData, err := m.network.HandleNetworkData(networkMsgData) if err != nil { diff --git a/p2p/raintree/network.go b/p2p/raintree/network.go index 2251d282a..6cee74b0b 100644 --- a/p2p/raintree/network.go +++ b/p2p/raintree/network.go @@ -8,6 +8,7 @@ import ( "github.com/pokt-network/pocket/p2p/addrbook_provider" typesP2P "github.com/pokt-network/pocket/p2p/types" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/shared/codec" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/messaging" @@ -34,13 +35,13 @@ type rainTreeNetwork struct { mampoolMaxNonces uint64 } -func NewRainTreeNetworkWithAddrBook(addr cryptoPocket.Address, addrBook typesP2P.AddrBook, p2pCfg modules.P2PConfig) typesP2P.Network { +func NewRainTreeNetworkWithAddrBook(addr cryptoPocket.Address, addrBook typesP2P.AddrBook, p2pCfg configs.P2PConfig) typesP2P.Network { pm, err := newPeersManager(addr, addrBook, true) if err != nil { log.Fatalf("[ERROR] Error initializing rainTreeNetwork peersManager: %v", err) } - mempoolMaxNonces := p2pCfg.GetMaxMempoolCount() + mempoolMaxNonces := p2pCfg.MaxMempoolCount n := &rainTreeNetwork{ selfAddr: addr, peersManager: pm, @@ -52,7 +53,7 @@ func NewRainTreeNetworkWithAddrBook(addr cryptoPocket.Address, addrBook typesP2P return typesP2P.Network(n) } -func NewRainTreeNetwork(addr cryptoPocket.Address, bus modules.Bus, p2pCfg modules.P2PConfig, addrBookProvider typesP2P.AddrBookProvider) typesP2P.Network { +func NewRainTreeNetwork(addr cryptoPocket.Address, bus modules.Bus, p2pCfg *configs.P2PConfig, addrBookProvider typesP2P.AddrBookProvider) typesP2P.Network { addrBook, err := addrbook_provider.GetAddrBook(bus, addrBookProvider) if err != nil { log.Fatalf("[ERROR] Error getting addrBook: %v", err) @@ -67,7 +68,7 @@ func NewRainTreeNetwork(addr cryptoPocket.Address, bus modules.Bus, p2pCfg modul selfAddr: addr, peersManager: pm, nonceSet: make(map[uint64]struct{}), - nonceList: make([]uint64, 0, p2pCfg.GetMaxMempoolCount()), + nonceList: make([]uint64, 0, p2pCfg.MaxMempoolCount), addrBookProvider: addrBookProvider, } n.SetBus(bus) diff --git a/p2p/raintree/network_test.go b/p2p/raintree/network_test.go index 732f982b9..10c9f35a6 100644 --- a/p2p/raintree/network_test.go +++ b/p2p/raintree/network_test.go @@ -5,16 +5,17 @@ import ( "github.com/golang/mock/gomock" typesP2P "github.com/pokt-network/pocket/p2p/types" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/runtime/defaults" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" - mockModules "github.com/pokt-network/pocket/shared/modules/mocks" "github.com/stretchr/testify/require" ) func TestRainTreeNetwork_AddPeerToAddrBook(t *testing.T) { ctrl := gomock.NewController(t) - mockP2PCfg := mockModules.NewMockP2PConfig(ctrl) - mockP2PCfg.EXPECT().GetMaxMempoolCount().Return(defaults.DefaultP2PMaxMempoolCount).AnyTimes() + p2pCfg := &configs.P2PConfig{ + MaxMempoolCount: defaults.DefaultP2PMaxMempoolCount, + } // starting with an empty address book and only self selfAddr, err := cryptoPocket.GenerateAddress() @@ -27,7 +28,7 @@ func TestRainTreeNetwork_AddPeerToAddrBook(t *testing.T) { busMock := mockBus(ctrl) addrBookProviderMock := mockAddrBookProvider(ctrl, addrBook) - network := NewRainTreeNetwork(selfAddr, busMock, mockP2PCfg, addrBookProviderMock).(*rainTreeNetwork) + network := NewRainTreeNetwork(selfAddr, busMock, p2pCfg, addrBookProviderMock).(*rainTreeNetwork) peerAddr, err := cryptoPocket.GenerateAddress() require.NoError(t, err) @@ -52,8 +53,9 @@ func TestRainTreeNetwork_AddPeerToAddrBook(t *testing.T) { func TestRainTreeNetwork_RemovePeerToAddrBook(t *testing.T) { ctrl := gomock.NewController(t) - mockP2PCfg := mockModules.NewMockP2PConfig(ctrl) - mockP2PCfg.EXPECT().GetMaxMempoolCount().Return(defaults.DefaultP2PMaxMempoolCount).AnyTimes() + p2pCfg := &configs.P2PConfig{ + MaxMempoolCount: defaults.DefaultP2PMaxMempoolCount, + } // starting with an address book having only self and an arbitrary number of peers `numAddressesInAddressBook`` numAddressesInAddressBook := 3 @@ -66,7 +68,7 @@ func TestRainTreeNetwork_RemovePeerToAddrBook(t *testing.T) { busMock := mockBus(ctrl) addrBookProviderMock := mockAddrBookProvider(ctrl, addrBook) - network := NewRainTreeNetwork(selfAddr, busMock, mockP2PCfg, addrBookProviderMock).(*rainTreeNetwork) + network := NewRainTreeNetwork(selfAddr, busMock, p2pCfg, addrBookProviderMock).(*rainTreeNetwork) stateView := network.peersManager.getNetworkView() require.Equal(t, numAddressesInAddressBook+1, len(stateView.addrList)) // +1 to account for self in the addrBook as well diff --git a/p2p/raintree/peers_manager_test.go b/p2p/raintree/peers_manager_test.go index 25a71530c..eb7cbe3ce 100644 --- a/p2p/raintree/peers_manager_test.go +++ b/p2p/raintree/peers_manager_test.go @@ -8,6 +8,7 @@ import ( "github.com/golang/mock/gomock" "github.com/pokt-network/pocket/p2p/types" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/runtime/defaults" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" modulesMock "github.com/pokt-network/pocket/shared/modules/mocks" @@ -37,9 +38,9 @@ type ExpectedRainTreeMessageProp struct { func TestRainTreeAddrBookUtilsHandleUpdate(t *testing.T) { ctrl := gomock.NewController(t) - mockP2PCfg := modulesMock.NewMockP2PConfig(ctrl) - mockP2PCfg.EXPECT().GetMaxMempoolCount().Return(defaults.DefaultP2PMaxMempoolCount).AnyTimes() - + p2pCfg := &configs.P2PConfig{ + MaxMempoolCount: defaults.DefaultP2PMaxMempoolCount, + } addr, err := cryptoPocket.GenerateAddress() require.NoError(t, err) @@ -81,7 +82,7 @@ func TestRainTreeAddrBookUtilsHandleUpdate(t *testing.T) { mockBus := mockBus(ctrl) mockAddrBookProvider := mockAddrBookProvider(ctrl, addrBook) - network := NewRainTreeNetwork(addr, mockBus, mockP2PCfg, mockAddrBookProvider).(*rainTreeNetwork) + network := NewRainTreeNetwork(addr, mockBus, p2pCfg, mockAddrBookProvider).(*rainTreeNetwork) peersManagerStateView := network.peersManager.getNetworkView() @@ -94,9 +95,9 @@ func TestRainTreeAddrBookUtilsHandleUpdate(t *testing.T) { func BenchmarkAddrBookUpdates(b *testing.B) { ctrl := gomock.NewController(gomock.TestReporter(b)) - mockP2PCfg := modulesMock.NewMockP2PConfig(ctrl) - mockP2PCfg.EXPECT().GetMaxMempoolCount().Return(defaults.DefaultP2PMaxMempoolCount).AnyTimes() - + p2pCfg := &configs.P2PConfig{ + MaxMempoolCount: defaults.DefaultP2PMaxMempoolCount, + } addr, err := cryptoPocket.GenerateAddress() require.NoError(b, err) @@ -123,7 +124,7 @@ func BenchmarkAddrBookUpdates(b *testing.B) { mockBus := mockBus(ctrl) mockAddrBookProvider := mockAddrBookProvider(ctrl, addrBook) - network := NewRainTreeNetwork(addr, mockBus, mockP2PCfg, mockAddrBookProvider).(*rainTreeNetwork) + network := NewRainTreeNetwork(addr, mockBus, p2pCfg, mockAddrBookProvider).(*rainTreeNetwork) peersManagerStateView := network.peersManager.getNetworkView() @@ -208,13 +209,13 @@ func testRainTreeMessageTargets(t *testing.T, expectedMsgProp *ExpectedRainTreeM busMock.EXPECT().GetConsensusModule().Return(consensusMock).AnyTimes() persistenceMock := modulesMock.NewMockPersistenceModule(ctrl) busMock.EXPECT().GetPersistenceModule().Return(persistenceMock).AnyTimes() - mockP2PCfg := modulesMock.NewMockP2PConfig(ctrl) - mockP2PCfg.EXPECT().GetMaxMempoolCount().Return(defaults.DefaultP2PMaxMempoolCount).AnyTimes() - + p2pCfg := &configs.P2PConfig{ + MaxMempoolCount: defaults.DefaultP2PMaxMempoolCount, + } addrBook := getAlphabetAddrBook(expectedMsgProp.numNodes) mockAddrBookProvider := mockAddrBookProvider(ctrl, addrBook) - network := NewRainTreeNetwork([]byte{expectedMsgProp.orig}, busMock, mockP2PCfg, mockAddrBookProvider).(*rainTreeNetwork) + network := NewRainTreeNetwork([]byte{expectedMsgProp.orig}, busMock, p2pCfg, mockAddrBookProvider).(*rainTreeNetwork) network.SetBus(busMock) diff --git a/p2p/stdnetwork/network.go b/p2p/stdnetwork/network.go index aa69a579e..4adb8550e 100644 --- a/p2p/stdnetwork/network.go +++ b/p2p/stdnetwork/network.go @@ -8,6 +8,7 @@ import ( "github.com/pokt-network/pocket/p2p/addrbook_provider" typesP2P "github.com/pokt-network/pocket/p2p/types" + "github.com/pokt-network/pocket/runtime/configs" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" ) @@ -19,7 +20,7 @@ type network struct { addrBookMap typesP2P.AddrBookMap } -func NewNetwork(bus modules.Bus, p2pCfg modules.P2PConfig, addrBookProvider typesP2P.AddrBookProvider) (n typesP2P.Network) { +func NewNetwork(bus modules.Bus, p2pCfg *configs.P2PConfig, addrBookProvider typesP2P.AddrBookProvider) (n typesP2P.Network) { addrBook, err := addrbook_provider.GetAddrBook(bus, addrBookProvider) if err != nil { log.Fatalf("[ERROR] Error getting addrBook: %v", err) diff --git a/p2p/transport/transport.go b/p2p/transport/transport.go index 6df8f3932..8943224cb 100644 --- a/p2p/transport/transport.go +++ b/p2p/transport/transport.go @@ -6,32 +6,32 @@ import ( "net" typesP2P "github.com/pokt-network/pocket/p2p/types" - "github.com/pokt-network/pocket/shared/modules" + "github.com/pokt-network/pocket/runtime/configs" ) const ( TCPNetworkLayerProtocol = "tcp4" ) -func CreateListener(cfg modules.P2PConfig) (typesP2P.Transport, error) { - switch cfg.GetIsEmptyConnectionType() { // TECHDEBT kept in switch format because this should be an enum not a bool +func CreateListener(cfg *configs.P2PConfig) (typesP2P.Transport, error) { + switch cfg.IsEmptyConnectionType { // TECHDEBT kept in switch format because this should be an enum not a bool case true: return createEmptyListener(cfg) case false: return createTCPListener(cfg) default: - return nil, fmt.Errorf("unsupported connection type for listener: %v", cfg.GetIsEmptyConnectionType()) + return nil, fmt.Errorf("unsupported connection type for listener: %v", cfg.IsEmptyConnectionType) } } -func CreateDialer(cfg modules.P2PConfig, url string) (typesP2P.Transport, error) { - switch cfg.GetIsEmptyConnectionType() { +func CreateDialer(cfg *configs.P2PConfig, url string) (typesP2P.Transport, error) { + switch cfg.IsEmptyConnectionType { case true: return createEmptyDialer(cfg, url) case false: return createTCPDialer(cfg, url) default: - return nil, fmt.Errorf("unsupported connection type for dialer: %v", cfg.GetIsEmptyConnectionType()) + return nil, fmt.Errorf("unsupported connection type for dialer: %v", cfg.IsEmptyConnectionType) } } @@ -42,8 +42,8 @@ type tcpConn struct { listener *net.TCPListener } -func createTCPListener(cfg modules.P2PConfig) (*tcpConn, error) { - addr, err := net.ResolveTCPAddr(TCPNetworkLayerProtocol, fmt.Sprintf(":%d", cfg.GetConsensusPort())) +func createTCPListener(cfg *configs.P2PConfig) (*tcpConn, error) { + addr, err := net.ResolveTCPAddr(TCPNetworkLayerProtocol, fmt.Sprintf(":%d", cfg.ConsensusPort)) if err != nil { return nil, err } @@ -57,7 +57,7 @@ func createTCPListener(cfg modules.P2PConfig) (*tcpConn, error) { }, nil } -func createTCPDialer(_ modules.P2PConfig, url string) (*tcpConn, error) { +func createTCPDialer(_ *configs.P2PConfig, url string) (*tcpConn, error) { addr, err := net.ResolveTCPAddr(TCPNetworkLayerProtocol, url) if err != nil { return nil, err @@ -119,11 +119,11 @@ var _ typesP2P.Transport = &emptyConn{} type emptyConn struct { } -func createEmptyListener(_ modules.P2PConfig) (typesP2P.Transport, error) { +func createEmptyListener(_ *configs.P2PConfig) (typesP2P.Transport, error) { return &emptyConn{}, nil } -func createEmptyDialer(_ modules.P2PConfig, _ string) (typesP2P.Transport, error) { +func createEmptyDialer(_ *configs.P2PConfig, _ string) (typesP2P.Transport, error) { return &emptyConn{}, nil } diff --git a/p2p/types/p2p_config.go b/p2p/types/p2p_config.go deleted file mode 100644 index c6fa251c0..000000000 --- a/p2p/types/p2p_config.go +++ /dev/null @@ -1,12 +0,0 @@ -package types - -import "github.com/pokt-network/pocket/shared/modules" - -var _ modules.P2PConfig = &P2PConfig{} - -func (x *P2PConfig) IsEmptyConnType() bool { - if x.GetIsEmptyConnectionType() { - return true - } - return false -} diff --git a/p2p/types/transport.go b/p2p/types/transport.go index 4625cb573..bbe2c4846 100644 --- a/p2p/types/transport.go +++ b/p2p/types/transport.go @@ -1,6 +1,6 @@ package types -import "github.com/pokt-network/pocket/shared/modules" +import "github.com/pokt-network/pocket/runtime/configs" //go:generate mockgen -source=$GOFILE -destination=./mocks/transport_mock.go github.com/pokt-network/pocket/p2p/types Transport @@ -11,4 +11,4 @@ type Transport interface { Close() error } -type ConnectionFactory func(cfg modules.P2PConfig, url string) (Transport, error) +type ConnectionFactory func(cfg *configs.P2PConfig, url string) (Transport, error) diff --git a/p2p/utils_test.go b/p2p/utils_test.go index fb279db64..0772cc7e1 100644 --- a/p2p/utils_test.go +++ b/p2p/utils_test.go @@ -12,7 +12,7 @@ import ( "github.com/golang/mock/gomock" typesP2P "github.com/pokt-network/pocket/p2p/types" mocksP2P "github.com/pokt-network/pocket/p2p/types/mocks" - "github.com/pokt-network/pocket/runtime" + "github.com/pokt-network/pocket/runtime/configs" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" modulesMock "github.com/pokt-network/pocket/shared/modules/mocks" @@ -114,20 +114,19 @@ func createMockRuntimeMgrs(t *testing.T, numValidators int) []modules.RuntimeMgr copy(valKeys[:], keys[:numValidators]) mockGenesisState := createMockGenesisState(t, valKeys) for i := range mockRuntimeMgrs { - mockConfig := modulesMock.NewMockConfig(ctrl) - mockConfig.EXPECT().GetBaseConfig().Return(&runtime.BaseConfig{ + cfg := &configs.Config{ RootDirectory: "", PrivateKey: valKeys[i].String(), - }).AnyTimes() - mockConfig.EXPECT().GetP2PConfig().Return(&typesP2P.P2PConfig{ - PrivateKey: valKeys[i].String(), - ConsensusPort: 8080, - UseRainTree: true, - IsEmptyConnectionType: true, - }).AnyTimes() + P2P: &configs.P2PConfig{ + PrivateKey: valKeys[i].String(), + ConsensusPort: 8080, + UseRainTree: true, + IsEmptyConnectionType: true, + }, + } mockRuntimeMgr := modulesMock.NewMockRuntimeMgr(ctrl) - mockRuntimeMgr.EXPECT().GetConfig().Return(mockConfig).AnyTimes() + mockRuntimeMgr.EXPECT().GetConfig().Return(cfg).AnyTimes() mockRuntimeMgr.EXPECT().GetGenesis().Return(mockGenesisState).AnyTimes() mockRuntimeMgrs[i] = mockRuntimeMgr } diff --git a/shared/modules/p2p_module.go b/shared/modules/p2p_module.go index d3ece2fe7..8f4d87b9e 100644 --- a/shared/modules/p2p_module.go +++ b/shared/modules/p2p_module.go @@ -9,7 +9,6 @@ import ( type P2PModule interface { Module - ConfigurableModule Broadcast(msg *anypb.Any) error Send(addr cryptoPocket.Address, msg *anypb.Any) error From 774e9fdd3543a605eb9af7e2d59e44a7cecca6c1 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 22:00:00 +0000 Subject: [PATCH 007/120] refactor(Persistence): refactored to use centralized configs --- persistence/module.go | 41 ++++++++-------------------- persistence/test/setup_test.go | 26 ++++++++++-------- shared/modules/persistence_module.go | 2 -- 3 files changed, 27 insertions(+), 42 deletions(-) diff --git a/persistence/module.go b/persistence/module.go index 535020641..0942bcf69 100644 --- a/persistence/module.go +++ b/persistence/module.go @@ -9,6 +9,7 @@ import ( "github.com/pokt-network/pocket/persistence/indexer" "github.com/pokt-network/pocket/persistence/kvstore" "github.com/pokt-network/pocket/persistence/types" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/shared/modules" ) @@ -18,14 +19,13 @@ var ( _ modules.PersistenceRWContext = &PostgresContext{} _ modules.PersistenceGenesisState = &types.PersistenceGenesisState{} - _ modules.PersistenceConfig = &types.PersistenceConfig{} ) // TODO: convert address and public key to string not bytes in all account and actor functions // TODO: remove address parameter from all pool operations type persistenceModule struct { bus modules.Bus - config modules.PersistenceConfig + config *configs.PersistenceConfig genesisState modules.PersistenceGenesisState blockStore kvstore.KVStore @@ -47,20 +47,12 @@ func Create(runtimeMgr modules.RuntimeMgr) (modules.Module, error) { func (*persistenceModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, error) { var m *persistenceModule - cfg := runtimeMgr.GetConfig() - - if err := m.ValidateConfig(cfg); err != nil { - return nil, fmt.Errorf("config validation failed: %w", err) - } - persistenceCfg := cfg.GetPersistenceConfig() - + persistenceCfg := runtimeMgr.GetConfig().Persistence genesis := runtimeMgr.GetGenesis() - if err := m.ValidateGenesis(genesis); err != nil { - return nil, fmt.Errorf("genesis validation failed: %w", err) - } + persistenceGenesis := genesis.GetPersistenceGenesisState() - conn, err := connectToDatabase(persistenceCfg.GetPostgresUrl(), persistenceCfg.GetNodeSchema()) + conn, err := connectToDatabase(persistenceCfg.PostgresUrl, persistenceCfg.NodeSchema) if err != nil { return nil, err } @@ -70,17 +62,17 @@ func (*persistenceModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, conn.Close(context.TODO()) // TODO: Follow the same pattern as txIndexer below for initializing the blockStore - blockStore, err := initializeBlockStore(persistenceCfg.GetBlockStorePath()) + blockStore, err := initializeBlockStore(persistenceCfg.BlockStorePath) if err != nil { return nil, err } - txIndexer, err := indexer.NewTxIndexer(persistenceCfg.GetTxIndexerPath()) + txIndexer, err := indexer.NewTxIndexer(persistenceCfg.TxIndexerPath) if err != nil { return nil, err } - stateTrees, err := newStateTrees(persistenceCfg.GetTreesStoreDir()) + stateTrees, err := newStateTrees(persistenceCfg.TreesStoreDir) if err != nil { return nil, err } @@ -139,21 +131,11 @@ func (m *persistenceModule) GetBus() modules.Bus { return m.bus } -func (*persistenceModule) ValidateConfig(cfg modules.Config) error { - // TODO (#334): implement this - return nil -} - -func (*persistenceModule) ValidateGenesis(genesis modules.GenesisState) error { - // TODO (#334): implement this - return nil -} - func (m *persistenceModule) NewRWContext(height int64) (modules.PersistenceRWContext, error) { if m.writeContext != nil && !m.writeContext.conn.IsClosed() { return nil, fmt.Errorf("write context already exists") } - conn, err := connectToDatabase(m.config.GetPostgresUrl(), m.config.GetNodeSchema()) + conn, err := connectToDatabase(m.config.PostgresUrl, m.config.NodeSchema) if err != nil { return nil, err } @@ -185,7 +167,7 @@ func (m *persistenceModule) NewRWContext(height int64) (modules.PersistenceRWCon } func (m *persistenceModule) NewReadContext(height int64) (modules.PersistenceReadContext, error) { - conn, err := connectToDatabase(m.config.GetPostgresUrl(), m.config.GetNodeSchema()) + conn, err := connectToDatabase(m.config.PostgresUrl, m.config.NodeSchema) if err != nil { return nil, err } @@ -233,7 +215,8 @@ func initializeBlockStore(blockStorePath string) (kvstore.KVStore, error) { } // HACK(olshansky): Simplify and externalize the logic for whether genesis should be populated and -// move the if logic out of this file. +// +// move the if logic out of this file. func (m *persistenceModule) shouldHydrateGenesisDb() (bool, error) { checkContext, err := m.NewReadContext(-1) if err != nil { diff --git a/persistence/test/setup_test.go b/persistence/test/setup_test.go index fbd0a0c79..196c82131 100644 --- a/persistence/test/setup_test.go +++ b/persistence/test/setup_test.go @@ -14,7 +14,9 @@ import ( "github.com/pokt-network/pocket/persistence" "github.com/pokt-network/pocket/persistence/types" "github.com/pokt-network/pocket/runtime" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/runtime/test_artifacts" + "github.com/pokt-network/pocket/runtime/test_artifacts/keygenerator" "github.com/pokt-network/pocket/shared/converters" "github.com/pokt-network/pocket/shared/messaging" "github.com/pokt-network/pocket/shared/modules" @@ -80,17 +82,19 @@ func NewTestPostgresContext(t testing.TB, height int64) *persistence.PostgresCon // TODO(olshansky): Take in `t testing.T` as a parameter and error if there's an issue func newTestPersistenceModule(databaseUrl string) modules.PersistenceModule { - // HACK: See `runtime/test_artifacts/generator.go` for why we're doing this to get deterministic key generation. - os.Setenv(test_artifacts.PrivateKeySeedEnv, "42") - defer os.Unsetenv(test_artifacts.PrivateKeySeedEnv) - - cfg := runtime.NewConfig(&runtime.BaseConfig{}, runtime.WithPersistenceConfig(&types.PersistenceConfig{ - PostgresUrl: databaseUrl, - NodeSchema: testSchema, - BlockStorePath: "", - TxIndexerPath: "", - TreesStoreDir: "", - })) + teardownDeterministicKeygen := keygenerator.GetInstance().SetSeed(42) + defer teardownDeterministicKeygen() + + cfg := &configs.Config{ + Persistence: &configs.PersistenceConfig{ + PostgresUrl: databaseUrl, + NodeSchema: testSchema, + BlockStorePath: "", + TxIndexerPath: "", + TreesStoreDir: "", + }, + } + genesisState, _ := test_artifacts.NewGenesisState(5, 1, 1, 1) runtimeCfg := runtime.NewManager(cfg, genesisState) diff --git a/shared/modules/persistence_module.go b/shared/modules/persistence_module.go index 9692d724f..a6b7a7f56 100644 --- a/shared/modules/persistence_module.go +++ b/shared/modules/persistence_module.go @@ -9,8 +9,6 @@ import ( type PersistenceModule interface { Module - ConfigurableModule - GenesisDependentModule // Context operations NewRWContext(height int64) (PersistenceRWContext, error) From c88f455bdebd9fca2228b2993cdb9bf237dc491f Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 22:00:22 +0000 Subject: [PATCH 008/120] refactor(RPC): refactored to use centralized configs --- rpc/module.go | 19 +++++-------------- rpc/noop_module.go | 4 ---- rpc/server.go | 5 ++--- rpc/types/proto/rpc_config.proto | 12 ------------ shared/modules/rpc_module.go | 1 - 5 files changed, 7 insertions(+), 34 deletions(-) delete mode 100644 rpc/types/proto/rpc_config.proto diff --git a/rpc/module.go b/rpc/module.go index 42204dced..d3f856d9e 100644 --- a/rpc/module.go +++ b/rpc/module.go @@ -1,13 +1,13 @@ package rpc import ( - "fmt" "log" // importing because used by code-generated files that are git ignored and to allow go mod tidy and go mod vendor to function properly _ "github.com/getkin/kin-openapi/openapi3" _ "github.com/labstack/echo/v4" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/shared/modules" ) @@ -17,7 +17,7 @@ var ( type rpcModule struct { bus modules.Bus - config modules.RPCConfig + config *configs.RPCConfig } const ( @@ -29,13 +29,9 @@ func Create(runtime modules.RuntimeMgr) (modules.Module, error) { } func (m *rpcModule) Create(runtime modules.RuntimeMgr) (modules.Module, error) { - cfg := runtime.GetConfig() - if err := m.ValidateConfig(cfg); err != nil { - return nil, fmt.Errorf("config validation failed: %w", err) - } - rpcCfg := cfg.GetRPCConfig() + rpcCfg := runtime.GetConfig().RPC - if !rpcCfg.GetEnabled() { + if !rpcCfg.Enabled { return &noopRpcModule{}, nil } @@ -45,7 +41,7 @@ func (m *rpcModule) Create(runtime modules.RuntimeMgr) (modules.Module, error) { } func (u *rpcModule) Start() error { - go NewRPCServer(u.GetBus()).StartRPC(u.config.GetPort(), u.config.GetTimeout()) + go NewRPCServer(u.GetBus()).StartRPC(u.config.Port, u.config.Timeout) return nil } @@ -67,8 +63,3 @@ func (u *rpcModule) GetBus() modules.Bus { } return u.bus } - -func (*rpcModule) ValidateConfig(cfg modules.Config) error { - // TODO (#334): implement this - return nil -} diff --git a/rpc/noop_module.go b/rpc/noop_module.go index 444684a9e..74340394c 100644 --- a/rpc/noop_module.go +++ b/rpc/noop_module.go @@ -34,7 +34,3 @@ func (m *noopRpcModule) Start() error { func (m *noopRpcModule) Stop() error { return nil } - -func (m *noopRpcModule) ValidateConfig(_ modules.Config) error { - return nil -} diff --git a/rpc/server.go b/rpc/server.go index 621f8ea4c..f862bcd8c 100644 --- a/rpc/server.go +++ b/rpc/server.go @@ -7,7 +7,6 @@ import ( "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" - "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/shared/modules" ) @@ -33,10 +32,10 @@ func (s *rpcServer) StartRPC(port string, timeout uint64) { middleware.TimeoutWithConfig(middleware.TimeoutConfig{ Skipper: middleware.DefaultSkipper, ErrorMessage: "Request timed out", - Timeout: time.Duration(defaults.DefaultRpcTimeout) * time.Millisecond, + Timeout: time.Duration(timeout) * time.Millisecond, }), } - if s.GetBus().GetRuntimeMgr().GetConfig().GetRPCConfig().GetUseCors() { + if s.GetBus().GetRuntimeMgr().GetConfig().RPC.UseCors { log.Println("Enabling CORS middleware") middlewares = append(middlewares, middleware.CORS()) } diff --git a/rpc/types/proto/rpc_config.proto b/rpc/types/proto/rpc_config.proto deleted file mode 100644 index 432fd1f67..000000000 --- a/rpc/types/proto/rpc_config.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -package rpc; - -option go_package = "github.com/pokt-network/pocket/rpc/types"; - -message RPCConfig { - bool enabled = 1; - string port = 2; - uint64 timeout = 3; - bool use_cors = 4; -} diff --git a/shared/modules/rpc_module.go b/shared/modules/rpc_module.go index 54bf62bb1..4cbc05d7d 100644 --- a/shared/modules/rpc_module.go +++ b/shared/modules/rpc_module.go @@ -4,5 +4,4 @@ package modules type RPCModule interface { Module - ConfigurableModule } From d2f3ba7f1e3fffe85d837035d1f1382236546fca Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 22:00:42 +0000 Subject: [PATCH 009/120] refactor(telemetry): refactored to use centralized configs --- shared/modules/telemetry_module.go | 1 - telemetry/module.go | 10 +++------- telemetry/noop_module.go | 4 ---- telemetry/prometheus_module.go | 30 ++++++++++-------------------- 4 files changed, 13 insertions(+), 32 deletions(-) diff --git a/shared/modules/telemetry_module.go b/shared/modules/telemetry_module.go index fbe398ada..21e83efa3 100644 --- a/shared/modules/telemetry_module.go +++ b/shared/modules/telemetry_module.go @@ -6,7 +6,6 @@ import "github.com/prometheus/client_golang/prometheus" type TelemetryModule interface { Module - ConfigurableModule GetTimeSeriesAgent() TimeSeriesAgent GetEventMetricsAgent() EventMetricsAgent diff --git a/telemetry/module.go b/telemetry/module.go index afe331374..c8601e488 100644 --- a/telemetry/module.go +++ b/telemetry/module.go @@ -5,8 +5,7 @@ import ( ) var ( - _ modules.Module = &telemetryModule{} - _ modules.TelemetryConfig = &TelemetryConfig{} + _ modules.Module = &telemetryModule{} ) const ( @@ -19,11 +18,8 @@ func Create(runtime modules.RuntimeMgr) (modules.Module, error) { // TODO(pocket/issues/99): Add a switch statement and configuration variable when support for other telemetry modules is added. func (*telemetryModule) Create(runtime modules.RuntimeMgr) (modules.Module, error) { - cfg := runtime.GetConfig() - - telemetryCfg := cfg.GetTelemetryConfig() - - if telemetryCfg.GetEnabled() { + telemetryCfg := runtime.GetConfig().Telemetry + if telemetryCfg.Enabled { return CreatePrometheusTelemetryModule(runtime) } else { return CreateNoopTelemetryModule(runtime) diff --git a/telemetry/noop_module.go b/telemetry/noop_module.go index 4dee405f0..95415cd81 100644 --- a/telemetry/noop_module.go +++ b/telemetry/noop_module.go @@ -59,10 +59,6 @@ func (m *NoopTelemetryModule) GetBus() modules.Bus { return m.bus } -func (*NoopTelemetryModule) ValidateConfig(cfg modules.Config) error { - return nil -} - func (m *NoopTelemetryModule) GetEventMetricsAgent() modules.EventMetricsAgent { return modules.EventMetricsAgent(m) } diff --git a/telemetry/prometheus_module.go b/telemetry/prometheus_module.go index 0adcb4483..454da92c8 100644 --- a/telemetry/prometheus_module.go +++ b/telemetry/prometheus_module.go @@ -1,10 +1,10 @@ package telemetry import ( - "fmt" "log" "net/http" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/shared/modules" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" @@ -12,18 +12,17 @@ import ( ) var ( - _ modules.Module = &PrometheusTelemetryModule{} - _ modules.ConfigurableModule = &PrometheusTelemetryModule{} - _ modules.TelemetryModule = &PrometheusTelemetryModule{} - _ modules.EventMetricsAgent = &PrometheusTelemetryModule{} - _ modules.TimeSeriesAgent = &PrometheusTelemetryModule{} + _ modules.Module = &PrometheusTelemetryModule{} + _ modules.TelemetryModule = &PrometheusTelemetryModule{} + _ modules.EventMetricsAgent = &PrometheusTelemetryModule{} + _ modules.TimeSeriesAgent = &PrometheusTelemetryModule{} ) // DISCUSS(team): Should the warning logs in this module be handled differently? type PrometheusTelemetryModule struct { bus modules.Bus - config modules.TelemetryConfig + config *configs.TelemetryConfig counters map[string]prometheus.Counter gauges map[string]prometheus.Gauge @@ -40,11 +39,7 @@ func CreatePrometheusTelemetryModule(runtime modules.RuntimeMgr) (modules.Module } func (m *PrometheusTelemetryModule) Create(runtime modules.RuntimeMgr) (modules.Module, error) { - cfg := runtime.GetConfig() - if err := m.ValidateConfig(cfg); err != nil { - return nil, fmt.Errorf("config validation failed: %w", err) - } - telemetryCfg := cfg.GetTelemetryConfig() + telemetryCfg := runtime.GetConfig().Telemetry return &PrometheusTelemetryModule{ config: telemetryCfg, @@ -55,10 +50,10 @@ func (m *PrometheusTelemetryModule) Create(runtime modules.RuntimeMgr) (modules. } func (m *PrometheusTelemetryModule) Start() error { - log.Printf("\nPrometheus metrics exporter: Starting at %s%s...\n", m.config.GetAddress(), m.config.GetEndpoint()) + log.Printf("\nPrometheus metrics exporter: Starting at %s%s...\n", m.config.Address, m.config.Endpoint) - http.Handle(m.config.GetEndpoint(), promhttp.Handler()) - go http.ListenAndServe(m.config.GetAddress(), nil) + http.Handle(m.config.Endpoint, promhttp.Handler()) + go http.ListenAndServe(m.config.Address, nil) log.Println("Prometheus metrics exporter started: OK") @@ -84,11 +79,6 @@ func (m *PrometheusTelemetryModule) GetBus() modules.Bus { return m.bus } -func (*PrometheusTelemetryModule) ValidateConfig(cfg modules.Config) error { - // TODO (#334): implement this - return nil -} - // EventMetricsAgent interface implementation func (m *PrometheusTelemetryModule) GetEventMetricsAgent() modules.EventMetricsAgent { return modules.EventMetricsAgent(m) From ab115f6845a9b55fea932449edef8fa002ed5777 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 22:01:18 +0000 Subject: [PATCH 010/120] refactor(Utility): refactored to use centralized configs --- shared/modules/utility_module.go | 1 - utility/module.go | 19 ++++--------------- utility/test/module_test.go | 14 +++++++------- 3 files changed, 11 insertions(+), 23 deletions(-) diff --git a/shared/modules/utility_module.go b/shared/modules/utility_module.go index 9ab4242ea..a68eee5ec 100644 --- a/shared/modules/utility_module.go +++ b/shared/modules/utility_module.go @@ -8,7 +8,6 @@ import ( type UtilityModule interface { Module - ConfigurableModule HandleMessage(*anypb.Any) error diff --git a/utility/module.go b/utility/module.go index bf6941fe5..1fece8f73 100644 --- a/utility/module.go +++ b/utility/module.go @@ -4,6 +4,7 @@ import ( "fmt" "log" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/shared/codec" "github.com/pokt-network/pocket/shared/modules" "github.com/pokt-network/pocket/utility/types" @@ -11,12 +12,11 @@ import ( ) var _ modules.UtilityModule = &utilityModule{} -var _ modules.UtilityConfig = &types.UtilityConfig{} var _ modules.Module = &utilityModule{} type utilityModule struct { bus modules.Bus - config modules.UtilityConfig + config *configs.UtilityConfig Mempool types.Mempool } @@ -32,17 +32,11 @@ func Create(runtime modules.RuntimeMgr) (modules.Module, error) { } func (*utilityModule) Create(runtime modules.RuntimeMgr) (modules.Module, error) { - var m *utilityModule - - cfg := runtime.GetConfig() - if err := m.ValidateConfig(cfg); err != nil { - return nil, fmt.Errorf("config validation failed: %w", err) - } - utilityCfg := cfg.GetUtilityConfig() + utilityCfg := runtime.GetConfig().Utility return &utilityModule{ config: utilityCfg, - Mempool: types.NewMempool(utilityCfg.GetMaxMempoolTransactionBytes(), utilityCfg.GetMaxMempoolTransactions()), + Mempool: types.NewMempool(utilityCfg.MaxMempoolTransactionBytes, utilityCfg.MaxMempoolTransactions), }, nil } @@ -69,11 +63,6 @@ func (u *utilityModule) GetBus() modules.Bus { return u.bus } -func (*utilityModule) ValidateConfig(cfg modules.Config) error { - // TODO (#334): implement this - return nil -} - func (u *utilityModule) HandleMessage(message *anypb.Any) error { switch message.MessageName() { case TransactionGossipMessageContentType: diff --git a/utility/test/module_test.go b/utility/test/module_test.go index 5edec96d5..9b166ba2f 100644 --- a/utility/test/module_test.go +++ b/utility/test/module_test.go @@ -9,8 +9,8 @@ import ( "github.com/golang/mock/gomock" "github.com/pokt-network/pocket/persistence" - "github.com/pokt-network/pocket/persistence/types" "github.com/pokt-network/pocket/runtime" + "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/runtime/test_artifacts" "github.com/pokt-network/pocket/shared/messaging" @@ -96,19 +96,19 @@ func NewTestingUtilityContext(t *testing.T, height int64) utility.UtilityContext } func newTestRuntimeConfig(databaseUrl string) *runtime.Manager { - cfg := runtime.NewConfig( - &runtime.BaseConfig{}, - runtime.WithPersistenceConfig(&types.PersistenceConfig{ + cfg := &configs.Config{ + Persistence: &configs.PersistenceConfig{ PostgresUrl: databaseUrl, NodeSchema: testSchema, BlockStorePath: "", TxIndexerPath: "", TreesStoreDir: "", - }), - runtime.WithUtilityConfig(&utilTypes.UtilityConfig{ + }, + Utility: &configs.UtilityConfig{ MaxMempoolTransactionBytes: 1000000, MaxMempoolTransactions: 1000, - })) + }, + } genesisState, _ := test_artifacts.NewGenesisState(5, 1, 1, 1) runtimeCfg := runtime.NewManager(cfg, genesisState) return runtimeCfg From 80a7ba2699269e71a416c7296148510c087f7273 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 22:01:33 +0000 Subject: [PATCH 011/120] refactor(shared): refactored to use centralized configs --- shared/modules/module.go | 12 +-- shared/modules/runtime_module.go | 7 +- shared/modules/types.go | 124 +++++++++++++++---------------- 3 files changed, 72 insertions(+), 71 deletions(-) diff --git a/shared/modules/module.go b/shared/modules/module.go index a7da56fd5..92c6c7a42 100644 --- a/shared/modules/module.go +++ b/shared/modules/module.go @@ -26,13 +26,13 @@ type InitializableModule interface { Create(runtime RuntimeMgr) (Module, error) } -type ConfigurableModule interface { - ValidateConfig(Config) error -} +// type ConfigurableModule interface { +// ValidateConfig(Config) error +// } -type GenesisDependentModule interface { - ValidateGenesis(GenesisState) error -} +// type GenesisDependentModule interface { +// ValidateGenesis(GenesisState) error +// } type KeyholderModule interface { GetPrivateKey() (crypto.PrivateKey, error) diff --git a/shared/modules/runtime_module.go b/shared/modules/runtime_module.go index ef4ca8e9a..ef5c4fc0e 100644 --- a/shared/modules/runtime_module.go +++ b/shared/modules/runtime_module.go @@ -1,11 +1,14 @@ package modules -import "github.com/benbjohnson/clock" +import ( + "github.com/benbjohnson/clock" + "github.com/pokt-network/pocket/runtime/configs" +) //go:generate mockgen -source=$GOFILE -destination=./mocks/runtime_module_mock.go -aux_files=github.com/pokt-network/pocket/shared/modules=module.go type RuntimeMgr interface { - GetConfig() Config + GetConfig() *configs.Config GetGenesis() GenesisState GetClock() clock.Clock } diff --git a/shared/modules/types.go b/shared/modules/types.go index f224fd9d1..1765070cf 100644 --- a/shared/modules/types.go +++ b/shared/modules/types.go @@ -1,10 +1,8 @@ package modules -//go:generate mockgen -source=$GOFILE -destination=./mocks/types_mock.go -aux_files=github.com/pokt-network/pocket/shared/modules=module.go +import "google.golang.org/protobuf/types/known/timestamppb" -import ( - "google.golang.org/protobuf/types/known/timestamppb" -) +//go:generate mockgen -source=$GOFILE -destination=./mocks/types_mock.go -aux_files=github.com/pokt-network/pocket/shared/modules=module.go // This file contains the minimum shared structures (GenesisState) and the many shared interfaces the modules implement // the main purpose of this structure is to ensure the ownership of the @@ -14,74 +12,74 @@ type GenesisState interface { GetConsensusGenesisState() ConsensusGenesisState } -type Config interface { - GetBaseConfig() BaseConfig - GetConsensusConfig() ConsensusConfig - GetUtilityConfig() UtilityConfig - GetPersistenceConfig() PersistenceConfig - GetP2PConfig() P2PConfig - GetTelemetryConfig() TelemetryConfig - GetLoggerConfig() LoggerConfig - GetRPCConfig() RPCConfig -} +// type Config interface { +// GetBaseConfig() BaseConfig +// GetConsensusConfig() ConsensusConfig +// GetUtilityConfig() UtilityConfig +// GetPersistenceConfig() PersistenceConfig +// GetP2PConfig() P2PConfig +// GetTelemetryConfig() TelemetryConfig +// GetLoggerConfig() LoggerConfig +// GetRPCConfig() RPCConfig +// } -type BaseConfig interface { - GetRootDirectory() string - GetPrivateKey() string // TODO (#150) better architecture for key management (keybase, keyfiles, etc.) -} +// type BaseConfig interface { +// GetRootDirectory() string +// GetPrivateKey() string // TODO (#150) better architecture for key management (keybase, keyfiles, etc.) +// } -type ConsensusConfig interface { - GetMaxMempoolBytes() uint64 - GetPrivateKey() string // TODO (#150) better architecture for key management (keybase, keyfiles, etc.) -} +// type ConsensusConfig interface { +// GetMaxMempoolBytes() uint64 +// GetPrivateKey() string // TODO (#150) better architecture for key management (keybase, keyfiles, etc.) +// } -type PacemakerConfig interface { - SetTimeoutMsec(uint64) - GetTimeoutMsec() uint64 - GetManual() bool - GetDebugTimeBetweenStepsMsec() uint64 -} +// type PacemakerConfig interface { +// SetTimeoutMsec(uint64) +// GetTimeoutMsec() uint64 +// GetManual() bool +// GetDebugTimeBetweenStepsMsec() uint64 +// } -type PersistenceConfig interface { - GetPostgresUrl() string - GetNodeSchema() string - GetBlockStorePath() string - GetTxIndexerPath() string - GetTreesStoreDir() string -} +// type PersistenceConfig interface { +// GetPostgresUrl() string +// GetNodeSchema() string +// GetBlockStorePath() string +// GetTxIndexerPath() string +// GetTreesStoreDir() string +// } -type P2PConfig interface { - GetPrivateKey() string - GetConsensusPort() uint32 - GetUseRainTree() bool - GetIsEmptyConnectionType() bool // TODO : make enum - GetMaxMempoolCount() uint64 -} +// type P2PConfig interface { +// GetPrivateKey() string +// GetConsensusPort() uint32 +// GetUseRainTree() bool +// GetIsEmptyConnectionType() bool // TODO : make enum +// GetMaxMempoolCount() uint64 +// } -type TelemetryConfig interface { - GetEnabled() bool - GetAddress() string - GetEndpoint() string -} +// type TelemetryConfig interface { +// GetEnabled() bool +// GetAddress() string +// GetEndpoint() string +// } -type LoggerConfig interface { - // We have protobuf enums for the following values in `logger/proto` dir, but they are represented as - // `string` to avoid circular dependencies between this (`modules`) and `logger` packages. - GetLevel() string - GetFormat() string -} +// type LoggerConfig interface { +// // We have protobuf enums for the following values in `logger/proto` dir, but they are represented as +// // `string` to avoid circular dependencies between this (`modules`) and `logger` packages. +// GetLevel() string +// GetFormat() string +// } -type UtilityConfig interface { - GetMaxMempoolTransactionBytes() uint64 - GetMaxMempoolTransactions() uint32 -} +// type UtilityConfig interface { +// GetMaxMempoolTransactionBytes() uint64 +// GetMaxMempoolTransactions() uint32 +// } -type RPCConfig interface { - GetEnabled() bool - GetPort() string - GetTimeout() uint64 - GetUseCors() bool -} +// type RPCConfig interface { +// GetEnabled() bool +// GetPort() string +// GetTimeout() uint64 +// GetUseCors() bool +// } type PersistenceGenesisState interface { GetAccs() []Account From 6187b2918076bd03d571172130448ce94dabde9d Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Thu, 15 Dec 2022 22:08:04 +0000 Subject: [PATCH 012/120] =?UTF-8?q?style(shared):=20=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/modules/types.go | 69 ----------------------------------------- 1 file changed, 69 deletions(-) diff --git a/shared/modules/types.go b/shared/modules/types.go index 1765070cf..bb8580f80 100644 --- a/shared/modules/types.go +++ b/shared/modules/types.go @@ -12,75 +12,6 @@ type GenesisState interface { GetConsensusGenesisState() ConsensusGenesisState } -// type Config interface { -// GetBaseConfig() BaseConfig -// GetConsensusConfig() ConsensusConfig -// GetUtilityConfig() UtilityConfig -// GetPersistenceConfig() PersistenceConfig -// GetP2PConfig() P2PConfig -// GetTelemetryConfig() TelemetryConfig -// GetLoggerConfig() LoggerConfig -// GetRPCConfig() RPCConfig -// } - -// type BaseConfig interface { -// GetRootDirectory() string -// GetPrivateKey() string // TODO (#150) better architecture for key management (keybase, keyfiles, etc.) -// } - -// type ConsensusConfig interface { -// GetMaxMempoolBytes() uint64 -// GetPrivateKey() string // TODO (#150) better architecture for key management (keybase, keyfiles, etc.) -// } - -// type PacemakerConfig interface { -// SetTimeoutMsec(uint64) -// GetTimeoutMsec() uint64 -// GetManual() bool -// GetDebugTimeBetweenStepsMsec() uint64 -// } - -// type PersistenceConfig interface { -// GetPostgresUrl() string -// GetNodeSchema() string -// GetBlockStorePath() string -// GetTxIndexerPath() string -// GetTreesStoreDir() string -// } - -// type P2PConfig interface { -// GetPrivateKey() string -// GetConsensusPort() uint32 -// GetUseRainTree() bool -// GetIsEmptyConnectionType() bool // TODO : make enum -// GetMaxMempoolCount() uint64 -// } - -// type TelemetryConfig interface { -// GetEnabled() bool -// GetAddress() string -// GetEndpoint() string -// } - -// type LoggerConfig interface { -// // We have protobuf enums for the following values in `logger/proto` dir, but they are represented as -// // `string` to avoid circular dependencies between this (`modules`) and `logger` packages. -// GetLevel() string -// GetFormat() string -// } - -// type UtilityConfig interface { -// GetMaxMempoolTransactionBytes() uint64 -// GetMaxMempoolTransactions() uint32 -// } - -// type RPCConfig interface { -// GetEnabled() bool -// GetPort() string -// GetTimeout() uint64 -// GetUseCors() bool -// } - type PersistenceGenesisState interface { GetAccs() []Account GetAccPools() []Account From fe887195fbef6caee2adcb083c4acd992cf1ea57 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:19:03 +0000 Subject: [PATCH 013/120] refactor(config): removed baseconfig, added max_mempool_count --- build/config/config1.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/build/config/config1.json b/build/config/config1.json index 359328cb5..314907b27 100644 --- a/build/config/config1.json +++ b/build/config/config1.json @@ -1,8 +1,6 @@ { - "base": { - "root_directory": "/go/src/github.com/pocket-network", - "private_key": "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4" - }, + "root_directory": "/go/src/github.com/pocket-network", + "private_key": "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", "consensus": { "max_mempool_bytes": 500000000, "pacemaker_config": { @@ -27,7 +25,8 @@ "consensus_port": 8080, "use_rain_tree": true, "is_empty_connection_type": false, - "private_key": "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4" + "private_key": "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", + "max_mempool_count": 1000000 }, "telemetry": { "enabled": true, From 375fcaccf0e84514898fc7405a1f8ec65fb571d3 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:19:21 +0000 Subject: [PATCH 014/120] refactor(config): removed base_config --- build/config/config2.json | 6 ++---- build/config/config3.json | 6 ++---- build/config/config4.json | 6 ++---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/build/config/config2.json b/build/config/config2.json index 3b60ffa62..afa43715e 100644 --- a/build/config/config2.json +++ b/build/config/config2.json @@ -1,8 +1,6 @@ { - "base": { - "root_directory": "/go/src/github.com/pocket-network", - "private_key": "5db3e9d97d04d6d70359de924bb02039c602080d6bf01a692bad31ad5ef93524c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb" - }, + "root_directory": "/go/src/github.com/pocket-network", + "private_key": "5db3e9d97d04d6d70359de924bb02039c602080d6bf01a692bad31ad5ef93524c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb", "consensus": { "max_mempool_bytes": 500000000, "pacemaker_config": { diff --git a/build/config/config3.json b/build/config/config3.json index 54140b350..58cbe5248 100644 --- a/build/config/config3.json +++ b/build/config/config3.json @@ -1,8 +1,6 @@ { - "base": { - "root_directory": "/go/src/github.com/pocket-network", - "private_key": "b37d3ba2f232060c41ba1177fea6008d885fcccad6826d64ee7d49f94d1dbc49a8b6be75d7551da093f788f7286c3a9cb885cfc8e52710eac5f1d5e5b4bf19b2" - }, + "root_directory": "/go/src/github.com/pocket-network", + "private_key": "b37d3ba2f232060c41ba1177fea6008d885fcccad6826d64ee7d49f94d1dbc49a8b6be75d7551da093f788f7286c3a9cb885cfc8e52710eac5f1d5e5b4bf19b2", "consensus": { "max_mempool_bytes": 500000000, "pacemaker_config": { diff --git a/build/config/config4.json b/build/config/config4.json index 333ebad2e..74f76035b 100644 --- a/build/config/config4.json +++ b/build/config/config4.json @@ -1,8 +1,6 @@ { - "base": { - "root_directory": "/go/src/github.com/pocket-network", - "private_key": "c6c136d010d07d7f5e9944aa3594a10f9210dd3e26ebc1bc1516a6d957fd0df353ee26c82826694ffe1773d7b60d5f20dd9e91bdf8745544711bec5ff9c6fb4a" - }, + "root_directory": "/go/src/github.com/pocket-network", + "private_key": "c6c136d010d07d7f5e9944aa3594a10f9210dd3e26ebc1bc1516a6d957fd0df353ee26c82826694ffe1773d7b60d5f20dd9e91bdf8745544711bec5ff9c6fb4a", "consensus": { "max_mempool_bytes": 500000000, "pacemaker_config": { From 2ea6b950a87b9aaa4318e974bf4c7eb3b4d39625 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:19:51 +0000 Subject: [PATCH 015/120] refactor(genesis): single genesis --- build/config/genesis.json | 560 +++++++++++++++++--------------------- 1 file changed, 255 insertions(+), 305 deletions(-) diff --git a/build/config/genesis.json b/build/config/genesis.json index ad0784df5..e19613d45 100755 --- a/build/config/genesis.json +++ b/build/config/genesis.json @@ -1,309 +1,259 @@ { - "persistence_genesis_state": { - "accounts": [ - { - "address": "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", - "amount": "100000000000000" - }, - { - "address": "67eb3f0a50ae459fecf666be0e93176e92441317", - "amount": "100000000000000" - }, - { - "address": "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", - "amount": "100000000000000" - }, - { - "address": "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", - "amount": "100000000000000" - }, - { - "address": "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", - "amount": "100000000000000" - }, - { - "address": "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", - "amount": "100000000000000" - }, - { - "address": "88a792b7aca673620132ef01f50e62caa58eca83", - "amount": "100000000000000" - } - ], - "pools": [ - { - "address": "DAO", - "amount": "100000000000000" - }, - { - "address": "FeeCollector", - "amount": "0" - }, - { - "address": "AppStakePool", - "amount": "100000000000000" - }, - { - "address": "ValidatorStakePool", - "amount": "100000000000000" - }, - { - "address": "ServiceNodeStakePool", - "amount": "100000000000000" - }, - { - "address": "FishermanStakePool", - "amount": "100000000000000" - } - ], - "validators": [ - { - "address": "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", - "public_key": "b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", - "chains": null, - "generic_param": "node1.consensus:8080", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", - "actor_type": 3 - }, - { - "address": "67eb3f0a50ae459fecf666be0e93176e92441317", - "public_key": "c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb", - "chains": null, - "generic_param": "node2.consensus:8080", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "67eb3f0a50ae459fecf666be0e93176e92441317", - "actor_type": 3 - }, - { - "address": "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", - "public_key": "a8b6be75d7551da093f788f7286c3a9cb885cfc8e52710eac5f1d5e5b4bf19b2", - "chains": null, - "generic_param": "node3.consensus:8080", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", - "actor_type": 3 - }, - { - "address": "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", - "public_key": "53ee26c82826694ffe1773d7b60d5f20dd9e91bdf8745544711bec5ff9c6fb4a", - "chains": null, - "generic_param": "node4.consensus:8080", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", - "actor_type": 3 - } - ], - "applications": [ - { - "address": "88a792b7aca673620132ef01f50e62caa58eca83", - "public_key": "5f78658599943dc3e623539ce0b3c9fe4e192034a1e3fef308bc9f96915754e0", - "chains": ["0001"], - "generic_param": "1000000", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "88a792b7aca673620132ef01f50e62caa58eca83", - "actor_type": 0 - } - ], - "service_nodes": [ - { - "address": "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", - "public_key": "16cd0a304c38d76271f74dd3c90325144425d904ef1b9a6fbab9b201d75a998b", - "chains": ["0001"], - "generic_param": "node1.consensus:8080", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", - "actor_type": 1 - } - ], - "fishermen": [ - { - "address": "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", - "public_key": "68efd26af01692fcd77dc135ca1de69ede464e8243e6832bd6c37f282db8c9cb", - "chains": ["0001"], - "generic_param": "node1.consensus:8080", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", - "actor_type": 2 - } - ], - "params": { - "blocks_per_session": 4, - "app_minimum_stake": "15000000000", - "app_max_chains": 15, - "app_baseline_stake_rate": 100, - "app_unstaking_blocks": 2016, - "app_minimum_pause_blocks": 4, - "app_max_pause_blocks": 672, - "service_node_minimum_stake": "15000000000", - "service_node_max_chains": 15, - "service_node_unstaking_blocks": 2016, - "service_node_minimum_pause_blocks": 4, - "service_node_max_pause_blocks": 672, - "service_nodes_per_session": 24, - "fisherman_minimum_stake": "15000000000", - "fisherman_max_chains": 15, - "fisherman_unstaking_blocks": 2016, - "fisherman_minimum_pause_blocks": 4, - "fisherman_max_pause_blocks": 672, - "validator_minimum_stake": "15000000000", - "validator_unstaking_blocks": 2016, - "validator_minimum_pause_blocks": 4, - "validator_max_pause_blocks": 672, - "validator_maximum_missed_blocks": 5, - "validator_max_evidence_age_in_blocks": 8, - "proposer_percentage_of_fees": 10, - "missed_blocks_burn_percentage": 1, - "double_sign_burn_percentage": 5, - "message_double_sign_fee": "10000", - "message_send_fee": "10000", - "message_stake_fisherman_fee": "10000", - "message_edit_stake_fisherman_fee": "10000", - "message_unstake_fisherman_fee": "10000", - "message_pause_fisherman_fee": "10000", - "message_unpause_fisherman_fee": "10000", - "message_fisherman_pause_service_node_fee": "10000", - "message_test_score_fee": "10000", - "message_prove_test_score_fee": "10000", - "message_stake_app_fee": "10000", - "message_edit_stake_app_fee": "10000", - "message_unstake_app_fee": "10000", - "message_pause_app_fee": "10000", - "message_unpause_app_fee": "10000", - "message_stake_validator_fee": "10000", - "message_edit_stake_validator_fee": "10000", - "message_unstake_validator_fee": "10000", - "message_pause_validator_fee": "10000", - "message_unpause_validator_fee": "10000", - "message_stake_service_node_fee": "10000", - "message_edit_stake_service_node_fee": "10000", - "message_unstake_service_node_fee": "10000", - "message_pause_service_node_fee": "10000", - "message_unpause_service_node_fee": "10000", - "message_change_parameter_fee": "10000", - "acl_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "blocks_per_session_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "app_minimum_stake_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "app_max_chains_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "app_baseline_stake_rate_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "app_staking_adjustment_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "app_unstaking_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "app_minimum_pause_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "app_max_paused_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "service_node_minimum_stake_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "service_node_max_chains_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "service_node_unstaking_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "service_node_minimum_pause_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "service_node_max_paused_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "service_nodes_per_session_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "fisherman_minimum_stake_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "fisherman_max_chains_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "fisherman_unstaking_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "fisherman_minimum_pause_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "fisherman_max_paused_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "validator_minimum_stake_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "validator_unstaking_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "validator_minimum_pause_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "validator_max_paused_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "validator_maximum_missed_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "validator_max_evidence_age_in_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "proposer_percentage_of_fees_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "missed_blocks_burn_percentage_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "double_sign_burn_percentage_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_double_sign_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_send_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_stake_fisherman_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_edit_stake_fisherman_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_unstake_fisherman_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_pause_fisherman_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_unpause_fisherman_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_fisherman_pause_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_test_score_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_prove_test_score_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_stake_app_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_edit_stake_app_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_unstake_app_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_pause_app_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_unpause_app_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_stake_validator_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_edit_stake_validator_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_unstake_validator_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_pause_validator_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_unpause_validator_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_stake_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_edit_stake_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_unstake_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_pause_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_unpause_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", - "message_change_parameter_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45" + "accounts": [ + { + "address": "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", + "amount": "100000000000000" + }, + { + "address": "67eb3f0a50ae459fecf666be0e93176e92441317", + "amount": "100000000000000" + }, + { + "address": "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", + "amount": "100000000000000" + }, + { + "address": "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", + "amount": "100000000000000" + }, + { + "address": "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", + "amount": "100000000000000" + }, + { + "address": "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", + "amount": "100000000000000" + }, + { + "address": "88a792b7aca673620132ef01f50e62caa58eca83", + "amount": "100000000000000" } - }, - "consensus_genesis_state": { - "genesis_time": { - "seconds": 1663610702, - "nanos": 405401000 + ], + "pools": [ + { + "address": "DAO", + "amount": "100000000000000" + }, + { + "address": "FeeCollector", + "amount": "0" + }, + { + "address": "AppStakePool", + "amount": "100000000000000" + }, + { + "address": "ValidatorStakePool", + "amount": "100000000000000" + }, + { + "address": "ServiceNodeStakePool", + "amount": "100000000000000" }, - "chain_id": "testnet", - "max_block_bytes": 4000000, - "validators": [ - { - "address": "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", - "public_key": "b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", - "chains": null, - "generic_param": "node1.consensus:8080", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", - "actor_type": 3 - }, - { - "address": "67eb3f0a50ae459fecf666be0e93176e92441317", - "public_key": "c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb", - "chains": null, - "generic_param": "node2.consensus:8080", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "67eb3f0a50ae459fecf666be0e93176e92441317", - "actor_type": 3 - }, - { - "address": "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", - "public_key": "a8b6be75d7551da093f788f7286c3a9cb885cfc8e52710eac5f1d5e5b4bf19b2", - "chains": null, - "generic_param": "node3.consensus:8080", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", - "actor_type": 3 - }, - { - "address": "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", - "public_key": "53ee26c82826694ffe1773d7b60d5f20dd9e91bdf8745544711bec5ff9c6fb4a", - "chains": null, - "generic_param": "node4.consensus:8080", - "staked_amount": "1000000000000", - "paused_height": -1, - "unstaking_height": -1, - "output": "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", - "actor_type": 3 - } - ] - } + { + "address": "FishermanStakePool", + "amount": "100000000000000" + } + ], + "validators": [ + { + "address": "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", + "public_key": "b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", + "chains": null, + "generic_param": "node1.consensus:8080", + "staked_amount": "1000000000000", + "paused_height": -1, + "unstaking_height": -1, + "output": "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", + "actor_type": 4 + }, + { + "address": "67eb3f0a50ae459fecf666be0e93176e92441317", + "public_key": "c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb", + "chains": null, + "generic_param": "node2.consensus:8080", + "staked_amount": "1000000000000", + "paused_height": -1, + "unstaking_height": -1, + "output": "67eb3f0a50ae459fecf666be0e93176e92441317", + "actor_type": 4 + }, + { + "address": "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", + "public_key": "a8b6be75d7551da093f788f7286c3a9cb885cfc8e52710eac5f1d5e5b4bf19b2", + "chains": null, + "generic_param": "node3.consensus:8080", + "staked_amount": "1000000000000", + "paused_height": -1, + "unstaking_height": -1, + "output": "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", + "actor_type": 4 + }, + { + "address": "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", + "public_key": "53ee26c82826694ffe1773d7b60d5f20dd9e91bdf8745544711bec5ff9c6fb4a", + "chains": null, + "generic_param": "node4.consensus:8080", + "staked_amount": "1000000000000", + "paused_height": -1, + "unstaking_height": -1, + "output": "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", + "actor_type": 4 + } + ], + "applications": [ + { + "address": "88a792b7aca673620132ef01f50e62caa58eca83", + "public_key": "5f78658599943dc3e623539ce0b3c9fe4e192034a1e3fef308bc9f96915754e0", + "chains": ["0001"], + "generic_param": "1000000", + "staked_amount": "1000000000000", + "paused_height": -1, + "unstaking_height": -1, + "output": "88a792b7aca673620132ef01f50e62caa58eca83", + "actor_type": 1 + } + ], + "service_nodes": [ + { + "address": "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", + "public_key": "16cd0a304c38d76271f74dd3c90325144425d904ef1b9a6fbab9b201d75a998b", + "chains": ["0001"], + "generic_param": "node1.consensus:8080", + "staked_amount": "1000000000000", + "paused_height": -1, + "unstaking_height": -1, + "output": "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", + "actor_type": 2 + } + ], + "fishermen": [ + { + "address": "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", + "public_key": "68efd26af01692fcd77dc135ca1de69ede464e8243e6832bd6c37f282db8c9cb", + "chains": ["0001"], + "generic_param": "node1.consensus:8080", + "staked_amount": "1000000000000", + "paused_height": -1, + "unstaking_height": -1, + "output": "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", + "actor_type": 3 + } + ], + "params": { + "blocks_per_session": 4, + "app_minimum_stake": "15000000000", + "app_max_chains": 15, + "app_baseline_stake_rate": 100, + "app_unstaking_blocks": 2016, + "app_minimum_pause_blocks": 4, + "app_max_pause_blocks": 672, + "service_node_minimum_stake": "15000000000", + "service_node_max_chains": 15, + "service_node_unstaking_blocks": 2016, + "service_node_minimum_pause_blocks": 4, + "service_node_max_pause_blocks": 672, + "service_nodes_per_session": 24, + "fisherman_minimum_stake": "15000000000", + "fisherman_max_chains": 15, + "fisherman_unstaking_blocks": 2016, + "fisherman_minimum_pause_blocks": 4, + "fisherman_max_pause_blocks": 672, + "validator_minimum_stake": "15000000000", + "validator_unstaking_blocks": 2016, + "validator_minimum_pause_blocks": 4, + "validator_max_pause_blocks": 672, + "validator_maximum_missed_blocks": 5, + "validator_max_evidence_age_in_blocks": 8, + "proposer_percentage_of_fees": 10, + "missed_blocks_burn_percentage": 1, + "double_sign_burn_percentage": 5, + "message_double_sign_fee": "10000", + "message_send_fee": "10000", + "message_stake_fisherman_fee": "10000", + "message_edit_stake_fisherman_fee": "10000", + "message_unstake_fisherman_fee": "10000", + "message_pause_fisherman_fee": "10000", + "message_unpause_fisherman_fee": "10000", + "message_fisherman_pause_service_node_fee": "10000", + "message_test_score_fee": "10000", + "message_prove_test_score_fee": "10000", + "message_stake_app_fee": "10000", + "message_edit_stake_app_fee": "10000", + "message_unstake_app_fee": "10000", + "message_pause_app_fee": "10000", + "message_unpause_app_fee": "10000", + "message_stake_validator_fee": "10000", + "message_edit_stake_validator_fee": "10000", + "message_unstake_validator_fee": "10000", + "message_pause_validator_fee": "10000", + "message_unpause_validator_fee": "10000", + "message_stake_service_node_fee": "10000", + "message_edit_stake_service_node_fee": "10000", + "message_unstake_service_node_fee": "10000", + "message_pause_service_node_fee": "10000", + "message_unpause_service_node_fee": "10000", + "message_change_parameter_fee": "10000", + "acl_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "blocks_per_session_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "app_minimum_stake_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "app_max_chains_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "app_baseline_stake_rate_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "app_staking_adjustment_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "app_unstaking_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "app_minimum_pause_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "app_max_paused_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "service_node_minimum_stake_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "service_node_max_chains_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "service_node_unstaking_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "service_node_minimum_pause_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "service_node_max_paused_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "service_nodes_per_session_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "fisherman_minimum_stake_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "fisherman_max_chains_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "fisherman_unstaking_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "fisherman_minimum_pause_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "fisherman_max_paused_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "validator_minimum_stake_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "validator_unstaking_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "validator_minimum_pause_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "validator_max_paused_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "validator_maximum_missed_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "validator_max_evidence_age_in_blocks_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "proposer_percentage_of_fees_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "missed_blocks_burn_percentage_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "double_sign_burn_percentage_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_double_sign_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_send_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_stake_fisherman_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_edit_stake_fisherman_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_unstake_fisherman_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_pause_fisherman_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_unpause_fisherman_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_fisherman_pause_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_test_score_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_prove_test_score_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_stake_app_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_edit_stake_app_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_unstake_app_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_pause_app_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_unpause_app_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_stake_validator_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_edit_stake_validator_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_unstake_validator_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_pause_validator_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_unpause_validator_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_stake_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_edit_stake_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_unstake_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_pause_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_unpause_service_node_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45", + "message_change_parameter_fee_owner": "da034209758b78eaea06dd99c07909ab54c99b45" + }, + "genesis_time": { + "seconds": 1663610702, + "nanos": 405401000 + }, + "chain_id": "testnet", + "max_block_bytes": 4000000 } From f599882031bf7eb3dd95f5a61458a3d132ac65c6 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:29:56 +0000 Subject: [PATCH 016/120] refactor(core): core types --- shared/core/types/proto/core_account.proto | 10 ++++++++ shared/core/types/proto/core_actor.proto | 25 +++++++++++++++++++ shared/core/types/proto/core_pool_names.proto | 15 +++++++++++ 3 files changed, 50 insertions(+) create mode 100644 shared/core/types/proto/core_account.proto create mode 100644 shared/core/types/proto/core_actor.proto create mode 100644 shared/core/types/proto/core_pool_names.proto diff --git a/shared/core/types/proto/core_account.proto b/shared/core/types/proto/core_account.proto new file mode 100644 index 000000000..a062fa9fe --- /dev/null +++ b/shared/core/types/proto/core_account.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package core; + +option go_package = "github.com/pokt-network/pocket/shared/core/types"; + +message Account { + string address = 1; + string amount = 2; +} diff --git a/shared/core/types/proto/core_actor.proto b/shared/core/types/proto/core_actor.proto new file mode 100644 index 000000000..213ecf0cb --- /dev/null +++ b/shared/core/types/proto/core_actor.proto @@ -0,0 +1,25 @@ +syntax = "proto3"; + +package core; + +option go_package = "github.com/pokt-network/pocket/shared/core/types"; + +enum ActorType { + ACTOR_TYPE_UNSPECIFIED = 0; + ACTOR_TYPE_APP = 1; + ACTOR_TYPE_NODE = 2; + ACTOR_TYPE_FISH = 3; + ACTOR_TYPE_VAL = 4; +} + +message Actor { + ActorType actor_type = 1; + string address = 2; + string public_key = 3; + repeated string chains = 4; + string generic_param = 5; + string staked_amount = 6; + int64 paused_height = 7; + int64 unstaking_height = 8; + string output = 9; +} diff --git a/shared/core/types/proto/core_pool_names.proto b/shared/core/types/proto/core_pool_names.proto new file mode 100644 index 000000000..de1ea89f8 --- /dev/null +++ b/shared/core/types/proto/core_pool_names.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; + +package core; + +option go_package = "github.com/pokt-network/pocket/shared/core/types"; + +enum PoolNames { + POOL_NAMES_UNSPECIFIED = 0; + POOL_NAMES_DAO = 1; + POOL_NAMES_FEE_COLLECTOR = 2; + POOL_NAMES_APP_STAKE_POOL = 3; + POOL_NAMES_VALIDATOR_STAKE_POOL = 4; + POOL_NAMES_SERVICE_NODE_STAKE_POOL = 5; + POOL_NAMES_FISHERMAN_STAKE_POOL = 7; +} From 43c560f13b39b2cb6fcebf5c97cd91e09f405350 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:30:24 +0000 Subject: [PATCH 017/120] refactor(shared): core types --- shared/modules/types.go | 168 ---------------------------------------- 1 file changed, 168 deletions(-) diff --git a/shared/modules/types.go b/shared/modules/types.go index bb8580f80..1bd74aa55 100644 --- a/shared/modules/types.go +++ b/shared/modules/types.go @@ -1,55 +1,5 @@ package modules -import "google.golang.org/protobuf/types/known/timestamppb" - -//go:generate mockgen -source=$GOFILE -destination=./mocks/types_mock.go -aux_files=github.com/pokt-network/pocket/shared/modules=module.go - -// This file contains the minimum shared structures (GenesisState) and the many shared interfaces the modules implement -// the main purpose of this structure is to ensure the ownership of the - -type GenesisState interface { - GetPersistenceGenesisState() PersistenceGenesisState - GetConsensusGenesisState() ConsensusGenesisState -} - -type PersistenceGenesisState interface { - GetAccs() []Account - GetAccPools() []Account - GetApps() []Actor - GetVals() []Actor - GetFish() []Actor - GetNodes() []Actor - GetParameters() Params -} - -type ConsensusGenesisState interface { - GetGenesisTime() *timestamppb.Timestamp - GetChainId() string - GetMaxBlockBytes() uint64 - GetVals() []Actor -} - -type Account interface { - GetAddress() string - GetAmount() string -} - -type Actor interface { - GetAddress() string - GetPublicKey() string - GetChains() []string - GetGenericParam() string - GetStakedAmount() string - GetPausedHeight() int64 - GetUnstakingHeight() int64 - GetOutput() string - GetActorTyp() ActorType // RESEARCH: this method has to be implemented manually which is a pain -} - -type ActorType interface { - String() string -} - type IUnstakingActor interface { GetAddress() []byte SetAddress(address string) @@ -59,124 +9,6 @@ type IUnstakingActor interface { SetOutputAddress(address string) } -type Params interface { - GetAppMinimumStake() string - GetAppMaxChains() int32 - GetAppBaselineStakeRate() int32 - GetAppStakingAdjustment() int32 - GetAppUnstakingBlocks() int32 - GetAppMinimumPauseBlocks() int32 - GetAppMaxPauseBlocks() int32 - GetBlocksPerSession() int32 - - GetServiceNodeMinimumStake() string - GetServiceNodeMaxChains() int32 - GetServiceNodeUnstakingBlocks() int32 - GetServiceNodeMinimumPauseBlocks() int32 - GetServiceNodeMaxPauseBlocks() int32 - GetServiceNodesPerSession() int32 - - GetFishermanMinimumStake() string - GetFishermanMaxChains() int32 - GetFishermanUnstakingBlocks() int32 - GetFishermanMinimumPauseBlocks() int32 - GetFishermanMaxPauseBlocks() int32 - - GetValidatorMinimumStake() string - GetValidatorUnstakingBlocks() int32 - GetValidatorMinimumPauseBlocks() int32 - GetValidatorMaxPauseBlocks() int32 - GetValidatorMaximumMissedBlocks() int32 - GetProposerPercentageOfFees() int32 - GetValidatorMaxEvidenceAgeInBlocks() int32 - GetMissedBlocksBurnPercentage() int32 - GetDoubleSignBurnPercentage() int32 - - GetMessageDoubleSignFee() string - GetMessageSendFee() string - GetMessageStakeFishermanFee() string - GetMessageEditStakeFishermanFee() string - GetMessageUnstakeFishermanFee() string - GetMessagePauseFishermanFee() string - GetMessageUnpauseFishermanFee() string - GetMessageFishermanPauseServiceNodeFee() string - GetMessageTestScoreFee() string - GetMessageProveTestScoreFee() string - GetMessageStakeAppFee() string - GetMessageEditStakeAppFee() string - GetMessageUnstakeAppFee() string - GetMessagePauseAppFee() string - GetMessageUnpauseAppFee() string - GetMessageStakeValidatorFee() string - GetMessageEditStakeValidatorFee() string - GetMessageUnstakeValidatorFee() string - GetMessagePauseValidatorFee() string - GetMessageUnpauseValidatorFee() string - GetMessageStakeServiceNodeFee() string - GetMessageEditStakeServiceNodeFee() string - GetMessageUnstakeServiceNodeFee() string - GetMessagePauseServiceNodeFee() string - GetMessageUnpauseServiceNodeFee() string - GetMessageChangeParameterFee() string - - // ACL Queries - GetAclOwner() string - GetBlocksPerSessionOwner() string - GetAppMaxChainsOwner() string - GetAppMinimumStakeOwner() string - GetAppBaselineStakeRateOwner() string - GetAppStakingAdjustmentOwner() string - GetAppUnstakingBlocksOwner() string - GetAppMinimumPauseBlocksOwner() string - GetAppMaxPausedBlocksOwner() string - GetServiceNodeMinimumStakeOwner() string - GetServiceNodeMaxChainsOwner() string - GetServiceNodeUnstakingBlocksOwner() string - GetServiceNodeMinimumPauseBlocksOwner() string - GetServiceNodeMaxPausedBlocksOwner() string - GetFishermanMinimumStakeOwner() string - GetFishermanMaxChainsOwner() string - GetFishermanUnstakingBlocksOwner() string - GetFishermanMinimumPauseBlocksOwner() string - GetFishermanMaxPausedBlocksOwner() string - GetValidatorMinimumStakeOwner() string - GetValidatorUnstakingBlocksOwner() string - GetValidatorMinimumPauseBlocksOwner() string - GetValidatorMaxPausedBlocksOwner() string - GetValidatorMaximumMissedBlocksOwner() string - GetProposerPercentageOfFeesOwner() string - GetValidatorMaxEvidenceAgeInBlocksOwner() string - GetMissedBlocksBurnPercentageOwner() string - GetDoubleSignBurnPercentageOwner() string - GetServiceNodesPerSessionOwner() string - GetMessageDoubleSignFeeOwner() string - GetMessageSendFeeOwner() string - GetMessageStakeFishermanFeeOwner() string - GetMessageEditStakeFishermanFeeOwner() string - GetMessageUnstakeFishermanFeeOwner() string - GetMessagePauseFishermanFeeOwner() string - GetMessageUnpauseFishermanFeeOwner() string - GetMessageFishermanPauseServiceNodeFeeOwner() string - GetMessageTestScoreFeeOwner() string - GetMessageProveTestScoreFeeOwner() string - GetMessageStakeAppFeeOwner() string - GetMessageEditStakeAppFeeOwner() string - GetMessageUnstakeAppFeeOwner() string - GetMessagePauseAppFeeOwner() string - GetMessageUnpauseAppFeeOwner() string - GetMessageStakeValidatorFeeOwner() string - GetMessageEditStakeValidatorFeeOwner() string - GetMessageUnstakeValidatorFeeOwner() string - GetMessagePauseValidatorFeeOwner() string - GetMessageUnpauseValidatorFeeOwner() string - GetMessageStakeServiceNodeFeeOwner() string - GetMessageEditStakeServiceNodeFeeOwner() string - GetMessageUnstakeServiceNodeFeeOwner() string - GetMessagePauseServiceNodeFeeOwner() string - GetMessageUnpauseServiceNodeFeeOwner() string - GetMessageChangeParameterFeeOwner() string -} - // The result of executing a transaction against the blockchain state so that it is included in the block type TxResult interface { GetTx() []byte // the transaction object primitive From f60517b41a6197f7003312b1fca40fa0fbf06514 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:31:50 +0000 Subject: [PATCH 018/120] refactor(genesis): centralized genesis --- consensus/types/proto/consensus_genesis.proto | 20 ------ .../genesis/proto/genesis.proto | 62 +++++-------------- 2 files changed, 17 insertions(+), 65 deletions(-) delete mode 100644 consensus/types/proto/consensus_genesis.proto rename persistence/proto/persistence_genesis.proto => runtime/genesis/proto/genesis.proto (90%) diff --git a/consensus/types/proto/consensus_genesis.proto b/consensus/types/proto/consensus_genesis.proto deleted file mode 100644 index 0d6ac61c4..000000000 --- a/consensus/types/proto/consensus_genesis.proto +++ /dev/null @@ -1,20 +0,0 @@ -syntax = "proto3"; -package consensus; - -import "google/protobuf/timestamp.proto"; - -option go_package = "github.com/pokt-network/pocket/consensus/types"; - -message ConsensusGenesisState { - google.protobuf.Timestamp genesis_time = 1; - string chain_id = 2; // TODO/DISCUSS re-evaluate naming covention - uint64 max_block_bytes = 3; - repeated Validator validators = 4; -} - -message Validator { - string address = 1; - string public_key = 2; - string staked_amount = 3; - string generic_param = 4; // TODO/DISCUSS re-evaluate naming covention -} \ No newline at end of file diff --git a/persistence/proto/persistence_genesis.proto b/runtime/genesis/proto/genesis.proto similarity index 90% rename from persistence/proto/persistence_genesis.proto rename to runtime/genesis/proto/genesis.proto index 4a6e34482..ed108de6c 100644 --- a/persistence/proto/persistence_genesis.proto +++ b/runtime/genesis/proto/genesis.proto @@ -1,52 +1,24 @@ syntax = "proto3"; -package persistence; -option go_package = "github.com/pokt-network/pocket/persistence/types"; +package genesis; -message PersistenceGenesisState { - repeated Account pools = 1; - repeated Account accounts = 2; - repeated Actor applications = 3; - repeated Actor validators = 4; - repeated Actor service_nodes = 5; - repeated Actor fishermen = 6; - Params params = 7; -} - -message Account { - string address = 1; - string amount = 2; -} +import "core/types/proto/core_account.proto"; +import "core/types/proto/core_actor.proto"; +import "google/protobuf/timestamp.proto"; -// TODO(#258): Follow protobuf best practices -enum PoolNames { - PoolNameUnspecified = 0; - DAO = 1; - FeeCollector = 2; - AppStakePool = 3; - ValidatorStakePool = 4; - ServiceNodeStakePool = 5; - FishermanStakePool = 7; -} +option go_package = "github.com/pokt-network/pocket/runtime/genesis"; -enum ActorType { - Undefined = 0; - App = 1; - Node = 2; - Fish = 3; - Val = 4; -} - -message Actor { - ActorType actor_type = 1; - string address = 2; - string public_key = 3; - repeated string chains = 4; - string generic_param = 5; - string staked_amount = 6; - int64 paused_height = 7; - int64 unstaking_height = 8; - string output = 9; +message GenesisState { + google.protobuf.Timestamp genesis_time = 1; + string chain_id = 2; // TODO/DISCUSS re-evaluate naming covention + uint64 max_block_bytes = 3; + repeated core.Account pools = 4; + repeated core.Account accounts = 5; + repeated core.Actor applications = 6; + repeated core.Actor validators = 7; + repeated core.Actor service_nodes = 8; + repeated core.Actor fishermen = 9; + Params params = 10; } // DISCUSS(drewskey): Explore a more general purpose "feature flag" like approach for this. @@ -274,4 +246,4 @@ message Params { string message_unpause_service_node_fee_owner = 108; //@gotags: pokt:"val_type=STRING" string message_change_parameter_fee_owner = 109; -} \ No newline at end of file +} From a689e909059bf96e20edd4c6b3f12155e340234f Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:32:14 +0000 Subject: [PATCH 019/120] refactor(consensus): removed converter --- consensus/types/converters.go | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 consensus/types/converters.go diff --git a/consensus/types/converters.go b/consensus/types/converters.go deleted file mode 100644 index f11d42bc2..000000000 --- a/consensus/types/converters.go +++ /dev/null @@ -1,22 +0,0 @@ -package types - -import ( - "github.com/pokt-network/pocket/shared/modules" -) - -func actorToValidator(actor modules.Actor) *Validator { - return &Validator{ - Address: actor.GetAddress(), - PublicKey: actor.GetPublicKey(), - StakedAmount: actor.GetStakedAmount(), - GenericParam: actor.GetGenericParam(), - } -} - -func ToConsensusValidators(actors []modules.Actor) (vals []*Validator) { - vals = make([]*Validator, len(actors)) - for i, actor := range actors { - vals[i] = actorToValidator(actor) - } - return -} From b4a5fd904ac7cae593b5e9ac389f4281ddd53632 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:32:30 +0000 Subject: [PATCH 020/120] refactor(persistence): removed converter --- persistence/types/converters.go | 156 -------------------------------- 1 file changed, 156 deletions(-) delete mode 100644 persistence/types/converters.go diff --git a/persistence/types/converters.go b/persistence/types/converters.go deleted file mode 100644 index 2c9e81f88..000000000 --- a/persistence/types/converters.go +++ /dev/null @@ -1,156 +0,0 @@ -package types - -import ( - "github.com/pokt-network/pocket/shared/modules" -) - -func toPersistenceActor(actor modules.Actor) *Actor { - return &Actor{ - ActorType: actor.GetActorTyp().(ActorType), - Address: actor.GetAddress(), - PublicKey: actor.GetPublicKey(), - Chains: actor.GetChains(), - GenericParam: actor.GetGenericParam(), - StakedAmount: actor.GetStakedAmount(), - PausedHeight: actor.GetPausedHeight(), - UnstakingHeight: actor.GetUnstakingHeight(), - Output: actor.GetOutput(), - } -} - -func ToPersistenceActors(actors []modules.Actor) []*Actor { - perActors := make([]*Actor, len(actors)) - for i, actor := range actors { - perActors[i] = toPersistenceActor(actor) - } - return perActors -} - -func toPersistenceAccount(account modules.Account) *Account { - return &Account{ - Address: account.GetAddress(), - Amount: account.GetAmount(), - } -} - -func ToPersistenceAccounts(accounts []modules.Account) []*Account { - perAccounts := make([]*Account, len(accounts)) - for i, account := range accounts { - perAccounts[i] = toPersistenceAccount(account) - } - return perAccounts -} - -func ToPersistenceParams(params modules.Params) *Params { - return &Params{ - BlocksPerSession: params.GetBlocksPerSession(), - AppMinimumStake: params.GetAppMinimumStake(), - AppMaxChains: params.GetAppMaxChains(), - AppBaselineStakeRate: params.GetAppBaselineStakeRate(), - AppStakingAdjustment: params.GetAppStakingAdjustment(), - AppUnstakingBlocks: params.GetAppUnstakingBlocks(), - AppMinimumPauseBlocks: params.GetAppMinimumPauseBlocks(), - AppMaxPauseBlocks: params.GetAppMaxPauseBlocks(), - ServiceNodeMinimumStake: params.GetServiceNodeMinimumStake(), - ServiceNodeMaxChains: params.GetServiceNodeMaxChains(), - ServiceNodeUnstakingBlocks: params.GetServiceNodeUnstakingBlocks(), - ServiceNodeMinimumPauseBlocks: params.GetServiceNodeMinimumPauseBlocks(), - ServiceNodeMaxPauseBlocks: params.GetServiceNodeMaxPauseBlocks(), - ServiceNodesPerSession: params.GetServiceNodesPerSession(), - FishermanMinimumStake: params.GetFishermanMinimumStake(), - FishermanMaxChains: params.GetFishermanMaxChains(), - FishermanUnstakingBlocks: params.GetFishermanUnstakingBlocks(), - FishermanMinimumPauseBlocks: params.GetFishermanMinimumPauseBlocks(), - FishermanMaxPauseBlocks: params.GetFishermanMaxPauseBlocks(), - ValidatorMinimumStake: params.GetValidatorMinimumStake(), - ValidatorUnstakingBlocks: params.GetValidatorUnstakingBlocks(), - ValidatorMinimumPauseBlocks: params.GetValidatorMinimumPauseBlocks(), - ValidatorMaxPauseBlocks: params.GetValidatorMaxPauseBlocks(), - ValidatorMaximumMissedBlocks: params.GetValidatorMaximumMissedBlocks(), - ValidatorMaxEvidenceAgeInBlocks: params.GetValidatorMaxEvidenceAgeInBlocks(), - ProposerPercentageOfFees: params.GetProposerPercentageOfFees(), - MissedBlocksBurnPercentage: params.GetMissedBlocksBurnPercentage(), - DoubleSignBurnPercentage: params.GetDoubleSignBurnPercentage(), - MessageDoubleSignFee: params.GetMessageDoubleSignFee(), - MessageSendFee: params.GetMessageSendFee(), - MessageStakeFishermanFee: params.GetMessageStakeFishermanFee(), - MessageEditStakeFishermanFee: params.GetMessageEditStakeFishermanFee(), - MessageUnstakeFishermanFee: params.GetMessageUnstakeFishermanFee(), - MessagePauseFishermanFee: params.GetMessagePauseFishermanFee(), - MessageUnpauseFishermanFee: params.GetMessageUnpauseFishermanFee(), - MessageFishermanPauseServiceNodeFee: params.GetMessageFishermanPauseServiceNodeFee(), - MessageTestScoreFee: params.GetMessageTestScoreFee(), - MessageProveTestScoreFee: params.GetMessageProveTestScoreFee(), - MessageStakeAppFee: params.GetMessageStakeAppFee(), - MessageEditStakeAppFee: params.GetMessageEditStakeAppFee(), - MessageUnstakeAppFee: params.GetMessageUnstakeAppFee(), - MessagePauseAppFee: params.GetMessagePauseAppFee(), - MessageUnpauseAppFee: params.GetMessageUnpauseAppFee(), - MessageStakeValidatorFee: params.GetMessageStakeValidatorFee(), - MessageEditStakeValidatorFee: params.GetMessageEditStakeValidatorFee(), - MessageUnstakeValidatorFee: params.GetMessageUnstakeValidatorFee(), - MessagePauseValidatorFee: params.GetMessagePauseValidatorFee(), - MessageUnpauseValidatorFee: params.GetMessageUnpauseValidatorFee(), - MessageStakeServiceNodeFee: params.GetMessageStakeServiceNodeFee(), - MessageEditStakeServiceNodeFee: params.GetMessageEditStakeServiceNodeFee(), - MessageUnstakeServiceNodeFee: params.GetMessageUnstakeServiceNodeFee(), - MessagePauseServiceNodeFee: params.GetMessagePauseServiceNodeFee(), - MessageUnpauseServiceNodeFee: params.GetMessageUnpauseServiceNodeFee(), - MessageChangeParameterFee: params.GetMessageChangeParameterFee(), - AclOwner: params.GetAclOwner(), - BlocksPerSessionOwner: params.GetBlocksPerSessionOwner(), - AppMinimumStakeOwner: params.GetAppMinimumStakeOwner(), - AppMaxChainsOwner: params.GetAppMaxChainsOwner(), - AppBaselineStakeRateOwner: params.GetAppBaselineStakeRateOwner(), - AppStakingAdjustmentOwner: params.GetAppStakingAdjustmentOwner(), - AppUnstakingBlocksOwner: params.GetAppUnstakingBlocksOwner(), - AppMinimumPauseBlocksOwner: params.GetAppMinimumPauseBlocksOwner(), - AppMaxPausedBlocksOwner: params.GetAppMaxPausedBlocksOwner(), - ServiceNodeMinimumStakeOwner: params.GetServiceNodeMinimumStakeOwner(), - ServiceNodeMaxChainsOwner: params.GetServiceNodeMaxChainsOwner(), - ServiceNodeUnstakingBlocksOwner: params.GetServiceNodeUnstakingBlocksOwner(), - ServiceNodeMinimumPauseBlocksOwner: params.GetServiceNodeMinimumPauseBlocksOwner(), - ServiceNodeMaxPausedBlocksOwner: params.GetServiceNodeMaxPausedBlocksOwner(), - ServiceNodesPerSessionOwner: params.GetServiceNodesPerSessionOwner(), - FishermanMinimumStakeOwner: params.GetFishermanMinimumStakeOwner(), - FishermanMaxChainsOwner: params.GetFishermanMaxChainsOwner(), - FishermanUnstakingBlocksOwner: params.GetFishermanUnstakingBlocksOwner(), - FishermanMinimumPauseBlocksOwner: params.GetFishermanMinimumPauseBlocksOwner(), - FishermanMaxPausedBlocksOwner: params.GetFishermanMaxPausedBlocksOwner(), - ValidatorMinimumStakeOwner: params.GetValidatorMinimumStakeOwner(), - ValidatorUnstakingBlocksOwner: params.GetValidatorUnstakingBlocksOwner(), - ValidatorMinimumPauseBlocksOwner: params.GetValidatorMinimumPauseBlocksOwner(), - ValidatorMaxPausedBlocksOwner: params.GetValidatorMaxPausedBlocksOwner(), - ValidatorMaximumMissedBlocksOwner: params.GetValidatorMaximumMissedBlocksOwner(), - ValidatorMaxEvidenceAgeInBlocksOwner: params.GetValidatorMaxEvidenceAgeInBlocksOwner(), - ProposerPercentageOfFeesOwner: params.GetProposerPercentageOfFeesOwner(), - MissedBlocksBurnPercentageOwner: params.GetMissedBlocksBurnPercentageOwner(), - DoubleSignBurnPercentageOwner: params.GetDoubleSignBurnPercentageOwner(), - MessageDoubleSignFeeOwner: params.GetMessageDoubleSignFeeOwner(), - MessageSendFeeOwner: params.GetMessageSendFeeOwner(), - MessageStakeFishermanFeeOwner: params.GetMessageStakeFishermanFeeOwner(), - MessageEditStakeFishermanFeeOwner: params.GetMessageEditStakeFishermanFeeOwner(), - MessageUnstakeFishermanFeeOwner: params.GetMessageUnstakeFishermanFeeOwner(), - MessagePauseFishermanFeeOwner: params.GetMessagePauseFishermanFeeOwner(), - MessageUnpauseFishermanFeeOwner: params.GetMessageUnpauseFishermanFeeOwner(), - MessageFishermanPauseServiceNodeFeeOwner: params.GetMessageFishermanPauseServiceNodeFeeOwner(), - MessageTestScoreFeeOwner: params.GetMessageTestScoreFeeOwner(), - MessageProveTestScoreFeeOwner: params.GetMessageProveTestScoreFeeOwner(), - MessageStakeAppFeeOwner: params.GetMessageStakeAppFeeOwner(), - MessageEditStakeAppFeeOwner: params.GetMessageEditStakeAppFeeOwner(), - MessageUnstakeAppFeeOwner: params.GetMessageUnstakeAppFeeOwner(), - MessagePauseAppFeeOwner: params.GetMessagePauseAppFeeOwner(), - MessageUnpauseAppFeeOwner: params.GetMessageUnpauseAppFeeOwner(), - MessageStakeValidatorFeeOwner: params.GetMessageStakeValidatorFeeOwner(), - MessageEditStakeValidatorFeeOwner: params.GetMessageEditStakeValidatorFeeOwner(), - MessageUnstakeValidatorFeeOwner: params.GetMessageUnstakeValidatorFeeOwner(), - MessagePauseValidatorFeeOwner: params.GetMessagePauseValidatorFeeOwner(), - MessageUnpauseValidatorFeeOwner: params.GetMessageUnpauseValidatorFeeOwner(), - MessageStakeServiceNodeFeeOwner: params.GetMessageStakeServiceNodeFeeOwner(), - MessageEditStakeServiceNodeFeeOwner: params.GetMessageEditStakeServiceNodeFeeOwner(), - MessageUnstakeServiceNodeFeeOwner: params.GetMessageUnstakeServiceNodeFeeOwner(), - MessagePauseServiceNodeFeeOwner: params.GetMessagePauseServiceNodeFeeOwner(), - MessageUnpauseServiceNodeFeeOwner: params.GetMessageUnpauseServiceNodeFeeOwner(), - MessageChangeParameterFeeOwner: params.GetMessageChangeParameterFeeOwner(), - } -} From 535130d369b7de5d29f732f03b03337f119efc3e Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:32:53 +0000 Subject: [PATCH 021/120] chore(go.mod): tidy --- go.mod | 29 ++++++++++++++------------- go.sum | 62 ++++++++++++++++++++++++++++++++++++---------------------- 2 files changed, 54 insertions(+), 37 deletions(-) diff --git a/go.mod b/go.mod index b0f541362..1782ea860 100644 --- a/go.mod +++ b/go.mod @@ -11,8 +11,8 @@ require ( github.com/golang/mock v1.6.0 github.com/jackc/pgx/v4 v4.17.2 github.com/ory/dockertest v3.3.5+incompatible - github.com/stretchr/testify v1.8.0 - golang.org/x/crypto v0.0.0-20221012134737-56aed061732a + github.com/stretchr/testify v1.8.1 + golang.org/x/crypto v0.1.0 golang.org/x/exp v0.0.0-20221012211006-4de253d81b95 gonum.org/v1/gonum v0.12.0 google.golang.org/protobuf v1.28.1 @@ -60,7 +60,7 @@ require ( github.com/prometheus/client_golang v1.13.0 github.com/sirupsen/logrus v1.9.0 // indirect go.opencensus.io v0.23.0 // indirect - golang.org/x/net v0.0.0-20221014081412-f15817d10f9b // indirect + golang.org/x/net v0.2.0 // indirect gotest.tools v2.2.0+incompatible // indirect ) @@ -72,7 +72,7 @@ require ( github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/term v0.0.0-20220919170432-7a66f970e087 // indirect + golang.org/x/term v0.2.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) @@ -83,7 +83,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/swag v0.19.5 // indirect + github.com/go-openapi/swag v0.21.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -94,11 +94,12 @@ require ( github.com/jackc/pgproto3/v2 v2.3.1 // indirect github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect github.com/jackc/pgtype v1.12.0 // indirect + github.com/josharian/intern v1.0.0 // indirect github.com/labstack/gommon v0.4.0 // indirect github.com/magiconair/properties v1.8.6 // indirect - github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e // indirect - github.com/mattn/go-colorable v0.1.12 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.16 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.5 // indirect @@ -109,12 +110,12 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/subosito/gotenv v1.4.1 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fasttemplate v1.2.1 // indirect - golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect - golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43 // indirect - golang.org/x/text v0.3.8 // indirect - golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect - golang.org/x/tools v0.1.12 // indirect + github.com/valyala/fasttemplate v1.2.2 // indirect + golang.org/x/mod v0.7.0 // indirect + golang.org/x/sys v0.2.0 // indirect + golang.org/x/text v0.4.0 // indirect + golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect + golang.org/x/tools v0.3.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 71f1933cc..0197be791 100644 --- a/go.sum +++ b/go.sum @@ -102,6 +102,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -145,8 +146,9 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU= +github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -293,6 +295,8 @@ github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dv github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jordanorelli/lexnum v0.0.0-20141216151731-460eeb125754 h1:ovgRFhVUYZWz6KnWPrnV7HBxrK0ErOeyXtlVvh0Rr5k= github.com/jordanorelli/lexnum v0.0.0-20141216151731-460eeb125754/go.mod h1:f1WdQhB98V35bULPsZUMFP9U1XWhpaHrO6myMijgMhU= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -319,6 +323,7 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labstack/echo/v4 v4.9.1 h1:GliPYSpzGKlyOhqIbG8nmHBo3i1saKWFOgh41AN3b+Y= github.com/labstack/echo/v4 v4.9.1/go.mod h1:Pop5HLc+xoc4qhTZ1ip6C0RtP7Z+4VzRLWZZFKqbbjo= github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8= @@ -332,20 +337,23 @@ github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czP github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e h1:hB2xlXdHp/pmPZq0y3QnmWAArdw9PqbmotexnWx/FU8= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2 h1:hAHbPm5IJGijwng3PWk09JkG9WeqChjprR5s9bBZ+OM= github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= @@ -364,6 +372,7 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwd github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= @@ -461,6 +470,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -468,8 +478,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= @@ -477,8 +488,9 @@ github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljT github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= +github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= @@ -522,8 +534,8 @@ golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20221012134737-56aed061732a h1:NmSIgad6KjE6VvHciPZuNRTKxGhlPfD6OA87W/PLkqg= -golang.org/x/crypto v0.0.0-20221012134737-56aed061732a/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -560,8 +572,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -602,8 +614,8 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b h1:tvrvnPFcdzp294diPnrdZZZ8XUt2Tyj7svb7X52iDuU= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -626,6 +638,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -690,15 +703,16 @@ golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43 h1:OK7RB6t2WQX54srQQYSXMW8dF5C6/8+oA/s5QBmmto4= -golang.org/x/sys v0.0.0-20221013171732-95e765b1cc43/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20220919170432-7a66f970e087 h1:tPwmk4vmvVCMdr98VgL4JH+qZxPL8fqlUOHnyOM8N3w= -golang.org/x/term v0.0.0-20220919170432-7a66f970e087/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0 h1:z85xZCsEl7bi/KwbNADeBYoOP0++7W1ipu+aGnpwzRM= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -707,13 +721,13 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w= +golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -769,8 +783,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.3.0 h1:SrNbZl6ECOS1qFzgTdQfWXZM9XBkiA6tkFrH9YSTPHM= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -876,6 +890,7 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -890,6 +905,7 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= From 00de79559dc8d159ee5fce51f6c6284e9d3b1054 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:35:12 +0000 Subject: [PATCH 022/120] refactor(consensus): centralized genesis + core types --- consensus/block.go | 4 ++-- consensus/module.go | 26 ++++++++++++-------------- consensus/types/consensus_genesis.go | 19 ------------------- consensus/types/proto/validator.proto | 12 ++++++++++++ consensus/types/types.go | 22 +++++++++++++--------- 5 files changed, 39 insertions(+), 44 deletions(-) delete mode 100644 consensus/types/consensus_genesis.go create mode 100644 consensus/types/proto/validator.proto diff --git a/consensus/block.go b/consensus/block.go index 75b62ab80..2ff8b8914 100644 --- a/consensus/block.go +++ b/consensus/block.go @@ -35,8 +35,8 @@ func (m *consensusModule) validateBlockBasic(block *typesCons.Block) error { return typesCons.ErrBlockExists } - if block != nil && unsafe.Sizeof(*block) > uintptr(m.consGenesis.GetMaxBlockBytes()) { - return typesCons.ErrInvalidBlockSize(uint64(unsafe.Sizeof(*block)), m.consGenesis.GetMaxBlockBytes()) + if block != nil && unsafe.Sizeof(*block) > uintptr(m.genesisState.GetMaxBlockBytes()) { + return typesCons.ErrInvalidBlockSize(uint64(unsafe.Sizeof(*block)), m.genesisState.GetMaxBlockBytes()) } // If the current block being processed (i.e. voted on) by consensus is non nil, we need to make diff --git a/consensus/module.go b/consensus/module.go index 94a894007..08d102590 100644 --- a/consensus/module.go +++ b/consensus/module.go @@ -10,6 +10,7 @@ import ( consensusTelemetry "github.com/pokt-network/pocket/consensus/telemetry" typesCons "github.com/pokt-network/pocket/consensus/types" "github.com/pokt-network/pocket/runtime/configs" + "github.com/pokt-network/pocket/runtime/genesis" "github.com/pokt-network/pocket/shared/codec" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" @@ -23,17 +24,15 @@ const ( var ( _ modules.ConsensusModule = &consensusModule{} - // _ modules.ConsensusConfig = &typesCons.ConsensusConfig{} - _ modules.ConsensusGenesisState = &typesCons.ConsensusGenesisState{} - _ ConsensusDebugModule = &consensusModule{} + _ ConsensusDebugModule = &consensusModule{} ) type consensusModule struct { bus modules.Bus privateKey cryptoPocket.Ed25519PrivateKey - consCfg *configs.ConsensusConfig - consGenesis modules.ConsensusGenesisState + consCfg *configs.ConsensusConfig + genesisState *genesis.GenesisState // m is a mutex used to control synchronization when multiple goroutines are accessing the struct and its fields / properties. // @@ -120,11 +119,10 @@ func (*consensusModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, e consensusCfg := runtimeMgr.GetConfig().Consensus - genesis := runtimeMgr.GetGenesis() - if err := m.ValidateGenesis(genesis); err != nil { + genesisState := runtimeMgr.GetGenesis() + if err := m.ValidateGenesis(genesisState); err != nil { return nil, fmt.Errorf("genesis validation failed: %w", err) } - consensusGenesis := genesis.GetConsensusGenesisState() leaderElectionMod, err := leader_election.Create(runtimeMgr) if err != nil { @@ -137,7 +135,7 @@ func (*consensusModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, e return nil, err } - valMap := typesCons.ActorListToValidatorMap(consensusGenesis.GetVals()) + valMap := typesCons.ActorListToValidatorMap(genesisState.GetValidators()) privateKey, err := cryptoPocket.NewPrivateKey(consensusCfg.PrivateKey) if err != nil { @@ -151,9 +149,9 @@ func (*consensusModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, e m = &consensusModule{ bus: nil, - privateKey: privateKey.(cryptoPocket.Ed25519PrivateKey), - consCfg: consensusCfg, - consGenesis: genesis.GetConsensusGenesisState(), + privateKey: privateKey.(cryptoPocket.Ed25519PrivateKey), + consCfg: consensusCfg, + genesisState: genesisState, height: 0, round: 0, @@ -230,9 +228,9 @@ func (m *consensusModule) SetBus(pocketBus modules.Bus) { m.leaderElectionMod.SetBus(pocketBus) } -func (*consensusModule) ValidateGenesis(genesis modules.GenesisState) error { +func (*consensusModule) ValidateGenesis(genesis *genesis.GenesisState) error { // Sort the validators by their generic param (i.e. service URL) - vals := genesis.GetConsensusGenesisState().GetVals() + vals := genesis.GetValidators() sort.Slice(vals, func(i, j int) bool { return vals[i].GetGenericParam() < vals[j].GetGenericParam() }) diff --git a/consensus/types/consensus_genesis.go b/consensus/types/consensus_genesis.go deleted file mode 100644 index 4ec59e476..000000000 --- a/consensus/types/consensus_genesis.go +++ /dev/null @@ -1,19 +0,0 @@ -package types - -import "github.com/pokt-network/pocket/shared/modules" - -var _ modules.ConsensusGenesisState = &ConsensusGenesisState{} - -func (x *ConsensusGenesisState) GetVals() []modules.Actor { - return ActorsToActorsInterface(x.GetValidators()) -} - -func ActorsToActorsInterface(vals []*Validator) (actorI []modules.Actor) { - actorI = make([]modules.Actor, len(vals)) - for i, actor := range vals { - actorI[i] = actor - } - return -} - -var _ modules.Actor = &Validator{} diff --git a/consensus/types/proto/validator.proto b/consensus/types/proto/validator.proto new file mode 100644 index 000000000..dfac06ea9 --- /dev/null +++ b/consensus/types/proto/validator.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +package consensus; + +option go_package = "github.com/pokt-network/pocket/consensus/types"; + +message Validator { + string address = 1; + string public_key = 2; + string staked_amount = 3; + string generic_param = 4; // TODO/DISCUSS re-evaluate naming covention +} diff --git a/consensus/types/types.go b/consensus/types/types.go index febcc2a10..d48f39225 100644 --- a/consensus/types/types.go +++ b/consensus/types/types.go @@ -4,6 +4,7 @@ package types import ( "sort" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/modules" ) @@ -11,7 +12,7 @@ type NodeId uint64 type ValAddrToIdMap map[string]NodeId // Mapping from hex encoded address to an integer node id. type IdToValAddrMap map[NodeId]string // Mapping from node id to a hex encoded string address. -type ValidatorMap map[string]modules.Actor +type ValidatorMap map[string]coreTypes.Actor type ConsensusNodeState struct { NodeId NodeId @@ -49,18 +50,21 @@ func ValidatorMapToModulesValidatorMap(validatorMap ValidatorMap) (vm modules.Va return } -func ActorListToValidatorMap(actors []modules.Actor) (m ValidatorMap) { +func ActorListToValidatorMap(actors []*coreTypes.Actor) (m ValidatorMap) { m = make(ValidatorMap, len(actors)) for _, v := range actors { - m[v.GetAddress()] = v + m[v.GetAddress()] = *v } return } -var _ modules.Actor = &Validator{} +// var _ modules.Actor = &Validator{} -func (x *Validator) GetPausedHeight() int64 { panic("not implemented on consensus validator") } -func (x *Validator) GetUnstakingHeight() int64 { panic("not implemented on consensus validator") } -func (x *Validator) GetOutput() string { panic("not implemented on consensus validator") } -func (x *Validator) GetActorTyp() modules.ActorType { panic("not implemented on consensus validator") } -func (x *Validator) GetChains() []string { panic("not implemented on consensus validator") } +// func (x *Validator) GetPausedHeight() int64 { panic("not implemented on consensus validator") } +// func (x *Validator) GetUnstakingHeight() int64 { panic("not implemented on consensus validator") } +// func (x *Validator) GetOutput() string { panic("not implemented on consensus validator") } +// func (x *Validator) GetActorTyp() modules.ActorType { panic("not implemented on consensus validator") } +// func (x *Validator) GetChains() []string { panic("not implemented on consensus validator") } +// func (x *Validator) GetActorType() coreTypes.ActorType { +// panic("not implemented on consensus validator") +// } From 0165bd4f19700c8153d435f3fdd4e4ed21c51646 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:35:33 +0000 Subject: [PATCH 023/120] refactor(persistence): centralized genesis + core types --- persistence/account.go | 9 +- persistence/actor.go | 37 +-- persistence/application.go | 9 +- persistence/block.go | 4 +- persistence/debug.go | 2 +- persistence/fisherman.go | 9 +- persistence/genesis.go | 46 ++-- persistence/gov.go | 3 +- persistence/module.go | 16 +- persistence/service_node.go | 9 +- persistence/shared_sql.go | 19 +- persistence/state.go | 39 +-- persistence/test/account_test.go | 22 +- persistence/test/application_test.go | 16 +- persistence/test/fisherman_test.go | 13 +- persistence/test/generic_test.go | 13 +- persistence/test/service_node_test.go | 13 +- persistence/test/setup_test.go | 7 +- persistence/test/state_test.go | 6 +- persistence/test/validator_test.go | 13 +- persistence/types/base_actor.go | 15 +- persistence/types/gov.go | 7 +- persistence/types/gov_test.go | 7 +- persistence/types/persistence_genesis.go | 320 +++++++++++------------ persistence/types/shared_sql.go | 13 +- persistence/types/validator.go | 4 +- persistence/validator.go | 9 +- 27 files changed, 347 insertions(+), 333 deletions(-) diff --git a/persistence/account.go b/persistence/account.go index 63229f4f7..5d03928f6 100644 --- a/persistence/account.go +++ b/persistence/account.go @@ -6,6 +6,7 @@ import ( "github.com/pokt-network/pocket/persistence/types" "github.com/pokt-network/pocket/shared/converters" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/jackc/pgx/v4" ) @@ -68,7 +69,7 @@ func (p PostgresContext) SetAccountAmount(address []byte, amount string) error { return nil } -func (p PostgresContext) GetAccountsUpdated(height int64) (accounts []*types.Account, err error) { +func (p PostgresContext) GetAccountsUpdated(height int64) (accounts []*coreTypes.Account, err error) { return p.getPoolOrAccUpdatedInternal(types.GetAccountsUpdatedAtHeightQuery(height)) } @@ -146,14 +147,14 @@ func (p *PostgresContext) operationPoolAmount(name string, amount string, op fun return p.operationPoolOrAccAmount(name, amount, op, p.GetPoolAmount, types.InsertPoolAmountQuery) } -func (p PostgresContext) GetPoolsUpdated(height int64) ([]*types.Account, error) { +func (p PostgresContext) GetPoolsUpdated(height int64) ([]*coreTypes.Account, error) { return p.getPoolOrAccUpdatedInternal(types.GetPoolsUpdatedAtHeightQuery(height)) } // Joint Pool & Account Helpers // Shared logic between `getPoolsUpdated` & `getAccountsUpdated` to keep explicit external interfaces -func (p *PostgresContext) getPoolOrAccUpdatedInternal(query string) (accounts []*types.Account, err error) { +func (p *PostgresContext) getPoolOrAccUpdatedInternal(query string) (accounts []*coreTypes.Account, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { return @@ -166,7 +167,7 @@ func (p *PostgresContext) getPoolOrAccUpdatedInternal(query string) (accounts [] defer rows.Close() for rows.Next() { - account := new(types.Account) + account := new(coreTypes.Account) if err = rows.Scan(&account.Address, &account.Amount); err != nil { return nil, err } diff --git a/persistence/actor.go b/persistence/actor.go index 6f2eda716..d22553f3b 100644 --- a/persistence/actor.go +++ b/persistence/actor.go @@ -2,13 +2,14 @@ package persistence import ( "github.com/pokt-network/pocket/persistence/types" - "github.com/pokt-network/pocket/shared/modules" + coreTypes "github.com/pokt-network/pocket/shared/core/types" ) // TODO (#399): All of the functions below following a structure similar to `GetAll` -// can easily be refactored and condensed into a single function using a generic type or a common -// interface. -func (p PostgresContext) GetAllApps(height int64) (apps []modules.Actor, err error) { +// +// can easily be refactored and condensed into a single function using a generic type or a common +// interface. +func (p PostgresContext) GetAllApps(height int64) (apps []*coreTypes.Actor, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { return nil, err @@ -17,9 +18,9 @@ func (p PostgresContext) GetAllApps(height int64) (apps []modules.Actor, err err if err != nil { return nil, err } - var actors []*types.Actor + var actors []*coreTypes.Actor for rows.Next() { - var actor *types.Actor + var actor *coreTypes.Actor actor, height, err = p.getActorFromRow(rows) if err != nil { return @@ -37,7 +38,7 @@ func (p PostgresContext) GetAllApps(height int64) (apps []modules.Actor, err err return } -func (p PostgresContext) GetAllValidators(height int64) (vals []modules.Actor, err error) { +func (p PostgresContext) GetAllValidators(height int64) (vals []*coreTypes.Actor, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { return nil, err @@ -46,9 +47,9 @@ func (p PostgresContext) GetAllValidators(height int64) (vals []modules.Actor, e if err != nil { return nil, err } - var actors []*types.Actor + var actors []*coreTypes.Actor for rows.Next() { - var actor *types.Actor + var actor *coreTypes.Actor actor, height, err = p.getActorFromRow(rows) if err != nil { return @@ -66,7 +67,7 @@ func (p PostgresContext) GetAllValidators(height int64) (vals []modules.Actor, e return } -func (p PostgresContext) GetAllServiceNodes(height int64) (sn []modules.Actor, err error) { +func (p PostgresContext) GetAllServiceNodes(height int64) (sn []*coreTypes.Actor, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { return nil, err @@ -75,9 +76,9 @@ func (p PostgresContext) GetAllServiceNodes(height int64) (sn []modules.Actor, e if err != nil { return nil, err } - var actors []*types.Actor + var actors []*coreTypes.Actor for rows.Next() { - var actor *types.Actor + var actor *coreTypes.Actor actor, height, err = p.getActorFromRow(rows) if err != nil { return @@ -95,7 +96,7 @@ func (p PostgresContext) GetAllServiceNodes(height int64) (sn []modules.Actor, e return } -func (p PostgresContext) GetAllFishermen(height int64) (f []modules.Actor, err error) { +func (p PostgresContext) GetAllFishermen(height int64) (f []*coreTypes.Actor, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { return nil, err @@ -104,9 +105,9 @@ func (p PostgresContext) GetAllFishermen(height int64) (f []modules.Actor, err e if err != nil { return nil, err } - var actors []*types.Actor + var actors []*coreTypes.Actor for rows.Next() { - var actor *types.Actor + var actor *coreTypes.Actor actor, height, err = p.getActorFromRow(rows) if err != nil { return @@ -125,11 +126,11 @@ func (p PostgresContext) GetAllFishermen(height int64) (f []modules.Actor, err e } // IMPROVE: This is a proof of concept. Ideally we should have a single query that returns all actors. -func (p PostgresContext) GetAllStakedActors(height int64) (allActors []modules.Actor, err error) { - type actorGetter func(height int64) ([]modules.Actor, error) +func (p PostgresContext) GetAllStakedActors(height int64) (allActors []*coreTypes.Actor, err error) { + type actorGetter func(height int64) ([]*coreTypes.Actor, error) actorGetters := []actorGetter{p.GetAllValidators, p.GetAllServiceNodes, p.GetAllFishermen, p.GetAllApps} for _, actorGetter := range actorGetters { - var actors []modules.Actor + var actors []*coreTypes.Actor actors, err = actorGetter(height) if err != nil { return diff --git a/persistence/application.go b/persistence/application.go index 414286550..a89cea060 100644 --- a/persistence/application.go +++ b/persistence/application.go @@ -4,6 +4,7 @@ import ( "encoding/hex" "github.com/pokt-network/pocket/persistence/types" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/modules" ) @@ -28,8 +29,8 @@ func (p PostgresContext) GetApp(address []byte, height int64) (operator, publicK } func (p PostgresContext) InsertApp(address []byte, publicKey []byte, output []byte, _ bool, _ int32, maxRelays string, stakedTokens string, chains []string, pausedHeight int64, unstakingHeight int64) error { - return p.InsertActor(types.ApplicationActor, &types.Actor{ - ActorType: types.ActorType_App, + return p.InsertActor(types.ApplicationActor, &coreTypes.Actor{ + ActorType: coreTypes.ActorType_ACTOR_TYPE_APP, Address: hex.EncodeToString(address), PublicKey: hex.EncodeToString(publicKey), Chains: chains, @@ -42,8 +43,8 @@ func (p PostgresContext) InsertApp(address []byte, publicKey []byte, output []by } func (p PostgresContext) UpdateApp(address []byte, maxRelays string, stakedAmount string, chains []string) error { - return p.UpdateActor(types.ApplicationActor, &types.Actor{ - ActorType: types.ActorType_App, + return p.UpdateActor(types.ApplicationActor, &coreTypes.Actor{ + ActorType: coreTypes.ActorType_ACTOR_TYPE_APP, Address: hex.EncodeToString(address), Chains: chains, GenericParam: maxRelays, diff --git a/persistence/block.go b/persistence/block.go index 1d4fdf838..1aaf6041a 100644 --- a/persistence/block.go +++ b/persistence/block.go @@ -57,7 +57,9 @@ func (p PostgresContext) GetHeight() (int64, error) { } // DISCUSS: this might be retrieved from the block store - temporarily we will access it directly from the module -// following the pattern of the Consensus Module prior to pocket/issue-#315 +// +// following the pattern of the Consensus Module prior to pocket/issue-#315 +// // TODO(#284): Remove blockProtoBytes from the interface func (p *PostgresContext) SetProposalBlock(blockHash string, proposerAddr, quorumCert []byte, transactions [][]byte) error { p.blockHash = blockHash diff --git a/persistence/debug.go b/persistence/debug.go index 3adde38fc..90ade24ae 100644 --- a/persistence/debug.go +++ b/persistence/debug.go @@ -33,7 +33,7 @@ func (m *persistenceModule) HandleDebugMessage(debugMessage *messaging.DebugMess if err := m.clearAllState(debugMessage); err != nil { return err } - g := m.genesisState.(*types.PersistenceGenesisState) + g := m.genesisState m.populateGenesisState(g) // fatal if there's an error default: log.Printf("Debug message not handled by persistence module: %s \n", debugMessage.Message) diff --git a/persistence/fisherman.go b/persistence/fisherman.go index deb079c50..182b8fbaf 100644 --- a/persistence/fisherman.go +++ b/persistence/fisherman.go @@ -4,6 +4,7 @@ import ( "encoding/hex" "github.com/pokt-network/pocket/persistence/types" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/modules" ) @@ -25,8 +26,8 @@ func (p PostgresContext) GetFisherman(address []byte, height int64) (operator, p } func (p PostgresContext) InsertFisherman(address []byte, publicKey []byte, output []byte, _ bool, _ int32, serviceURL string, stakedTokens string, chains []string, pausedHeight int64, unstakingHeight int64) error { - return p.InsertActor(types.FishermanActor, &types.Actor{ - ActorType: types.ActorType_Fish, + return p.InsertActor(types.FishermanActor, &coreTypes.Actor{ + ActorType: coreTypes.ActorType_ACTOR_TYPE_FISH, Address: hex.EncodeToString(address), PublicKey: hex.EncodeToString(publicKey), Chains: chains, @@ -39,8 +40,8 @@ func (p PostgresContext) InsertFisherman(address []byte, publicKey []byte, outpu } func (p PostgresContext) UpdateFisherman(address []byte, serviceURL string, stakedAmount string, chains []string) error { - return p.UpdateActor(types.FishermanActor, &types.Actor{ - ActorType: types.ActorType_Fish, + return p.UpdateActor(types.FishermanActor, &coreTypes.Actor{ + ActorType: coreTypes.ActorType_ACTOR_TYPE_FISH, Address: hex.EncodeToString(address), StakedAmount: stakedAmount, GenericParam: serviceURL, diff --git a/persistence/genesis.go b/persistence/genesis.go index 25d7e5ea5..d6d7bdf4e 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -6,12 +6,13 @@ import ( "math/big" "github.com/pokt-network/pocket/persistence/types" + "github.com/pokt-network/pocket/runtime/genesis" "github.com/pokt-network/pocket/shared/converters" - "github.com/pokt-network/pocket/shared/modules" + coreTypes "github.com/pokt-network/pocket/shared/core/types" ) // CONSIDERATION: Should this return an error and let the caller decide if it should log a fatal error? -func (m *persistenceModule) populateGenesisState(state modules.PersistenceGenesisState) { +func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { log.Println("Populating genesis state...") // REFACTOR: This business logic should probably live in `types/genesis.go` @@ -34,7 +35,7 @@ func (m *persistenceModule) populateGenesisState(state modules.PersistenceGenesi log.Fatalf("an error occurred creating the rwContext for the genesis state: %s", err.Error()) } - for _, acc := range state.GetAccs() { + for _, acc := range state.GetAccounts() { addrBz, err := hex.DecodeString(acc.GetAddress()) if err != nil { log.Fatalf("an error occurred converting address to bytes %s", acc.GetAddress()) @@ -44,14 +45,14 @@ func (m *persistenceModule) populateGenesisState(state modules.PersistenceGenesi log.Fatalf("an error occurred inserting an acc in the genesis state: %s", err.Error()) } } - for _, pool := range state.GetAccPools() { + for _, pool := range state.GetPools() { poolNameBytes := []byte(pool.GetAddress()) err = rwContext.InsertPool(pool.GetAddress(), poolNameBytes, pool.GetAmount()) if err != nil { log.Fatalf("an error occurred inserting an pool in the genesis state: %s", err.Error()) } } - for _, act := range state.GetApps() { // TODO (Andrew) genericize the genesis population logic for actors #149 + for _, act := range state.GetApplications() { // TODO (Andrew) genericize the genesis population logic for actors #149 addrBz, err := hex.DecodeString(act.GetAddress()) if err != nil { log.Fatalf("an error occurred converting address to bytes %s", act.GetAddress()) @@ -68,11 +69,11 @@ func (m *persistenceModule) populateGenesisState(state modules.PersistenceGenesi if err != nil { log.Fatalf("an error occurred inserting an app in the genesis state: %s", err.Error()) } - if err = addValueToPool(types.PoolNames_AppStakePool.String(), act.GetStakedAmount()); err != nil { - log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", types.PoolNames_AppStakePool, err.Error()) + if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String(), act.GetStakedAmount()); err != nil { + log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL, err.Error()) } } - for _, act := range state.GetNodes() { + for _, act := range state.GetServiceNodes() { addrBz, err := hex.DecodeString(act.GetAddress()) if err != nil { log.Fatalf("an error occurred converting address to bytes %s", act.GetAddress()) @@ -89,11 +90,11 @@ func (m *persistenceModule) populateGenesisState(state modules.PersistenceGenesi if err != nil { log.Fatalf("an error occurred inserting a service node in the genesis state: %s", err.Error()) } - if err = addValueToPool(types.PoolNames_ServiceNodeStakePool.String(), act.GetStakedAmount()); err != nil { - log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", types.PoolNames_ServiceNodeStakePool.String(), err.Error()) + if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE_POOL.String(), act.GetStakedAmount()); err != nil { + log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE_POOL.String(), err.Error()) } } - for _, act := range state.GetFish() { + for _, act := range state.GetFishermen() { addrBz, err := hex.DecodeString(act.GetAddress()) if err != nil { log.Fatalf("an error occurred converting address to bytes %s", act.GetAddress()) @@ -110,11 +111,11 @@ func (m *persistenceModule) populateGenesisState(state modules.PersistenceGenesi if err != nil { log.Fatalf("an error occurred inserting a fisherman in the genesis state: %s", err.Error()) } - if err = addValueToPool(types.PoolNames_FishermanStakePool.String(), act.GetStakedAmount()); err != nil { - log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", types.PoolNames_FishermanStakePool.String(), err.Error()) + if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE_POOL.String(), act.GetStakedAmount()); err != nil { + log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE_POOL.String(), err.Error()) } } - for _, act := range state.GetVals() { + for _, act := range state.GetValidators() { addrBz, err := hex.DecodeString(act.GetAddress()) if err != nil { log.Fatalf("an error occurred converting address to bytes %s", act.GetAddress()) @@ -131,8 +132,8 @@ func (m *persistenceModule) populateGenesisState(state modules.PersistenceGenesi if err != nil { log.Fatalf("an error occurred inserting a validator in the genesis state: %s", err.Error()) } - if err = addValueToPool(types.PoolNames_ValidatorStakePool.String(), act.GetStakedAmount()); err != nil { - log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", types.PoolNames_ValidatorStakePool.String(), err.Error()) + if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL.String(), act.GetStakedAmount()); err != nil { + log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL.String(), err.Error()) } } // TODO(team): use params from genesis file - not the hardcoded @@ -161,9 +162,10 @@ func (m *persistenceModule) populateGenesisState(state modules.PersistenceGenesi } // TODO (#399): All of the functions below following a structure similar to `GetAll` -// can easily be refactored and condensed into a single function using a generic type or a common -// interface. -func (p PostgresContext) GetAllAccounts(height int64) (accs []modules.Account, err error) { +// +// can easily be refactored and condensed into a single function using a generic type or a common +// interface. +func (p PostgresContext) GetAllAccounts(height int64) (accs []*coreTypes.Account, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { return nil, err @@ -173,7 +175,7 @@ func (p PostgresContext) GetAllAccounts(height int64) (accs []modules.Account, e return nil, err } for rows.Next() { - acc := new(types.Account) + acc := new(coreTypes.Account) if err = rows.Scan(&acc.Address, &acc.Amount, &height); err != nil { return nil, err } @@ -187,7 +189,7 @@ func (p PostgresContext) GetAllAccounts(height int64) (accs []modules.Account, e } // CLEANUP: Consolidate with GetAllAccounts. -func (p PostgresContext) GetAllPools(height int64) (accs []modules.Account, err error) { +func (p PostgresContext) GetAllPools(height int64) (accs []*coreTypes.Account, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { return nil, err @@ -197,7 +199,7 @@ func (p PostgresContext) GetAllPools(height int64) (accs []modules.Account, err return nil, err } for rows.Next() { - pool := new(types.Account) + pool := new(coreTypes.Account) if err = rows.Scan(&pool.Address, &pool.Amount, &height); err != nil { return nil, err } diff --git a/persistence/gov.go b/persistence/gov.go index 83a5fbd27..2e595ac6d 100644 --- a/persistence/gov.go +++ b/persistence/gov.go @@ -7,6 +7,7 @@ import ( "strconv" "github.com/pokt-network/pocket/persistence/types" + "github.com/pokt-network/pocket/runtime/defaults" ) // TODO : Deprecate these two constants when we change the persistenceRWContext interface to pass the `paramName` @@ -31,7 +32,7 @@ func (p PostgresContext) InitParams() error { if err != nil { return err } - _, err = tx.Exec(ctx, types.InsertParams(types.DefaultParams(), p.Height)) + _, err = tx.Exec(ctx, types.InsertParams(defaults.DefaultParams(), p.Height)) return err } diff --git a/persistence/module.go b/persistence/module.go index 0942bcf69..22babcbd9 100644 --- a/persistence/module.go +++ b/persistence/module.go @@ -8,8 +8,8 @@ import ( "github.com/jackc/pgx/v4" "github.com/pokt-network/pocket/persistence/indexer" "github.com/pokt-network/pocket/persistence/kvstore" - "github.com/pokt-network/pocket/persistence/types" "github.com/pokt-network/pocket/runtime/configs" + "github.com/pokt-network/pocket/runtime/genesis" "github.com/pokt-network/pocket/shared/modules" ) @@ -17,8 +17,8 @@ var ( _ modules.PersistenceModule = &persistenceModule{} _ modules.PersistenceModule = &persistenceModule{} - _ modules.PersistenceRWContext = &PostgresContext{} - _ modules.PersistenceGenesisState = &types.PersistenceGenesisState{} + _ modules.PersistenceRWContext = &PostgresContext{} + // _ modules.PersistenceGenesisState = &types.PersistenceGenesisState{} ) // TODO: convert address and public key to string not bytes in all account and actor functions @@ -26,7 +26,7 @@ var ( type persistenceModule struct { bus modules.Bus config *configs.PersistenceConfig - genesisState modules.PersistenceGenesisState + genesisState *genesis.GenesisState blockStore kvstore.KVStore txIndexer indexer.TxIndexer @@ -48,9 +48,7 @@ func (*persistenceModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, var m *persistenceModule persistenceCfg := runtimeMgr.GetConfig().Persistence - genesis := runtimeMgr.GetGenesis() - - persistenceGenesis := genesis.GetPersistenceGenesisState() + genesisState := runtimeMgr.GetGenesis() conn, err := connectToDatabase(persistenceCfg.PostgresUrl, persistenceCfg.NodeSchema) if err != nil { @@ -80,7 +78,7 @@ func (*persistenceModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, m = &persistenceModule{ bus: nil, config: persistenceCfg, - genesisState: persistenceGenesis, + genesisState: genesisState, blockStore: blockStore, txIndexer: txIndexer, @@ -96,7 +94,7 @@ func (*persistenceModule) Create(runtimeMgr modules.RuntimeMgr) (modules.Module, if shouldHydrateGenesis, err := m.shouldHydrateGenesisDb(); err != nil { return nil, err } else if shouldHydrateGenesis { - m.populateGenesisState(persistenceGenesis) // fatal if there's an error + m.populateGenesisState(genesisState) // fatal if there's an error } else { // This configurations will connect to the SQL database and key-value stores specified // in the configurations and connected to those. diff --git a/persistence/service_node.go b/persistence/service_node.go index e217db649..1e33a79d5 100644 --- a/persistence/service_node.go +++ b/persistence/service_node.go @@ -4,6 +4,7 @@ import ( "encoding/hex" "github.com/pokt-network/pocket/persistence/types" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/modules" ) @@ -25,8 +26,8 @@ func (p PostgresContext) GetServiceNode(address []byte, height int64) (operator, } func (p PostgresContext) InsertServiceNode(address []byte, publicKey []byte, output []byte, _ bool, _ int32, serviceURL string, stakedTokens string, chains []string, pausedHeight int64, unstakingHeight int64) error { - return p.InsertActor(types.ServiceNodeActor, &types.Actor{ - ActorType: types.ActorType_Node, + return p.InsertActor(types.ServiceNodeActor, &coreTypes.Actor{ + ActorType: coreTypes.ActorType_ACTOR_TYPE_NODE, Address: hex.EncodeToString(address), PublicKey: hex.EncodeToString(publicKey), StakedAmount: stakedTokens, @@ -39,8 +40,8 @@ func (p PostgresContext) InsertServiceNode(address []byte, publicKey []byte, out } func (p PostgresContext) UpdateServiceNode(address []byte, serviceURL string, stakedAmount string, chains []string) error { - return p.UpdateActor(types.ServiceNodeActor, &types.Actor{ - ActorType: types.ActorType_Node, + return p.UpdateActor(types.ServiceNodeActor, &coreTypes.Actor{ + ActorType: coreTypes.ActorType_ACTOR_TYPE_NODE, Address: hex.EncodeToString(address), StakedAmount: stakedAmount, GenericParam: serviceURL, diff --git a/persistence/shared_sql.go b/persistence/shared_sql.go index 49c54770b..173e79b9c 100644 --- a/persistence/shared_sql.go +++ b/persistence/shared_sql.go @@ -7,6 +7,7 @@ import ( "github.com/jackc/pgx/v4" "github.com/pokt-network/pocket/persistence/types" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/modules" ) @@ -44,7 +45,7 @@ func (p *PostgresContext) GetExists(actorSchema types.ProtocolActorSchema, addre return } -func (p *PostgresContext) GetActorsUpdated(actorSchema types.ProtocolActorSchema, height int64) (actors []*types.Actor, err error) { +func (p *PostgresContext) GetActorsUpdated(actorSchema types.ProtocolActorSchema, height int64) (actors []*coreTypes.Actor, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { return @@ -70,7 +71,7 @@ func (p *PostgresContext) GetActorsUpdated(actorSchema types.ProtocolActorSchema } rows.Close() - actors = make([]*types.Actor, len(addrs)) + actors = make([]*coreTypes.Actor, len(addrs)) for i, addr := range addrs { actor, err := p.getActor(actorSchema, addr, height) if err != nil { @@ -82,7 +83,7 @@ func (p *PostgresContext) GetActorsUpdated(actorSchema types.ProtocolActorSchema return } -func (p *PostgresContext) getActor(actorSchema types.ProtocolActorSchema, address []byte, height int64) (actor *types.Actor, err error) { +func (p *PostgresContext) getActor(actorSchema types.ProtocolActorSchema, address []byte, height int64) (actor *coreTypes.Actor, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { return @@ -95,8 +96,8 @@ func (p *PostgresContext) getActor(actorSchema types.ProtocolActorSchema, addres return p.getChainsForActor(ctx, tx, actorSchema, actor, height) } -func (p *PostgresContext) getActorFromRow(row pgx.Row) (actor *types.Actor, height int64, err error) { - actor = new(types.Actor) +func (p *PostgresContext) getActorFromRow(row pgx.Row) (actor *coreTypes.Actor, height int64, err error) { + actor = new(coreTypes.Actor) err = row.Scan( &actor.Address, &actor.PublicKey, @@ -113,9 +114,9 @@ func (p *PostgresContext) getChainsForActor( ctx context.Context, tx pgx.Tx, actorSchema types.ProtocolActorSchema, - actor *types.Actor, + actor *coreTypes.Actor, height int64, -) (a *types.Actor, err error) { +) (a *coreTypes.Actor, err error) { if actorSchema.GetChainsTableName() == "" { return actor, nil } @@ -141,7 +142,7 @@ func (p *PostgresContext) getChainsForActor( return actor, nil } -func (p *PostgresContext) InsertActor(actorSchema types.ProtocolActorSchema, actor *types.Actor) error { +func (p *PostgresContext) InsertActor(actorSchema types.ProtocolActorSchema, actor *coreTypes.Actor) error { ctx, tx, err := p.getCtxAndTx() if err != nil { return err @@ -159,7 +160,7 @@ func (p *PostgresContext) InsertActor(actorSchema types.ProtocolActorSchema, act return err } -func (p *PostgresContext) UpdateActor(actorSchema types.ProtocolActorSchema, actor *types.Actor) error { +func (p *PostgresContext) UpdateActor(actorSchema types.ProtocolActorSchema, actor *coreTypes.Actor) error { ctx, tx, err := p.getCtxAndTx() if err != nil { return err diff --git a/persistence/state.go b/persistence/state.go index f2cc65417..b41f266a4 100644 --- a/persistence/state.go +++ b/persistence/state.go @@ -10,6 +10,7 @@ import ( "github.com/celestiaorg/smt" "github.com/pokt-network/pocket/persistence/kvstore" "github.com/pokt-network/pocket/persistence/types" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" "google.golang.org/protobuf/proto" ) @@ -70,25 +71,25 @@ var merkleTreeToString = map[merkleTree]string{ flagsMerkleTree: "flags", } -var actorTypeToMerkleTreeName = map[types.ActorType]merkleTree{ - types.ActorType_App: appMerkleTree, - types.ActorType_Val: valMerkleTree, - types.ActorType_Fish: fishMerkleTree, - types.ActorType_Node: serviceNodeMerkleTree, +var actorTypeToMerkleTreeName = map[coreTypes.ActorType]merkleTree{ + coreTypes.ActorType_ACTOR_TYPE_APP: appMerkleTree, + coreTypes.ActorType_ACTOR_TYPE_VAL: valMerkleTree, + coreTypes.ActorType_ACTOR_TYPE_FISH: fishMerkleTree, + coreTypes.ActorType_ACTOR_TYPE_NODE: serviceNodeMerkleTree, } -var actorTypeToSchemaName = map[types.ActorType]types.ProtocolActorSchema{ - types.ActorType_App: types.ApplicationActor, - types.ActorType_Val: types.ValidatorActor, - types.ActorType_Fish: types.FishermanActor, - types.ActorType_Node: types.ServiceNodeActor, +var actorTypeToSchemaName = map[coreTypes.ActorType]types.ProtocolActorSchema{ + coreTypes.ActorType_ACTOR_TYPE_APP: types.ApplicationActor, + coreTypes.ActorType_ACTOR_TYPE_VAL: types.ValidatorActor, + coreTypes.ActorType_ACTOR_TYPE_FISH: types.FishermanActor, + coreTypes.ActorType_ACTOR_TYPE_NODE: types.ServiceNodeActor, } -var merkleTreeToActorTypeName = map[merkleTree]types.ActorType{ - appMerkleTree: types.ActorType_App, - valMerkleTree: types.ActorType_Val, - fishMerkleTree: types.ActorType_Fish, - serviceNodeMerkleTree: types.ActorType_Node, +var merkleTreeToActorTypeName = map[merkleTree]coreTypes.ActorType{ + appMerkleTree: coreTypes.ActorType_ACTOR_TYPE_APP, + valMerkleTree: coreTypes.ActorType_ACTOR_TYPE_VAL, + fishMerkleTree: coreTypes.ActorType_ACTOR_TYPE_FISH, + serviceNodeMerkleTree: coreTypes.ActorType_ACTOR_TYPE_NODE, } func newStateTrees(treesStoreDir string) (*stateTrees, error) { @@ -225,7 +226,7 @@ func (p PostgresContext) getTxsHash() (txs []byte, err error) { // Actor Tree Helpers -func (p *PostgresContext) updateActorsTree(actorType types.ActorType) error { +func (p *PostgresContext) updateActorsTree(actorType coreTypes.ActorType) error { actors, err := p.getActorsUpdatedAtHeight(actorType, p.Height) if err != nil { return err @@ -254,7 +255,7 @@ func (p *PostgresContext) updateActorsTree(actorType types.ActorType) error { return nil } -func (p *PostgresContext) getActorsUpdatedAtHeight(actorType types.ActorType, height int64) (actors []*types.Actor, err error) { +func (p *PostgresContext) getActorsUpdatedAtHeight(actorType coreTypes.ActorType, height int64) (actors []*coreTypes.Actor, err error) { actorSchema, ok := actorTypeToSchemaName[actorType] if !ok { return nil, fmt.Errorf("no schema found for actor type: %s", actorType) @@ -265,9 +266,9 @@ func (p *PostgresContext) getActorsUpdatedAtHeight(actorType types.ActorType, he return nil, err } - actors = make([]*types.Actor, len(schemaActors)) + actors = make([]*coreTypes.Actor, len(schemaActors)) for i, schemaActor := range schemaActors { - actor := &types.Actor{ + actor := &coreTypes.Actor{ ActorType: actorType, Address: schemaActor.Address, PublicKey: schemaActor.PublicKey, diff --git a/persistence/test/account_test.go b/persistence/test/account_test.go index fd679c1ab..cec2bf962 100644 --- a/persistence/test/account_test.go +++ b/persistence/test/account_test.go @@ -8,11 +8,9 @@ import ( "math/rand" "testing" - "github.com/pokt-network/pocket/persistence/types" - "github.com/pokt-network/pocket/shared/converters" - "github.com/pokt-network/pocket/shared/modules" - "github.com/pokt-network/pocket/persistence" + "github.com/pokt-network/pocket/shared/converters" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" "github.com/stretchr/testify/require" ) @@ -342,7 +340,7 @@ func TestSubPoolAmount(t *testing.T) { func TestGetAllAccounts(t *testing.T) { db := NewTestPostgresContext(t, 0) - updateAccount := func(db *persistence.PostgresContext, acc modules.Account) error { + updateAccount := func(db *persistence.PostgresContext, acc *coreTypes.Account) error { if addr, err := hex.DecodeString(acc.GetAddress()); err == nil { return nil } else { @@ -356,7 +354,7 @@ func TestGetAllAccounts(t *testing.T) { func TestGetAllPools(t *testing.T) { db := NewTestPostgresContext(t, 0) - updatePool := func(db *persistence.PostgresContext, pool modules.Account) error { + updatePool := func(db *persistence.PostgresContext, pool *coreTypes.Account) error { return db.AddPoolAmount(pool.GetAddress(), "10") } @@ -413,7 +411,7 @@ func TestPoolsUpdatedAtHeight(t *testing.T) { // --- Helpers --- -func createAndInsertNewAccount(db *persistence.PostgresContext) (modules.Account, error) { +func createAndInsertNewAccount(db *persistence.PostgresContext) (*coreTypes.Account, error) { account := newTestAccount(nil) addr, err := hex.DecodeString(account.Address) if err != nil { @@ -422,7 +420,7 @@ func createAndInsertNewAccount(db *persistence.PostgresContext) (modules.Account return &account, db.SetAccountAmount(addr, DefaultAccountAmount) } -func createAndInsertNewPool(db *persistence.PostgresContext) (modules.Account, error) { +func createAndInsertNewPool(db *persistence.PostgresContext) (*coreTypes.Account, error) { pool := newTestPool(nil) return &pool, db.SetPoolAmount(pool.Address, DefaultAccountAmount) } @@ -430,23 +428,23 @@ func createAndInsertNewPool(db *persistence.PostgresContext) (modules.Account, e // TODO(olshansky): consolidate newTestAccount and newTestPool into one function // Note to the reader: lack of consistency between []byte and string in addresses will be consolidated. -func newTestAccount(t *testing.T) types.Account { +func newTestAccount(t *testing.T) coreTypes.Account { addr, err := crypto.GenerateAddress() if t != nil { require.NoError(t, err) } - return types.Account{ + return coreTypes.Account{ Address: hex.EncodeToString(addr), Amount: DefaultAccountAmount, } } -func newTestPool(t *testing.T) types.Account { +func newTestPool(t *testing.T) coreTypes.Account { addr, err := crypto.GenerateAddress() if t != nil { require.NoError(t, err) } - return types.Account{ + return coreTypes.Account{ Address: hex.EncodeToString(addr), Amount: DefaultAccountAmount, } diff --git a/persistence/test/application_test.go b/persistence/test/application_test.go index 87357a91d..5fd14bbb1 100644 --- a/persistence/test/application_test.go +++ b/persistence/test/application_test.go @@ -5,9 +5,9 @@ import ( "log" "testing" - "github.com/pokt-network/pocket/persistence/types" - "github.com/pokt-network/pocket/persistence" + "github.com/pokt-network/pocket/persistence/types" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" "github.com/stretchr/testify/require" ) @@ -20,7 +20,7 @@ func FuzzApplication(f *testing.F) { } func TestGetApplicationsUpdatedAtHeight(t *testing.T) { - getApplicationsUpdatedFunc := func(db *persistence.PostgresContext, height int64) ([]*types.Actor, error) { + getApplicationsUpdatedFunc := func(db *persistence.PostgresContext, height int64) ([]*coreTypes.Actor, error) { return db.GetActorsUpdated(types.ApplicationActor, height) } getAllActorsUpdatedAtHeightTest(t, createAndInsertDefaultTestApp, getApplicationsUpdatedFunc, 1) @@ -207,7 +207,7 @@ func TestGetAppOutputAddress(t *testing.T) { require.Equal(t, hex.EncodeToString(output), app.Output, "unexpected output address") } -func newTestApp() (*types.Actor, error) { +func newTestApp() (*coreTypes.Actor, error) { operatorKey, err := crypto.GeneratePublicKey() if err != nil { return nil, err @@ -218,7 +218,7 @@ func newTestApp() (*types.Actor, error) { return nil, err } - return &types.Actor{ + return &coreTypes.Actor{ Address: hex.EncodeToString(operatorKey.Address()), PublicKey: hex.EncodeToString(operatorKey.Bytes()), Chains: DefaultChains, @@ -253,7 +253,7 @@ func TestGetSetStakeAmount(t *testing.T) { require.Equal(t, newStakeAmount, stakeAmountAfter, "unexpected status") } -func createAndInsertDefaultTestApp(db *persistence.PostgresContext) (*types.Actor, error) { +func createAndInsertDefaultTestApp(db *persistence.PostgresContext) (*coreTypes.Actor, error) { app, err := newTestApp() if err != nil { return nil, err @@ -285,13 +285,13 @@ func createAndInsertDefaultTestApp(db *persistence.PostgresContext) (*types.Acto DefaultUnstakingHeight) } -func getTestApp(db *persistence.PostgresContext, address []byte) (*types.Actor, error) { +func getTestApp(db *persistence.PostgresContext, address []byte) (*coreTypes.Actor, error) { operator, publicKey, stakedTokens, maxRelays, outputAddress, pauseHeight, unstakingHeight, chains, err := db.GetApp(address, db.Height) if err != nil { return nil, err } - return &types.Actor{ + return &coreTypes.Actor{ Address: operator, PublicKey: publicKey, Chains: chains, diff --git a/persistence/test/fisherman_test.go b/persistence/test/fisherman_test.go index a22f7f9fe..e38c7ef9e 100644 --- a/persistence/test/fisherman_test.go +++ b/persistence/test/fisherman_test.go @@ -8,6 +8,7 @@ import ( "github.com/pokt-network/pocket/persistence/types" "github.com/pokt-network/pocket/persistence" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" "github.com/stretchr/testify/require" ) @@ -27,7 +28,7 @@ func TestGetSetFishermanStakeAmount(t *testing.T) { } func TestGetFishermanUpdatedAtHeight(t *testing.T) { - getFishermanUpdatedFunc := func(db *persistence.PostgresContext, height int64) ([]*types.Actor, error) { + getFishermanUpdatedFunc := func(db *persistence.PostgresContext, height int64) ([]*coreTypes.Actor, error) { return db.GetActorsUpdated(types.FishermanActor, height) } getAllActorsUpdatedAtHeightTest(t, createAndInsertDefaultTestFisherman, getFishermanUpdatedFunc, 1) @@ -219,7 +220,7 @@ func TestGetFishermanOutputAddress(t *testing.T) { require.Equal(t, hex.EncodeToString(output), fisherman.Output, "unexpected output address") } -func newTestFisherman() (*types.Actor, error) { +func newTestFisherman() (*coreTypes.Actor, error) { operatorKey, err := crypto.GeneratePublicKey() if err != nil { return nil, err @@ -230,7 +231,7 @@ func newTestFisherman() (*types.Actor, error) { return nil, err } - return &types.Actor{ + return &coreTypes.Actor{ Address: hex.EncodeToString(operatorKey.Address()), PublicKey: hex.EncodeToString(operatorKey.Bytes()), Chains: DefaultChains, @@ -242,7 +243,7 @@ func newTestFisherman() (*types.Actor, error) { }, nil } -func createAndInsertDefaultTestFisherman(db *persistence.PostgresContext) (*types.Actor, error) { +func createAndInsertDefaultTestFisherman(db *persistence.PostgresContext) (*coreTypes.Actor, error) { fisherman, err := newTestFisherman() if err != nil { return nil, err @@ -272,7 +273,7 @@ func createAndInsertDefaultTestFisherman(db *persistence.PostgresContext) (*type DefaultUnstakingHeight) } -func getTestFisherman(db *persistence.PostgresContext, address []byte) (*types.Actor, error) { +func getTestFisherman(db *persistence.PostgresContext, address []byte) (*coreTypes.Actor, error) { operator, publicKey, stakedTokens, serviceURL, outputAddress, pauseHeight, unstakingHeight, chains, err := db.GetFisherman(address, db.Height) if err != nil { return nil, err @@ -293,7 +294,7 @@ func getTestFisherman(db *persistence.PostgresContext, address []byte) (*types.A return nil, err } - return &types.Actor{ + return &coreTypes.Actor{ Address: hex.EncodeToString(operatorAddr), PublicKey: hex.EncodeToString(operatorPubKey), Chains: chains, diff --git a/persistence/test/generic_test.go b/persistence/test/generic_test.go index cb4555f04..74097a6d1 100644 --- a/persistence/test/generic_test.go +++ b/persistence/test/generic_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/pokt-network/pocket/persistence/types" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/persistence" "github.com/stretchr/testify/require" @@ -16,8 +17,8 @@ import ( func getGenericActor[T any]( protocolActorSchema types.ProtocolActorSchema, getActor func(*persistence.PostgresContext, []byte) (T, error), -) func(*persistence.PostgresContext, string) (*types.Actor, error) { - return func(db *persistence.PostgresContext, address string) (*types.Actor, error) { +) func(*persistence.PostgresContext, string) (*coreTypes.Actor, error) { + return func(db *persistence.PostgresContext, address string) (*coreTypes.Actor, error) { addr, err := hex.DecodeString(address) if err != nil { return nil, err @@ -31,8 +32,8 @@ func getGenericActor[T any]( } } -func newTestGenericActor[T any](protocolActorSchema types.ProtocolActorSchema, newActor func() (T, error)) func() (*types.Actor, error) { - return func() (*types.Actor, error) { +func newTestGenericActor[T any](protocolActorSchema types.ProtocolActorSchema, newActor func() (T, error)) func() (*coreTypes.Actor, error) { + return func() (*coreTypes.Actor, error) { actor, err := newActor() if err != nil { return nil, err @@ -203,13 +204,13 @@ func getAllActorsUpdatedAtHeightTest[T any]( require.Equal(t, 1, len(accs)) } -func getActorValues(_ types.ProtocolActorSchema, actorValue reflect.Value) *types.Actor { +func getActorValues(_ types.ProtocolActorSchema, actorValue reflect.Value) *coreTypes.Actor { chains := make([]string, 0) if actorValue.FieldByName("Chains").Kind() != 0 { chains = actorValue.FieldByName("Chains").Interface().([]string) } - return &types.Actor{ + return &coreTypes.Actor{ Address: actorValue.FieldByName("Address").String(), PublicKey: actorValue.FieldByName("PublicKey").String(), StakedAmount: actorValue.FieldByName("StakedAmount").String(), diff --git a/persistence/test/service_node_test.go b/persistence/test/service_node_test.go index 4e3f7e28b..9a0aa0015 100644 --- a/persistence/test/service_node_test.go +++ b/persistence/test/service_node_test.go @@ -8,6 +8,7 @@ import ( "github.com/pokt-network/pocket/persistence/types" "github.com/pokt-network/pocket/persistence" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" "github.com/stretchr/testify/require" ) @@ -25,7 +26,7 @@ func TestGetSetServiceNodeStakeAmount(t *testing.T) { } func TestGetServiceNodeUpdatedAtHeight(t *testing.T) { - getServiceNodeUpdatedFunc := func(db *persistence.PostgresContext, height int64) ([]*types.Actor, error) { + getServiceNodeUpdatedFunc := func(db *persistence.PostgresContext, height int64) ([]*coreTypes.Actor, error) { return db.GetActorsUpdated(types.ServiceNodeActor, height) } getAllActorsUpdatedAtHeightTest(t, createAndInsertDefaultTestServiceNode, getServiceNodeUpdatedFunc, 1) @@ -219,7 +220,7 @@ func TestGetServiceNodeOutputAddress(t *testing.T) { require.Equal(t, hex.EncodeToString(output), serviceNode.Output, "unexpected output address") } -func newTestServiceNode() (*types.Actor, error) { +func newTestServiceNode() (*coreTypes.Actor, error) { operatorKey, err := crypto.GeneratePublicKey() if err != nil { return nil, err @@ -230,7 +231,7 @@ func newTestServiceNode() (*types.Actor, error) { return nil, err } - return &types.Actor{ + return &coreTypes.Actor{ Address: hex.EncodeToString(operatorKey.Address()), PublicKey: hex.EncodeToString(operatorKey.Bytes()), Chains: DefaultChains, @@ -242,7 +243,7 @@ func newTestServiceNode() (*types.Actor, error) { }, nil } -func createAndInsertDefaultTestServiceNode(db *persistence.PostgresContext) (*types.Actor, error) { +func createAndInsertDefaultTestServiceNode(db *persistence.PostgresContext) (*coreTypes.Actor, error) { serviceNode, err := newTestServiceNode() if err != nil { return nil, err @@ -272,7 +273,7 @@ func createAndInsertDefaultTestServiceNode(db *persistence.PostgresContext) (*ty DefaultUnstakingHeight) } -func getTestServiceNode(db *persistence.PostgresContext, address []byte) (*types.Actor, error) { +func getTestServiceNode(db *persistence.PostgresContext, address []byte) (*coreTypes.Actor, error) { operator, publicKey, stakedTokens, serviceURL, outputAddress, pauseHeight, unstakingHeight, chains, err := db.GetServiceNode(address, db.Height) if err != nil { return nil, err @@ -293,7 +294,7 @@ func getTestServiceNode(db *persistence.PostgresContext, address []byte) (*types return nil, err } - return &types.Actor{ + return &coreTypes.Actor{ Address: hex.EncodeToString(operatorAddr), PublicKey: hex.EncodeToString(operatorPubKey), Chains: chains, diff --git a/persistence/test/setup_test.go b/persistence/test/setup_test.go index 196c82131..acb62a9b6 100644 --- a/persistence/test/setup_test.go +++ b/persistence/test/setup_test.go @@ -18,6 +18,7 @@ import ( "github.com/pokt-network/pocket/runtime/test_artifacts" "github.com/pokt-network/pocket/runtime/test_artifacts/keygenerator" "github.com/pokt-network/pocket/shared/converters" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/messaging" "github.com/pokt-network/pocket/shared/modules" "github.com/stretchr/testify/require" @@ -108,8 +109,8 @@ func newTestPersistenceModule(databaseUrl string) modules.PersistenceModule { // IMPROVE(team): Extend this to more complex and variable test cases challenging & randomizing the state of persistence. func fuzzSingleProtocolActor( f *testing.F, - newTestActor func() (*types.Actor, error), - getTestActor func(db *persistence.PostgresContext, address string) (*types.Actor, error), + newTestActor func() (*coreTypes.Actor, error), + getTestActor func(db *persistence.PostgresContext, address string) (*coreTypes.Actor, error), protocolActorSchema types.ProtocolActorSchema, ) { // Clear the genesis state. @@ -177,7 +178,7 @@ func fuzzSingleProtocolActor( } } } - updatedActor := &types.Actor{ + updatedActor := &coreTypes.Actor{ Address: originalActor.Address, PublicKey: originalActor.PublicKey, StakedAmount: newStakedTokens, diff --git a/persistence/test/state_test.go b/persistence/test/state_test.go index f344f46ae..67659d199 100644 --- a/persistence/test/state_test.go +++ b/persistence/test/state_test.go @@ -48,9 +48,9 @@ func TestStateHash_DeterministicStateWhenUpdatingAppStake(t *testing.T) { // that the business logic doesn't change and that they remain deterministic. Anytime the business // logic changes, these hashes will need to be updated based on the test output. encodedAppHash := []string{ - "b076081d48f6652d2302c974f20e5371b4728c7950735f6617aac7b6be62f581", - "171af2b820d2a65861c4e63f0cdd9c8bdde4798e6ace28c47d0e83467848ab02", - "b168dff3a83215f12093e548aa22cdf907fbfdb1e12d217ffbb4a07beca065f1", + "825e094e7a6b66216178b0c43beba70b37d0bf1737d1ea5f2ace8e9cd84c01e7", + "07d469ae3491c9b7afd8c93aca2665253e11dc88a5f65c5a5131232888b57fbd", + "373b31c8f7e92dc5721d9572341a94d334339fa9c3f16134ae5d646131d490d7", } stakeAmount := initialStakeAmount diff --git a/persistence/test/validator_test.go b/persistence/test/validator_test.go index 86ce0db18..ca8096903 100644 --- a/persistence/test/validator_test.go +++ b/persistence/test/validator_test.go @@ -8,6 +8,7 @@ import ( "github.com/pokt-network/pocket/persistence/types" "github.com/pokt-network/pocket/persistence" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" "github.com/stretchr/testify/require" ) @@ -25,7 +26,7 @@ func TestGetSetValidatorStakeAmount(t *testing.T) { } func TestGetValidatorUpdatedAtHeight(t *testing.T) { - getValidatorsUpdatedFunc := func(db *persistence.PostgresContext, height int64) ([]*types.Actor, error) { + getValidatorsUpdatedFunc := func(db *persistence.PostgresContext, height int64) ([]*coreTypes.Actor, error) { return db.GetActorsUpdated(types.ValidatorActor, height) } getAllActorsUpdatedAtHeightTest(t, createAndInsertDefaultTestValidator, getValidatorsUpdatedFunc, 5) @@ -217,7 +218,7 @@ func TestGetValidatorOutputAddress(t *testing.T) { require.Equal(t, hex.EncodeToString(output), validator.Output, "unexpected output address") } -func newTestValidator() (*types.Actor, error) { +func newTestValidator() (*coreTypes.Actor, error) { operatorKey, err := crypto.GeneratePublicKey() if err != nil { return nil, err @@ -228,7 +229,7 @@ func newTestValidator() (*types.Actor, error) { return nil, err } - return &types.Actor{ + return &coreTypes.Actor{ Address: hex.EncodeToString(operatorKey.Address()), PublicKey: hex.EncodeToString(operatorKey.Bytes()), GenericParam: DefaultServiceUrl, @@ -239,7 +240,7 @@ func newTestValidator() (*types.Actor, error) { }, nil } -func createAndInsertDefaultTestValidator(db *persistence.PostgresContext) (*types.Actor, error) { +func createAndInsertDefaultTestValidator(db *persistence.PostgresContext) (*coreTypes.Actor, error) { validator, err := newTestValidator() if err != nil { return nil, err @@ -268,7 +269,7 @@ func createAndInsertDefaultTestValidator(db *persistence.PostgresContext) (*type DefaultUnstakingHeight) } -func getTestValidator(db *persistence.PostgresContext, address []byte) (*types.Actor, error) { +func getTestValidator(db *persistence.PostgresContext, address []byte) (*coreTypes.Actor, error) { operator, publicKey, stakedTokens, serviceURL, outputAddress, pauseHeight, unstakingHeight, err := db.GetValidator(address, db.Height) if err != nil { return nil, err @@ -289,7 +290,7 @@ func getTestValidator(db *persistence.PostgresContext, address []byte) (*types.A return nil, err } - return &types.Actor{ + return &coreTypes.Actor{ Address: hex.EncodeToString(operatorAddr), PublicKey: hex.EncodeToString(operatorPubKey), GenericParam: serviceURL, diff --git a/persistence/types/base_actor.go b/persistence/types/base_actor.go index a21f65e62..bb4c40098 100644 --- a/persistence/types/base_actor.go +++ b/persistence/types/base_actor.go @@ -1,7 +1,9 @@ package types // REFACTOR: Move schema related functions to a separate sub-package -import "github.com/pokt-network/pocket/shared/modules" +import ( + coreTypes "github.com/pokt-network/pocket/shared/core/types" +) var _ ProtocolActorSchema = &BaseProtocolActorSchema{} @@ -83,7 +85,7 @@ func (actor *BaseProtocolActorSchema) GetChainsQuery(address string, height int6 } func (actor *BaseProtocolActorSchema) InsertQuery(address, publicKey, stakedTokens, generic, outputAddress string, pausedHeight, unstakingHeight int64, chains []string, height int64) string { - return Insert(&Actor{ + return Insert(&coreTypes.Actor{ Address: address, PublicKey: publicKey, StakedAmount: stakedTokens, @@ -129,12 +131,3 @@ func (actor *BaseProtocolActorSchema) ClearAllQuery() string { func (actor *BaseProtocolActorSchema) ClearAllChainsQuery() string { return ClearAll(actor.chainsTableName) } - -var _ modules.Actor = &Actor{} - -func (x *Actor) GetActorTyp() modules.ActorType { - if x != nil { - return x.GetActorType() - } - return ActorType_Undefined -} diff --git a/persistence/types/gov.go b/persistence/types/gov.go index dbfdd9d1b..c391e3289 100644 --- a/persistence/types/gov.go +++ b/persistence/types/gov.go @@ -7,7 +7,7 @@ import ( "reflect" "strings" - "github.com/pokt-network/pocket/shared/modules" + "github.com/pokt-network/pocket/runtime/genesis" ) // init initializes a map that contains the metadata extracted from `gov.proto`. @@ -60,7 +60,7 @@ var ( // InsertParams generates the SQL INSERT statement given a *genesis.Params // It leverages metadata in the form of struct tags (see `parseGovProto` for more information). // WARNING: reflections in prod -func InsertParams(params modules.Params, height int64) string { +func InsertParams(params *genesis.Params, height int64) string { val := reflect.ValueOf(params) var sb strings.Builder @@ -172,7 +172,7 @@ type govParamMetadata struct { // WARNING: reflections in prod func parseGovProto() (govParamMetadataMap map[string]govParamMetadata) { govParamMetadataMap = make(map[string]govParamMetadata) - fields := reflect.VisibleFields(reflect.TypeOf(Params{})) + fields := reflect.VisibleFields(reflect.TypeOf(genesis.Params{})) for _, field := range fields { if !field.IsExported() { continue @@ -187,7 +187,6 @@ func parseGovProto() (govParamMetadataMap map[string]govParamMetadata) { } govParamMetadataKeys = append(govParamMetadataKeys, protoName) } - return govParamMetadataMap } diff --git a/persistence/types/gov_test.go b/persistence/types/gov_test.go index b0222bb29..10ae74fe1 100644 --- a/persistence/types/gov_test.go +++ b/persistence/types/gov_test.go @@ -2,11 +2,14 @@ package types import ( "testing" + + "github.com/pokt-network/pocket/runtime/defaults" + "github.com/pokt-network/pocket/runtime/genesis" ) func TestInsertParams(t *testing.T) { type args struct { - params *Params + params *genesis.Params height int64 } tests := []struct { @@ -17,7 +20,7 @@ func TestInsertParams(t *testing.T) { { name: "should insert genesis.DefaultParams() as expected", args: args{ - params: DefaultParams(), + params: defaults.DefaultParams(), height: DefaultBigInt, }, want: "INSERT INTO params VALUES ('blocks_per_session', -1, 'BIGINT', 4)," + diff --git a/persistence/types/persistence_genesis.go b/persistence/types/persistence_genesis.go index 8437faf9b..bcfd349df 100644 --- a/persistence/types/persistence_genesis.go +++ b/persistence/types/persistence_genesis.go @@ -1,176 +1,176 @@ package types -import ( - "math/big" +// import ( +// "math/big" - "github.com/pokt-network/pocket/shared/converters" - "github.com/pokt-network/pocket/shared/crypto" - "github.com/pokt-network/pocket/shared/modules" -) +// "github.com/pokt-network/pocket/shared/converters" +// "github.com/pokt-network/pocket/shared/crypto" +// "github.com/pokt-network/pocket/shared/modules" +// ) -var _ modules.PersistenceGenesisState = &PersistenceGenesisState{} +// // var _ modules.PersistenceGenesisState = &PersistenceGenesisState{} -// TODO (Research) is there anyway to not have to name these protobuf files uniquely? -// not a fan of _config/genesis.go would rather just config/genesis.go +// // TODO (Research) is there anyway to not have to name these protobuf files uniquely? +// // not a fan of _config/genesis.go would rather just config/genesis.go -func (x *PersistenceGenesisState) GetAccs() []modules.Account { - return accToAccInterface(x.GetAccounts()) -} +// func (x *PersistenceGenesisState) GetAccs() []modules.Account { +// return accToAccInterface(x.GetAccounts()) +// } -func (x *PersistenceGenesisState) GetAccPools() []modules.Account { - return accToAccInterface(x.GetPools()) -} +// func (x *PersistenceGenesisState) GetAccPools() []modules.Account { +// return accToAccInterface(x.GetPools()) +// } -func (x *PersistenceGenesisState) GetApps() []modules.Actor { - return ActorsToActorsInterface(x.GetApplications()) -} +// func (x *PersistenceGenesisState) GetApps() []modules.Actor { +// return ActorsToActorsInterface(x.GetApplications()) +// } -func (x *PersistenceGenesisState) GetVals() []modules.Actor { - return ActorsToActorsInterface(x.GetValidators()) -} +// func (x *PersistenceGenesisState) GetVals() []modules.Actor { +// return ActorsToActorsInterface(x.GetValidators()) +// } -func (x *PersistenceGenesisState) GetFish() []modules.Actor { - return ActorsToActorsInterface(x.GetFishermen()) -} +// func (x *PersistenceGenesisState) GetFish() []modules.Actor { +// return ActorsToActorsInterface(x.GetFishermen()) +// } -func (x *PersistenceGenesisState) GetNodes() []modules.Actor { - return ActorsToActorsInterface(x.GetServiceNodes()) -} +// func (x *PersistenceGenesisState) GetNodes() []modules.Actor { +// return ActorsToActorsInterface(x.GetServiceNodes()) +// } -func (x *PersistenceGenesisState) GetParameters() modules.Params { - return x.GetParams() -} +// func (x *PersistenceGenesisState) GetParameters() modules.Params { +// return x.GetParams() +// } -// RESEARCH(olshansky): AFAIK this is the only way to convert slice of structs into interface - O(n) -// https://stackoverflow.com/questions/12753805/type-converting-slices-of-interfaces -func ActorsToActorsInterface(a []*Actor) (actorI []modules.Actor) { - for _, actor := range a { - actorI = append(actorI, actor) - } - return -} +// // RESEARCH(olshansky): AFAIK this is the only way to convert slice of structs into interface - O(n) +// // https://stackoverflow.com/questions/12753805/type-converting-slices-of-interfaces +// func ActorsToActorsInterface(a []*Actor) (actorI []modules.Actor) { +// for _, actor := range a { +// actorI = append(actorI, actor) +// } +// return +// } -func accToAccInterface(a []*Account) (accI []modules.Account) { - for _, acc := range a { - accI = append(accI, acc) - } - return -} +// func accToAccInterface(a []*Account) (accI []modules.Account) { +// for _, acc := range a { +// accI = append(accI, acc) +// } +// return +// } -var ( - DefaultParamsOwner, _ = crypto.NewPrivateKey("ff538589deb7f28bbce1ba68b37d2efc0eaa03204b36513cf88422a875559e38d6cbe0430ddd85a5e48e0c99ef3dea47bf0d1a83c6e6ad1640f72201dc8a0120") -) +// var ( +// DefaultParamsOwner, _ = crypto.NewPrivateKey("ff538589deb7f28bbce1ba68b37d2efc0eaa03204b36513cf88422a875559e38d6cbe0430ddd85a5e48e0c99ef3dea47bf0d1a83c6e6ad1640f72201dc8a0120") +// ) -func DefaultParams() *Params { // TODO this is just a test / demo artifact and should be deprecated by genesis file - return &Params{ - BlocksPerSession: 4, - AppMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - AppMaxChains: 15, - AppBaselineStakeRate: 100, - AppStakingAdjustment: 0, - AppUnstakingBlocks: 2016, - AppMinimumPauseBlocks: 4, - AppMaxPauseBlocks: 672, - ServiceNodeMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - ServiceNodeMaxChains: 15, - ServiceNodeUnstakingBlocks: 2016, - ServiceNodeMinimumPauseBlocks: 4, - ServiceNodeMaxPauseBlocks: 672, - ServiceNodesPerSession: 24, - FishermanMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - FishermanMaxChains: 15, - FishermanUnstakingBlocks: 2016, - FishermanMinimumPauseBlocks: 4, - FishermanMaxPauseBlocks: 672, - ValidatorMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - ValidatorUnstakingBlocks: 2016, - ValidatorMinimumPauseBlocks: 4, - ValidatorMaxPauseBlocks: 672, - ValidatorMaximumMissedBlocks: 5, - ValidatorMaxEvidenceAgeInBlocks: 8, - ProposerPercentageOfFees: 10, - MissedBlocksBurnPercentage: 1, - DoubleSignBurnPercentage: 5, - MessageDoubleSignFee: converters.BigIntToString(big.NewInt(10000)), - MessageSendFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageFishermanPauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageTestScoreFee: converters.BigIntToString(big.NewInt(10000)), - MessageProveTestScoreFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeAppFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageChangeParameterFee: converters.BigIntToString(big.NewInt(10000)), - AclOwner: DefaultParamsOwner.Address().String(), - BlocksPerSessionOwner: DefaultParamsOwner.Address().String(), - AppMinimumStakeOwner: DefaultParamsOwner.Address().String(), - AppMaxChainsOwner: DefaultParamsOwner.Address().String(), - AppBaselineStakeRateOwner: DefaultParamsOwner.Address().String(), - AppStakingAdjustmentOwner: DefaultParamsOwner.Address().String(), - AppUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), - AppMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), - AppMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), - ServiceNodeMinimumStakeOwner: DefaultParamsOwner.Address().String(), - ServiceNodeMaxChainsOwner: DefaultParamsOwner.Address().String(), - ServiceNodeUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), - ServiceNodeMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), - ServiceNodeMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), - ServiceNodesPerSessionOwner: DefaultParamsOwner.Address().String(), - FishermanMinimumStakeOwner: DefaultParamsOwner.Address().String(), - FishermanMaxChainsOwner: DefaultParamsOwner.Address().String(), - FishermanUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), - FishermanMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), - FishermanMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), - ValidatorMinimumStakeOwner: DefaultParamsOwner.Address().String(), - ValidatorUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), - ValidatorMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), - ValidatorMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), - ValidatorMaximumMissedBlocksOwner: DefaultParamsOwner.Address().String(), - ValidatorMaxEvidenceAgeInBlocksOwner: DefaultParamsOwner.Address().String(), - ProposerPercentageOfFeesOwner: DefaultParamsOwner.Address().String(), - MissedBlocksBurnPercentageOwner: DefaultParamsOwner.Address().String(), - DoubleSignBurnPercentageOwner: DefaultParamsOwner.Address().String(), - MessageDoubleSignFeeOwner: DefaultParamsOwner.Address().String(), - MessageSendFeeOwner: DefaultParamsOwner.Address().String(), - MessageStakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), - MessageEditStakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnstakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), - MessagePauseFishermanFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnpauseFishermanFeeOwner: DefaultParamsOwner.Address().String(), - MessageFishermanPauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessageTestScoreFeeOwner: DefaultParamsOwner.Address().String(), - MessageProveTestScoreFeeOwner: DefaultParamsOwner.Address().String(), - MessageStakeAppFeeOwner: DefaultParamsOwner.Address().String(), - MessageEditStakeAppFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnstakeAppFeeOwner: DefaultParamsOwner.Address().String(), - MessagePauseAppFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnpauseAppFeeOwner: DefaultParamsOwner.Address().String(), - MessageStakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), - MessageEditStakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnstakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), - MessagePauseValidatorFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnpauseValidatorFeeOwner: DefaultParamsOwner.Address().String(), - MessageStakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessageEditStakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnstakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessagePauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnpauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessageChangeParameterFeeOwner: DefaultParamsOwner.Address().String(), - } -} +// func DefaultParams() *Params { // TODO this is just a test / demo artifact and should be deprecated by genesis file +// return &Params{ +// BlocksPerSession: 4, +// AppMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), +// AppMaxChains: 15, +// AppBaselineStakeRate: 100, +// AppStakingAdjustment: 0, +// AppUnstakingBlocks: 2016, +// AppMinimumPauseBlocks: 4, +// AppMaxPauseBlocks: 672, +// ServiceNodeMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), +// ServiceNodeMaxChains: 15, +// ServiceNodeUnstakingBlocks: 2016, +// ServiceNodeMinimumPauseBlocks: 4, +// ServiceNodeMaxPauseBlocks: 672, +// ServiceNodesPerSession: 24, +// FishermanMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), +// FishermanMaxChains: 15, +// FishermanUnstakingBlocks: 2016, +// FishermanMinimumPauseBlocks: 4, +// FishermanMaxPauseBlocks: 672, +// ValidatorMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), +// ValidatorUnstakingBlocks: 2016, +// ValidatorMinimumPauseBlocks: 4, +// ValidatorMaxPauseBlocks: 672, +// ValidatorMaximumMissedBlocks: 5, +// ValidatorMaxEvidenceAgeInBlocks: 8, +// ProposerPercentageOfFees: 10, +// MissedBlocksBurnPercentage: 1, +// DoubleSignBurnPercentage: 5, +// MessageDoubleSignFee: converters.BigIntToString(big.NewInt(10000)), +// MessageSendFee: converters.BigIntToString(big.NewInt(10000)), +// MessageStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), +// MessageEditStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), +// MessageUnstakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), +// MessagePauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), +// MessageUnpauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), +// MessageFishermanPauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), +// MessageTestScoreFee: converters.BigIntToString(big.NewInt(10000)), +// MessageProveTestScoreFee: converters.BigIntToString(big.NewInt(10000)), +// MessageStakeAppFee: converters.BigIntToString(big.NewInt(10000)), +// MessageEditStakeAppFee: converters.BigIntToString(big.NewInt(10000)), +// MessageUnstakeAppFee: converters.BigIntToString(big.NewInt(10000)), +// MessagePauseAppFee: converters.BigIntToString(big.NewInt(10000)), +// MessageUnpauseAppFee: converters.BigIntToString(big.NewInt(10000)), +// MessageStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), +// MessageEditStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), +// MessageUnstakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), +// MessagePauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), +// MessageUnpauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), +// MessageStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), +// MessageEditStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), +// MessageUnstakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), +// MessagePauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), +// MessageUnpauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), +// MessageChangeParameterFee: converters.BigIntToString(big.NewInt(10000)), +// AclOwner: DefaultParamsOwner.Address().String(), +// BlocksPerSessionOwner: DefaultParamsOwner.Address().String(), +// AppMinimumStakeOwner: DefaultParamsOwner.Address().String(), +// AppMaxChainsOwner: DefaultParamsOwner.Address().String(), +// AppBaselineStakeRateOwner: DefaultParamsOwner.Address().String(), +// AppStakingAdjustmentOwner: DefaultParamsOwner.Address().String(), +// AppUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), +// AppMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), +// AppMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), +// ServiceNodeMinimumStakeOwner: DefaultParamsOwner.Address().String(), +// ServiceNodeMaxChainsOwner: DefaultParamsOwner.Address().String(), +// ServiceNodeUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), +// ServiceNodeMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), +// ServiceNodeMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), +// ServiceNodesPerSessionOwner: DefaultParamsOwner.Address().String(), +// FishermanMinimumStakeOwner: DefaultParamsOwner.Address().String(), +// FishermanMaxChainsOwner: DefaultParamsOwner.Address().String(), +// FishermanUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), +// FishermanMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), +// FishermanMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), +// ValidatorMinimumStakeOwner: DefaultParamsOwner.Address().String(), +// ValidatorUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), +// ValidatorMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), +// ValidatorMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), +// ValidatorMaximumMissedBlocksOwner: DefaultParamsOwner.Address().String(), +// ValidatorMaxEvidenceAgeInBlocksOwner: DefaultParamsOwner.Address().String(), +// ProposerPercentageOfFeesOwner: DefaultParamsOwner.Address().String(), +// MissedBlocksBurnPercentageOwner: DefaultParamsOwner.Address().String(), +// DoubleSignBurnPercentageOwner: DefaultParamsOwner.Address().String(), +// MessageDoubleSignFeeOwner: DefaultParamsOwner.Address().String(), +// MessageSendFeeOwner: DefaultParamsOwner.Address().String(), +// MessageStakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), +// MessageEditStakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), +// MessageUnstakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), +// MessagePauseFishermanFeeOwner: DefaultParamsOwner.Address().String(), +// MessageUnpauseFishermanFeeOwner: DefaultParamsOwner.Address().String(), +// MessageFishermanPauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), +// MessageTestScoreFeeOwner: DefaultParamsOwner.Address().String(), +// MessageProveTestScoreFeeOwner: DefaultParamsOwner.Address().String(), +// MessageStakeAppFeeOwner: DefaultParamsOwner.Address().String(), +// MessageEditStakeAppFeeOwner: DefaultParamsOwner.Address().String(), +// MessageUnstakeAppFeeOwner: DefaultParamsOwner.Address().String(), +// MessagePauseAppFeeOwner: DefaultParamsOwner.Address().String(), +// MessageUnpauseAppFeeOwner: DefaultParamsOwner.Address().String(), +// MessageStakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), +// MessageEditStakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), +// MessageUnstakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), +// MessagePauseValidatorFeeOwner: DefaultParamsOwner.Address().String(), +// MessageUnpauseValidatorFeeOwner: DefaultParamsOwner.Address().String(), +// MessageStakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), +// MessageEditStakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), +// MessageUnstakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), +// MessagePauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), +// MessageUnpauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), +// MessageChangeParameterFeeOwner: DefaultParamsOwner.Address().String(), +// } +// } diff --git a/persistence/types/shared_sql.go b/persistence/types/shared_sql.go index a0b04820a..de5681b8c 100644 --- a/persistence/types/shared_sql.go +++ b/persistence/types/shared_sql.go @@ -3,6 +3,8 @@ package types import ( "bytes" "fmt" + + coreTypes "github.com/pokt-network/pocket/shared/core/types" ) const ( @@ -98,10 +100,11 @@ func Exists(address string, height int64, tableName string) string { } // Explainer: -// (SELECT MAX(height), address FROM %s GROUP BY address) -> -// returns latest/max height for each address -// (height, address) IN (SELECT MAX(height), address FROM %s GROUP BY address) -> -// ensures the query is acting on max height for the addresses +// +// (SELECT MAX(height), address FROM %s GROUP BY address) -> +// returns latest/max height for each address +// (height, address) IN (SELECT MAX(height), address FROM %s GROUP BY address) -> +// ensures the query is acting on max height for the addresses func readyToUnstake(unstakingHeight int64, tableName string) string { return fmt.Sprintf(` SELECT address, staked_tokens, output_address @@ -111,7 +114,7 @@ func readyToUnstake(unstakingHeight int64, tableName string) string { } func Insert( - actor *Actor, + actor *coreTypes.Actor, actorSpecificParam, actorSpecificParamValue, constraintName, chainsConstraintName, tableName, chainsTableName string, diff --git a/persistence/types/validator.go b/persistence/types/validator.go index 1eaf287aa..cbbea273c 100644 --- a/persistence/types/validator.go +++ b/persistence/types/validator.go @@ -1,5 +1,7 @@ package types +import coreTypes "github.com/pokt-network/pocket/shared/core/types" + var _ ProtocolActorSchema = &ValidatorSchema{} const ( @@ -26,7 +28,7 @@ var ValidatorActor ProtocolActorSchema = &ValidatorSchema{ } func (actor *ValidatorSchema) InsertQuery(address, publicKey, stakedTokens, maxRelays, outputAddress string, pausedHeight, unstakingHeight int64, _ []string, height int64) string { - return Insert(&Actor{ + return Insert(&coreTypes.Actor{ Address: address, PublicKey: publicKey, StakedAmount: stakedTokens, diff --git a/persistence/validator.go b/persistence/validator.go index 3c1bff1c0..6b3258496 100644 --- a/persistence/validator.go +++ b/persistence/validator.go @@ -4,6 +4,7 @@ import ( "encoding/hex" "github.com/pokt-network/pocket/persistence/types" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/modules" ) @@ -24,8 +25,8 @@ func (p PostgresContext) GetValidator(address []byte, height int64) (operator, p } func (p PostgresContext) InsertValidator(address []byte, publicKey []byte, output []byte, _ bool, _ int32, serviceURL string, stakedTokens string, pausedHeight int64, unstakingHeight int64) error { - return p.InsertActor(types.ValidatorActor, &types.Actor{ - ActorType: types.ActorType_Val, + return p.InsertActor(types.ValidatorActor, &coreTypes.Actor{ + ActorType: coreTypes.ActorType_ACTOR_TYPE_VAL, Address: hex.EncodeToString(address), PublicKey: hex.EncodeToString(publicKey), StakedAmount: stakedTokens, @@ -37,8 +38,8 @@ func (p PostgresContext) InsertValidator(address []byte, publicKey []byte, outpu } func (p PostgresContext) UpdateValidator(address []byte, serviceURL string, stakedAmount string) error { - return p.UpdateActor(types.ValidatorActor, &types.Actor{ - ActorType: types.ActorType_Val, + return p.UpdateActor(types.ValidatorActor, &coreTypes.Actor{ + ActorType: coreTypes.ActorType_ACTOR_TYPE_VAL, Address: hex.EncodeToString(address), StakedAmount: stakedAmount, GenericParam: serviceURL, From 2248e7419da0cf8810c71dec215073a57653cd54 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:35:45 +0000 Subject: [PATCH 024/120] refactor(p2p): centralized genesis + core types --- p2p/addrbook_provider/persistence.go | 7 +++-- p2p/types/addr_book.go | 8 ++--- p2p/utils_test.go | 47 +++++++++++++--------------- 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/p2p/addrbook_provider/persistence.go b/p2p/addrbook_provider/persistence.go index 7eeb81e05..6e05784cf 100644 --- a/p2p/addrbook_provider/persistence.go +++ b/p2p/addrbook_provider/persistence.go @@ -7,6 +7,7 @@ import ( "github.com/pokt-network/pocket/p2p/transport" typesP2P "github.com/pokt-network/pocket/p2p/types" "github.com/pokt-network/pocket/runtime/configs" + coreTypes "github.com/pokt-network/pocket/shared/core/types" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" ) @@ -61,7 +62,7 @@ func (pabp *persistenceAddrBookProvider) GetStakedAddrBookAtHeight(height uint64 // TODO(#203): refactor `ValidatorMap` validatorMap := make(modules.ValidatorMap, len(stakedActors)) for _, v := range stakedActors { - validatorMap[v.GetAddress()] = v + validatorMap[v.GetAddress()] = *v } addrBook, err := pabp.ValidatorMapToAddrBook(validatorMap) if err != nil { @@ -72,7 +73,7 @@ func (pabp *persistenceAddrBookProvider) GetStakedAddrBookAtHeight(height uint64 // TODO(#270): These functions will turn into more of a "ActorToAddrBook" when we have a closer // integration with utility. -func (pabp *persistenceAddrBookProvider) ValidatorMapToAddrBook(validators map[string]modules.Actor) (typesP2P.AddrBook, error) { +func (pabp *persistenceAddrBookProvider) ValidatorMapToAddrBook(validators map[string]coreTypes.Actor) (typesP2P.AddrBook, error) { book := make(typesP2P.AddrBook, 0) for _, v := range validators { networkPeer, err := pabp.ValidatorToNetworkPeer(v) @@ -87,7 +88,7 @@ func (pabp *persistenceAddrBookProvider) ValidatorMapToAddrBook(validators map[s // TODO(#270): These functions will turn into more of a "ActorToAddrBook" when we have a closer // integration with utility. -func (pabp *persistenceAddrBookProvider) ValidatorToNetworkPeer(v modules.Actor) (*typesP2P.NetworkPeer, error) { +func (pabp *persistenceAddrBookProvider) ValidatorToNetworkPeer(v coreTypes.Actor) (*typesP2P.NetworkPeer, error) { conn, err := pabp.connFactory(pabp.p2pCfg, v.GetGenericParam()) // service url if err != nil { return nil, fmt.Errorf("error resolving addr: %v", err) diff --git a/p2p/types/addr_book.go b/p2p/types/addr_book.go index 2a13de64d..c602c1848 100644 --- a/p2p/types/addr_book.go +++ b/p2p/types/addr_book.go @@ -1,8 +1,8 @@ package types -//go:generate mockgen -source=$GOFILE -destination=./mocks/addrbook_provider_mock.go github.com/pokt-network/pocket/p2p/types AddrBookProvider +import coreTypes "github.com/pokt-network/pocket/shared/core/types" -import "github.com/pokt-network/pocket/shared/modules" +//go:generate mockgen -source=$GOFILE -destination=./mocks/addrbook_provider_mock.go github.com/pokt-network/pocket/p2p/types AddrBookProvider // AddrBook is a way of representing NetworkPeer sets type AddrBook []*NetworkPeer @@ -15,6 +15,6 @@ type AddrBookMap map[string]*NetworkPeer // AddrBookProvider is an interface that provides AddrBook accessors type AddrBookProvider interface { GetStakedAddrBookAtHeight(height uint64) (AddrBook, error) - ValidatorMapToAddrBook(validators map[string]modules.Actor) (AddrBook, error) - ValidatorToNetworkPeer(v modules.Actor) (*NetworkPeer, error) + ValidatorMapToAddrBook(validators map[string]coreTypes.Actor) (AddrBook, error) + ValidatorToNetworkPeer(v coreTypes.Actor) (*NetworkPeer, error) } diff --git a/p2p/utils_test.go b/p2p/utils_test.go index 0772cc7e1..2abd984a8 100644 --- a/p2p/utils_test.go +++ b/p2p/utils_test.go @@ -13,6 +13,8 @@ import ( typesP2P "github.com/pokt-network/pocket/p2p/types" mocksP2P "github.com/pokt-network/pocket/p2p/types/mocks" "github.com/pokt-network/pocket/runtime/configs" + "github.com/pokt-network/pocket/runtime/genesis" + coreTypes "github.com/pokt-network/pocket/shared/core/types" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" modulesMock "github.com/pokt-network/pocket/shared/modules/mocks" @@ -134,33 +136,26 @@ func createMockRuntimeMgrs(t *testing.T, numValidators int) []modules.RuntimeMgr } // createMockGenesisState configures and returns a mocked GenesisState -func createMockGenesisState(t *testing.T, valKeys []cryptoPocket.PrivateKey) modules.GenesisState { - ctrl := gomock.NewController(t) +func createMockGenesisState(t *testing.T, valKeys []cryptoPocket.PrivateKey) *genesis.GenesisState { + var genesisState = new(genesis.GenesisState) - validators := make([]modules.Actor, len(valKeys)) + validators := make([]*coreTypes.Actor, len(valKeys)) for i, valKey := range valKeys { addr := valKey.Address().String() - mockActor := modulesMock.NewMockActor(ctrl) - mockActor.EXPECT().GetAddress().Return(addr).AnyTimes() - mockActor.EXPECT().GetPublicKey().Return(valKey.PublicKey().String()).AnyTimes() - mockActor.EXPECT().GetGenericParam().Return(validatorId(i + 1)).AnyTimes() - mockActor.EXPECT().GetStakedAmount().Return("1000000000000000").AnyTimes() - mockActor.EXPECT().GetPausedHeight().Return(int64(0)).AnyTimes() - mockActor.EXPECT().GetUnstakingHeight().Return(int64(0)).AnyTimes() - mockActor.EXPECT().GetOutput().Return(addr).AnyTimes() + mockActor := &coreTypes.Actor{ + Address: addr, + PublicKey: valKey.PublicKey().String(), + GenericParam: validatorId(i + 1), + StakedAmount: "1000000000000000", + PausedHeight: int64(0), + UnstakingHeight: int64(0), + Output: addr, + } validators[i] = mockActor } + genesisState.Validators = validators - mockPersistenceGenesisState := modulesMock.NewMockPersistenceGenesisState(ctrl) - mockPersistenceGenesisState.EXPECT(). - GetVals(). - Return(validators).AnyTimes() - - mockGenesisState := modulesMock.NewMockGenesisState(ctrl) - mockGenesisState.EXPECT(). - GetPersistenceGenesisState(). - Return(mockPersistenceGenesisState).AnyTimes() - return mockGenesisState + return genesisState } // Bus Mock - needed to return the appropriate modules when accessed @@ -181,14 +176,14 @@ func prepareBusMock(t *testing.T, } // Consensus mock - only needed for validatorMap access -func prepareConsensusMock(t *testing.T, genesisState modules.GenesisState) *modulesMock.MockConsensusModule { +func prepareConsensusMock(t *testing.T, genesisState *genesis.GenesisState) *modulesMock.MockConsensusModule { ctrl := gomock.NewController(t) consensusMock := modulesMock.NewMockConsensusModule(ctrl) - validators := genesisState.GetPersistenceGenesisState().GetVals() + validators := genesisState.GetValidators() m := make(modules.ValidatorMap, len(validators)) for _, v := range validators { - m[v.GetAddress()] = v + m[v.GetAddress()] = *v } consensusMock.EXPECT().ValidatorMap().Return(m).AnyTimes() @@ -198,13 +193,13 @@ func prepareConsensusMock(t *testing.T, genesisState modules.GenesisState) *modu } // Persistence mock - only needed for validatorMap access -func preparePersistenceMock(t *testing.T, genesisState modules.GenesisState) *modulesMock.MockPersistenceModule { +func preparePersistenceMock(t *testing.T, genesisState *genesis.GenesisState) *modulesMock.MockPersistenceModule { ctrl := gomock.NewController(t) persistenceMock := modulesMock.NewMockPersistenceModule(ctrl) readContextMock := modulesMock.NewMockPersistenceReadContext(ctrl) - readContextMock.EXPECT().GetAllStakedActors(gomock.Any()).Return(genesisState.GetPersistenceGenesisState().GetVals(), nil).AnyTimes() + readContextMock.EXPECT().GetAllStakedActors(gomock.Any()).Return(genesisState.GetValidators(), nil).AnyTimes() persistenceMock.EXPECT().NewReadContext(gomock.Any()).Return(readContextMock, nil).AnyTimes() return persistenceMock From fa09298cae0270168651e6e85eb641f6babfb937 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:36:05 +0000 Subject: [PATCH 025/120] refactor(runtime): centralized genesis + core types --- runtime/defaults/params.go | 127 ++++++++++ runtime/genesis.go | 40 +-- runtime/manager.go | 45 ++-- runtime/manager_test.go | 365 ++++++++++++++++++++++++++++ runtime/test_artifacts/generator.go | 61 ++--- runtime/test_artifacts/gov.go | 7 +- 6 files changed, 555 insertions(+), 90 deletions(-) create mode 100644 runtime/defaults/params.go create mode 100644 runtime/manager_test.go diff --git a/runtime/defaults/params.go b/runtime/defaults/params.go new file mode 100644 index 000000000..91c95e43a --- /dev/null +++ b/runtime/defaults/params.go @@ -0,0 +1,127 @@ +package defaults + +import ( + "math/big" + + "github.com/pokt-network/pocket/runtime/genesis" + "github.com/pokt-network/pocket/shared/converters" + "github.com/pokt-network/pocket/shared/crypto" +) + +var ( + DefaultParamsOwner, _ = crypto.NewPrivateKey("ff538589deb7f28bbce1ba68b37d2efc0eaa03204b36513cf88422a875559e38d6cbe0430ddd85a5e48e0c99ef3dea47bf0d1a83c6e6ad1640f72201dc8a0120") +) + +func DefaultParams() *genesis.Params { // TODO this is just a test / demo artifact and should be deprecated by genesis file + return &genesis.Params{ + BlocksPerSession: 4, + AppMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), + AppMaxChains: 15, + AppBaselineStakeRate: 100, + AppStakingAdjustment: 0, + AppUnstakingBlocks: 2016, + AppMinimumPauseBlocks: 4, + AppMaxPauseBlocks: 672, + ServiceNodeMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), + ServiceNodeMaxChains: 15, + ServiceNodeUnstakingBlocks: 2016, + ServiceNodeMinimumPauseBlocks: 4, + ServiceNodeMaxPauseBlocks: 672, + ServiceNodesPerSession: 24, + FishermanMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), + FishermanMaxChains: 15, + FishermanUnstakingBlocks: 2016, + FishermanMinimumPauseBlocks: 4, + FishermanMaxPauseBlocks: 672, + ValidatorMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), + ValidatorUnstakingBlocks: 2016, + ValidatorMinimumPauseBlocks: 4, + ValidatorMaxPauseBlocks: 672, + ValidatorMaximumMissedBlocks: 5, + ValidatorMaxEvidenceAgeInBlocks: 8, + ProposerPercentageOfFees: 10, + MissedBlocksBurnPercentage: 1, + DoubleSignBurnPercentage: 5, + MessageDoubleSignFee: converters.BigIntToString(big.NewInt(10000)), + MessageSendFee: converters.BigIntToString(big.NewInt(10000)), + MessageStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), + MessageEditStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnstakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), + MessagePauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnpauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), + MessageFishermanPauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessageTestScoreFee: converters.BigIntToString(big.NewInt(10000)), + MessageProveTestScoreFee: converters.BigIntToString(big.NewInt(10000)), + MessageStakeAppFee: converters.BigIntToString(big.NewInt(10000)), + MessageEditStakeAppFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnstakeAppFee: converters.BigIntToString(big.NewInt(10000)), + MessagePauseAppFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnpauseAppFee: converters.BigIntToString(big.NewInt(10000)), + MessageStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), + MessageEditStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnstakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), + MessagePauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnpauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), + MessageStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessageEditStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnstakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessagePauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnpauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessageChangeParameterFee: converters.BigIntToString(big.NewInt(10000)), + AclOwner: DefaultParamsOwner.Address().String(), + BlocksPerSessionOwner: DefaultParamsOwner.Address().String(), + AppMinimumStakeOwner: DefaultParamsOwner.Address().String(), + AppMaxChainsOwner: DefaultParamsOwner.Address().String(), + AppBaselineStakeRateOwner: DefaultParamsOwner.Address().String(), + AppStakingAdjustmentOwner: DefaultParamsOwner.Address().String(), + AppUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), + AppMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), + AppMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), + ServiceNodeMinimumStakeOwner: DefaultParamsOwner.Address().String(), + ServiceNodeMaxChainsOwner: DefaultParamsOwner.Address().String(), + ServiceNodeUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), + ServiceNodeMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), + ServiceNodeMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), + ServiceNodesPerSessionOwner: DefaultParamsOwner.Address().String(), + FishermanMinimumStakeOwner: DefaultParamsOwner.Address().String(), + FishermanMaxChainsOwner: DefaultParamsOwner.Address().String(), + FishermanUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), + FishermanMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), + FishermanMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), + ValidatorMinimumStakeOwner: DefaultParamsOwner.Address().String(), + ValidatorUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), + ValidatorMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), + ValidatorMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), + ValidatorMaximumMissedBlocksOwner: DefaultParamsOwner.Address().String(), + ValidatorMaxEvidenceAgeInBlocksOwner: DefaultParamsOwner.Address().String(), + ProposerPercentageOfFeesOwner: DefaultParamsOwner.Address().String(), + MissedBlocksBurnPercentageOwner: DefaultParamsOwner.Address().String(), + DoubleSignBurnPercentageOwner: DefaultParamsOwner.Address().String(), + MessageDoubleSignFeeOwner: DefaultParamsOwner.Address().String(), + MessageSendFeeOwner: DefaultParamsOwner.Address().String(), + MessageStakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), + MessageEditStakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), + MessageUnstakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), + MessagePauseFishermanFeeOwner: DefaultParamsOwner.Address().String(), + MessageUnpauseFishermanFeeOwner: DefaultParamsOwner.Address().String(), + MessageFishermanPauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), + MessageTestScoreFeeOwner: DefaultParamsOwner.Address().String(), + MessageProveTestScoreFeeOwner: DefaultParamsOwner.Address().String(), + MessageStakeAppFeeOwner: DefaultParamsOwner.Address().String(), + MessageEditStakeAppFeeOwner: DefaultParamsOwner.Address().String(), + MessageUnstakeAppFeeOwner: DefaultParamsOwner.Address().String(), + MessagePauseAppFeeOwner: DefaultParamsOwner.Address().String(), + MessageUnpauseAppFeeOwner: DefaultParamsOwner.Address().String(), + MessageStakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), + MessageEditStakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), + MessageUnstakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), + MessagePauseValidatorFeeOwner: DefaultParamsOwner.Address().String(), + MessageUnpauseValidatorFeeOwner: DefaultParamsOwner.Address().String(), + MessageStakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), + MessageEditStakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), + MessageUnstakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), + MessagePauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), + MessageUnpauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), + MessageChangeParameterFeeOwner: DefaultParamsOwner.Address().String(), + } +} diff --git a/runtime/genesis.go b/runtime/genesis.go index 8627e0649..974b806e9 100644 --- a/runtime/genesis.go +++ b/runtime/genesis.go @@ -4,43 +4,29 @@ import ( "encoding/json" "os" - consTypes "github.com/pokt-network/pocket/consensus/types" - persTypes "github.com/pokt-network/pocket/persistence/types" - "github.com/pokt-network/pocket/shared/modules" + "github.com/pokt-network/pocket/runtime/genesis" ) -var _ modules.GenesisState = &runtimeGenesis{} +// type runtimeGenesis struct { +// GenesisState genesis.GenesisState +// } -type runtimeGenesis struct { - ConsensusGenesisState *consTypes.ConsensusGenesisState `json:"consensus_genesis_state"` - PersistenceGenesisState *persTypes.PersistenceGenesisState `json:"persistence_genesis_state"` -} - -func NewGenesis( - consensusGenesisState modules.ConsensusGenesisState, - persistenceGenesisState modules.PersistenceGenesisState, -) *runtimeGenesis { - return &runtimeGenesis{ - ConsensusGenesisState: consensusGenesisState.(*consTypes.ConsensusGenesisState), - PersistenceGenesisState: persistenceGenesisState.(*persTypes.PersistenceGenesisState), - } -} - -func (g *runtimeGenesis) GetPersistenceGenesisState() modules.PersistenceGenesisState { - return g.PersistenceGenesisState -} -func (g *runtimeGenesis) GetConsensusGenesisState() modules.ConsensusGenesisState { - return g.ConsensusGenesisState -} +// func NewGenesis( +// genesisState genesis.GenesisState, +// ) *runtimeGenesis { +// return &runtimeGenesis{ +// GenesisState: genesisState, +// } +// } -func parseGenesisJSON(genesisPath string) (g *runtimeGenesis, err error) { +func parseGenesisJSON(genesisPath string) (g *genesis.GenesisState, err error) { data, err := os.ReadFile(genesisPath) if err != nil { return } // general genesis file - g = new(runtimeGenesis) + g = new(genesis.GenesisState) err = json.Unmarshal(data, &g) return } diff --git a/runtime/manager.go b/runtime/manager.go index 1ff7ceb62..e81d173e7 100644 --- a/runtime/manager.go +++ b/runtime/manager.go @@ -11,6 +11,7 @@ import ( "github.com/benbjohnson/clock" "github.com/mitchellh/mapstructure" "github.com/pokt-network/pocket/runtime/configs" + "github.com/pokt-network/pocket/runtime/genesis" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" "github.com/spf13/viper" @@ -19,8 +20,8 @@ import ( var _ modules.RuntimeMgr = &Manager{} type Manager struct { - config *configs.Config - genesis *runtimeGenesis + config *configs.Config + genesisState *genesis.GenesisState clock clock.Clock } @@ -30,12 +31,12 @@ func NewManagerFromFiles(configPath, genesisPath string, options ...func(*Manage clock: clock.New(), } - cfg, genesis, err := mgr.init(configPath, genesisPath) + cfg, genesisState, err := mgr.init(configPath, genesisPath) if err != nil { log.Fatalf("[ERROR] Failed to initialize runtime builder: %v", err) } mgr.config = cfg - mgr.genesis = genesis + mgr.genesisState = genesisState for _, o := range options { o(mgr) @@ -46,20 +47,18 @@ func NewManagerFromFiles(configPath, genesisPath string, options ...func(*Manage // NewManagerFromReaders returns a *Manager given io.Readers for the config and the genesis. // -// Ideally useful when the user doesn't want to rely on the filesystem and instead intends plugging in different configuration management system. -// -// Note: currently unused, here as a reference +// Useful for testing and when the user doesn't want to rely on the filesystem and instead intends plugging in different configuration management system. func NewManagerFromReaders(configReader, genesisReader io.Reader, options ...func(*Manager)) *Manager { - var cfg *configs.Config + var cfg = new(configs.Config) parse(configReader, cfg) - var genesis *runtimeGenesis - parse(genesisReader, genesis) + var genesisState = new(genesis.GenesisState) + parse(genesisReader, genesisState) mgr := &Manager{ - config: cfg, - genesis: genesis, - clock: clock.New(), + config: cfg, + genesisState: genesisState, + clock: clock.New(), } for _, o := range options { @@ -69,10 +68,10 @@ func NewManagerFromReaders(configReader, genesisReader io.Reader, options ...fun return mgr } -func NewManager(config *configs.Config, genesis modules.GenesisState, options ...func(*Manager)) *Manager { +func NewManager(config *configs.Config, genesisState *genesis.GenesisState, options ...func(*Manager)) *Manager { mgr := &Manager{ config: config, - genesis: genesis.(*runtimeGenesis), + genesisState: genesisState, clock: clock.New(), } @@ -83,7 +82,7 @@ func NewManager(config *configs.Config, genesis modules.GenesisState, options .. return mgr } -func (rc *Manager) init(configPath, genesisPath string) (config *configs.Config, genesis *runtimeGenesis, err error) { +func (rc *Manager) init(configPath, genesisPath string) (config *configs.Config, genesisState *genesis.GenesisState, err error) { dir, file := path.Split(configPath) filename := strings.TrimSuffix(file, filepath.Ext(file)) @@ -111,7 +110,7 @@ func (rc *Manager) init(configPath, genesisPath string) (config *configs.Config, return } - genesis, err = parseGenesisJSON(genesisPath) + genesisState, err = parseGenesisJSON(genesisPath) return } @@ -119,25 +118,21 @@ func (b *Manager) GetConfig() *configs.Config { return b.config } -func (b *Manager) GetGenesis() modules.GenesisState { - return b.genesis +func (b *Manager) GetGenesis() *genesis.GenesisState { + return b.genesisState } func (b *Manager) GetClock() clock.Clock { return b.clock } -type supportedStructs interface { - *configs.Config | *runtimeGenesis -} - -func parse[T supportedStructs](reader io.Reader, target T) { +func parse[T *configs.Config | *genesis.GenesisState](reader io.Reader, target T) { bz, err := io.ReadAll(reader) if err != nil { log.Fatalf("[ERROR] Failed to read from reader: %v", err) } - if err := json.Unmarshal(bz, &target); err != nil { + if err := json.Unmarshal(bz, target); err != nil { log.Fatalf("[ERROR] Failed to unmarshal: %v", err) } } diff --git a/runtime/manager_test.go b/runtime/manager_test.go new file mode 100644 index 000000000..4f0ac3261 --- /dev/null +++ b/runtime/manager_test.go @@ -0,0 +1,365 @@ +package runtime + +import ( + "io" + "math/big" + "os" + "strings" + "testing" + + "github.com/benbjohnson/clock" + "github.com/pokt-network/pocket/runtime/configs" + "github.com/pokt-network/pocket/runtime/genesis" + "github.com/pokt-network/pocket/shared/converters" + "github.com/pokt-network/pocket/shared/core/types" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/types/known/timestamppb" +) + +func TestNewManagerFromReaders(t *testing.T) { + type args struct { + configReader io.Reader + genesisReader io.Reader + options []func(*Manager) + } + + buildConfigBytes, err := os.ReadFile("../build/config/config1.json") + if err != nil { + require.NoError(t, err) + } + + buildGenesisBytes, err := os.ReadFile("../build/config/genesis.json") + if err != nil { + require.NoError(t, err) + } + + tests := []struct { + name string + args args + want *Manager + }{ + { + name: "reading from the build directory", + args: args{ + configReader: strings.NewReader(string(buildConfigBytes)), + genesisReader: strings.NewReader(string(buildGenesisBytes)), + }, + want: &Manager{ + &configs.Config{ + RootDirectory: "/go/src/github.com/pocket-network", + PrivateKey: "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", + Consensus: &configs.ConsensusConfig{ + PrivateKey: "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", + MaxMempoolBytes: 500000000, + PacemakerConfig: &configs.PacemakerConfig{ + TimeoutMsec: 5000, + Manual: true, + DebugTimeBetweenStepsMsec: 1000, + }, + }, + Utility: &configs.UtilityConfig{ + MaxMempoolTransactionBytes: 1073741824, + MaxMempoolTransactions: 9000, + }, + Persistence: &configs.PersistenceConfig{ + PostgresUrl: "postgres://postgres:postgres@pocket-db:5432/postgres", + NodeSchema: "node1", + BlockStorePath: "/var/blockstore", + TxIndexerPath: "", + TreesStoreDir: "/var/trees", + }, + P2P: &configs.P2PConfig{ + PrivateKey: "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", + ConsensusPort: 8080, + UseRainTree: true, + IsEmptyConnectionType: false, + MaxMempoolCount: 1e6, + }, + Telemetry: &configs.TelemetryConfig{ + Enabled: true, + Address: "0.0.0.0:9000", + Endpoint: "/metrics", + }, + Logger: &configs.LoggerConfig{ + Level: "debug", + Format: "pretty", + }, + RPC: &configs.RPCConfig{ + Enabled: true, + Port: "50832", + Timeout: 30000, + UseCors: false, + }, + }, + &genesis.GenesisState{ + GenesisTime: ×tamppb.Timestamp{ + Seconds: 1663610702, + Nanos: 405401000, + }, + ChainId: "testnet", + MaxBlockBytes: 4000000, + Pools: []*types.Account{ + { + Address: "DAO", + Amount: "100000000000000", + }, + { + Address: "FeeCollector", + Amount: "0", + }, + { + Address: "AppStakePool", + Amount: "100000000000000", + }, + { + Address: "ValidatorStakePool", + Amount: "100000000000000", + }, + { + Address: "ServiceNodeStakePool", + Amount: "100000000000000", + }, + { + Address: "FishermanStakePool", + Amount: "100000000000000", + }, + }, + Accounts: []*types.Account{ + { + Address: "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", + Amount: "100000000000000", + }, + { + Address: "67eb3f0a50ae459fecf666be0e93176e92441317", + Amount: "100000000000000", + }, + { + Address: "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", + Amount: "100000000000000", + }, + { + Address: "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", + Amount: "100000000000000", + }, + { + Address: "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", + Amount: "100000000000000", + }, + { + Address: "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", + Amount: "100000000000000", + }, + { + Address: "88a792b7aca673620132ef01f50e62caa58eca83", + Amount: "100000000000000", + }, + }, + Applications: []*types.Actor{ + { + ActorType: types.ActorType_ACTOR_TYPE_APP, + Address: "88a792b7aca673620132ef01f50e62caa58eca83", + PublicKey: "5f78658599943dc3e623539ce0b3c9fe4e192034a1e3fef308bc9f96915754e0", + Chains: []string{"0001"}, + GenericParam: "1000000", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "88a792b7aca673620132ef01f50e62caa58eca83", + }, + }, + Validators: []*types.Actor{ + + { + ActorType: types.ActorType_ACTOR_TYPE_VAL, + Address: "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", + PublicKey: "b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", + Chains: nil, + GenericParam: "node1.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", + }, + { + ActorType: types.ActorType_ACTOR_TYPE_VAL, + Address: "67eb3f0a50ae459fecf666be0e93176e92441317", + PublicKey: "c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb", + Chains: nil, + GenericParam: "node2.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "67eb3f0a50ae459fecf666be0e93176e92441317", + }, + { + ActorType: types.ActorType_ACTOR_TYPE_VAL, + Address: "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", + PublicKey: "a8b6be75d7551da093f788f7286c3a9cb885cfc8e52710eac5f1d5e5b4bf19b2", + Chains: nil, + GenericParam: "node3.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", + }, + { + ActorType: types.ActorType_ACTOR_TYPE_VAL, + Address: "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", + PublicKey: "53ee26c82826694ffe1773d7b60d5f20dd9e91bdf8745544711bec5ff9c6fb4a", + Chains: nil, + GenericParam: "node4.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", + }, + }, + ServiceNodes: []*types.Actor{ + { + ActorType: types.ActorType_ACTOR_TYPE_NODE, + Address: "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", + PublicKey: "16cd0a304c38d76271f74dd3c90325144425d904ef1b9a6fbab9b201d75a998b", + Chains: []string{"0001"}, + GenericParam: "node1.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", + }, + }, + Fishermen: []*types.Actor{ + { + ActorType: types.ActorType_ACTOR_TYPE_FISH, + Address: "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", + PublicKey: "68efd26af01692fcd77dc135ca1de69ede464e8243e6832bd6c37f282db8c9cb", + Chains: []string{"0001"}, + GenericParam: "node1.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", + }, + }, + Params: &genesis.Params{ + BlocksPerSession: 4, + AppMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), + AppMaxChains: 15, + AppBaselineStakeRate: 100, + AppStakingAdjustment: 0, + AppUnstakingBlocks: 2016, + AppMinimumPauseBlocks: 4, + AppMaxPauseBlocks: 672, + ServiceNodeMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), + ServiceNodeMaxChains: 15, + ServiceNodeUnstakingBlocks: 2016, + ServiceNodeMinimumPauseBlocks: 4, + ServiceNodeMaxPauseBlocks: 672, + ServiceNodesPerSession: 24, + FishermanMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), + FishermanMaxChains: 15, + FishermanUnstakingBlocks: 2016, + FishermanMinimumPauseBlocks: 4, + FishermanMaxPauseBlocks: 672, + ValidatorMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), + ValidatorUnstakingBlocks: 2016, + ValidatorMinimumPauseBlocks: 4, + ValidatorMaxPauseBlocks: 672, + ValidatorMaximumMissedBlocks: 5, + ValidatorMaxEvidenceAgeInBlocks: 8, + ProposerPercentageOfFees: 10, + MissedBlocksBurnPercentage: 1, + DoubleSignBurnPercentage: 5, + MessageDoubleSignFee: converters.BigIntToString(big.NewInt(10000)), + MessageSendFee: converters.BigIntToString(big.NewInt(10000)), + MessageStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), + MessageEditStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnstakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), + MessagePauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnpauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), + MessageFishermanPauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessageTestScoreFee: converters.BigIntToString(big.NewInt(10000)), + MessageProveTestScoreFee: converters.BigIntToString(big.NewInt(10000)), + MessageStakeAppFee: converters.BigIntToString(big.NewInt(10000)), + MessageEditStakeAppFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnstakeAppFee: converters.BigIntToString(big.NewInt(10000)), + MessagePauseAppFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnpauseAppFee: converters.BigIntToString(big.NewInt(10000)), + MessageStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), + MessageEditStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnstakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), + MessagePauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnpauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), + MessageStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessageEditStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnstakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessagePauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessageUnpauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), + MessageChangeParameterFee: converters.BigIntToString(big.NewInt(10000)), + AclOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + BlocksPerSessionOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + AppMinimumStakeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + AppMaxChainsOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + AppBaselineStakeRateOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + AppStakingAdjustmentOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + AppUnstakingBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + AppMinimumPauseBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + AppMaxPausedBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ServiceNodeMinimumStakeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ServiceNodeMaxChainsOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ServiceNodeUnstakingBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ServiceNodeMinimumPauseBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ServiceNodeMaxPausedBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ServiceNodesPerSessionOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + FishermanMinimumStakeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + FishermanMaxChainsOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + FishermanUnstakingBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + FishermanMinimumPauseBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + FishermanMaxPausedBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ValidatorMinimumStakeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ValidatorUnstakingBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ValidatorMinimumPauseBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ValidatorMaxPausedBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ValidatorMaximumMissedBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ValidatorMaxEvidenceAgeInBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + ProposerPercentageOfFeesOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MissedBlocksBurnPercentageOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + DoubleSignBurnPercentageOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageDoubleSignFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageSendFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageStakeFishermanFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageEditStakeFishermanFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageUnstakeFishermanFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessagePauseFishermanFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageUnpauseFishermanFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageFishermanPauseServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageTestScoreFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageProveTestScoreFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageStakeAppFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageEditStakeAppFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageUnstakeAppFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessagePauseAppFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageUnpauseAppFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageStakeValidatorFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageEditStakeValidatorFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageUnstakeValidatorFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessagePauseValidatorFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageUnpauseValidatorFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageStakeServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageEditStakeServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageUnstakeServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessagePauseServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageUnpauseServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + MessageChangeParameterFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + }, + }, + clock.New(), + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := NewManagerFromReaders(tt.args.configReader, tt.args.genesisReader, tt.args.options...) + require.Equal(t, tt.want, got) + }) + } +} diff --git a/runtime/test_artifacts/generator.go b/runtime/test_artifacts/generator.go index cd77d778e..dcfed9e4b 100644 --- a/runtime/test_artifacts/generator.go +++ b/runtime/test_artifacts/generator.go @@ -5,43 +5,36 @@ import ( "fmt" "strconv" - typesCons "github.com/pokt-network/pocket/consensus/types" - typesPers "github.com/pokt-network/pocket/persistence/types" - "github.com/pokt-network/pocket/runtime" "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/runtime/defaults" + "github.com/pokt-network/pocket/runtime/genesis" "github.com/pokt-network/pocket/runtime/test_artifacts/keygenerator" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" - "github.com/pokt-network/pocket/shared/modules" "github.com/pokt-network/pocket/utility/types" typesUtil "github.com/pokt-network/pocket/utility/types" "google.golang.org/protobuf/types/known/timestamppb" ) // IMPROVE: Generate a proper genesis suite in the future. -func NewGenesisState(numValidators, numServiceNodes, numApplications, numFisherman int) (modules.GenesisState, []string) { +func NewGenesisState(numValidators, numServiceNodes, numApplications, numFisherman int) (*genesis.GenesisState, []string) { apps, appsPrivateKeys := NewActors(types.ActorType_App, numApplications) vals, validatorPrivateKeys := NewActors(types.ActorType_Validator, numValidators) serviceNodes, snPrivateKeys := NewActors(types.ActorType_ServiceNode, numServiceNodes) fish, fishPrivateKeys := NewActors(types.ActorType_Fisherman, numFisherman) - genesisState := runtime.NewGenesis( - &typesCons.ConsensusGenesisState{ - GenesisTime: timestamppb.Now(), - ChainId: defaults.DefaultChainID, - MaxBlockBytes: defaults.DefaultMaxBlockBytes, - Validators: typesCons.ToConsensusValidators(vals), - }, - &typesPers.PersistenceGenesisState{ - Pools: typesPers.ToPersistenceAccounts(NewPools()), - Accounts: typesPers.ToPersistenceAccounts(NewAccounts(numValidators+numServiceNodes+numApplications+numFisherman, append(append(append(validatorPrivateKeys, snPrivateKeys...), fishPrivateKeys...), appsPrivateKeys...)...)), // TODO(olshansky): clean this up - Applications: typesPers.ToPersistenceActors(apps), - Validators: typesPers.ToPersistenceActors(vals), - ServiceNodes: typesPers.ToPersistenceActors(serviceNodes), - Fishermen: typesPers.ToPersistenceActors(fish), - Params: typesPers.ToPersistenceParams(DefaultParams()), - }, - ) + genesisState := &genesis.GenesisState{ + GenesisTime: timestamppb.Now(), + ChainId: defaults.DefaultChainID, + MaxBlockBytes: defaults.DefaultMaxBlockBytes, + Pools: NewPools(), + Accounts: NewAccounts(numValidators+numServiceNodes+numApplications+numFisherman, append(append(append(validatorPrivateKeys, snPrivateKeys...), fishPrivateKeys...), appsPrivateKeys...)...), // TODO(olshansky): clean this up + Applications: apps, + Validators: vals, + ServiceNodes: serviceNodes, + Fishermen: fish, + Params: DefaultParams(), + } // TODO: Generalize this to all actors and not just validators return genesisState, validatorPrivateKeys @@ -90,16 +83,16 @@ func NewDefaultConfig(i int, pk string) *configs.Config { } } -func NewPools() (pools []modules.Account) { // TODO (Team) in the real testing suite, we need to populate the pool amounts dependent on the actors - for _, name := range typesPers.PoolNames_name { - if name == typesPers.PoolNames_FeeCollector.String() { - pools = append(pools, &typesPers.Account{ +func NewPools() (pools []*coreTypes.Account) { // TODO (Team) in the real testing suite, we need to populate the pool amounts dependent on the actors + for _, name := range coreTypes.PoolNames_name { + if name == coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.String() { + pools = append(pools, &coreTypes.Account{ Address: name, Amount: "0", }) continue } - pools = append(pools, &typesPers.Account{ + pools = append(pools, &coreTypes.Account{ Address: name, Amount: defaults.DefaultAccountAmountString, }) @@ -107,14 +100,14 @@ func NewPools() (pools []modules.Account) { // TODO (Team) in the real testing s return } -func NewAccounts(n int, privateKeys ...string) (accounts []modules.Account) { +func NewAccounts(n int, privateKeys ...string) (accounts []*coreTypes.Account) { for i := 0; i < n; i++ { _, _, addr := keygenerator.GetInstance().Next() if privateKeys != nil { pk, _ := crypto.NewPrivateKey(privateKeys[i]) addr = pk.Address().String() } - accounts = append(accounts, &typesPers.Account{ + accounts = append(accounts, &coreTypes.Account{ Address: addr, Amount: defaults.DefaultAccountAmountString, }) @@ -125,7 +118,7 @@ func NewAccounts(n int, privateKeys ...string) (accounts []modules.Account) { // TODO: The current implementation of NewActors will have overlapping `ServiceUrl` for different // // types of actors which needs to be fixed. -func NewActors(actorType typesUtil.ActorType, n int) (actors []modules.Actor, privateKeys []string) { +func NewActors(actorType typesUtil.ActorType, n int) (actors []*coreTypes.Actor, privateKeys []string) { for i := 0; i < n; i++ { genericParam := getServiceUrl(i + 1) if int32(actorType) == int32(types.ActorType_App) { @@ -143,15 +136,15 @@ func getServiceUrl(n int) string { return fmt.Sprintf(defaults.ServiceUrlFormat, n) } -func NewDefaultActor(actorType int32, genericParam string) (actor modules.Actor, privateKey string) { +func NewDefaultActor(actorType int32, genericParam string) (actor *coreTypes.Actor, privateKey string) { privKey, pubKey, addr := keygenerator.GetInstance().Next() chains := defaults.DefaultChains - if actorType == int32(typesPers.ActorType_Val) { + if actorType == int32(coreTypes.ActorType_ACTOR_TYPE_VAL) { chains = nil } else if actorType == int32(types.ActorType_App) { genericParam = defaults.DefaultMaxRelaysString } - return &typesPers.Actor{ + return &coreTypes.Actor{ Address: addr, PublicKey: pubKey, Chains: chains, @@ -160,6 +153,6 @@ func NewDefaultActor(actorType int32, genericParam string) (actor modules.Actor, PausedHeight: defaults.DefaultPauseHeight, UnstakingHeight: defaults.DefaultUnstakingHeight, Output: addr, - ActorType: typesPers.ActorType(actorType), + ActorType: coreTypes.ActorType(actorType), }, privKey } diff --git a/runtime/test_artifacts/gov.go b/runtime/test_artifacts/gov.go index febf92d25..61f8a584e 100644 --- a/runtime/test_artifacts/gov.go +++ b/runtime/test_artifacts/gov.go @@ -3,8 +3,7 @@ package test_artifacts import ( "math/big" - typesPers "github.com/pokt-network/pocket/persistence/types" - "github.com/pokt-network/pocket/shared/modules" + "github.com/pokt-network/pocket/runtime/genesis" "github.com/pokt-network/pocket/utility/types" "github.com/pokt-network/pocket/shared/crypto" @@ -16,8 +15,8 @@ var ( DefaultParamsOwner, _ = crypto.NewPrivateKey("ff538589deb7f28bbce1ba68b37d2efc0eaa03204b36513cf88422a875559e38d6cbe0430ddd85a5e48e0c99ef3dea47bf0d1a83c6e6ad1640f72201dc8a0120") ) -func DefaultParams() modules.Params { - return &typesPers.Params{ +func DefaultParams() *genesis.Params { + return &genesis.Params{ BlocksPerSession: 4, AppMinimumStake: types.BigIntToString(big.NewInt(15000000000)), AppMaxChains: 15, From f71d83114b37e507425b91a9ac20eec4a2aacbe4 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:36:35 +0000 Subject: [PATCH 026/120] refactor(utility): centralized genesis + core types --- utility/session.go | 54 +++++++++++++++++++----------------- utility/test/account_test.go | 6 ++-- utility/test/actor_test.go | 20 ++++++------- utility/test/gov_test.go | 4 +-- 4 files changed, 44 insertions(+), 40 deletions(-) diff --git a/utility/session.go b/utility/session.go index 11f2bc3b9..f04311b45 100644 --- a/utility/session.go +++ b/utility/session.go @@ -3,19 +3,20 @@ package utility import ( "encoding/binary" "encoding/hex" + + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" - "github.com/pokt-network/pocket/shared/modules" "github.com/pokt-network/pocket/utility/types" ) type Session interface { - NewSession(sessionHeight int64, blockHash string, geoZone GeoZone, relayChain RelayChain, application modules.Actor) (Session, types.Error) - GetServiceNodes() []modules.Actor // the ServiceNodes providing Web3 to the application - GetFishermen() []modules.Actor // the Fishermen monitoring the serviceNodes - GetApplication() modules.Actor // the Application consuming the web3 access - GetRelayChain() RelayChain // the chain identifier of the web3 - GetGeoZone() GeoZone // the geolocation zone where all are registered - GetSessionHeight() int64 // the block height when the session started + NewSession(sessionHeight int64, blockHash string, geoZone GeoZone, relayChain RelayChain, application *coreTypes.Actor) (Session, types.Error) + GetServiceNodes() []*coreTypes.Actor // the ServiceNodes providing Web3 to the application + GetFishermen() []*coreTypes.Actor // the Fishermen monitoring the serviceNodes + GetApplication() *coreTypes.Actor // the Application consuming the web3 access + GetRelayChain() RelayChain // the chain identifier of the web3 + GetGeoZone() GeoZone // the geolocation zone where all are registered + GetSessionHeight() int64 // the block height when the session started } type RelayChain Identifier @@ -30,9 +31,9 @@ type Identifier interface { var _ Session = &session{} type session struct { - serviceNodes []modules.Actor - fishermen []modules.Actor - application modules.Actor + serviceNodes []*coreTypes.Actor + fishermen []*coreTypes.Actor + application *coreTypes.Actor relayChain RelayChain geoZone GeoZone blockHash string @@ -40,7 +41,7 @@ type session struct { sessionHeight int64 } -func (s *session) NewSession(sessionHeight int64, blockHash string, geoZone GeoZone, relayChain RelayChain, application modules.Actor) (session Session, err types.Error) { +func (s *session) NewSession(sessionHeight int64, blockHash string, geoZone GeoZone, relayChain RelayChain, application *coreTypes.Actor) (session Session, err types.Error) { s.sessionHeight = sessionHeight s.blockHash = blockHash s.geoZone = geoZone @@ -73,11 +74,12 @@ func (s *session) sessionKey() ([]byte, types.Error) { // uses the current 'world state' to determine the service nodes in the session // 1) get an ordered list of the public keys of service nodes who are: -// - actively staked -// - staked within geo-zone -// - staked for relay-chain +// - actively staked +// - staked within geo-zone +// - staked for relay-chain +// // 2) calls `pseudoRandomSelection(serviceNodes, numberOfNodesPerSession)` -func (s *session) findClosestXServiceNodes() []modules.Actor { +func (s *session) findClosestXServiceNodes() []*coreTypes.Actor { // IMPORTANT: // THIS IS A DEMONSTRABLE FUNCTION THAT WILL NOT BE IMPLEMENTED AS SUCH // IT EXISTS IN THIS COMMIT PURELY TO COMMUNICATE THE EXPECTED BEHAVIOR @@ -86,11 +88,12 @@ func (s *session) findClosestXServiceNodes() []modules.Actor { // uses the current 'world state' to determine the fishermen in the session // 1) get an ordered list of the public keys of fishermen who are: -// - actively staked -// - staked within geo-zone -// - staked for relay-chain +// - actively staked +// - staked within geo-zone +// - staked for relay-chain +// // 2) calls `pseudoRandomSelection(fishermen, numberOfFishPerSession)` -func (s *session) findClosestYFishermen() []modules.Actor { +func (s *session) findClosestYFishermen() []*coreTypes.Actor { // IMPORTANT: // THIS IS A DEMONSTRABLE FUNCTION THAT WILL NOT BE IMPLEMENTED AS SUCH // IT EXISTS IN THIS COMMIT PURELY TO COMMUNICATE THE EXPECTED BEHAVIOR @@ -104,23 +107,24 @@ func (s *session) findClosestYFishermen() []modules.Actor { // FAQ: // Q) why do we hash to find a newKey between every actor selection? // A) pseudo-random selection only works if each iteration is re-randomized -// or it would be subject to lexicographical proximity bias attacks -func (s *session) pseudoRandomSelection(orderedListOfPublicKeys []string, numberOfActorsInSession int) []modules.Actor { +// +// or it would be subject to lexicographical proximity bias attacks +func (s *session) pseudoRandomSelection(orderedListOfPublicKeys []string, numberOfActorsInSession int) []*coreTypes.Actor { // IMPORTANT: // THIS IS A DEMONSTRABLE FUNCTION THAT WILL NOT BE IMPLEMENTED AS SUCH // IT EXISTS IN THIS COMMIT PURELY TO COMMUNICATE THE EXPECTED BEHAVIOR return nil } -func (s *session) GetServiceNodes() []modules.Actor { +func (s *session) GetServiceNodes() []*coreTypes.Actor { return s.serviceNodes } -func (s *session) GetFishermen() []modules.Actor { +func (s *session) GetFishermen() []*coreTypes.Actor { return s.fishermen } -func (s *session) GetApplication() modules.Actor { +func (s *session) GetApplication() *coreTypes.Actor { return s.application } diff --git a/utility/test/account_test.go b/utility/test/account_test.go index 8a825dab7..6c8bccbc1 100644 --- a/utility/test/account_test.go +++ b/utility/test/account_test.go @@ -7,8 +7,8 @@ import ( "testing" "github.com/pokt-network/pocket/runtime/test_artifacts" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" - "github.com/pokt-network/pocket/shared/modules" "github.com/pokt-network/pocket/utility" "github.com/pokt-network/pocket/utility/types" "github.com/stretchr/testify/require" @@ -219,7 +219,7 @@ func TestUtilityContext_SubtractAccountAmount(t *testing.T) { test_artifacts.CleanupTest(ctx) } -func GetAllTestingAccounts(t *testing.T, ctx utility.UtilityContext) []modules.Account { +func GetAllTestingAccounts(t *testing.T, ctx utility.UtilityContext) []*coreTypes.Account { accs, err := (ctx.Context.PersistenceRWContext).GetAllAccounts(0) require.NoError(t, err) sort.Slice(accs, func(i, j int) bool { @@ -228,7 +228,7 @@ func GetAllTestingAccounts(t *testing.T, ctx utility.UtilityContext) []modules.A return accs } -func GetAllTestingPools(t *testing.T, ctx utility.UtilityContext) []modules.Account { +func GetAllTestingPools(t *testing.T, ctx utility.UtilityContext) []*coreTypes.Account { accs, err := (ctx.Context.PersistenceRWContext).GetAllPools(0) require.NoError(t, err) sort.Slice(accs, func(i, j int) bool { diff --git a/utility/test/actor_test.go b/utility/test/actor_test.go index adb9361b3..752d00846 100644 --- a/utility/test/actor_test.go +++ b/utility/test/actor_test.go @@ -10,8 +10,8 @@ import ( "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/runtime/test_artifacts" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" - "github.com/pokt-network/pocket/shared/modules" "github.com/pokt-network/pocket/utility" typesUtil "github.com/pokt-network/pocket/utility/types" "github.com/stretchr/testify/require" @@ -572,8 +572,8 @@ func TestUtilityContext_BeginUnstakingMaxPausedActors(t *testing.T) { // Helpers -func getAllTestingActors(t *testing.T, ctx utility.UtilityContext, actorType typesUtil.ActorType) (actors []modules.Actor) { - actors = make([]modules.Actor, 0) +func getAllTestingActors(t *testing.T, ctx utility.UtilityContext, actorType typesUtil.ActorType) (actors []*coreTypes.Actor) { + actors = make([]*coreTypes.Actor, 0) switch actorType { case typesUtil.ActorType_App: apps := getAllTestingApps(t, ctx) @@ -602,23 +602,23 @@ func getAllTestingActors(t *testing.T, ctx utility.UtilityContext, actorType typ return } -func getFirstActor(t *testing.T, ctx utility.UtilityContext, actorType typesUtil.ActorType) modules.Actor { +func getFirstActor(t *testing.T, ctx utility.UtilityContext, actorType typesUtil.ActorType) *coreTypes.Actor { return getAllTestingActors(t, ctx, actorType)[0] } -func getActorByAddr(t *testing.T, ctx utility.UtilityContext, actorType typesUtil.ActorType, addr string) (actor modules.Actor) { +func getActorByAddr(t *testing.T, ctx utility.UtilityContext, actorType typesUtil.ActorType, addr string) (actor *coreTypes.Actor) { actors := getAllTestingActors(t, ctx, actorType) - idx := slices.IndexFunc(actors, func(a modules.Actor) bool { return a.GetAddress() == addr }) + idx := slices.IndexFunc(actors, func(a *coreTypes.Actor) bool { return a.GetAddress() == addr }) return actors[idx] } -func getAllTestingApps(t *testing.T, ctx utility.UtilityContext) []modules.Actor { +func getAllTestingApps(t *testing.T, ctx utility.UtilityContext) []*coreTypes.Actor { actors, err := (ctx.Context.PersistenceRWContext).GetAllApps(ctx.Height) require.NoError(t, err) return actors } -func getAllTestingValidators(t *testing.T, ctx utility.UtilityContext) []modules.Actor { +func getAllTestingValidators(t *testing.T, ctx utility.UtilityContext) []*coreTypes.Actor { actors, err := (ctx.Context.PersistenceRWContext).GetAllValidators(ctx.Height) require.NoError(t, err) sort.Slice(actors, func(i, j int) bool { @@ -627,13 +627,13 @@ func getAllTestingValidators(t *testing.T, ctx utility.UtilityContext) []modules return actors } -func getAllTestingFish(t *testing.T, ctx utility.UtilityContext) []modules.Actor { +func getAllTestingFish(t *testing.T, ctx utility.UtilityContext) []*coreTypes.Actor { actors, err := (ctx.Context.PersistenceRWContext).GetAllFishermen(ctx.Height) require.NoError(t, err) return actors } -func getAllTestingNodes(t *testing.T, ctx utility.UtilityContext) []modules.Actor { +func getAllTestingNodes(t *testing.T, ctx utility.UtilityContext) []*coreTypes.Actor { actors, err := (ctx.Context.PersistenceRWContext).GetAllServiceNodes(ctx.Height) require.NoError(t, err) return actors diff --git a/utility/test/gov_test.go b/utility/test/gov_test.go index 42dacb8ed..40525c375 100644 --- a/utility/test/gov_test.go +++ b/utility/test/gov_test.go @@ -4,9 +4,9 @@ import ( "encoding/hex" "testing" + "github.com/pokt-network/pocket/runtime/genesis" "github.com/pokt-network/pocket/runtime/test_artifacts" "github.com/pokt-network/pocket/shared/codec" - "github.com/pokt-network/pocket/shared/modules" typesUtil "github.com/pokt-network/pocket/utility/types" "github.com/stretchr/testify/require" "google.golang.org/protobuf/types/known/wrapperspb" @@ -15,7 +15,7 @@ import ( // TODO : After we change the interface to pass param name, simply use reflection to // iterate over all the params and test them. Suggestion: [Google's go-cmp] (https://github.com/google/go-cmp) -func DefaultTestingParams(_ *testing.T) modules.Params { +func DefaultTestingParams(_ *testing.T) *genesis.Params { return test_artifacts.DefaultParams() } From 910b20e5df1cbbc09c3e1a721c06a69dac7cbe38 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:36:47 +0000 Subject: [PATCH 027/120] refactor(shared): centralized genesis + core types --- shared/modules/consensus_module.go | 3 ++- shared/modules/module.go | 11 +---------- shared/modules/persistence_module.go | 15 ++++++++------- shared/modules/runtime_module.go | 3 ++- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/shared/modules/consensus_module.go b/shared/modules/consensus_module.go index 3241288ca..b9a575561 100644 --- a/shared/modules/consensus_module.go +++ b/shared/modules/consensus_module.go @@ -3,12 +3,13 @@ package modules //go:generate mockgen -source=$GOFILE -destination=./mocks/consensus_module_mock.go -aux_files=github.com/pokt-network/pocket/shared/modules=module.go import ( + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/messaging" "google.golang.org/protobuf/types/known/anypb" ) // TODO(olshansky): deprecate ValidatorMap or populate from persistence module -type ValidatorMap map[string]Actor +type ValidatorMap map[string]coreTypes.Actor // NOTE: Consensus is the core of the replicated state machine and is driven by various asynchronous events. // Consider adding a mutex lock to your implementation that is acquired at the beginning of each entrypoint/function implemented in this interface. diff --git a/shared/modules/module.go b/shared/modules/module.go index 92c6c7a42..bc82c16d8 100644 --- a/shared/modules/module.go +++ b/shared/modules/module.go @@ -1,7 +1,6 @@ package modules import ( - "github.com/pokt-network/pocket/shared/crypto" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" ) @@ -26,16 +25,8 @@ type InitializableModule interface { Create(runtime RuntimeMgr) (Module, error) } -// type ConfigurableModule interface { -// ValidateConfig(Config) error -// } - -// type GenesisDependentModule interface { -// ValidateGenesis(GenesisState) error -// } - type KeyholderModule interface { - GetPrivateKey() (crypto.PrivateKey, error) + GetPrivateKey() (cryptoPocket.PrivateKey, error) } type P2PAddressableModule interface { diff --git a/shared/modules/persistence_module.go b/shared/modules/persistence_module.go index a6b7a7f56..5cb27a149 100644 --- a/shared/modules/persistence_module.go +++ b/shared/modules/persistence_module.go @@ -4,6 +4,7 @@ package modules import ( "github.com/pokt-network/pocket/persistence/kvstore" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/messaging" ) @@ -134,16 +135,16 @@ type PersistenceReadContext interface { // Returns "0" if the account does not exist GetPoolAmount(name string, height int64) (amount string, err error) - GetAllPools(height int64) ([]Account, error) + GetAllPools(height int64) ([]*coreTypes.Account, error) // Account Queries // Returns "0" if the account does not exist GetAccountAmount(address []byte, height int64) (string, error) - GetAllAccounts(height int64) ([]Account, error) + GetAllAccounts(height int64) ([]*coreTypes.Account, error) // App Queries - GetAllApps(height int64) ([]Actor, error) + GetAllApps(height int64) ([]*coreTypes.Actor, error) GetAppExists(address []byte, height int64) (exists bool, err error) GetAppStakeAmount(height int64, address []byte) (string, error) GetAppsReadyToUnstake(height int64, status int32) (apps []IUnstakingActor, err error) @@ -152,7 +153,7 @@ type PersistenceReadContext interface { GetAppOutputAddress(operator []byte, height int64) (output []byte, err error) // ServiceNode Queries - GetAllServiceNodes(height int64) ([]Actor, error) + GetAllServiceNodes(height int64) ([]*coreTypes.Actor, error) GetServiceNodeExists(address []byte, height int64) (exists bool, err error) GetServiceNodeStakeAmount(height int64, address []byte) (string, error) GetServiceNodesReadyToUnstake(height int64, status int32) (serviceNodes []IUnstakingActor, err error) @@ -163,7 +164,7 @@ type PersistenceReadContext interface { GetServiceNodesPerSessionAt(height int64) (int, error) // TECHDEBT(#286): Deprecate this method // Fisherman Queries - GetAllFishermen(height int64) ([]Actor, error) + GetAllFishermen(height int64) ([]*coreTypes.Actor, error) GetFishermanExists(address []byte, height int64) (exists bool, err error) GetFishermanStakeAmount(height int64, address []byte) (string, error) GetFishermenReadyToUnstake(height int64, status int32) (fishermen []IUnstakingActor, err error) @@ -172,7 +173,7 @@ type PersistenceReadContext interface { GetFishermanOutputAddress(operator []byte, height int64) (output []byte, err error) // Validator Queries - GetAllValidators(height int64) ([]Actor, error) + GetAllValidators(height int64) ([]*coreTypes.Actor, error) GetValidatorExists(address []byte, height int64) (exists bool, err error) GetValidatorStakeAmount(height int64, address []byte) (string, error) GetValidatorsReadyToUnstake(height int64, status int32) (validators []IUnstakingActor, err error) @@ -182,7 +183,7 @@ type PersistenceReadContext interface { GetValidatorMissedBlocks(address []byte, height int64) (int, error) // Actors Queries - GetAllStakedActors(height int64) ([]Actor, error) + GetAllStakedActors(height int64) ([]*coreTypes.Actor, error) // Params GetIntParam(paramName string, height int64) (int, error) diff --git a/shared/modules/runtime_module.go b/shared/modules/runtime_module.go index ef5c4fc0e..17e2ed3fb 100644 --- a/shared/modules/runtime_module.go +++ b/shared/modules/runtime_module.go @@ -3,12 +3,13 @@ package modules import ( "github.com/benbjohnson/clock" "github.com/pokt-network/pocket/runtime/configs" + "github.com/pokt-network/pocket/runtime/genesis" ) //go:generate mockgen -source=$GOFILE -destination=./mocks/runtime_module_mock.go -aux_files=github.com/pokt-network/pocket/shared/modules=module.go type RuntimeMgr interface { GetConfig() *configs.Config - GetGenesis() GenesisState + GetGenesis() *genesis.GenesisState GetClock() clock.Clock } From 4da6cbbd73106dfb6c34cd2a1b04014e56afb7f5 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:37:03 +0000 Subject: [PATCH 028/120] chore(telemetry): simplified interface --- telemetry/module.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/telemetry/module.go b/telemetry/module.go index c8601e488..bef0d6682 100644 --- a/telemetry/module.go +++ b/telemetry/module.go @@ -28,9 +28,8 @@ func (*telemetryModule) Create(runtime modules.RuntimeMgr) (modules.Module, erro type telemetryModule struct{} -func (t *telemetryModule) GetModuleName() string { return telemetryModuleName } -func (t *telemetryModule) InitGenesis(_ string) (genesis modules.GenesisState, err error) { return } -func (t *telemetryModule) SetBus(bus modules.Bus) {} -func (t *telemetryModule) GetBus() modules.Bus { return nil } -func (t *telemetryModule) Start() error { return nil } -func (t *telemetryModule) Stop() error { return nil } +func (t *telemetryModule) GetModuleName() string { return telemetryModuleName } +func (t *telemetryModule) SetBus(bus modules.Bus) {} +func (t *telemetryModule) GetBus() modules.Bus { return nil } +func (t *telemetryModule) Start() error { return nil } +func (t *telemetryModule) Stop() error { return nil } From 75fa712ac47c1d02cabae76baa6c00073c163ffd Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:37:27 +0000 Subject: [PATCH 029/120] refactor(makefile): updated to handle relocated protos --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 673805c06..4cdec7d60 100644 --- a/Makefile +++ b/Makefile @@ -274,12 +274,15 @@ protogen_local: go_protoc-go-inject-tag protoc --go_opt=paths=source_relative -I=./shared/messaging/proto --go_out=./shared/messaging ./shared/messaging/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./shared/codec/proto --go_out=./shared/codec ./shared/codec/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./persistence/indexer/proto --go_out=./persistence/indexer/ ./persistence/indexer/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./persistence/proto --go_out=./persistence/types ./persistence/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./shared/ -I=./persistence/proto --go_out=./persistence/types ./persistence/proto/*.proto --experimental_allow_proto3_optional protoc-go-inject-tag -input="./persistence/types/*.pb.go" protoc --go_opt=paths=source_relative -I=./utility/types/proto --go_out=./utility/types ./utility/types/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./consensus/types/proto --go_out=./consensus/types ./consensus/types/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./p2p/raintree/types/proto --go_out=./p2p/types ./p2p/raintree/types/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./runtime/configs/proto --go_out=./runtime/configs ./runtime/configs/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./shared/core/types/proto --go_out=./shared/core/types ./shared/core/types/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./shared/ -I=./runtime/genesis/proto --go_out=./runtime/genesis ./runtime/genesis/proto/*.proto --experimental_allow_proto3_optional + protoc-go-inject-tag -input="./runtime/genesis/*.pb.go" echo "View generated proto files by running: make protogen_show" .PHONY: protogen_docker_m1 From 0b56298a4395852b07abed24e19484c81d56fb31 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:46:29 +0000 Subject: [PATCH 030/120] test(consensus): fixes --- consensus/consensus_tests/utils_test.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/consensus/consensus_tests/utils_test.go b/consensus/consensus_tests/utils_test.go index 1dddf1e95..518e487e1 100644 --- a/consensus/consensus_tests/utils_test.go +++ b/consensus/consensus_tests/utils_test.go @@ -17,9 +17,11 @@ import ( typesCons "github.com/pokt-network/pocket/consensus/types" "github.com/pokt-network/pocket/runtime" "github.com/pokt-network/pocket/runtime/configs" + "github.com/pokt-network/pocket/runtime/genesis" "github.com/pokt-network/pocket/runtime/test_artifacts" "github.com/pokt-network/pocket/shared" "github.com/pokt-network/pocket/shared/codec" + coreTypes "github.com/pokt-network/pocket/shared/core/types" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/messaging" "github.com/pokt-network/pocket/shared/modules" @@ -351,7 +353,7 @@ func baseP2PMock(t *testing.T, testChannel modules.EventsChannel) *modulesMock.M } // Creates a utility module mock with mock implementations of some basic functionality -func baseUtilityMock(t *testing.T, _ modules.EventsChannel, genesisState modules.GenesisState) *modulesMock.MockUtilityModule { +func baseUtilityMock(t *testing.T, _ modules.EventsChannel, genesisState *genesis.GenesisState) *modulesMock.MockUtilityModule { ctrl := gomock.NewController(t) utilityMock := modulesMock.NewMockUtilityModule(ctrl) utilityContextMock := baseUtilityContextMock(t, genesisState) @@ -366,11 +368,11 @@ func baseUtilityMock(t *testing.T, _ modules.EventsChannel, genesisState modules return utilityMock } -func baseUtilityContextMock(t *testing.T, genesisState modules.GenesisState) *modulesMock.MockUtilityContext { +func baseUtilityContextMock(t *testing.T, genesisState *genesis.GenesisState) *modulesMock.MockUtilityContext { ctrl := gomock.NewController(t) utilityContextMock := modulesMock.NewMockUtilityContext(ctrl) persistenceContextMock := modulesMock.NewMockPersistenceRWContext(ctrl) - persistenceContextMock.EXPECT().GetAllValidators(gomock.Any()).Return(genesisState.GetPersistenceGenesisState().GetVals(), nil).AnyTimes() + persistenceContextMock.EXPECT().GetAllValidators(gomock.Any()).Return(genesisState.GetValidators(), nil).AnyTimes() persistenceContextMock.EXPECT().GetBlockHash(gomock.Any()).Return("", nil).AnyTimes() utilityContextMock.EXPECT(). @@ -486,11 +488,11 @@ func assertRound(t *testing.T, nodeId typesCons.NodeId, expected, actual uint8) require.Equal(t, expected, actual, "[NODE][%v] failed assertRound", nodeId) } -// makeMockActors creates a slice of modules.Actor with n &modulesMock.MockActor{} in it. -func makeMockActors(n int) []modules.Actor { - actors := make([]modules.Actor, n) +// makeMockActors creates a slice of *coreTypes.Actor with n &coreTypes.MockActor{} in it. +func makeMockActors(n int) []*coreTypes.Actor { + actors := make([]*coreTypes.Actor, n) for i := 0; i < n; i++ { - actors[i] = &modulesMock.MockActor{} + actors[i] = &coreTypes.Actor{} } return actors } From f52182fbdc6a6155a285f6952f9cf2268524215e Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:52:41 +0000 Subject: [PATCH 031/120] =?UTF-8?q?chore(consensus):=20=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- consensus/types/types.go | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/consensus/types/types.go b/consensus/types/types.go index 3a8ed8729..532d82194 100644 --- a/consensus/types/types.go +++ b/consensus/types/types.go @@ -57,14 +57,3 @@ func ActorListToValidatorMap(actors []*coreTypes.Actor) (m ValidatorMap) { } return } - -// var _ modules.Actor = &Validator{} - -// func (x *Validator) GetPausedHeight() int64 { panic("not implemented on consensus validator") } -// func (x *Validator) GetUnstakingHeight() int64 { panic("not implemented on consensus validator") } -// func (x *Validator) GetOutput() string { panic("not implemented on consensus validator") } -// func (x *Validator) GetActorTyp() modules.ActorType { panic("not implemented on consensus validator") } -// func (x *Validator) GetChains() []string { panic("not implemented on consensus validator") } -// func (x *Validator) GetActorType() coreTypes.ActorType { -// panic("not implemented on consensus validator") -// } From 8e025990436757d06ce5a42e0d553fe1979db16c Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:54:30 +0000 Subject: [PATCH 032/120] =?UTF-8?q?chore(runtime):=20=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- runtime/genesis.go | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/runtime/genesis.go b/runtime/genesis.go index 974b806e9..3202afcc8 100644 --- a/runtime/genesis.go +++ b/runtime/genesis.go @@ -7,18 +7,6 @@ import ( "github.com/pokt-network/pocket/runtime/genesis" ) -// type runtimeGenesis struct { -// GenesisState genesis.GenesisState -// } - -// func NewGenesis( -// genesisState genesis.GenesisState, -// ) *runtimeGenesis { -// return &runtimeGenesis{ -// GenesisState: genesisState, -// } -// } - func parseGenesisJSON(genesisPath string) (g *genesis.GenesisState, err error) { data, err := os.ReadFile(genesisPath) if err != nil { From 04c75d4b62693667d2f73a7b766bfc257e3c4b08 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 19 Dec 2022 23:57:47 +0000 Subject: [PATCH 033/120] chore(Makefile): | | | --- Makefile | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index 4cdec7d60..a0cef06cd 100644 --- a/Makefile +++ b/Makefile @@ -271,17 +271,17 @@ protogen_clean: ## Generate go structures for all of the protobufs protogen_local: go_protoc-go-inject-tag $(eval proto_dir = ".") - protoc --go_opt=paths=source_relative -I=./shared/messaging/proto --go_out=./shared/messaging ./shared/messaging/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./shared/codec/proto --go_out=./shared/codec ./shared/codec/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./persistence/indexer/proto --go_out=./persistence/indexer/ ./persistence/indexer/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./shared/ -I=./persistence/proto --go_out=./persistence/types ./persistence/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./shared/messaging/proto --go_out=./shared/messaging ./shared/messaging/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./shared/codec/proto --go_out=./shared/codec ./shared/codec/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./persistence/indexer/proto --go_out=./persistence/indexer ./persistence/indexer/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./shared/ -I=./persistence/proto --go_out=./persistence/types ./persistence/proto/*.proto --experimental_allow_proto3_optional protoc-go-inject-tag -input="./persistence/types/*.pb.go" - protoc --go_opt=paths=source_relative -I=./utility/types/proto --go_out=./utility/types ./utility/types/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./consensus/types/proto --go_out=./consensus/types ./consensus/types/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./p2p/raintree/types/proto --go_out=./p2p/types ./p2p/raintree/types/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./runtime/configs/proto --go_out=./runtime/configs ./runtime/configs/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./shared/core/types/proto --go_out=./shared/core/types ./shared/core/types/proto/*.proto --experimental_allow_proto3_optional - protoc --go_opt=paths=source_relative -I=./shared/ -I=./runtime/genesis/proto --go_out=./runtime/genesis ./runtime/genesis/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./utility/types/proto --go_out=./utility/types ./utility/types/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./consensus/types/proto --go_out=./consensus/types ./consensus/types/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./p2p/raintree/types/proto --go_out=./p2p/types ./p2p/raintree/types/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./runtime/configs/proto --go_out=./runtime/configs ./runtime/configs/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./shared/core/types/proto --go_out=./shared/core/types ./shared/core/types/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./shared/ -I=./runtime/genesis/proto --go_out=./runtime/genesis ./runtime/genesis/proto/*.proto --experimental_allow_proto3_optional protoc-go-inject-tag -input="./runtime/genesis/*.pb.go" echo "View generated proto files by running: make protogen_show" From b54cc52560e583c0360dc5f2e2734206e7b2c9ec Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 20 Dec 2022 00:34:37 +0000 Subject: [PATCH 034/120] refactor(persistence): genesis stakedActorsInsertConfigs --- persistence/genesis.go | 137 +++++++++++++++++------------------------ 1 file changed, 56 insertions(+), 81 deletions(-) diff --git a/persistence/genesis.go b/persistence/genesis.go index f5df96661..1f0bc5fe5 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -52,90 +52,65 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { log.Fatalf("an error occurred inserting an pool in the genesis state: %s", err.Error()) } } - for _, act := range state.GetApplications() { // TODO (Andrew) genericize the genesis population logic for actors #149 - addrBz, err := hex.DecodeString(act.GetAddress()) - if err != nil { - log.Fatalf("an error occurred converting address to bytes %s", act.GetAddress()) - } - pubKeyBz, err := hex.DecodeString(act.GetPublicKey()) - if err != nil { - log.Fatalf("an error occurred converting pubKey to bytes %s", act.GetPublicKey()) - } - outputBz, err := hex.DecodeString(act.GetOutput()) - if err != nil { - log.Fatalf("an error occurred converting output to bytes %s", act.GetOutput()) - } - err = rwContext.InsertApp(addrBz, pubKeyBz, outputBz, false, StakedStatus, act.GetGenericParam(), act.GetStakedAmount(), act.GetChains(), act.GetPausedHeight(), act.GetUnstakingHeight()) - if err != nil { - log.Fatalf("an error occurred inserting an app in the genesis state: %s", err.Error()) - } - if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String(), act.GetStakedAmount()); err != nil { - log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL, err.Error()) - } - } - for _, act := range state.GetServiceNodes() { - addrBz, err := hex.DecodeString(act.GetAddress()) - if err != nil { - log.Fatalf("an error occurred converting address to bytes %s", act.GetAddress()) - } - pubKeyBz, err := hex.DecodeString(act.GetPublicKey()) - if err != nil { - log.Fatalf("an error occurred converting pubKey to bytes %s", act.GetPublicKey()) - } - outputBz, err := hex.DecodeString(act.GetOutput()) - if err != nil { - log.Fatalf("an error occurred converting output to bytes %s", act.GetOutput()) - } - err = rwContext.InsertServiceNode(addrBz, pubKeyBz, outputBz, false, StakedStatus, act.GetGenericParam(), act.GetStakedAmount(), act.GetChains(), act.GetPausedHeight(), act.GetUnstakingHeight()) - if err != nil { - log.Fatalf("an error occurred inserting a service node in the genesis state: %s", err.Error()) - } - if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE_POOL.String(), act.GetStakedAmount()); err != nil { - log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE_POOL.String(), err.Error()) - } - } - for _, act := range state.GetFishermen() { - addrBz, err := hex.DecodeString(act.GetAddress()) - if err != nil { - log.Fatalf("an error occurred converting address to bytes %s", act.GetAddress()) - } - pubKeyBz, err := hex.DecodeString(act.GetPublicKey()) - if err != nil { - log.Fatalf("an error occurred converting pubKey to bytes %s", act.GetPublicKey()) - } - outputBz, err := hex.DecodeString(act.GetOutput()) - if err != nil { - log.Fatalf("an error occurred converting output to bytes %s", act.GetOutput()) - } - err = rwContext.InsertFisherman(addrBz, pubKeyBz, outputBz, false, StakedStatus, act.GetGenericParam(), act.GetStakedAmount(), act.GetChains(), act.GetPausedHeight(), act.GetUnstakingHeight()) - if err != nil { - log.Fatalf("an error occurred inserting a fisherman in the genesis state: %s", err.Error()) - } - if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE_POOL.String(), act.GetStakedAmount()); err != nil { - log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE_POOL.String(), err.Error()) - } + + stakedActorsInsertConfigs := []struct { + Name string + Getter func() []*coreTypes.Actor + InsertFn func(address []byte, publicKey []byte, output []byte, paused bool, status int32, serviceURL string, stakedTokens string, chains []string, pausedHeight int64, unstakingHeight int64) error + Pool coreTypes.PoolNames + }{ + { + Name: "app", + Getter: state.GetApplications, + InsertFn: rwContext.InsertApp, + Pool: coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL, + }, + { + Name: "node", + Getter: state.GetServiceNodes, + InsertFn: rwContext.InsertServiceNode, + Pool: coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE_POOL, + }, + { + Name: "fisherman", + Getter: state.GetFishermen, + InsertFn: rwContext.InsertFisherman, + Pool: coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE_POOL, + }, + { + Name: "validator", + Getter: state.GetValidators, + InsertFn: func(address, publicKey, output []byte, paused bool, status int32, serviceURL, stakedTokens string, chains []string, pausedHeight, unstakingHeight int64) error { + return rwContext.InsertValidator(address, publicKey, output, paused, status, serviceURL, stakedTokens, pausedHeight, unstakingHeight) + }, + Pool: coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL, + }, } - for _, act := range state.GetValidators() { - addrBz, err := hex.DecodeString(act.GetAddress()) - if err != nil { - log.Fatalf("an error occurred converting address to bytes %s", act.GetAddress()) - } - pubKeyBz, err := hex.DecodeString(act.GetPublicKey()) - if err != nil { - log.Fatalf("an error occurred converting pubKey to bytes %s", act.GetPublicKey()) - } - outputBz, err := hex.DecodeString(act.GetOutput()) - if err != nil { - log.Fatalf("an error occurred converting output to bytes %s", act.GetOutput()) - } - err = rwContext.InsertValidator(addrBz, pubKeyBz, outputBz, false, StakedStatus, act.GetGenericParam(), act.GetStakedAmount(), act.GetPausedHeight(), act.GetUnstakingHeight()) - if err != nil { - log.Fatalf("an error occurred inserting a validator in the genesis state: %s", err.Error()) - } - if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL.String(), act.GetStakedAmount()); err != nil { - log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL.String(), err.Error()) + + for _, saic := range stakedActorsInsertConfigs { + for _, act := range saic.Getter() { + addrBz, err := hex.DecodeString(act.GetAddress()) + if err != nil { + log.Fatalf("an error occurred converting address to bytes %s", act.GetAddress()) + } + pubKeyBz, err := hex.DecodeString(act.GetPublicKey()) + if err != nil { + log.Fatalf("an error occurred converting pubKey to bytes %s", act.GetPublicKey()) + } + outputBz, err := hex.DecodeString(act.GetOutput()) + if err != nil { + log.Fatalf("an error occurred converting output to bytes %s", act.GetOutput()) + } + err = saic.InsertFn(addrBz, pubKeyBz, outputBz, false, StakedStatus, act.GetGenericParam(), act.GetStakedAmount(), act.GetChains(), act.GetPausedHeight(), act.GetUnstakingHeight()) + if err != nil { + log.Fatalf("an error occurred inserting an %s in the genesis state: %s", saic.Name, err.Error()) + } + if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String(), act.GetStakedAmount()); err != nil { + log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL, err.Error()) + } } } + // TODO(team): use params from genesis file - not the hardcoded if err = rwContext.InitParams(); err != nil { log.Fatalf("an error occurred initializing params: %s", err.Error()) From 052c491c788a51dbef93b0701ea71ff9b5cd45f2 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 15:35:18 +0000 Subject: [PATCH 035/120] style(persistence): nit --- persistence/actor.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/persistence/actor.go b/persistence/actor.go index d22553f3b..b18f5d9ac 100644 --- a/persistence/actor.go +++ b/persistence/actor.go @@ -6,9 +6,8 @@ import ( ) // TODO (#399): All of the functions below following a structure similar to `GetAll` -// -// can easily be refactored and condensed into a single function using a generic type or a common -// interface. +// can easily be refactored and condensed into a single function using a generic type or a common +// interface. func (p PostgresContext) GetAllApps(height int64) (apps []*coreTypes.Actor, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { From 01a1fb2765edd5e81e39577bde24279dc46b6c04 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 15:36:23 +0000 Subject: [PATCH 036/120] style(persistence): nits --- persistence/genesis.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/persistence/genesis.go b/persistence/genesis.go index 1f0bc5fe5..e86786db3 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -135,9 +135,8 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { } // TODO (#399): All of the functions below following a structure similar to `GetAll` -// -// can easily be refactored and condensed into a single function using a generic type or a common -// interface. +// can easily be refactored and condensed into a single function using a generic type or a common +// interface. func (p PostgresContext) GetAllAccounts(height int64) (accs []*coreTypes.Account, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { From b6d86fd4ee8976dacbe569b000de1d714ac1e15e Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 15:37:50 +0000 Subject: [PATCH 037/120] style(persistence): nits --- persistence/module.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/persistence/module.go b/persistence/module.go index 873a55350..76fb9bb1c 100644 --- a/persistence/module.go +++ b/persistence/module.go @@ -215,8 +215,7 @@ func initializeBlockStore(blockStorePath string) (kvstore.KVStore, error) { } // HACK(olshansky): Simplify and externalize the logic for whether genesis should be populated and -// -// move the if logic out of this file. +// move the if logic out of this file. func (m *persistenceModule) shouldHydrateGenesisDb() (bool, error) { checkContext, err := m.NewReadContext(-1) if err != nil { From 27db5542ddc65678ef8b67e6a454692a5e40bac6 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 15:38:44 +0000 Subject: [PATCH 038/120] style(persistence): nits --- persistence/types/shared_sql.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/persistence/types/shared_sql.go b/persistence/types/shared_sql.go index de5681b8c..c2f98ab6f 100644 --- a/persistence/types/shared_sql.go +++ b/persistence/types/shared_sql.go @@ -100,11 +100,10 @@ func Exists(address string, height int64, tableName string) string { } // Explainer: -// -// (SELECT MAX(height), address FROM %s GROUP BY address) -> -// returns latest/max height for each address -// (height, address) IN (SELECT MAX(height), address FROM %s GROUP BY address) -> -// ensures the query is acting on max height for the addresses +// (SELECT MAX(height), address FROM %s GROUP BY address) -> +// returns latest/max height for each address +// (height, address) IN (SELECT MAX(height), address FROM %s GROUP BY address) -> +// ensures the query is acting on max height for the addresses func readyToUnstake(unstakingHeight int64, tableName string) string { return fmt.Sprintf(` SELECT address, staked_tokens, output_address From 20f862da06cc6f12f9e7e112745bfaaea095cd95 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 15:39:51 +0000 Subject: [PATCH 039/120] style(runtime): nits --- runtime/test_artifacts/generator.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/runtime/test_artifacts/generator.go b/runtime/test_artifacts/generator.go index dcfed9e4b..cb57579fa 100644 --- a/runtime/test_artifacts/generator.go +++ b/runtime/test_artifacts/generator.go @@ -116,8 +116,7 @@ func NewAccounts(n int, privateKeys ...string) (accounts []*coreTypes.Account) { } // TODO: The current implementation of NewActors will have overlapping `ServiceUrl` for different -// -// types of actors which needs to be fixed. +// types of actors which needs to be fixed. func NewActors(actorType typesUtil.ActorType, n int) (actors []*coreTypes.Actor, privateKeys []string) { for i := 0; i < n; i++ { genericParam := getServiceUrl(i + 1) From 7396e81cad938c36fdda522aad7106b349f0cda2 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 17:20:40 +0000 Subject: [PATCH 040/120] docs(runtime): changelog --- runtime/docs/CHANGELOG.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/runtime/docs/CHANGELOG.md b/runtime/docs/CHANGELOG.md index 2478b9279..8fd39e8a8 100644 --- a/runtime/docs/CHANGELOG.md +++ b/runtime/docs/CHANGELOG.md @@ -7,11 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.1] - 2022-12-14 +## [0.0.0.2] - 2022-12-21 + +- Centralized config handling into a `config` package +- Config protos from the various modules are now in the `config` package +- Removed the `BaseConfig` struct +- Removed overlapping parts in `PersistenceGenesisState` and `ConsensusGenesisState` and consolidated under a single `GenesisState` struct +- Updated tests to use the new config and genesis handling +- Introduced a singleton `keyGenerator` capable of generating keys randomly or deterministically (#361) + +## [0.0.0.1] - 2022-12-14 - Added `DefaultP2PMaxMempoolCount` -## [0.0.0] - 2022-09-30 +## [0.0.0.0] - 2022-09-30 ### [#235](https://github.com/pokt-network/pocket/pull/235) Config and genesis handling From f37f02a9b70690a7e375268b8b72ead109ff2348 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 17:31:12 +0000 Subject: [PATCH 041/120] docs(consensus): changelog --- consensus/doc/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/consensus/doc/CHANGELOG.md b/consensus/doc/CHANGELOG.md index 7c4267f40..1c6799122 100644 --- a/consensus/doc/CHANGELOG.md +++ b/consensus/doc/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.14] - 2022-12-21 + +- Updated do use the new centralized config and genesis +- `Actor` is now a shared `struct` instead of an `interface` +- Removed converters between the interfaces and the consensus structs for Validators + ## [0.0.0.13] - 2022-12-14 - Consolidated number of validators in tests in a single constant: `numValidators` From b50bd6a2aa89eff5d055555846cd5d2834e32ae4 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 17:47:01 +0000 Subject: [PATCH 042/120] docs(persistence): changelog --- persistence/docs/CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/persistence/docs/CHANGELOG.md b/persistence/docs/CHANGELOG.md index b18fd21ee..6511f6758 100644 --- a/persistence/docs/CHANGELOG.md +++ b/persistence/docs/CHANGELOG.md @@ -9,6 +9,14 @@ TODO: consolidate `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` ## [Unreleased] +## [0.0.0.10] - 2022-12-21 + +- Updated to use centralized config and genesis +- Updated to use `Account` struct now under `coreTypes` +- Tended for the TODO "// TODO (Andrew) genericize the genesis population logic for actors #149" in `persistence/genesis.go` +- Updated tests to use the new config and genesis handling +- Updated statetest hashes to reflect updated genesis state + ## [0.0.0.9] - 2022-11-08 - Changed the following exported functions to lowercase non-exported functions From 2b04333fbc0081eb396b974bcc23f28b3f3be579 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 17:47:23 +0000 Subject: [PATCH 043/120] =?UTF-8?q?chore(persistence):=20=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- persistence/module.go | 1 - 1 file changed, 1 deletion(-) diff --git a/persistence/module.go b/persistence/module.go index 76fb9bb1c..51f6cb5cc 100644 --- a/persistence/module.go +++ b/persistence/module.go @@ -18,7 +18,6 @@ var ( _ modules.PersistenceModule = &persistenceModule{} _ modules.PersistenceRWContext = &PostgresContext{} - // _ modules.PersistenceGenesisState = &types.PersistenceGenesisState{} ) // TODO: convert address and public key to string not bytes in all account and actor functions From a49a8cd78b9e780a8e15e17f6f6669546f5f90a9 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 17:54:27 +0000 Subject: [PATCH 044/120] chore(utility): spacing --- utility/session.go | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/utility/session.go b/utility/session.go index f04311b45..b6823f3cf 100644 --- a/utility/session.go +++ b/utility/session.go @@ -74,10 +74,9 @@ func (s *session) sessionKey() ([]byte, types.Error) { // uses the current 'world state' to determine the service nodes in the session // 1) get an ordered list of the public keys of service nodes who are: -// - actively staked -// - staked within geo-zone -// - staked for relay-chain -// +// - actively staked +// - staked within geo-zone +// - staked for relay-chain // 2) calls `pseudoRandomSelection(serviceNodes, numberOfNodesPerSession)` func (s *session) findClosestXServiceNodes() []*coreTypes.Actor { // IMPORTANT: @@ -88,10 +87,9 @@ func (s *session) findClosestXServiceNodes() []*coreTypes.Actor { // uses the current 'world state' to determine the fishermen in the session // 1) get an ordered list of the public keys of fishermen who are: -// - actively staked -// - staked within geo-zone -// - staked for relay-chain -// +// - actively staked +// - staked within geo-zone +// - staked for relay-chain // 2) calls `pseudoRandomSelection(fishermen, numberOfFishPerSession)` func (s *session) findClosestYFishermen() []*coreTypes.Actor { // IMPORTANT: @@ -107,8 +105,7 @@ func (s *session) findClosestYFishermen() []*coreTypes.Actor { // FAQ: // Q) why do we hash to find a newKey between every actor selection? // A) pseudo-random selection only works if each iteration is re-randomized -// -// or it would be subject to lexicographical proximity bias attacks +// or it would be subject to lexicographical proximity bias attacks func (s *session) pseudoRandomSelection(orderedListOfPublicKeys []string, numberOfActorsInSession int) []*coreTypes.Actor { // IMPORTANT: // THIS IS A DEMONSTRABLE FUNCTION THAT WILL NOT BE IMPLEMENTED AS SUCH From cf55682c963b109ce32ec1bd8c2a8acac419363b Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 17:56:39 +0000 Subject: [PATCH 045/120] docs(utility): changelog --- utility/doc/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/utility/doc/CHANGELOG.md b/utility/doc/CHANGELOG.md index 563e73c91..a5e6c899a 100644 --- a/utility/doc/CHANGELOG.md +++ b/utility/doc/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.14] - 2022-12-21 + +- Updated to use the new centralized config and genesis handling +- Updated to use the new `Actor` struct under `coreTypes` +- Updated tests and mocks + ## [0.0.0.13] - 2022-12-10 - Introduce `SetProposalBlock` and local vars to keep proposal state From 285932ff34385052daf3e7b3596f46d19ad8de48 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 18:04:34 +0000 Subject: [PATCH 046/120] docs(P2P): changelog --- p2p/CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/p2p/CHANGELOG.md b/p2p/CHANGELOG.md index a54dfd530..691b8a5b7 100644 --- a/p2p/CHANGELOG.md +++ b/p2p/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.13] - 2022-12-21 + +- Updated to use the new centralized config and genesis handling +- Updated to use the new `Actor` struct under `coreTypes` +- Updated tests and mocks +- Added missing `max_mempool_count` in config (it was causing P2P instabilities in LocalNet) + ## [0.0.0.12] - 2022-12-16 - `ValidatorMapToAddrBook` renamed to `ActorToAddrBook` From 4e2cc7216589c50ca957936318d9656e83b585f1 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 18:04:45 +0000 Subject: [PATCH 047/120] chore(P2P): nits --- p2p/types/addr_book.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/p2p/types/addr_book.go b/p2p/types/addr_book.go index a28f5485a..d0594dc4a 100644 --- a/p2p/types/addr_book.go +++ b/p2p/types/addr_book.go @@ -1,9 +1,9 @@ package types -import coreTypes "github.com/pokt-network/pocket/shared/core/types" - //go:generate mockgen -source=$GOFILE -destination=./mocks/addrbook_provider_mock.go github.com/pokt-network/pocket/p2p/types AddrBookProvider +import coreTypes "github.com/pokt-network/pocket/shared/core/types" + // AddrBook is a way of representing NetworkPeer sets type AddrBook []*NetworkPeer From 829e2ffb9cb1dbf945035e1f64659a30e2be6408 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 18:06:51 +0000 Subject: [PATCH 048/120] docs(RPC): changelog --- rpc/doc/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rpc/doc/CHANGELOG.md b/rpc/doc/CHANGELOG.md index 0e7d19dd4..87c05c268 100644 --- a/rpc/doc/CHANGELOG.md +++ b/rpc/doc/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.4] - 2022-12-21 + +- Updated to use the new centralized config and genesis handling + ## [0.0.0.3] - 2022-12-14 - Updated to use `GetBus()` instead of `bus` wherever possible From a89f218c7c1679ab168d3771d93fa6f088d5093c Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 21 Dec 2022 18:10:36 +0000 Subject: [PATCH 049/120] docs(shared): changelog --- shared/CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/shared/CHANGELOG.md b/shared/CHANGELOG.md index 657e3ccc1..fa3044351 100644 --- a/shared/CHANGELOG.md +++ b/shared/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.7] - 2022-12-21 + +- Updated to use the new centralized config and genesis handling +- Created `Actor` struct under `coreTypes` +- Created `Account` struct under `coreTypes` +- Created `PoolNames` enum under `coreTypes` +- Updated module to use the new `coreTypes` +- Simplified `*Module` interfaces +- Updated tests and mocks + ## [0.0.0.6] - 2022-12-14 - Added `GetMaxMempoolCount` From 9dfafb9e8eddae5a22794094af2fc0fac0c01bdc Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 22:18:04 +0000 Subject: [PATCH 050/120] refactor(consensus): ValidatorMap pointers vs values --- consensus/types/types.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/consensus/types/types.go b/consensus/types/types.go index 532d82194..263ea8862 100644 --- a/consensus/types/types.go +++ b/consensus/types/types.go @@ -12,7 +12,7 @@ type NodeId uint64 type ValAddrToIdMap map[string]NodeId // Mapping from hex encoded address to an integer node id. type IdToValAddrMap map[NodeId]string // Mapping from node id to a hex encoded string address. -type ValidatorMap map[string]coreTypes.Actor +type ValidatorMap map[string]*coreTypes.Actor type ConsensusNodeState struct { NodeId NodeId @@ -45,7 +45,7 @@ func GetValAddrToIdMap(validatorMap ValidatorMap) (ValAddrToIdMap, IdToValAddrMa func ValidatorMapToModulesValidatorMap(validatorMap ValidatorMap) (vm modules.ValidatorMap) { vm = make(modules.ValidatorMap) for _, v := range validatorMap { - vm[v.GetAddress()] = v + vm[v.GetAddress()] = *v } return } @@ -53,7 +53,7 @@ func ValidatorMapToModulesValidatorMap(validatorMap ValidatorMap) (vm modules.Va func ActorListToValidatorMap(actors []*coreTypes.Actor) (m ValidatorMap) { m = make(ValidatorMap, len(actors)) for _, a := range actors { - m[a.GetAddress()] = *a + m[a.GetAddress()] = a } return } From 7cb47dc2b57cfb9875e331e48e532e11cb6c7c86 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 22:33:57 +0000 Subject: [PATCH 051/120] chore(persistence): cleanup --- persistence/types/persistence_genesis.go | 176 ----------------------- 1 file changed, 176 deletions(-) delete mode 100644 persistence/types/persistence_genesis.go diff --git a/persistence/types/persistence_genesis.go b/persistence/types/persistence_genesis.go deleted file mode 100644 index bcfd349df..000000000 --- a/persistence/types/persistence_genesis.go +++ /dev/null @@ -1,176 +0,0 @@ -package types - -// import ( -// "math/big" - -// "github.com/pokt-network/pocket/shared/converters" -// "github.com/pokt-network/pocket/shared/crypto" -// "github.com/pokt-network/pocket/shared/modules" -// ) - -// // var _ modules.PersistenceGenesisState = &PersistenceGenesisState{} - -// // TODO (Research) is there anyway to not have to name these protobuf files uniquely? -// // not a fan of _config/genesis.go would rather just config/genesis.go - -// func (x *PersistenceGenesisState) GetAccs() []modules.Account { -// return accToAccInterface(x.GetAccounts()) -// } - -// func (x *PersistenceGenesisState) GetAccPools() []modules.Account { -// return accToAccInterface(x.GetPools()) -// } - -// func (x *PersistenceGenesisState) GetApps() []modules.Actor { -// return ActorsToActorsInterface(x.GetApplications()) -// } - -// func (x *PersistenceGenesisState) GetVals() []modules.Actor { -// return ActorsToActorsInterface(x.GetValidators()) -// } - -// func (x *PersistenceGenesisState) GetFish() []modules.Actor { -// return ActorsToActorsInterface(x.GetFishermen()) -// } - -// func (x *PersistenceGenesisState) GetNodes() []modules.Actor { -// return ActorsToActorsInterface(x.GetServiceNodes()) -// } - -// func (x *PersistenceGenesisState) GetParameters() modules.Params { -// return x.GetParams() -// } - -// // RESEARCH(olshansky): AFAIK this is the only way to convert slice of structs into interface - O(n) -// // https://stackoverflow.com/questions/12753805/type-converting-slices-of-interfaces -// func ActorsToActorsInterface(a []*Actor) (actorI []modules.Actor) { -// for _, actor := range a { -// actorI = append(actorI, actor) -// } -// return -// } - -// func accToAccInterface(a []*Account) (accI []modules.Account) { -// for _, acc := range a { -// accI = append(accI, acc) -// } -// return -// } - -// var ( -// DefaultParamsOwner, _ = crypto.NewPrivateKey("ff538589deb7f28bbce1ba68b37d2efc0eaa03204b36513cf88422a875559e38d6cbe0430ddd85a5e48e0c99ef3dea47bf0d1a83c6e6ad1640f72201dc8a0120") -// ) - -// func DefaultParams() *Params { // TODO this is just a test / demo artifact and should be deprecated by genesis file -// return &Params{ -// BlocksPerSession: 4, -// AppMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), -// AppMaxChains: 15, -// AppBaselineStakeRate: 100, -// AppStakingAdjustment: 0, -// AppUnstakingBlocks: 2016, -// AppMinimumPauseBlocks: 4, -// AppMaxPauseBlocks: 672, -// ServiceNodeMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), -// ServiceNodeMaxChains: 15, -// ServiceNodeUnstakingBlocks: 2016, -// ServiceNodeMinimumPauseBlocks: 4, -// ServiceNodeMaxPauseBlocks: 672, -// ServiceNodesPerSession: 24, -// FishermanMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), -// FishermanMaxChains: 15, -// FishermanUnstakingBlocks: 2016, -// FishermanMinimumPauseBlocks: 4, -// FishermanMaxPauseBlocks: 672, -// ValidatorMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), -// ValidatorUnstakingBlocks: 2016, -// ValidatorMinimumPauseBlocks: 4, -// ValidatorMaxPauseBlocks: 672, -// ValidatorMaximumMissedBlocks: 5, -// ValidatorMaxEvidenceAgeInBlocks: 8, -// ProposerPercentageOfFees: 10, -// MissedBlocksBurnPercentage: 1, -// DoubleSignBurnPercentage: 5, -// MessageDoubleSignFee: converters.BigIntToString(big.NewInt(10000)), -// MessageSendFee: converters.BigIntToString(big.NewInt(10000)), -// MessageStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), -// MessageEditStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), -// MessageUnstakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), -// MessagePauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), -// MessageUnpauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), -// MessageFishermanPauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), -// MessageTestScoreFee: converters.BigIntToString(big.NewInt(10000)), -// MessageProveTestScoreFee: converters.BigIntToString(big.NewInt(10000)), -// MessageStakeAppFee: converters.BigIntToString(big.NewInt(10000)), -// MessageEditStakeAppFee: converters.BigIntToString(big.NewInt(10000)), -// MessageUnstakeAppFee: converters.BigIntToString(big.NewInt(10000)), -// MessagePauseAppFee: converters.BigIntToString(big.NewInt(10000)), -// MessageUnpauseAppFee: converters.BigIntToString(big.NewInt(10000)), -// MessageStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), -// MessageEditStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), -// MessageUnstakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), -// MessagePauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), -// MessageUnpauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), -// MessageStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), -// MessageEditStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), -// MessageUnstakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), -// MessagePauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), -// MessageUnpauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), -// MessageChangeParameterFee: converters.BigIntToString(big.NewInt(10000)), -// AclOwner: DefaultParamsOwner.Address().String(), -// BlocksPerSessionOwner: DefaultParamsOwner.Address().String(), -// AppMinimumStakeOwner: DefaultParamsOwner.Address().String(), -// AppMaxChainsOwner: DefaultParamsOwner.Address().String(), -// AppBaselineStakeRateOwner: DefaultParamsOwner.Address().String(), -// AppStakingAdjustmentOwner: DefaultParamsOwner.Address().String(), -// AppUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), -// AppMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), -// AppMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), -// ServiceNodeMinimumStakeOwner: DefaultParamsOwner.Address().String(), -// ServiceNodeMaxChainsOwner: DefaultParamsOwner.Address().String(), -// ServiceNodeUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), -// ServiceNodeMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), -// ServiceNodeMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), -// ServiceNodesPerSessionOwner: DefaultParamsOwner.Address().String(), -// FishermanMinimumStakeOwner: DefaultParamsOwner.Address().String(), -// FishermanMaxChainsOwner: DefaultParamsOwner.Address().String(), -// FishermanUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), -// FishermanMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), -// FishermanMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), -// ValidatorMinimumStakeOwner: DefaultParamsOwner.Address().String(), -// ValidatorUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), -// ValidatorMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), -// ValidatorMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), -// ValidatorMaximumMissedBlocksOwner: DefaultParamsOwner.Address().String(), -// ValidatorMaxEvidenceAgeInBlocksOwner: DefaultParamsOwner.Address().String(), -// ProposerPercentageOfFeesOwner: DefaultParamsOwner.Address().String(), -// MissedBlocksBurnPercentageOwner: DefaultParamsOwner.Address().String(), -// DoubleSignBurnPercentageOwner: DefaultParamsOwner.Address().String(), -// MessageDoubleSignFeeOwner: DefaultParamsOwner.Address().String(), -// MessageSendFeeOwner: DefaultParamsOwner.Address().String(), -// MessageStakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), -// MessageEditStakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), -// MessageUnstakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), -// MessagePauseFishermanFeeOwner: DefaultParamsOwner.Address().String(), -// MessageUnpauseFishermanFeeOwner: DefaultParamsOwner.Address().String(), -// MessageFishermanPauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), -// MessageTestScoreFeeOwner: DefaultParamsOwner.Address().String(), -// MessageProveTestScoreFeeOwner: DefaultParamsOwner.Address().String(), -// MessageStakeAppFeeOwner: DefaultParamsOwner.Address().String(), -// MessageEditStakeAppFeeOwner: DefaultParamsOwner.Address().String(), -// MessageUnstakeAppFeeOwner: DefaultParamsOwner.Address().String(), -// MessagePauseAppFeeOwner: DefaultParamsOwner.Address().String(), -// MessageUnpauseAppFeeOwner: DefaultParamsOwner.Address().String(), -// MessageStakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), -// MessageEditStakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), -// MessageUnstakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), -// MessagePauseValidatorFeeOwner: DefaultParamsOwner.Address().String(), -// MessageUnpauseValidatorFeeOwner: DefaultParamsOwner.Address().String(), -// MessageStakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), -// MessageEditStakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), -// MessageUnstakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), -// MessagePauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), -// MessageUnpauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), -// MessageChangeParameterFeeOwner: DefaultParamsOwner.Address().String(), -// } -// } From a09c23456cc845cf9f20c9e597375f1741b4afb5 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 22:36:30 +0000 Subject: [PATCH 052/120] chore(runtime): nits --- runtime/configs/config.go | 2 +- runtime/defaults/params.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/runtime/configs/config.go b/runtime/configs/config.go index 348de9858..9f78e9d1a 100644 --- a/runtime/configs/config.go +++ b/runtime/configs/config.go @@ -2,7 +2,7 @@ package configs type Config struct { RootDirectory string `json:"root_directory"` - PrivateKey string `json:"private_key"` // TODO (#150) better architecture for key management (keybase, keyfiles, etc.) + PrivateKey string `json:"private_key"` // INVESTIGATE(#150): better architecture for key management (keybase, keyfiles, etc.) Consensus *ConsensusConfig `json:"consensus"` Utility *UtilityConfig `json:"utility"` diff --git a/runtime/defaults/params.go b/runtime/defaults/params.go index 91c95e43a..28dbd7b61 100644 --- a/runtime/defaults/params.go +++ b/runtime/defaults/params.go @@ -12,7 +12,8 @@ var ( DefaultParamsOwner, _ = crypto.NewPrivateKey("ff538589deb7f28bbce1ba68b37d2efc0eaa03204b36513cf88422a875559e38d6cbe0430ddd85a5e48e0c99ef3dea47bf0d1a83c6e6ad1640f72201dc8a0120") ) -func DefaultParams() *genesis.Params { // TODO this is just a test / demo artifact and should be deprecated by genesis file +// TODO: These are default parameters for development purposes that need to be overridden by the genesis file in production. +func DefaultParams() *genesis.Params { return &genesis.Params{ BlocksPerSession: 4, AppMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), From 7b576dfdbcd86beca9cfd549cde146f72eb2a0cd Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 22:36:46 +0000 Subject: [PATCH 053/120] chore(runtime): fixed issue reference --- runtime/docs/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/docs/CHANGELOG.md b/runtime/docs/CHANGELOG.md index 8fd39e8a8..6f35c9dfd 100644 --- a/runtime/docs/CHANGELOG.md +++ b/runtime/docs/CHANGELOG.md @@ -14,7 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Removed the `BaseConfig` struct - Removed overlapping parts in `PersistenceGenesisState` and `ConsensusGenesisState` and consolidated under a single `GenesisState` struct - Updated tests to use the new config and genesis handling -- Introduced a singleton `keyGenerator` capable of generating keys randomly or deterministically (#361) +- Introduced a singleton `keyGenerator` capable of generating keys randomly or deterministically (#414) ## [0.0.0.1] - 2022-12-14 From 0a9f151de48d1077c2b9879b6a847e4dbe5a7834 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 22:37:45 +0000 Subject: [PATCH 054/120] chore(core): added todo reference --- shared/core/types/proto/core_actor.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/core/types/proto/core_actor.proto b/shared/core/types/proto/core_actor.proto index 213ecf0cb..6556ed805 100644 --- a/shared/core/types/proto/core_actor.proto +++ b/shared/core/types/proto/core_actor.proto @@ -17,7 +17,7 @@ message Actor { string address = 2; string public_key = 3; repeated string chains = 4; - string generic_param = 5; + string generic_param = 5; // TODO(#313): Generalize `GenericParam` to a different name string staked_amount = 6; int64 paused_height = 7; int64 unstaking_height = 8; From eb685fbfa2315b21bd10911a2c775acd2c7085e6 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 23:32:28 +0000 Subject: [PATCH 055/120] refactor(core): protos using core, utilTypes phased out --- Makefile | 2 +- runtime/genesis/proto/genesis.proto | 4 +-- .../{core_account.proto => account.proto} | 0 .../proto/{core_actor.proto => actor.proto} | 0 ...core_pool_names.proto => pool_names.proto} | 0 utility/types/proto/actor.proto | 31 ------------------- utility/types/proto/message.proto | 10 +++--- utility/types/proto/stake_status.proto | 11 +++++++ 8 files changed, 19 insertions(+), 39 deletions(-) rename shared/core/types/proto/{core_account.proto => account.proto} (100%) rename shared/core/types/proto/{core_actor.proto => actor.proto} (100%) rename shared/core/types/proto/{core_pool_names.proto => pool_names.proto} (100%) delete mode 100644 utility/types/proto/actor.proto create mode 100644 utility/types/proto/stake_status.proto diff --git a/Makefile b/Makefile index a0cef06cd..35c075993 100644 --- a/Makefile +++ b/Makefile @@ -276,7 +276,7 @@ protogen_local: go_protoc-go-inject-tag protoc --go_opt=paths=source_relative -I=./persistence/indexer/proto --go_out=./persistence/indexer ./persistence/indexer/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./shared/ -I=./persistence/proto --go_out=./persistence/types ./persistence/proto/*.proto --experimental_allow_proto3_optional protoc-go-inject-tag -input="./persistence/types/*.pb.go" - protoc --go_opt=paths=source_relative -I=./utility/types/proto --go_out=./utility/types ./utility/types/proto/*.proto --experimental_allow_proto3_optional + protoc --go_opt=paths=source_relative -I=./shared/ -I=./utility/types/proto --go_out=./utility/types ./utility/types/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./consensus/types/proto --go_out=./consensus/types ./consensus/types/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./p2p/raintree/types/proto --go_out=./p2p/types ./p2p/raintree/types/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./runtime/configs/proto --go_out=./runtime/configs ./runtime/configs/proto/*.proto --experimental_allow_proto3_optional diff --git a/runtime/genesis/proto/genesis.proto b/runtime/genesis/proto/genesis.proto index ed108de6c..a556f14b2 100644 --- a/runtime/genesis/proto/genesis.proto +++ b/runtime/genesis/proto/genesis.proto @@ -2,8 +2,8 @@ syntax = "proto3"; package genesis; -import "core/types/proto/core_account.proto"; -import "core/types/proto/core_actor.proto"; +import "core/types/proto/account.proto"; +import "core/types/proto/actor.proto"; import "google/protobuf/timestamp.proto"; option go_package = "github.com/pokt-network/pocket/runtime/genesis"; diff --git a/shared/core/types/proto/core_account.proto b/shared/core/types/proto/account.proto similarity index 100% rename from shared/core/types/proto/core_account.proto rename to shared/core/types/proto/account.proto diff --git a/shared/core/types/proto/core_actor.proto b/shared/core/types/proto/actor.proto similarity index 100% rename from shared/core/types/proto/core_actor.proto rename to shared/core/types/proto/actor.proto diff --git a/shared/core/types/proto/core_pool_names.proto b/shared/core/types/proto/pool_names.proto similarity index 100% rename from shared/core/types/proto/core_pool_names.proto rename to shared/core/types/proto/pool_names.proto diff --git a/utility/types/proto/actor.proto b/utility/types/proto/actor.proto deleted file mode 100644 index 6d3af1653..000000000 --- a/utility/types/proto/actor.proto +++ /dev/null @@ -1,31 +0,0 @@ -syntax = "proto3"; -package utility; - -option go_package = "github.com/pokt-network/pocket/utility/types"; - -// TODO(#258): Follow protobuf best practices -enum PoolNames { - Unspecified = 0; - DAO = 1; - FeeCollector = 2; - AppStakePool = 3; - ValidatorStakePool = 4; - ServiceNodeStakePool = 5; - FishermanStakePool = 6; -} - -enum ActorType { - Undefined = 0; - App = 1; - ServiceNode = 2; - Fisherman = 3; - Validator = 4; -} - - -// DISCUSS: *Design Decision* deprecating StakeStatus -enum StakeStatus { - UnknownStatus = 0; - Unstaking = 1; - Staked = 2; -} \ No newline at end of file diff --git a/utility/types/proto/message.proto b/utility/types/proto/message.proto index 458d05fa4..d61529807 100644 --- a/utility/types/proto/message.proto +++ b/utility/types/proto/message.proto @@ -4,7 +4,7 @@ package utility; option go_package = "github.com/pokt-network/pocket/utility/types"; import "google/protobuf/any.proto"; -import "actor.proto"; +import "core/types/proto/actor.proto"; message MessageSend { bytes from_address = 1; @@ -13,7 +13,7 @@ message MessageSend { } message MessageStake { - ActorType actor_type = 1; + core.ActorType actor_type = 1; bytes public_key = 2; repeated string chains = 3; string amount = 4; @@ -23,7 +23,7 @@ message MessageStake { } message MessageEditStake { - ActorType actor_type = 1; + core.ActorType actor_type = 1; bytes address = 2; repeated string chains = 3; string amount = 4; @@ -32,13 +32,13 @@ message MessageEditStake { } message MessageUnstake { - ActorType actor_type = 1; + core.ActorType actor_type = 1; bytes address = 2; optional bytes signer = 3; } message MessageUnpause { - ActorType actor_type = 1; + core.ActorType actor_type = 1; bytes address = 2; optional bytes signer = 3; } diff --git a/utility/types/proto/stake_status.proto b/utility/types/proto/stake_status.proto new file mode 100644 index 000000000..b060d87f6 --- /dev/null +++ b/utility/types/proto/stake_status.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; +package utility; + +option go_package = "github.com/pokt-network/pocket/utility/types"; + +// DISCUSS: *Design Decision* deprecating StakeStatus +enum StakeStatus { + UnknownStatus = 0; + Unstaking = 1; + Staked = 2; +} \ No newline at end of file From ceb768e28435432bfc03b77cd639ee7becec60cd Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 23:33:14 +0000 Subject: [PATCH 056/120] refactor(CLI): updated to use coreTypes instead of utilTypes --- app/client/cli/actor.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/client/cli/actor.go b/app/client/cli/actor.go index 6661cb532..8697a5538 100644 --- a/app/client/cli/actor.go +++ b/app/client/cli/actor.go @@ -6,6 +6,7 @@ import ( "regexp" "strings" + coreTypes "github.com/pokt-network/pocket/shared/core/types" typesUtil "github.com/pokt-network/pocket/utility/types" "github.com/spf13/cobra" ) @@ -34,17 +35,17 @@ type ( cmdOption func(*cobra.Command) actorCmdDef struct { Name string - ActorType typesUtil.ActorType + ActorType coreTypes.ActorType Options []cmdOption } ) func NewActorCommands(cmdOptions []cmdOption) []*cobra.Command { actorCmdDefs := []actorCmdDef{ - {"Application", typesUtil.ActorType_App, cmdOptions}, - {"Node", typesUtil.ActorType_ServiceNode, cmdOptions}, - {"Fisherman", typesUtil.ActorType_Fisherman, cmdOptions}, - {"Validator", typesUtil.ActorType_Validator, cmdOptions}, + {"Application", coreTypes.ActorType_ACTOR_TYPE_APP, cmdOptions}, + {"Node", coreTypes.ActorType_ACTOR_TYPE_NODE, cmdOptions}, + {"Fisherman", coreTypes.ActorType_ACTOR_TYPE_FISH, cmdOptions}, + {"Validator", coreTypes.ActorType_ACTOR_TYPE_VAL, cmdOptions}, } cmds := make([]*cobra.Command, len(actorCmdDefs)) From 82e463c191f2383192b734e8d6c4281980815185 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 23:33:32 +0000 Subject: [PATCH 057/120] refactor(runtime): updated to use coreTypes instead of utilTypes --- runtime/test_artifacts/generator.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/runtime/test_artifacts/generator.go b/runtime/test_artifacts/generator.go index cb57579fa..d66634297 100644 --- a/runtime/test_artifacts/generator.go +++ b/runtime/test_artifacts/generator.go @@ -11,17 +11,15 @@ import ( "github.com/pokt-network/pocket/runtime/test_artifacts/keygenerator" coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" - "github.com/pokt-network/pocket/utility/types" - typesUtil "github.com/pokt-network/pocket/utility/types" "google.golang.org/protobuf/types/known/timestamppb" ) // IMPROVE: Generate a proper genesis suite in the future. func NewGenesisState(numValidators, numServiceNodes, numApplications, numFisherman int) (*genesis.GenesisState, []string) { - apps, appsPrivateKeys := NewActors(types.ActorType_App, numApplications) - vals, validatorPrivateKeys := NewActors(types.ActorType_Validator, numValidators) - serviceNodes, snPrivateKeys := NewActors(types.ActorType_ServiceNode, numServiceNodes) - fish, fishPrivateKeys := NewActors(types.ActorType_Fisherman, numFisherman) + apps, appsPrivateKeys := NewActors(coreTypes.ActorType_ACTOR_TYPE_APP, numApplications) + vals, validatorPrivateKeys := NewActors(coreTypes.ActorType_ACTOR_TYPE_VAL, numValidators) + serviceNodes, snPrivateKeys := NewActors(coreTypes.ActorType_ACTOR_TYPE_NODE, numServiceNodes) + fish, fishPrivateKeys := NewActors(coreTypes.ActorType_ACTOR_TYPE_FISH, numFisherman) genesisState := &genesis.GenesisState{ GenesisTime: timestamppb.Now(), @@ -116,11 +114,12 @@ func NewAccounts(n int, privateKeys ...string) (accounts []*coreTypes.Account) { } // TODO: The current implementation of NewActors will have overlapping `ServiceUrl` for different -// types of actors which needs to be fixed. -func NewActors(actorType typesUtil.ActorType, n int) (actors []*coreTypes.Actor, privateKeys []string) { +// +// types of actors which needs to be fixed. +func NewActors(actorType coreTypes.ActorType, n int) (actors []*coreTypes.Actor, privateKeys []string) { for i := 0; i < n; i++ { genericParam := getServiceUrl(i + 1) - if int32(actorType) == int32(types.ActorType_App) { + if int32(actorType) == int32(coreTypes.ActorType_ACTOR_TYPE_APP) { genericParam = defaults.DefaultMaxRelaysString } actor, pk := NewDefaultActor(int32(actorType), genericParam) @@ -140,7 +139,7 @@ func NewDefaultActor(actorType int32, genericParam string) (actor *coreTypes.Act chains := defaults.DefaultChains if actorType == int32(coreTypes.ActorType_ACTOR_TYPE_VAL) { chains = nil - } else if actorType == int32(types.ActorType_App) { + } else if actorType == int32(coreTypes.ActorType_ACTOR_TYPE_APP) { genericParam = defaults.DefaultMaxRelaysString } return &coreTypes.Actor{ From 555bdc2abd0a4af72c1f531eaffde3b90cfce8de Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 23:33:56 +0000 Subject: [PATCH 058/120] refactor(core): ActorType.GetName() --- shared/core/types/actor.go | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 shared/core/types/actor.go diff --git a/shared/core/types/actor.go b/shared/core/types/actor.go new file mode 100644 index 000000000..9fabc6176 --- /dev/null +++ b/shared/core/types/actor.go @@ -0,0 +1,5 @@ +package types + +func (a ActorType) GetName() string { + return ActorType_name[int32(a)] +} From b8b667489c4ac4f639ce719a600bb03b79a36530 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 23:34:23 +0000 Subject: [PATCH 059/120] refactor(utility): updated to use coreTypes instead of utilTypes --- utility/actor.go | 150 ++++++++++++++++--------------- utility/block.go | 45 +++++----- utility/gov.go | 35 ++++---- utility/test/actor_test.go | 92 +++++++++---------- utility/test/block_test.go | 8 +- utility/test/module_test.go | 11 +-- utility/test/transaction_test.go | 3 +- utility/transaction.go | 25 +++--- utility/types/actor.go | 5 -- utility/types/message.go | 33 +++---- utility/types/message_test.go | 5 +- 11 files changed, 208 insertions(+), 204 deletions(-) delete mode 100644 utility/types/actor.go diff --git a/utility/actor.go b/utility/actor.go index 878280ed8..3f84b6333 100644 --- a/utility/actor.go +++ b/utility/actor.go @@ -4,6 +4,7 @@ import ( "math" "math/big" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" typesUtil "github.com/pokt-network/pocket/utility/types" ) @@ -21,18 +22,18 @@ import ( // setters -func (u *UtilityContext) SetActorStakedTokens(actorType typesUtil.ActorType, tokens *big.Int, address []byte) typesUtil.Error { +func (u *UtilityContext) SetActorStakedTokens(actorType coreTypes.ActorType, tokens *big.Int, address []byte) typesUtil.Error { store := u.Store() var er error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: er = store.SetAppStakeAmount(address, typesUtil.BigIntToString(tokens)) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: er = store.SetFishermanStakeAmount(address, typesUtil.BigIntToString(tokens)) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: er = store.SetServiceNodeStakeAmount(address, typesUtil.BigIntToString(tokens)) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: er = store.SetValidatorStakeAmount(address, typesUtil.BigIntToString(tokens)) default: er = typesUtil.ErrUnknownActorType(actorType.String()) @@ -45,18 +46,18 @@ func (u *UtilityContext) SetActorStakedTokens(actorType typesUtil.ActorType, tok return nil } -func (u *UtilityContext) SetActorUnstaking(actorType typesUtil.ActorType, unstakingHeight int64, address []byte) typesUtil.Error { +func (u *UtilityContext) SetActorUnstaking(actorType coreTypes.ActorType, unstakingHeight int64, address []byte) typesUtil.Error { store := u.Store() var er error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: er = store.SetAppUnstakingHeightAndStatus(address, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: er = store.SetFishermanUnstakingHeightAndStatus(address, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: er = store.SetServiceNodeUnstakingHeightAndStatus(address, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: er = store.SetValidatorUnstakingHeightAndStatus(address, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) default: er = typesUtil.ErrUnknownActorType(actorType.String()) @@ -69,18 +70,18 @@ func (u *UtilityContext) SetActorUnstaking(actorType typesUtil.ActorType, unstak return nil } -func (u *UtilityContext) SetActorPauseHeight(actorType typesUtil.ActorType, address []byte, height int64) typesUtil.Error { +func (u *UtilityContext) SetActorPauseHeight(actorType coreTypes.ActorType, address []byte, height int64) typesUtil.Error { store := u.Store() var err error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: err = store.SetAppPauseHeight(address, height) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: err = store.SetFishermanPauseHeight(address, height) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: err = store.SetServiceNodePauseHeight(address, height) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: err = store.SetValidatorPauseHeight(address, height) default: err = typesUtil.ErrUnknownActorType(actorType.String()) @@ -95,7 +96,7 @@ func (u *UtilityContext) SetActorPauseHeight(actorType typesUtil.ActorType, addr // getters -func (u *UtilityContext) GetActorStakedTokens(actorType typesUtil.ActorType, address []byte) (*big.Int, typesUtil.Error) { +func (u *UtilityContext) GetActorStakedTokens(actorType coreTypes.ActorType, address []byte) (*big.Int, typesUtil.Error) { store, height, err := u.GetStoreAndHeight() if err != nil { return nil, err @@ -104,13 +105,13 @@ func (u *UtilityContext) GetActorStakedTokens(actorType typesUtil.ActorType, add var stakedTokens string var er error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: stakedTokens, er = store.GetAppStakeAmount(height, address) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: stakedTokens, er = store.GetFishermanStakeAmount(height, address) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: stakedTokens, er = store.GetServiceNodeStakeAmount(height, address) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: stakedTokens, er = store.GetValidatorStakeAmount(height, address) default: er = typesUtil.ErrUnknownActorType(actorType.String()) @@ -128,7 +129,7 @@ func (u *UtilityContext) GetActorStakedTokens(actorType typesUtil.ActorType, add return i, nil } -func (u *UtilityContext) GetMaxPausedBlocks(actorType typesUtil.ActorType) (maxPausedBlocks int, err typesUtil.Error) { +func (u *UtilityContext) GetMaxPausedBlocks(actorType coreTypes.ActorType) (maxPausedBlocks int, err typesUtil.Error) { store, height, err := u.GetStoreAndHeight() if err != nil { return 0, err @@ -136,13 +137,13 @@ func (u *UtilityContext) GetMaxPausedBlocks(actorType typesUtil.ActorType) (maxP var paramName string switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: paramName = typesUtil.AppMaxPauseBlocksParamName - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: paramName = typesUtil.FishermanMaxPauseBlocksParamName - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: paramName = typesUtil.ServiceNodeMaxPauseBlocksParamName - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: paramName = typesUtil.ValidatorMaxPausedBlocksParamName default: return 0, typesUtil.ErrUnknownActorType(actorType.String()) @@ -157,7 +158,7 @@ func (u *UtilityContext) GetMaxPausedBlocks(actorType typesUtil.ActorType) (maxP return } -func (u *UtilityContext) GetMinimumPauseBlocks(actorType typesUtil.ActorType) (minPauseBlocks int, err typesUtil.Error) { +func (u *UtilityContext) GetMinimumPauseBlocks(actorType coreTypes.ActorType) (minPauseBlocks int, err typesUtil.Error) { store, height, err := u.GetStoreAndHeight() if err != nil { return 0, err @@ -165,13 +166,13 @@ func (u *UtilityContext) GetMinimumPauseBlocks(actorType typesUtil.ActorType) (m var paramName string switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: paramName = typesUtil.AppMinimumPauseBlocksParamName - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: paramName = typesUtil.FishermanMinimumPauseBlocksParamName - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: paramName = typesUtil.ServiceNodeMinimumPauseBlocksParamName - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: paramName = typesUtil.ValidatorMinimumPauseBlocksParamName default: return 0, typesUtil.ErrUnknownActorType(actorType.String()) @@ -185,7 +186,7 @@ func (u *UtilityContext) GetMinimumPauseBlocks(actorType typesUtil.ActorType) (m return } -func (u *UtilityContext) GetPauseHeight(actorType typesUtil.ActorType, address []byte) (pauseHeight int64, err typesUtil.Error) { +func (u *UtilityContext) GetPauseHeight(actorType coreTypes.ActorType, address []byte) (pauseHeight int64, err typesUtil.Error) { store, height, err := u.GetStoreAndHeight() if err != nil { return 0, err @@ -193,13 +194,13 @@ func (u *UtilityContext) GetPauseHeight(actorType typesUtil.ActorType, address [ var er error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: pauseHeight, er = store.GetAppPauseHeightIfExists(address, height) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: pauseHeight, er = store.GetFishermanPauseHeightIfExists(address, height) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: pauseHeight, er = store.GetServiceNodePauseHeightIfExists(address, height) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: pauseHeight, er = store.GetValidatorPauseHeightIfExists(address, height) default: er = typesUtil.ErrUnknownActorType(actorType.String()) @@ -212,7 +213,7 @@ func (u *UtilityContext) GetPauseHeight(actorType typesUtil.ActorType, address [ return } -func (u *UtilityContext) GetActorStatus(actorType typesUtil.ActorType, address []byte) (status int32, err typesUtil.Error) { +func (u *UtilityContext) GetActorStatus(actorType coreTypes.ActorType, address []byte) (status int32, err typesUtil.Error) { store, height, err := u.GetStoreAndHeight() if err != nil { return 0, err @@ -220,13 +221,13 @@ func (u *UtilityContext) GetActorStatus(actorType typesUtil.ActorType, address [ var er error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: status, er = store.GetAppStatus(address, height) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: status, er = store.GetFishermanStatus(address, height) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: status, er = store.GetServiceNodeStatus(address, height) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: status, er = store.GetValidatorStatus(address, height) default: er = typesUtil.ErrUnknownActorType(actorType.String()) @@ -239,7 +240,7 @@ func (u *UtilityContext) GetActorStatus(actorType typesUtil.ActorType, address [ return status, nil } -func (u *UtilityContext) GetMinimumStake(actorType typesUtil.ActorType) (*big.Int, typesUtil.Error) { +func (u *UtilityContext) GetMinimumStake(actorType coreTypes.ActorType) (*big.Int, typesUtil.Error) { store, height, err := u.GetStoreAndHeight() if err != nil { return nil, err @@ -247,13 +248,13 @@ func (u *UtilityContext) GetMinimumStake(actorType typesUtil.ActorType) (*big.In var paramName string switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: paramName = typesUtil.AppMinimumStakeParamName - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: paramName = typesUtil.FishermanMinimumStakeParamName - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: paramName = typesUtil.ServiceNodeMinimumStakeParamName - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: paramName = typesUtil.ValidatorMinimumStakeParamName default: return nil, typesUtil.ErrUnknownActorType(actorType.String()) @@ -267,7 +268,7 @@ func (u *UtilityContext) GetMinimumStake(actorType typesUtil.ActorType) (*big.In return typesUtil.StringToBigInt(minStake) } -func (u *UtilityContext) GetStakeAmount(actorType typesUtil.ActorType, address []byte) (*big.Int, typesUtil.Error) { +func (u *UtilityContext) GetStakeAmount(actorType coreTypes.ActorType, address []byte) (*big.Int, typesUtil.Error) { var stakeAmount string store, height, er := u.GetStoreAndHeight() if er != nil { @@ -276,13 +277,13 @@ func (u *UtilityContext) GetStakeAmount(actorType typesUtil.ActorType, address [ var err error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: stakeAmount, err = store.GetAppStakeAmount(height, address) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: stakeAmount, err = store.GetFishermanStakeAmount(height, address) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: stakeAmount, err = store.GetServiceNodeStakeAmount(height, address) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: stakeAmount, err = store.GetValidatorStakeAmount(height, address) default: err = typesUtil.ErrUnknownActorType(actorType.String()) @@ -295,7 +296,7 @@ func (u *UtilityContext) GetStakeAmount(actorType typesUtil.ActorType, address [ return typesUtil.StringToBigInt(stakeAmount) } -func (u *UtilityContext) GetUnstakingHeight(actorType typesUtil.ActorType) (unstakingHeight int64, err typesUtil.Error) { +func (u *UtilityContext) GetUnstakingHeight(actorType coreTypes.ActorType) (unstakingHeight int64, err typesUtil.Error) { store, height, err := u.GetStoreAndHeight() if err != nil { return 0, err @@ -304,13 +305,13 @@ func (u *UtilityContext) GetUnstakingHeight(actorType typesUtil.ActorType) (unst var paramName string var unstakingBlocks int switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: paramName = typesUtil.AppUnstakingBlocksParamName - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: paramName = typesUtil.FishermanUnstakingBlocksParamName - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: paramName = typesUtil.ServiceNodeUnstakingBlocksParamName - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: paramName = typesUtil.ValidatorUnstakingBlocksParamName default: return 0, typesUtil.ErrUnknownActorType(actorType.String()) @@ -325,7 +326,7 @@ func (u *UtilityContext) GetUnstakingHeight(actorType typesUtil.ActorType) (unst return u.CalculateUnstakingHeight(int64(unstakingBlocks)) } -func (u *UtilityContext) GetMaxChains(actorType typesUtil.ActorType) (maxChains int, err typesUtil.Error) { +func (u *UtilityContext) GetMaxChains(actorType coreTypes.ActorType) (maxChains int, err typesUtil.Error) { store, height, err := u.GetStoreAndHeight() if err != nil { return 0, err @@ -333,11 +334,11 @@ func (u *UtilityContext) GetMaxChains(actorType typesUtil.ActorType) (maxChains var paramName string switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: paramName = typesUtil.AppMaxChainsParamName - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: paramName = typesUtil.FishermanMaxChainsParamName - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: paramName = typesUtil.ServiceNodeMaxChainsParamName default: return 0, typesUtil.ErrUnknownActorType(actorType.String()) @@ -352,7 +353,7 @@ func (u *UtilityContext) GetMaxChains(actorType typesUtil.ActorType) (maxChains return } -func (u *UtilityContext) GetActorExists(actorType typesUtil.ActorType, address []byte) (bool, typesUtil.Error) { +func (u *UtilityContext) GetActorExists(actorType coreTypes.ActorType, address []byte) (bool, typesUtil.Error) { store, height, er := u.GetStoreAndHeight() if er != nil { return false, er @@ -361,13 +362,13 @@ func (u *UtilityContext) GetActorExists(actorType typesUtil.ActorType, address [ var exists bool var err error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: exists, err = store.GetAppExists(address, height) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: exists, err = store.GetFishermanExists(address, height) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: exists, err = store.GetServiceNodeExists(address, height) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: exists, err = store.GetValidatorExists(address, height) default: return false, typesUtil.ErrUnknownActorType(actorType.String()) @@ -380,7 +381,7 @@ func (u *UtilityContext) GetActorExists(actorType typesUtil.ActorType, address [ return exists, nil } -func (u *UtilityContext) GetActorOutputAddress(actorType typesUtil.ActorType, operator []byte) (output []byte, err typesUtil.Error) { +func (u *UtilityContext) GetActorOutputAddress(actorType coreTypes.ActorType, operator []byte) (output []byte, err typesUtil.Error) { store, height, err := u.GetStoreAndHeight() if err != nil { return nil, err @@ -388,13 +389,13 @@ func (u *UtilityContext) GetActorOutputAddress(actorType typesUtil.ActorType, op var er error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: output, er = store.GetAppOutputAddress(operator, height) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: output, er = store.GetFishermanOutputAddress(operator, height) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: output, er = store.GetServiceNodeOutputAddress(operator, height) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: output, er = store.GetValidatorOutputAddress(operator, height) default: er = typesUtil.ErrUnknownActorType(actorType.String()) @@ -409,7 +410,7 @@ func (u *UtilityContext) GetActorOutputAddress(actorType typesUtil.ActorType, op // calculators -func (u *UtilityContext) BurnActor(actorType typesUtil.ActorType, percentage int, address []byte) typesUtil.Error { +func (u *UtilityContext) BurnActor(actorType coreTypes.ActorType, percentage int, address []byte) typesUtil.Error { tokens, err := u.GetActorStakedTokens(actorType, address) if err != nil { return err @@ -424,7 +425,7 @@ func (u *UtilityContext) BurnActor(actorType typesUtil.ActorType, percentage int } newTokensAfterBurn := big.NewInt(0).Sub(tokens, truncatedTokens) // remove from pool - if err := u.SubPoolAmount(typesUtil.PoolNames_ValidatorStakePool.String(), typesUtil.BigIntToString(truncatedTokens)); err != nil { + if err := u.SubPoolAmount(coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL.String(), typesUtil.BigIntToString(truncatedTokens)); err != nil { return err } // remove from actor @@ -487,7 +488,7 @@ func (u *UtilityContext) CalculateAppRelays(stakedTokens string) (string, typesU return typesUtil.BigIntToString(result), nil } -func (u *UtilityContext) CheckAboveMinStake(actorType typesUtil.ActorType, amount string) (a *big.Int, err typesUtil.Error) { +func (u *UtilityContext) CheckAboveMinStake(actorType coreTypes.ActorType, amount string) (a *big.Int, err typesUtil.Error) { minStake, er := u.GetMinimumStake(actorType) if er != nil { return nil, er @@ -502,9 +503,10 @@ func (u *UtilityContext) CheckAboveMinStake(actorType typesUtil.ActorType, amoun return // for convenience this returns amount as a big.Int } -func (u *UtilityContext) CheckBelowMaxChains(actorType typesUtil.ActorType, chains []string) typesUtil.Error { +func (u *UtilityContext) CheckBelowMaxChains(actorType coreTypes.ActorType, chains []string) typesUtil.Error { // validators don't have chains field - if actorType == typesUtil.ActorType_Validator { + + if actorType == coreTypes.ActorType_ACTOR_TYPE_VAL { return nil } diff --git a/utility/block.go b/utility/block.go index a97b2cdbb..7efc18683 100644 --- a/utility/block.go +++ b/utility/block.go @@ -4,6 +4,7 @@ import ( "log" "math/big" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/modules" typesUtil "github.com/pokt-network/pocket/utility/types" ) @@ -193,7 +194,7 @@ func (u *UtilityContext) HandleByzantineValidators(lastBlockByzantineValidators if err != nil { return err } - if err = u.BurnActor(typesUtil.ActorType_Validator, burnPercentage, address); err != nil { + if err = u.BurnActor(coreTypes.ActorType_ACTOR_TYPE_VAL, burnPercentage, address); err != nil { return err } } else if err := u.SetValidatorMissedBlocks(address, numberOfMissedBlocks); err != nil { @@ -210,24 +211,24 @@ func (u *UtilityContext) UnstakeActorsThatAreReady() (err typesUtil.Error) { if err != nil { return err } - for _, actorTypeInt32 := range typesUtil.ActorType_value { + for _, actorTypeInt32 := range coreTypes.ActorType_value { var readyToUnstake []modules.IUnstakingActor - actorType := typesUtil.ActorType(actorTypeInt32) + actorType := coreTypes.ActorType(actorTypeInt32) var poolName string switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: readyToUnstake, er = store.GetAppsReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = typesUtil.PoolNames_AppStakePool.String() - case typesUtil.ActorType_Fisherman: + poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String() + case coreTypes.ActorType_ACTOR_TYPE_FISH: readyToUnstake, er = store.GetFishermenReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = typesUtil.PoolNames_FishermanStakePool.String() - case typesUtil.ActorType_ServiceNode: + poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE_POOL.String() + case coreTypes.ActorType_ACTOR_TYPE_NODE: readyToUnstake, er = store.GetServiceNodesReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = typesUtil.PoolNames_ServiceNodeStakePool.String() - case typesUtil.ActorType_Validator: + poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE_POOL.String() + case coreTypes.ActorType_ACTOR_TYPE_VAL: readyToUnstake, er = store.GetValidatorsReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = typesUtil.PoolNames_ValidatorStakePool.String() - case typesUtil.ActorType_Undefined: + poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL.String() + case coreTypes.ActorType_ACTOR_TYPE_UNSPECIFIED: continue } if er != nil { @@ -250,9 +251,9 @@ func (u *UtilityContext) BeginUnstakingMaxPaused() (err typesUtil.Error) { if err != nil { return err } - for _, actorTypeInt32 := range typesUtil.ActorType_value { - actorType := typesUtil.ActorType(actorTypeInt32) - if actorType == typesUtil.ActorType_Undefined { + for _, actorTypeInt32 := range coreTypes.ActorType_value { + actorType := coreTypes.ActorType(actorTypeInt32) + if actorType == coreTypes.ActorType_ACTOR_TYPE_UNSPECIFIED { continue } maxPausedBlocks, err := u.GetMaxPausedBlocks(actorType) @@ -271,7 +272,7 @@ func (u *UtilityContext) BeginUnstakingMaxPaused() (err typesUtil.Error) { return nil } -func (u *UtilityContext) UnstakeActorPausedBefore(pausedBeforeHeight int64, ActorType typesUtil.ActorType) (err typesUtil.Error) { +func (u *UtilityContext) UnstakeActorPausedBefore(pausedBeforeHeight int64, ActorType coreTypes.ActorType) (err typesUtil.Error) { var er error store := u.Store() unstakingHeight, err := u.GetUnstakingHeight(ActorType) @@ -279,13 +280,13 @@ func (u *UtilityContext) UnstakeActorPausedBefore(pausedBeforeHeight int64, Acto return err } switch ActorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: er = store.SetAppStatusAndUnstakingHeightIfPausedBefore(pausedBeforeHeight, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: er = store.SetFishermanStatusAndUnstakingHeightIfPausedBefore(pausedBeforeHeight, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: er = store.SetServiceNodeStatusAndUnstakingHeightIfPausedBefore(pausedBeforeHeight, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: er = store.SetValidatorsStatusAndUnstakingHeightIfPausedBefore(pausedBeforeHeight, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) } if er != nil { @@ -295,7 +296,7 @@ func (u *UtilityContext) UnstakeActorPausedBefore(pausedBeforeHeight int64, Acto } func (u *UtilityContext) HandleProposalRewards(proposer []byte) typesUtil.Error { - feePoolName := typesUtil.PoolNames_FeeCollector.String() + feePoolName := coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.String() feesAndRewardsCollected, err := u.GetPoolAmount(feePoolName) if err != nil { return err @@ -319,7 +320,7 @@ func (u *UtilityContext) HandleProposalRewards(proposer []byte) typesUtil.Error if err = u.AddAccountAmount(proposer, amountToProposer); err != nil { return err } - if err = u.AddPoolAmount(typesUtil.PoolNames_DAO.String(), amountToDAO); err != nil { + if err = u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_DAO.String(), amountToDAO); err != nil { return err } return nil diff --git a/utility/gov.go b/utility/gov.go index f830cc7a9..07ade7f74 100644 --- a/utility/gov.go +++ b/utility/gov.go @@ -4,6 +4,7 @@ import ( "log" "math/big" + coreTypes "github.com/pokt-network/pocket/shared/core/types" typesUtil "github.com/pokt-network/pocket/utility/types" "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -487,7 +488,7 @@ func (u *UtilityContext) GetParamOwner(paramName string) ([]byte, error) { } } -func (u *UtilityContext) GetFee(msg typesUtil.Message, actorType typesUtil.ActorType) (amount *big.Int, err typesUtil.Error) { +func (u *UtilityContext) GetFee(msg typesUtil.Message, actorType coreTypes.ActorType) (amount *big.Int, err typesUtil.Error) { switch x := msg.(type) { case *typesUtil.MessageDoubleSign: return u.GetMessageDoubleSignFee() @@ -495,52 +496,52 @@ func (u *UtilityContext) GetFee(msg typesUtil.Message, actorType typesUtil.Actor return u.GetMessageSendFee() case *typesUtil.MessageStake: switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: return u.GetMessageStakeAppFee() - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: return u.GetMessageStakeFishermanFee() - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: return u.GetMessageStakeServiceNodeFee() - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: return u.GetMessageStakeValidatorFee() default: return nil, typesUtil.ErrUnknownActorType(actorType.String()) } case *typesUtil.MessageEditStake: switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: return u.GetMessageEditStakeAppFee() - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: return u.GetMessageEditStakeFishermanFee() - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: return u.GetMessageEditStakeServiceNodeFee() - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: return u.GetMessageEditStakeValidatorFee() default: return nil, typesUtil.ErrUnknownActorType(actorType.String()) } case *typesUtil.MessageUnstake: switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: return u.GetMessageUnstakeAppFee() - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: return u.GetMessageUnstakeFishermanFee() - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: return u.GetMessageUnstakeServiceNodeFee() - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: return u.GetMessageUnstakeValidatorFee() default: return nil, typesUtil.ErrUnknownActorType(actorType.String()) } case *typesUtil.MessageUnpause: switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: return u.GetMessageUnpauseAppFee() - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: return u.GetMessageUnpauseFishermanFee() - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: return u.GetMessageUnpauseServiceNodeFee() - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: return u.GetMessageUnpauseValidatorFee() default: return nil, typesUtil.ErrUnknownActorType(actorType.String()) diff --git a/utility/test/actor_test.go b/utility/test/actor_test.go index 752d00846..64065ef3e 100644 --- a/utility/test/actor_test.go +++ b/utility/test/actor_test.go @@ -51,7 +51,7 @@ func TestUtilityContext_HandleMessageStake(t *testing.T) { actor := getActorByAddr(t, ctx, actorType, pubKey.Address().String()) require.Equal(t, actor.GetAddress(), pubKey.Address().String(), "incorrect actor address") - if actorType != typesUtil.ActorType_Validator { + if actorType != coreTypes.ActorType_ACTOR_TYPE_VAL { require.Equal(t, msg.Chains, actor.GetChains(), "incorrect actor chains") } require.Equal(t, typesUtil.HeightNotUsed, actor.GetPausedHeight(), "incorrect actor height") @@ -88,7 +88,7 @@ func TestUtilityContext_HandleMessageEditStake(t *testing.T) { require.NoError(t, err, "handle edit stake message") actor = getActorByAddr(t, ctx, actorType, addr) - if actorType != typesUtil.ActorType_Validator { + if actorType != coreTypes.ActorType_ACTOR_TYPE_VAL { require.Equal(t, msgChainsEdited.Chains, actor.GetChains(), "incorrect edited chains") } require.Equal(t, defaults.DefaultStakeAmountString, actor.GetStakedAmount(), "incorrect staked tokens") @@ -114,13 +114,13 @@ func TestUtilityContext_HandleMessageUnpause(t *testing.T) { var err error switch actorType { - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: err = ctx.Context.SetParam(typesUtil.ValidatorMinimumPauseBlocksParamName, 0) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: err = ctx.Context.SetParam(typesUtil.ServiceNodeMinimumPauseBlocksParamName, 0) - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: err = ctx.Context.SetParam(typesUtil.AppMinimumPauseBlocksParamName, 0) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: err = ctx.Context.SetParam(typesUtil.FishermanMinimumPauseBlocksParamName, 0) default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -162,13 +162,13 @@ func TestUtilityContext_HandleMessageUnstake(t *testing.T) { var err error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: err = ctx.Context.SetParam(typesUtil.AppMinimumPauseBlocksParamName, 0) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: err = ctx.Context.SetParam(typesUtil.ValidatorMinimumPauseBlocksParamName, 0) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: err = ctx.Context.SetParam(typesUtil.FishermanMinimumPauseBlocksParamName, 0) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: err = ctx.Context.SetParam(typesUtil.ServiceNodeMinimumPauseBlocksParamName, 0) default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -207,13 +207,13 @@ func TestUtilityContext_BeginUnstakingMaxPaused(t *testing.T) { require.NoError(t, err) switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: err = ctx.Context.SetParam(typesUtil.AppMaxPauseBlocksParamName, 0) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: err = ctx.Context.SetParam(typesUtil.ValidatorMaxPausedBlocksParamName, 0) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: err = ctx.Context.SetParam(typesUtil.FishermanMaxPauseBlocksParamName, 0) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: err = ctx.Context.SetParam(typesUtil.ServiceNodeMaxPauseBlocksParamName, 0) default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -237,7 +237,7 @@ func TestUtilityContext_BeginUnstakingMaxPaused(t *testing.T) { func TestUtilityContext_CalculateMaxAppRelays(t *testing.T) { ctx := NewTestingUtilityContext(t, 1) - actor := getFirstActor(t, ctx, typesUtil.ActorType_App) + actor := getFirstActor(t, ctx, coreTypes.ActorType_ACTOR_TYPE_APP) newMaxRelays, err := ctx.CalculateAppRelays(actor.GetStakedAmount()) require.NoError(t, err) require.Equal(t, actor.GetGenericParam(), newMaxRelays) @@ -251,13 +251,13 @@ func TestUtilityContext_CalculateUnstakingHeight(t *testing.T) { var unstakingBlocks int64 var err error switch actorType { - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: unstakingBlocks, err = ctx.GetValidatorUnstakingBlocks() - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: unstakingBlocks, err = ctx.GetServiceNodeUnstakingBlocks() - case actorType: + case coreTypes.ActorType_ACTOR_TYPE_APP: unstakingBlocks, err = ctx.GetAppUnstakingBlocks() - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: unstakingBlocks, err = ctx.GetFishermanUnstakingBlocks() default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -438,13 +438,13 @@ func TestUtilityContext_UnstakePausedBefore(t *testing.T) { var er error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: er = ctx.Context.SetParam(typesUtil.AppMaxPauseBlocksParamName, 0) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: er = ctx.Context.SetParam(typesUtil.ValidatorMaxPausedBlocksParamName, 0) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: er = ctx.Context.SetParam(typesUtil.FishermanMaxPauseBlocksParamName, 0) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: er = ctx.Context.SetParam(typesUtil.ServiceNodeMaxPauseBlocksParamName, 0) default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -462,13 +462,13 @@ func TestUtilityContext_UnstakePausedBefore(t *testing.T) { var unstakingBlocks int64 switch actorType { - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: unstakingBlocks, err = ctx.GetValidatorUnstakingBlocks() - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: unstakingBlocks, err = ctx.GetServiceNodeUnstakingBlocks() - case actorType: + case coreTypes.ActorType_ACTOR_TYPE_APP: unstakingBlocks, err = ctx.GetAppUnstakingBlocks() - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: unstakingBlocks, err = ctx.GetFishermanUnstakingBlocks() default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -488,14 +488,14 @@ func TestUtilityContext_UnstakeActorsThatAreReady(t *testing.T) { var poolName string switch actorType { - case typesUtil.ActorType_App: - poolName = typesUtil.PoolNames_AppStakePool.String() - case typesUtil.ActorType_Validator: - poolName = typesUtil.PoolNames_ValidatorStakePool.String() - case typesUtil.ActorType_Fisherman: - poolName = typesUtil.PoolNames_FishermanStakePool.String() - case typesUtil.ActorType_ServiceNode: - poolName = typesUtil.PoolNames_ServiceNodeStakePool.String() + case coreTypes.ActorType_ACTOR_TYPE_APP: + poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String() + case coreTypes.ActorType_ACTOR_TYPE_VAL: + poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL.String() + case coreTypes.ActorType_ACTOR_TYPE_FISH: + poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE_POOL.String() + case coreTypes.ActorType_ACTOR_TYPE_NODE: + poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE_POOL.String() default: t.Fatalf("unexpected actor type %s", actorType.String()) } @@ -540,13 +540,13 @@ func TestUtilityContext_BeginUnstakingMaxPausedActors(t *testing.T) { var err error switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: err = ctx.Context.SetParam(typesUtil.AppMaxPauseBlocksParamName, 0) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: err = ctx.Context.SetParam(typesUtil.ValidatorMaxPausedBlocksParamName, 0) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: err = ctx.Context.SetParam(typesUtil.FishermanMaxPauseBlocksParamName, 0) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: err = ctx.Context.SetParam(typesUtil.ServiceNodeMaxPauseBlocksParamName, 0) default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -572,25 +572,25 @@ func TestUtilityContext_BeginUnstakingMaxPausedActors(t *testing.T) { // Helpers -func getAllTestingActors(t *testing.T, ctx utility.UtilityContext, actorType typesUtil.ActorType) (actors []*coreTypes.Actor) { +func getAllTestingActors(t *testing.T, ctx utility.UtilityContext, actorType coreTypes.ActorType) (actors []*coreTypes.Actor) { actors = make([]*coreTypes.Actor, 0) switch actorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: apps := getAllTestingApps(t, ctx) for _, a := range apps { actors = append(actors, a) } - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: nodes := getAllTestingNodes(t, ctx) for _, a := range nodes { actors = append(actors, a) } - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: vals := getAllTestingValidators(t, ctx) for _, a := range vals { actors = append(actors, a) } - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: fish := getAllTestingFish(t, ctx) for _, a := range fish { actors = append(actors, a) @@ -602,11 +602,11 @@ func getAllTestingActors(t *testing.T, ctx utility.UtilityContext, actorType typ return } -func getFirstActor(t *testing.T, ctx utility.UtilityContext, actorType typesUtil.ActorType) *coreTypes.Actor { +func getFirstActor(t *testing.T, ctx utility.UtilityContext, actorType coreTypes.ActorType) *coreTypes.Actor { return getAllTestingActors(t, ctx, actorType)[0] } -func getActorByAddr(t *testing.T, ctx utility.UtilityContext, actorType typesUtil.ActorType, addr string) (actor *coreTypes.Actor) { +func getActorByAddr(t *testing.T, ctx utility.UtilityContext, actorType coreTypes.ActorType, addr string) (actor *coreTypes.Actor) { actors := getAllTestingActors(t, ctx, actorType) idx := slices.IndexFunc(actors, func(a *coreTypes.Actor) bool { return a.GetAddress() == addr }) return actors[idx] diff --git a/utility/test/block_test.go b/utility/test/block_test.go index a0394f56a..043cc3d66 100644 --- a/utility/test/block_test.go +++ b/utility/test/block_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/pokt-network/pocket/runtime/test_artifacts" - typesUtil "github.com/pokt-network/pocket/utility/types" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/stretchr/testify/require" ) @@ -17,7 +17,7 @@ func TestUtilityContext_ApplyBlock(t *testing.T) { txBz, er := tx.Bytes() require.NoError(t, er) - proposer := getFirstActor(t, ctx, typesUtil.ActorType_Validator) + proposer := getFirstActor(t, ctx, coreTypes.ActorType_ACTOR_TYPE_VAL) addrBz, err := hex.DecodeString(proposer.GetAddress()) require.NoError(t, err) @@ -68,7 +68,7 @@ func TestUtilityContext_BeginBlock(t *testing.T) { ctx := NewTestingUtilityContext(t, 0) tx, _, _, _ := newTestingTransaction(t, ctx) - proposer := getFirstActor(t, ctx, typesUtil.ActorType_Validator) + proposer := getFirstActor(t, ctx, coreTypes.ActorType_ACTOR_TYPE_VAL) txBz, err := tx.Bytes() require.NoError(t, err) @@ -95,7 +95,7 @@ func TestUtilityContext_EndBlock(t *testing.T) { ctx := NewTestingUtilityContext(t, 0) tx, _, _, _ := newTestingTransaction(t, ctx) - proposer := getFirstActor(t, ctx, typesUtil.ActorType_Validator) + proposer := getFirstActor(t, ctx, coreTypes.ActorType_ACTOR_TYPE_VAL) txBz, err := tx.Bytes() require.NoError(t, err) diff --git a/utility/test/module_test.go b/utility/test/module_test.go index 9b166ba2f..6d2aaafa8 100644 --- a/utility/test/module_test.go +++ b/utility/test/module_test.go @@ -13,6 +13,7 @@ import ( "github.com/pokt-network/pocket/runtime/configs" "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/runtime/test_artifacts" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/messaging" "github.com/pokt-network/pocket/shared/modules" modulesMock "github.com/pokt-network/pocket/shared/modules/mocks" @@ -42,11 +43,11 @@ var ( var testPersistenceMod modules.PersistenceModule // initialized in TestMain var testUtilityMod modules.UtilityModule // initialized in TestMain -var actorTypes = []utilTypes.ActorType{ - utilTypes.ActorType_App, - utilTypes.ActorType_ServiceNode, - utilTypes.ActorType_Fisherman, - utilTypes.ActorType_Validator, +var actorTypes = []coreTypes.ActorType{ + coreTypes.ActorType_ACTOR_TYPE_APP, + coreTypes.ActorType_ACTOR_TYPE_NODE, + coreTypes.ActorType_ACTOR_TYPE_FISH, + coreTypes.ActorType_ACTOR_TYPE_VAL, } func NewTestingMempool(_ *testing.T) utilTypes.Mempool { diff --git a/utility/test/transaction_test.go b/utility/test/transaction_test.go index 7aac18842..4cc4cb833 100644 --- a/utility/test/transaction_test.go +++ b/utility/test/transaction_test.go @@ -8,6 +8,7 @@ import ( "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/runtime/test_artifacts" "github.com/pokt-network/pocket/shared/codec" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/utility" typesUtil "github.com/pokt-network/pocket/utility/types" @@ -101,7 +102,7 @@ func TestUtilityContext_CreateAndApplyBlock(t *testing.T) { ctx := NewTestingUtilityContext(t, 0) tx, _, _, _ := newTestingTransaction(t, ctx) - proposer := getFirstActor(t, ctx, typesUtil.ActorType_Validator) + proposer := getFirstActor(t, ctx, coreTypes.ActorType_ACTOR_TYPE_VAL) txBz, err := tx.Bytes() require.NoError(t, err) require.NoError(t, testUtilityMod.CheckTransaction(txBz)) diff --git a/utility/transaction.go b/utility/transaction.go index 14fd84f55..ee418fb18 100644 --- a/utility/transaction.go +++ b/utility/transaction.go @@ -5,6 +5,7 @@ import ( "encoding/hex" "github.com/pokt-network/pocket/shared/codec" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" "github.com/pokt-network/pocket/shared/modules" typesUtil "github.com/pokt-network/pocket/utility/types" @@ -90,7 +91,7 @@ func (u *UtilityContext) AnteHandleMessage(tx *typesUtil.Transaction) (msg types if err := u.SetAccountAmount(address, accountAmount); err != nil { return nil, signer, err } - if err := u.AddPoolAmount(typesUtil.PoolNames_FeeCollector.String(), fee); err != nil { + if err := u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.String(), fee); err != nil { return nil, "", err } msg.SetSigner(address) @@ -183,24 +184,24 @@ func (u *UtilityContext) HandleStakeMessage(message *typesUtil.MessageStake) typ return err } // move funds from account to pool - if err = u.AddPoolAmount(typesUtil.PoolNames_AppStakePool.String(), amount); err != nil { + if err = u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String(), amount); err != nil { return err } var er error store := u.Store() // insert actor switch message.ActorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: maxRelays, err := u.CalculateAppRelays(message.Amount) if err != nil { return err } er = store.InsertApp(publicKey.Address(), publicKey.Bytes(), message.OutputAddress, false, int32(typesUtil.StakeStatus_Staked), maxRelays, message.Amount, message.Chains, typesUtil.HeightNotUsed, typesUtil.HeightNotUsed) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: er = store.InsertFisherman(publicKey.Address(), publicKey.Bytes(), message.OutputAddress, false, int32(typesUtil.StakeStatus_Staked), message.ServiceUrl, message.Amount, message.Chains, typesUtil.HeightNotUsed, typesUtil.HeightNotUsed) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: er = store.InsertServiceNode(publicKey.Address(), publicKey.Bytes(), message.OutputAddress, false, int32(typesUtil.StakeStatus_Staked), message.ServiceUrl, message.Amount, message.Chains, typesUtil.HeightNotUsed, typesUtil.HeightNotUsed) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: er = store.InsertValidator(publicKey.Address(), publicKey.Bytes(), message.OutputAddress, false, int32(typesUtil.StakeStatus_Staked), message.ServiceUrl, message.Amount, typesUtil.HeightNotUsed, typesUtil.HeightNotUsed) } if er != nil { @@ -247,23 +248,23 @@ func (u *UtilityContext) HandleEditStakeMessage(message *typesUtil.MessageEditSt return err } // move funds from account to pool - if err := u.AddPoolAmount(typesUtil.PoolNames_AppStakePool.String(), amount); err != nil { + if err := u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String(), amount); err != nil { return err } store := u.Store() var er error switch message.ActorType { - case typesUtil.ActorType_App: + case coreTypes.ActorType_ACTOR_TYPE_APP: maxRelays, err := u.CalculateAppRelays(message.Amount) if err != nil { return err } er = store.UpdateApp(message.Address, maxRelays, message.Amount, message.Chains) - case typesUtil.ActorType_Fisherman: + case coreTypes.ActorType_ACTOR_TYPE_FISH: er = store.UpdateFisherman(message.Address, message.ServiceUrl, message.Amount, message.Chains) - case typesUtil.ActorType_ServiceNode: + case coreTypes.ActorType_ACTOR_TYPE_NODE: er = store.UpdateServiceNode(message.Address, message.ServiceUrl, message.Amount, message.Chains) - case typesUtil.ActorType_Validator: + case coreTypes.ActorType_ACTOR_TYPE_VAL: er = store.UpdateValidator(message.Address, message.ServiceUrl, message.Amount) } if er != nil { @@ -337,7 +338,7 @@ func (u *UtilityContext) HandleMessageDoubleSign(message *typesUtil.MessageDoubl if err != nil { return err } - if err := u.BurnActor(typesUtil.ActorType_Validator, burnPercentage, doubleSigner); err != nil { + if err := u.BurnActor(coreTypes.ActorType_ACTOR_TYPE_VAL, burnPercentage, doubleSigner); err != nil { return err } return nil diff --git a/utility/types/actor.go b/utility/types/actor.go deleted file mode 100644 index 9fabc6176..000000000 --- a/utility/types/actor.go +++ /dev/null @@ -1,5 +0,0 @@ -package types - -func (a ActorType) GetName() string { - return ActorType_name[int32(a)] -} diff --git a/utility/types/message.go b/utility/types/message.go index 0ea4a3208..7ddda49ec 100644 --- a/utility/types/message.go +++ b/utility/types/message.go @@ -9,6 +9,7 @@ import ( "strings" "github.com/pokt-network/pocket/shared/codec" + coreTypes "github.com/pokt-network/pocket/shared/core/types" cryptoPocket "github.com/pokt-network/pocket/shared/crypto" "google.golang.org/protobuf/proto" ) @@ -44,7 +45,7 @@ type Message interface { SetSigner(signer []byte) ValidateBasic() Error GetCanonicalBytes() []byte - GetActorType() ActorType + GetActorType() coreTypes.ActorType GetMessageName() string GetMessageRecipient() string } @@ -57,8 +58,8 @@ var _ Message = &MessageUnpause{} var _ Message = &MessageChangeParameter{} var _ Message = &MessageDoubleSign{} -func (msg *MessageSend) GetActorType() ActorType { - return ActorType_Undefined // there's no actor type for message send, so return zero to allow fee retrieval +func (msg *MessageSend) GetActorType() coreTypes.ActorType { + return coreTypes.ActorType_ACTOR_TYPE_UNSPECIFIED // there's no actor type for message send, so return zero to allow fee retrieval } func (msg *MessageStake) ValidateBasic() Error { @@ -148,15 +149,15 @@ func (msg *MessageDoubleSign) GetMessageRecipient() string { return "" } func (msg *MessageUnstake) ValidateBasic() Error { return ValidateAddress(msg.Address) } func (msg *MessageUnpause) ValidateBasic() Error { return ValidateAddress(msg.Address) } -func (msg *MessageStake) SetSigner(signer []byte) { msg.Signer = signer } -func (msg *MessageEditStake) SetSigner(signer []byte) { msg.Signer = signer } -func (msg *MessageUnstake) SetSigner(signer []byte) { msg.Signer = signer } -func (msg *MessageUnpause) SetSigner(signer []byte) { msg.Signer = signer } -func (msg *MessageDoubleSign) SetSigner(signer []byte) { msg.ReporterAddress = signer } -func (msg *MessageSend) SetSigner(signer []byte) { /*no op*/ } -func (msg *MessageChangeParameter) SetSigner(signer []byte) { msg.Signer = signer } -func (x *MessageChangeParameter) GetActorType() ActorType { return -1 } -func (x *MessageDoubleSign) GetActorType() ActorType { return -1 } +func (msg *MessageStake) SetSigner(signer []byte) { msg.Signer = signer } +func (msg *MessageEditStake) SetSigner(signer []byte) { msg.Signer = signer } +func (msg *MessageUnstake) SetSigner(signer []byte) { msg.Signer = signer } +func (msg *MessageUnpause) SetSigner(signer []byte) { msg.Signer = signer } +func (msg *MessageDoubleSign) SetSigner(signer []byte) { msg.ReporterAddress = signer } +func (msg *MessageSend) SetSigner(signer []byte) { /*no op*/ } +func (msg *MessageChangeParameter) SetSigner(signer []byte) { msg.Signer = signer } +func (x *MessageChangeParameter) GetActorType() coreTypes.ActorType { return -1 } +func (x *MessageDoubleSign) GetActorType() coreTypes.ActorType { return -1 } func (msg *MessageStake) GetCanonicalBytes() []byte { return getCanonicalBytes(msg) } func (msg *MessageEditStake) GetCanonicalBytes() []byte { return getCanonicalBytes(msg) } @@ -235,13 +236,13 @@ func ValidateAmount(amount string) Error { return nil } -func ValidateActorType(_ ActorType) Error { +func ValidateActorType(_ coreTypes.ActorType) Error { // TODO (team) not sure if there's anything we can do here return nil } -func ValidateServiceUrl(actorType ActorType, uri string) Error { - if actorType == ActorType_App { +func ValidateServiceUrl(actorType coreTypes.ActorType, uri string) Error { + if actorType == coreTypes.ActorType_ACTOR_TYPE_APP { return nil } uri = strings.ToLower(uri) @@ -295,7 +296,7 @@ func (rc *RelayChain) Validate() Error { } type MessageStaker interface { - GetActorType() ActorType + GetActorType() coreTypes.ActorType GetAmount() string GetChains() []string GetServiceUrl() string diff --git a/utility/types/message_test.go b/utility/types/message_test.go index bf487e64b..45d1505da 100644 --- a/utility/types/message_test.go +++ b/utility/types/message_test.go @@ -5,6 +5,7 @@ import ( "testing" "github.com/pokt-network/pocket/shared/codec" + coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" "github.com/stretchr/testify/require" "google.golang.org/protobuf/proto" @@ -115,7 +116,7 @@ func TestMessage_EditStake_ValidateBasic(t *testing.T) { require.NoError(t, err) msg := MessageEditStake{ - ActorType: ActorType_App, + ActorType: coreTypes.ActorType_ACTOR_TYPE_APP, Address: addr, Chains: defaultTestingChains, Amount: defaultAmount, @@ -197,7 +198,7 @@ func TestMessageStake_ValidateBasic(t *testing.T) { require.NoError(t, err) msg := MessageStake{ - ActorType: ActorType_App, + ActorType: coreTypes.ActorType_ACTOR_TYPE_APP, PublicKey: pk.Bytes(), Chains: defaultTestingChains, Amount: defaultAmount, From c7d13260dd51b3a94d2c302cceb2b9ff7b78a3e8 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Mon, 26 Dec 2022 23:38:46 +0000 Subject: [PATCH 060/120] fix(core): pool_names value fix --- shared/core/types/proto/pool_names.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/core/types/proto/pool_names.proto b/shared/core/types/proto/pool_names.proto index de1ea89f8..7720e3833 100644 --- a/shared/core/types/proto/pool_names.proto +++ b/shared/core/types/proto/pool_names.proto @@ -11,5 +11,5 @@ enum PoolNames { POOL_NAMES_APP_STAKE_POOL = 3; POOL_NAMES_VALIDATOR_STAKE_POOL = 4; POOL_NAMES_SERVICE_NODE_STAKE_POOL = 5; - POOL_NAMES_FISHERMAN_STAKE_POOL = 7; + POOL_NAMES_FISHERMAN_STAKE_POOL = 6; } From 469635a018810c104d8c1047843ae6b529a134b1 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 00:01:19 +0000 Subject: [PATCH 061/120] refactor(core): enum simplification, removed trailing _POOL --- persistence/genesis.go | 17 +++++++++-------- persistence/test/state_test.go | 6 +++--- shared/core/types/proto/pool_names.proto | 8 ++++---- utility/actor.go | 2 +- utility/block.go | 8 ++++---- utility/test/actor_test.go | 8 ++++---- utility/transaction.go | 4 ++-- 7 files changed, 27 insertions(+), 26 deletions(-) diff --git a/persistence/genesis.go b/persistence/genesis.go index e86786db3..59bad947f 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -63,19 +63,19 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { Name: "app", Getter: state.GetApplications, InsertFn: rwContext.InsertApp, - Pool: coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL, + Pool: coreTypes.PoolNames_POOL_NAMES_APP_STAKE, }, { Name: "node", Getter: state.GetServiceNodes, InsertFn: rwContext.InsertServiceNode, - Pool: coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE_POOL, + Pool: coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE, }, { Name: "fisherman", Getter: state.GetFishermen, InsertFn: rwContext.InsertFisherman, - Pool: coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE_POOL, + Pool: coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE, }, { Name: "validator", @@ -83,7 +83,7 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { InsertFn: func(address, publicKey, output []byte, paused bool, status int32, serviceURL, stakedTokens string, chains []string, pausedHeight, unstakingHeight int64) error { return rwContext.InsertValidator(address, publicKey, output, paused, status, serviceURL, stakedTokens, pausedHeight, unstakingHeight) }, - Pool: coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL, + Pool: coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE, }, } @@ -105,8 +105,8 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { if err != nil { log.Fatalf("an error occurred inserting an %s in the genesis state: %s", saic.Name, err.Error()) } - if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String(), act.GetStakedAmount()); err != nil { - log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL, err.Error()) + if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_APP_STAKE.String(), act.GetStakedAmount()); err != nil { + log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_APP_STAKE, err.Error()) } } } @@ -135,8 +135,9 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { } // TODO (#399): All of the functions below following a structure similar to `GetAll` -// can easily be refactored and condensed into a single function using a generic type or a common -// interface. +// +// can easily be refactored and condensed into a single function using a generic type or a common +// interface. func (p PostgresContext) GetAllAccounts(height int64) (accs []*coreTypes.Account, err error) { ctx, tx, err := p.getCtxAndTx() if err != nil { diff --git a/persistence/test/state_test.go b/persistence/test/state_test.go index 69998aae8..9f021f6a9 100644 --- a/persistence/test/state_test.go +++ b/persistence/test/state_test.go @@ -48,9 +48,9 @@ func TestStateHash_DeterministicStateWhenUpdatingAppStake(t *testing.T) { // that the business logic doesn't change and that they remain deterministic. Anytime the business // logic changes, these hashes will need to be updated based on the test output. stateHashes := []string{ - "825e094e7a6b66216178b0c43beba70b37d0bf1737d1ea5f2ace8e9cd84c01e7", - "07d469ae3491c9b7afd8c93aca2665253e11dc88a5f65c5a5131232888b57fbd", - "373b31c8f7e92dc5721d9572341a94d334339fa9c3f16134ae5d646131d490d7", + "22208a52dcb27fdbf4f7b730eb211bc55fbf6ea6aa62aec5e0d5702e9cee3e88", + "8bf9381496bd72612bbb6e495bd288094cb7985968f9c6c753b29cbb001e77c7", + "a8cf891d9f3642722e118a6e3002688942337f31f78bcc1883cc34357b3e561e", } stakeAmount := initialStakeAmount diff --git a/shared/core/types/proto/pool_names.proto b/shared/core/types/proto/pool_names.proto index 7720e3833..e99d75df7 100644 --- a/shared/core/types/proto/pool_names.proto +++ b/shared/core/types/proto/pool_names.proto @@ -8,8 +8,8 @@ enum PoolNames { POOL_NAMES_UNSPECIFIED = 0; POOL_NAMES_DAO = 1; POOL_NAMES_FEE_COLLECTOR = 2; - POOL_NAMES_APP_STAKE_POOL = 3; - POOL_NAMES_VALIDATOR_STAKE_POOL = 4; - POOL_NAMES_SERVICE_NODE_STAKE_POOL = 5; - POOL_NAMES_FISHERMAN_STAKE_POOL = 6; + POOL_NAMES_APP_STAKE = 3; + POOL_NAMES_VALIDATOR_STAKE = 4; + POOL_NAMES_SERVICE_NODE_STAKE = 5; + POOL_NAMES_FISHERMAN_STAKE = 6; } diff --git a/utility/actor.go b/utility/actor.go index 3f84b6333..acd119ae9 100644 --- a/utility/actor.go +++ b/utility/actor.go @@ -425,7 +425,7 @@ func (u *UtilityContext) BurnActor(actorType coreTypes.ActorType, percentage int } newTokensAfterBurn := big.NewInt(0).Sub(tokens, truncatedTokens) // remove from pool - if err := u.SubPoolAmount(coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL.String(), typesUtil.BigIntToString(truncatedTokens)); err != nil { + if err := u.SubPoolAmount(coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.String(), typesUtil.BigIntToString(truncatedTokens)); err != nil { return err } // remove from actor diff --git a/utility/block.go b/utility/block.go index 7efc18683..08f980aa5 100644 --- a/utility/block.go +++ b/utility/block.go @@ -218,16 +218,16 @@ func (u *UtilityContext) UnstakeActorsThatAreReady() (err typesUtil.Error) { switch actorType { case coreTypes.ActorType_ACTOR_TYPE_APP: readyToUnstake, er = store.GetAppsReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String() + poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE.String() case coreTypes.ActorType_ACTOR_TYPE_FISH: readyToUnstake, er = store.GetFishermenReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE_POOL.String() + poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE.String() case coreTypes.ActorType_ACTOR_TYPE_NODE: readyToUnstake, er = store.GetServiceNodesReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE_POOL.String() + poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE.String() case coreTypes.ActorType_ACTOR_TYPE_VAL: readyToUnstake, er = store.GetValidatorsReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL.String() + poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.String() case coreTypes.ActorType_ACTOR_TYPE_UNSPECIFIED: continue } diff --git a/utility/test/actor_test.go b/utility/test/actor_test.go index 64065ef3e..1b2012870 100644 --- a/utility/test/actor_test.go +++ b/utility/test/actor_test.go @@ -489,13 +489,13 @@ func TestUtilityContext_UnstakeActorsThatAreReady(t *testing.T) { var poolName string switch actorType { case coreTypes.ActorType_ACTOR_TYPE_APP: - poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String() + poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE.String() case coreTypes.ActorType_ACTOR_TYPE_VAL: - poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE_POOL.String() + poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.String() case coreTypes.ActorType_ACTOR_TYPE_FISH: - poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE_POOL.String() + poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE.String() case coreTypes.ActorType_ACTOR_TYPE_NODE: - poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE_POOL.String() + poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE.String() default: t.Fatalf("unexpected actor type %s", actorType.String()) } diff --git a/utility/transaction.go b/utility/transaction.go index ee418fb18..9a62bc2b0 100644 --- a/utility/transaction.go +++ b/utility/transaction.go @@ -184,7 +184,7 @@ func (u *UtilityContext) HandleStakeMessage(message *typesUtil.MessageStake) typ return err } // move funds from account to pool - if err = u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String(), amount); err != nil { + if err = u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE.String(), amount); err != nil { return err } var er error @@ -248,7 +248,7 @@ func (u *UtilityContext) HandleEditStakeMessage(message *typesUtil.MessageEditSt return err } // move funds from account to pool - if err := u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE_POOL.String(), amount); err != nil { + if err := u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE.String(), amount); err != nil { return err } store := u.Store() From d9da99680cea7f7a9acaa6d391a2960467e611ce Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 00:09:09 +0000 Subject: [PATCH 062/120] Update Makefile Co-authored-by: Daniel Olshansky --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 35c075993..8f37aeb08 100644 --- a/Makefile +++ b/Makefile @@ -271,6 +271,7 @@ protogen_clean: ## Generate go structures for all of the protobufs protogen_local: go_protoc-go-inject-tag $(eval proto_dir = ".") +# TODO: Use a forloop to avoid all the code duplication and improve readability protoc --go_opt=paths=source_relative -I=./shared/messaging/proto --go_out=./shared/messaging ./shared/messaging/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./shared/codec/proto --go_out=./shared/codec ./shared/codec/proto/*.proto --experimental_allow_proto3_optional protoc --go_opt=paths=source_relative -I=./persistence/indexer/proto --go_out=./persistence/indexer ./persistence/indexer/proto/*.proto --experimental_allow_proto3_optional From 5bef1b140749db6e016057fe541b4157f89e0ba5 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 00:24:09 +0000 Subject: [PATCH 063/120] Update persistence/genesis.go Co-authored-by: Daniel Olshansky --- persistence/genesis.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence/genesis.go b/persistence/genesis.go index 59bad947f..d9a79d6ea 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -66,7 +66,7 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { Pool: coreTypes.PoolNames_POOL_NAMES_APP_STAKE, }, { - Name: "node", + Name: "serviceNode", Getter: state.GetServiceNodes, InsertFn: rwContext.InsertServiceNode, Pool: coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE, From 8ceecb347796ab254ed9f7ec0a64ef12cf4b29bb Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 00:32:32 +0000 Subject: [PATCH 064/120] refactor(runtime): factoring instead of sync.Once --- runtime/test_artifacts/keygenerator/keygen.go | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/runtime/test_artifacts/keygenerator/keygen.go b/runtime/test_artifacts/keygenerator/keygen.go index c5186868c..349db0c3c 100644 --- a/runtime/test_artifacts/keygenerator/keygen.go +++ b/runtime/test_artifacts/keygenerator/keygen.go @@ -4,13 +4,11 @@ import ( "bytes" "encoding/binary" "math/rand" - "sync" "github.com/pokt-network/pocket/shared/crypto" "google.golang.org/protobuf/types/known/timestamppb" ) -var keygenInitOnce sync.Once var keygen *keyGenerator type keyGenerator struct { @@ -19,13 +17,11 @@ type keyGenerator struct { func GetInstance() *keyGenerator { if keygen == nil { - var privateKeySeed int - keygenInitOnce.Do(func() { - privateKeySeed = getPrivateKeySeed() - keygen = &keyGenerator{ - privateKeySeed: privateKeySeed, - } - }) + privateKeySeed := getPrivateKeySeed() + keygen = &keyGenerator{ + privateKeySeed: privateKeySeed, + } + } return keygen } From 8561177df71de4c7836e29340ab499fafb3cdf5a Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 00:36:45 +0000 Subject: [PATCH 065/120] chore(runtime): cleanup --- runtime/test_artifacts/keygenerator/keygen.go | 1 - 1 file changed, 1 deletion(-) diff --git a/runtime/test_artifacts/keygenerator/keygen.go b/runtime/test_artifacts/keygenerator/keygen.go index 349db0c3c..82086b842 100644 --- a/runtime/test_artifacts/keygenerator/keygen.go +++ b/runtime/test_artifacts/keygenerator/keygen.go @@ -21,7 +21,6 @@ func GetInstance() *keyGenerator { keygen = &keyGenerator{ privateKeySeed: privateKeySeed, } - } return keygen } From 5df685c0e38e3be8887e17d1f60494bfec5d5828 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 00:40:09 +0000 Subject: [PATCH 066/120] refactor(runtime): parseGenesisJSON -> parseGenesis --- runtime/genesis.go | 5 +++-- runtime/manager.go | 12 ++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/runtime/genesis.go b/runtime/genesis.go index 3202afcc8..cbc38b77d 100644 --- a/runtime/genesis.go +++ b/runtime/genesis.go @@ -7,8 +7,9 @@ import ( "github.com/pokt-network/pocket/runtime/genesis" ) -func parseGenesisJSON(genesisPath string) (g *genesis.GenesisState, err error) { - data, err := os.ReadFile(genesisPath) +// parseGenesis parses the genesis file in JSON format and returns a genesis.GenesisState +func parseGenesis(genesisJSONPath string) (g *genesis.GenesisState, err error) { + data, err := os.ReadFile(genesisJSONPath) if err != nil { return } diff --git a/runtime/manager.go b/runtime/manager.go index e81d173e7..1a5952488 100644 --- a/runtime/manager.go +++ b/runtime/manager.go @@ -70,9 +70,9 @@ func NewManagerFromReaders(configReader, genesisReader io.Reader, options ...fun func NewManager(config *configs.Config, genesisState *genesis.GenesisState, options ...func(*Manager)) *Manager { mgr := &Manager{ - config: config, + config: config, genesisState: genesisState, - clock: clock.New(), + clock: clock.New(), } for _, o := range options { @@ -82,9 +82,9 @@ func NewManager(config *configs.Config, genesisState *genesis.GenesisState, opti return mgr } -func (rc *Manager) init(configPath, genesisPath string) (config *configs.Config, genesisState *genesis.GenesisState, err error) { - dir, file := path.Split(configPath) - filename := strings.TrimSuffix(file, filepath.Ext(file)) +func (rc *Manager) init(configJSONPath, genesisJSONPath string) (config *configs.Config, genesisState *genesis.GenesisState, err error) { + dir, configFile := path.Split(configJSONPath) + filename := strings.TrimSuffix(configFile, filepath.Ext(configFile)) viper.AddConfigPath(".") viper.AddConfigPath(dir) @@ -110,7 +110,7 @@ func (rc *Manager) init(configPath, genesisPath string) (config *configs.Config, return } - genesisState, err = parseGenesisJSON(genesisPath) + genesisState, err = parseGenesis(genesisJSONPath) return } From f5694ab0d0cbe4b6fc47a6c2c16983a91cb38f15 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 00:46:40 +0000 Subject: [PATCH 067/120] refactor(shared): node -> serviceNode --- app/client/cli/actor.go | 2 +- persistence/service_node.go | 4 ++-- persistence/state.go | 18 +++++++++--------- runtime/manager_test.go | 2 +- runtime/test_artifacts/generator.go | 2 +- shared/core/types/proto/actor.proto | 2 +- utility/actor.go | 28 ++++++++++++++-------------- utility/block.go | 4 ++-- utility/gov.go | 8 ++++---- utility/test/actor_test.go | 18 +++++++++--------- utility/test/module_test.go | 2 +- utility/transaction.go | 4 ++-- 12 files changed, 47 insertions(+), 47 deletions(-) diff --git a/app/client/cli/actor.go b/app/client/cli/actor.go index 8697a5538..7621628d9 100644 --- a/app/client/cli/actor.go +++ b/app/client/cli/actor.go @@ -43,7 +43,7 @@ type ( func NewActorCommands(cmdOptions []cmdOption) []*cobra.Command { actorCmdDefs := []actorCmdDef{ {"Application", coreTypes.ActorType_ACTOR_TYPE_APP, cmdOptions}, - {"Node", coreTypes.ActorType_ACTOR_TYPE_NODE, cmdOptions}, + {"Node", coreTypes.ActorType_ACTOR_TYPE_SERVICENODE, cmdOptions}, {"Fisherman", coreTypes.ActorType_ACTOR_TYPE_FISH, cmdOptions}, {"Validator", coreTypes.ActorType_ACTOR_TYPE_VAL, cmdOptions}, } diff --git a/persistence/service_node.go b/persistence/service_node.go index 1e33a79d5..6de1f6923 100644 --- a/persistence/service_node.go +++ b/persistence/service_node.go @@ -27,7 +27,7 @@ func (p PostgresContext) GetServiceNode(address []byte, height int64) (operator, func (p PostgresContext) InsertServiceNode(address []byte, publicKey []byte, output []byte, _ bool, _ int32, serviceURL string, stakedTokens string, chains []string, pausedHeight int64, unstakingHeight int64) error { return p.InsertActor(types.ServiceNodeActor, &coreTypes.Actor{ - ActorType: coreTypes.ActorType_ACTOR_TYPE_NODE, + ActorType: coreTypes.ActorType_ACTOR_TYPE_SERVICENODE, Address: hex.EncodeToString(address), PublicKey: hex.EncodeToString(publicKey), StakedAmount: stakedTokens, @@ -41,7 +41,7 @@ func (p PostgresContext) InsertServiceNode(address []byte, publicKey []byte, out func (p PostgresContext) UpdateServiceNode(address []byte, serviceURL string, stakedAmount string, chains []string) error { return p.UpdateActor(types.ServiceNodeActor, &coreTypes.Actor{ - ActorType: coreTypes.ActorType_ACTOR_TYPE_NODE, + ActorType: coreTypes.ActorType_ACTOR_TYPE_SERVICENODE, Address: hex.EncodeToString(address), StakedAmount: stakedAmount, GenericParam: serviceURL, diff --git a/persistence/state.go b/persistence/state.go index 514ec3078..31ac68b8d 100644 --- a/persistence/state.go +++ b/persistence/state.go @@ -72,24 +72,24 @@ var merkleTreeToString = map[merkleTree]string{ } var actorTypeToMerkleTreeName = map[coreTypes.ActorType]merkleTree{ - coreTypes.ActorType_ACTOR_TYPE_APP: appMerkleTree, - coreTypes.ActorType_ACTOR_TYPE_VAL: valMerkleTree, - coreTypes.ActorType_ACTOR_TYPE_FISH: fishMerkleTree, - coreTypes.ActorType_ACTOR_TYPE_NODE: serviceNodeMerkleTree, + coreTypes.ActorType_ACTOR_TYPE_APP: appMerkleTree, + coreTypes.ActorType_ACTOR_TYPE_VAL: valMerkleTree, + coreTypes.ActorType_ACTOR_TYPE_FISH: fishMerkleTree, + coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: serviceNodeMerkleTree, } var actorTypeToSchemaName = map[coreTypes.ActorType]types.ProtocolActorSchema{ - coreTypes.ActorType_ACTOR_TYPE_APP: types.ApplicationActor, - coreTypes.ActorType_ACTOR_TYPE_VAL: types.ValidatorActor, - coreTypes.ActorType_ACTOR_TYPE_FISH: types.FishermanActor, - coreTypes.ActorType_ACTOR_TYPE_NODE: types.ServiceNodeActor, + coreTypes.ActorType_ACTOR_TYPE_APP: types.ApplicationActor, + coreTypes.ActorType_ACTOR_TYPE_VAL: types.ValidatorActor, + coreTypes.ActorType_ACTOR_TYPE_FISH: types.FishermanActor, + coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: types.ServiceNodeActor, } var merkleTreeToActorTypeName = map[merkleTree]coreTypes.ActorType{ appMerkleTree: coreTypes.ActorType_ACTOR_TYPE_APP, valMerkleTree: coreTypes.ActorType_ACTOR_TYPE_VAL, fishMerkleTree: coreTypes.ActorType_ACTOR_TYPE_FISH, - serviceNodeMerkleTree: coreTypes.ActorType_ACTOR_TYPE_NODE, + serviceNodeMerkleTree: coreTypes.ActorType_ACTOR_TYPE_SERVICENODE, } func newStateTrees(treesStoreDir string) (*stateTrees, error) { diff --git a/runtime/manager_test.go b/runtime/manager_test.go index 4f0ac3261..6c545c67b 100644 --- a/runtime/manager_test.go +++ b/runtime/manager_test.go @@ -216,7 +216,7 @@ func TestNewManagerFromReaders(t *testing.T) { }, ServiceNodes: []*types.Actor{ { - ActorType: types.ActorType_ACTOR_TYPE_NODE, + ActorType: types.ActorType_ACTOR_TYPE_SERVICENODE, Address: "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", PublicKey: "16cd0a304c38d76271f74dd3c90325144425d904ef1b9a6fbab9b201d75a998b", Chains: []string{"0001"}, diff --git a/runtime/test_artifacts/generator.go b/runtime/test_artifacts/generator.go index d66634297..9f124d66a 100644 --- a/runtime/test_artifacts/generator.go +++ b/runtime/test_artifacts/generator.go @@ -18,7 +18,7 @@ import ( func NewGenesisState(numValidators, numServiceNodes, numApplications, numFisherman int) (*genesis.GenesisState, []string) { apps, appsPrivateKeys := NewActors(coreTypes.ActorType_ACTOR_TYPE_APP, numApplications) vals, validatorPrivateKeys := NewActors(coreTypes.ActorType_ACTOR_TYPE_VAL, numValidators) - serviceNodes, snPrivateKeys := NewActors(coreTypes.ActorType_ACTOR_TYPE_NODE, numServiceNodes) + serviceNodes, snPrivateKeys := NewActors(coreTypes.ActorType_ACTOR_TYPE_SERVICENODE, numServiceNodes) fish, fishPrivateKeys := NewActors(coreTypes.ActorType_ACTOR_TYPE_FISH, numFisherman) genesisState := &genesis.GenesisState{ diff --git a/shared/core/types/proto/actor.proto b/shared/core/types/proto/actor.proto index 6556ed805..15bfecdaa 100644 --- a/shared/core/types/proto/actor.proto +++ b/shared/core/types/proto/actor.proto @@ -7,7 +7,7 @@ option go_package = "github.com/pokt-network/pocket/shared/core/types"; enum ActorType { ACTOR_TYPE_UNSPECIFIED = 0; ACTOR_TYPE_APP = 1; - ACTOR_TYPE_NODE = 2; + ACTOR_TYPE_SERVICENODE = 2;// TODO: Consider renaming to `servicers` throughout the codebase. ACTOR_TYPE_FISH = 3; ACTOR_TYPE_VAL = 4; } diff --git a/utility/actor.go b/utility/actor.go index acd119ae9..dba0bf913 100644 --- a/utility/actor.go +++ b/utility/actor.go @@ -31,7 +31,7 @@ func (u *UtilityContext) SetActorStakedTokens(actorType coreTypes.ActorType, tok er = store.SetAppStakeAmount(address, typesUtil.BigIntToString(tokens)) case coreTypes.ActorType_ACTOR_TYPE_FISH: er = store.SetFishermanStakeAmount(address, typesUtil.BigIntToString(tokens)) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: er = store.SetServiceNodeStakeAmount(address, typesUtil.BigIntToString(tokens)) case coreTypes.ActorType_ACTOR_TYPE_VAL: er = store.SetValidatorStakeAmount(address, typesUtil.BigIntToString(tokens)) @@ -55,7 +55,7 @@ func (u *UtilityContext) SetActorUnstaking(actorType coreTypes.ActorType, unstak er = store.SetAppUnstakingHeightAndStatus(address, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) case coreTypes.ActorType_ACTOR_TYPE_FISH: er = store.SetFishermanUnstakingHeightAndStatus(address, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: er = store.SetServiceNodeUnstakingHeightAndStatus(address, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) case coreTypes.ActorType_ACTOR_TYPE_VAL: er = store.SetValidatorUnstakingHeightAndStatus(address, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) @@ -79,7 +79,7 @@ func (u *UtilityContext) SetActorPauseHeight(actorType coreTypes.ActorType, addr err = store.SetAppPauseHeight(address, height) case coreTypes.ActorType_ACTOR_TYPE_FISH: err = store.SetFishermanPauseHeight(address, height) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: err = store.SetServiceNodePauseHeight(address, height) case coreTypes.ActorType_ACTOR_TYPE_VAL: err = store.SetValidatorPauseHeight(address, height) @@ -109,7 +109,7 @@ func (u *UtilityContext) GetActorStakedTokens(actorType coreTypes.ActorType, add stakedTokens, er = store.GetAppStakeAmount(height, address) case coreTypes.ActorType_ACTOR_TYPE_FISH: stakedTokens, er = store.GetFishermanStakeAmount(height, address) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: stakedTokens, er = store.GetServiceNodeStakeAmount(height, address) case coreTypes.ActorType_ACTOR_TYPE_VAL: stakedTokens, er = store.GetValidatorStakeAmount(height, address) @@ -141,7 +141,7 @@ func (u *UtilityContext) GetMaxPausedBlocks(actorType coreTypes.ActorType) (maxP paramName = typesUtil.AppMaxPauseBlocksParamName case coreTypes.ActorType_ACTOR_TYPE_FISH: paramName = typesUtil.FishermanMaxPauseBlocksParamName - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: paramName = typesUtil.ServiceNodeMaxPauseBlocksParamName case coreTypes.ActorType_ACTOR_TYPE_VAL: paramName = typesUtil.ValidatorMaxPausedBlocksParamName @@ -170,7 +170,7 @@ func (u *UtilityContext) GetMinimumPauseBlocks(actorType coreTypes.ActorType) (m paramName = typesUtil.AppMinimumPauseBlocksParamName case coreTypes.ActorType_ACTOR_TYPE_FISH: paramName = typesUtil.FishermanMinimumPauseBlocksParamName - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: paramName = typesUtil.ServiceNodeMinimumPauseBlocksParamName case coreTypes.ActorType_ACTOR_TYPE_VAL: paramName = typesUtil.ValidatorMinimumPauseBlocksParamName @@ -198,7 +198,7 @@ func (u *UtilityContext) GetPauseHeight(actorType coreTypes.ActorType, address [ pauseHeight, er = store.GetAppPauseHeightIfExists(address, height) case coreTypes.ActorType_ACTOR_TYPE_FISH: pauseHeight, er = store.GetFishermanPauseHeightIfExists(address, height) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: pauseHeight, er = store.GetServiceNodePauseHeightIfExists(address, height) case coreTypes.ActorType_ACTOR_TYPE_VAL: pauseHeight, er = store.GetValidatorPauseHeightIfExists(address, height) @@ -225,7 +225,7 @@ func (u *UtilityContext) GetActorStatus(actorType coreTypes.ActorType, address [ status, er = store.GetAppStatus(address, height) case coreTypes.ActorType_ACTOR_TYPE_FISH: status, er = store.GetFishermanStatus(address, height) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: status, er = store.GetServiceNodeStatus(address, height) case coreTypes.ActorType_ACTOR_TYPE_VAL: status, er = store.GetValidatorStatus(address, height) @@ -252,7 +252,7 @@ func (u *UtilityContext) GetMinimumStake(actorType coreTypes.ActorType) (*big.In paramName = typesUtil.AppMinimumStakeParamName case coreTypes.ActorType_ACTOR_TYPE_FISH: paramName = typesUtil.FishermanMinimumStakeParamName - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: paramName = typesUtil.ServiceNodeMinimumStakeParamName case coreTypes.ActorType_ACTOR_TYPE_VAL: paramName = typesUtil.ValidatorMinimumStakeParamName @@ -281,7 +281,7 @@ func (u *UtilityContext) GetStakeAmount(actorType coreTypes.ActorType, address [ stakeAmount, err = store.GetAppStakeAmount(height, address) case coreTypes.ActorType_ACTOR_TYPE_FISH: stakeAmount, err = store.GetFishermanStakeAmount(height, address) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: stakeAmount, err = store.GetServiceNodeStakeAmount(height, address) case coreTypes.ActorType_ACTOR_TYPE_VAL: stakeAmount, err = store.GetValidatorStakeAmount(height, address) @@ -309,7 +309,7 @@ func (u *UtilityContext) GetUnstakingHeight(actorType coreTypes.ActorType) (unst paramName = typesUtil.AppUnstakingBlocksParamName case coreTypes.ActorType_ACTOR_TYPE_FISH: paramName = typesUtil.FishermanUnstakingBlocksParamName - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: paramName = typesUtil.ServiceNodeUnstakingBlocksParamName case coreTypes.ActorType_ACTOR_TYPE_VAL: paramName = typesUtil.ValidatorUnstakingBlocksParamName @@ -338,7 +338,7 @@ func (u *UtilityContext) GetMaxChains(actorType coreTypes.ActorType) (maxChains paramName = typesUtil.AppMaxChainsParamName case coreTypes.ActorType_ACTOR_TYPE_FISH: paramName = typesUtil.FishermanMaxChainsParamName - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: paramName = typesUtil.ServiceNodeMaxChainsParamName default: return 0, typesUtil.ErrUnknownActorType(actorType.String()) @@ -366,7 +366,7 @@ func (u *UtilityContext) GetActorExists(actorType coreTypes.ActorType, address [ exists, err = store.GetAppExists(address, height) case coreTypes.ActorType_ACTOR_TYPE_FISH: exists, err = store.GetFishermanExists(address, height) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: exists, err = store.GetServiceNodeExists(address, height) case coreTypes.ActorType_ACTOR_TYPE_VAL: exists, err = store.GetValidatorExists(address, height) @@ -393,7 +393,7 @@ func (u *UtilityContext) GetActorOutputAddress(actorType coreTypes.ActorType, op output, er = store.GetAppOutputAddress(operator, height) case coreTypes.ActorType_ACTOR_TYPE_FISH: output, er = store.GetFishermanOutputAddress(operator, height) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: output, er = store.GetServiceNodeOutputAddress(operator, height) case coreTypes.ActorType_ACTOR_TYPE_VAL: output, er = store.GetValidatorOutputAddress(operator, height) diff --git a/utility/block.go b/utility/block.go index 08f980aa5..0254e173f 100644 --- a/utility/block.go +++ b/utility/block.go @@ -222,7 +222,7 @@ func (u *UtilityContext) UnstakeActorsThatAreReady() (err typesUtil.Error) { case coreTypes.ActorType_ACTOR_TYPE_FISH: readyToUnstake, er = store.GetFishermenReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE.String() - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: readyToUnstake, er = store.GetServiceNodesReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE.String() case coreTypes.ActorType_ACTOR_TYPE_VAL: @@ -284,7 +284,7 @@ func (u *UtilityContext) UnstakeActorPausedBefore(pausedBeforeHeight int64, Acto er = store.SetAppStatusAndUnstakingHeightIfPausedBefore(pausedBeforeHeight, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) case coreTypes.ActorType_ACTOR_TYPE_FISH: er = store.SetFishermanStatusAndUnstakingHeightIfPausedBefore(pausedBeforeHeight, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: er = store.SetServiceNodeStatusAndUnstakingHeightIfPausedBefore(pausedBeforeHeight, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) case coreTypes.ActorType_ACTOR_TYPE_VAL: er = store.SetValidatorsStatusAndUnstakingHeightIfPausedBefore(pausedBeforeHeight, unstakingHeight, int32(typesUtil.StakeStatus_Unstaking)) diff --git a/utility/gov.go b/utility/gov.go index 07ade7f74..0b5991d2e 100644 --- a/utility/gov.go +++ b/utility/gov.go @@ -500,7 +500,7 @@ func (u *UtilityContext) GetFee(msg typesUtil.Message, actorType coreTypes.Actor return u.GetMessageStakeAppFee() case coreTypes.ActorType_ACTOR_TYPE_FISH: return u.GetMessageStakeFishermanFee() - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: return u.GetMessageStakeServiceNodeFee() case coreTypes.ActorType_ACTOR_TYPE_VAL: return u.GetMessageStakeValidatorFee() @@ -513,7 +513,7 @@ func (u *UtilityContext) GetFee(msg typesUtil.Message, actorType coreTypes.Actor return u.GetMessageEditStakeAppFee() case coreTypes.ActorType_ACTOR_TYPE_FISH: return u.GetMessageEditStakeFishermanFee() - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: return u.GetMessageEditStakeServiceNodeFee() case coreTypes.ActorType_ACTOR_TYPE_VAL: return u.GetMessageEditStakeValidatorFee() @@ -526,7 +526,7 @@ func (u *UtilityContext) GetFee(msg typesUtil.Message, actorType coreTypes.Actor return u.GetMessageUnstakeAppFee() case coreTypes.ActorType_ACTOR_TYPE_FISH: return u.GetMessageUnstakeFishermanFee() - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: return u.GetMessageUnstakeServiceNodeFee() case coreTypes.ActorType_ACTOR_TYPE_VAL: return u.GetMessageUnstakeValidatorFee() @@ -539,7 +539,7 @@ func (u *UtilityContext) GetFee(msg typesUtil.Message, actorType coreTypes.Actor return u.GetMessageUnpauseAppFee() case coreTypes.ActorType_ACTOR_TYPE_FISH: return u.GetMessageUnpauseFishermanFee() - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: return u.GetMessageUnpauseServiceNodeFee() case coreTypes.ActorType_ACTOR_TYPE_VAL: return u.GetMessageUnpauseValidatorFee() diff --git a/utility/test/actor_test.go b/utility/test/actor_test.go index 1b2012870..91fa577f9 100644 --- a/utility/test/actor_test.go +++ b/utility/test/actor_test.go @@ -116,7 +116,7 @@ func TestUtilityContext_HandleMessageUnpause(t *testing.T) { switch actorType { case coreTypes.ActorType_ACTOR_TYPE_VAL: err = ctx.Context.SetParam(typesUtil.ValidatorMinimumPauseBlocksParamName, 0) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: err = ctx.Context.SetParam(typesUtil.ServiceNodeMinimumPauseBlocksParamName, 0) case coreTypes.ActorType_ACTOR_TYPE_APP: err = ctx.Context.SetParam(typesUtil.AppMinimumPauseBlocksParamName, 0) @@ -168,7 +168,7 @@ func TestUtilityContext_HandleMessageUnstake(t *testing.T) { err = ctx.Context.SetParam(typesUtil.ValidatorMinimumPauseBlocksParamName, 0) case coreTypes.ActorType_ACTOR_TYPE_FISH: err = ctx.Context.SetParam(typesUtil.FishermanMinimumPauseBlocksParamName, 0) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: err = ctx.Context.SetParam(typesUtil.ServiceNodeMinimumPauseBlocksParamName, 0) default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -213,7 +213,7 @@ func TestUtilityContext_BeginUnstakingMaxPaused(t *testing.T) { err = ctx.Context.SetParam(typesUtil.ValidatorMaxPausedBlocksParamName, 0) case coreTypes.ActorType_ACTOR_TYPE_FISH: err = ctx.Context.SetParam(typesUtil.FishermanMaxPauseBlocksParamName, 0) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: err = ctx.Context.SetParam(typesUtil.ServiceNodeMaxPauseBlocksParamName, 0) default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -253,7 +253,7 @@ func TestUtilityContext_CalculateUnstakingHeight(t *testing.T) { switch actorType { case coreTypes.ActorType_ACTOR_TYPE_VAL: unstakingBlocks, err = ctx.GetValidatorUnstakingBlocks() - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: unstakingBlocks, err = ctx.GetServiceNodeUnstakingBlocks() case coreTypes.ActorType_ACTOR_TYPE_APP: unstakingBlocks, err = ctx.GetAppUnstakingBlocks() @@ -444,7 +444,7 @@ func TestUtilityContext_UnstakePausedBefore(t *testing.T) { er = ctx.Context.SetParam(typesUtil.ValidatorMaxPausedBlocksParamName, 0) case coreTypes.ActorType_ACTOR_TYPE_FISH: er = ctx.Context.SetParam(typesUtil.FishermanMaxPauseBlocksParamName, 0) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: er = ctx.Context.SetParam(typesUtil.ServiceNodeMaxPauseBlocksParamName, 0) default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -464,7 +464,7 @@ func TestUtilityContext_UnstakePausedBefore(t *testing.T) { switch actorType { case coreTypes.ActorType_ACTOR_TYPE_VAL: unstakingBlocks, err = ctx.GetValidatorUnstakingBlocks() - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: unstakingBlocks, err = ctx.GetServiceNodeUnstakingBlocks() case coreTypes.ActorType_ACTOR_TYPE_APP: unstakingBlocks, err = ctx.GetAppUnstakingBlocks() @@ -494,7 +494,7 @@ func TestUtilityContext_UnstakeActorsThatAreReady(t *testing.T) { poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.String() case coreTypes.ActorType_ACTOR_TYPE_FISH: poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE.String() - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE.String() default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -546,7 +546,7 @@ func TestUtilityContext_BeginUnstakingMaxPausedActors(t *testing.T) { err = ctx.Context.SetParam(typesUtil.ValidatorMaxPausedBlocksParamName, 0) case coreTypes.ActorType_ACTOR_TYPE_FISH: err = ctx.Context.SetParam(typesUtil.FishermanMaxPauseBlocksParamName, 0) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: err = ctx.Context.SetParam(typesUtil.ServiceNodeMaxPauseBlocksParamName, 0) default: t.Fatalf("unexpected actor type %s", actorType.String()) @@ -580,7 +580,7 @@ func getAllTestingActors(t *testing.T, ctx utility.UtilityContext, actorType cor for _, a := range apps { actors = append(actors, a) } - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: nodes := getAllTestingNodes(t, ctx) for _, a := range nodes { actors = append(actors, a) diff --git a/utility/test/module_test.go b/utility/test/module_test.go index 6d2aaafa8..bc8f38ff9 100644 --- a/utility/test/module_test.go +++ b/utility/test/module_test.go @@ -45,7 +45,7 @@ var testUtilityMod modules.UtilityModule // initialized in TestMain var actorTypes = []coreTypes.ActorType{ coreTypes.ActorType_ACTOR_TYPE_APP, - coreTypes.ActorType_ACTOR_TYPE_NODE, + coreTypes.ActorType_ACTOR_TYPE_SERVICENODE, coreTypes.ActorType_ACTOR_TYPE_FISH, coreTypes.ActorType_ACTOR_TYPE_VAL, } diff --git a/utility/transaction.go b/utility/transaction.go index 9a62bc2b0..429a9db47 100644 --- a/utility/transaction.go +++ b/utility/transaction.go @@ -199,7 +199,7 @@ func (u *UtilityContext) HandleStakeMessage(message *typesUtil.MessageStake) typ er = store.InsertApp(publicKey.Address(), publicKey.Bytes(), message.OutputAddress, false, int32(typesUtil.StakeStatus_Staked), maxRelays, message.Amount, message.Chains, typesUtil.HeightNotUsed, typesUtil.HeightNotUsed) case coreTypes.ActorType_ACTOR_TYPE_FISH: er = store.InsertFisherman(publicKey.Address(), publicKey.Bytes(), message.OutputAddress, false, int32(typesUtil.StakeStatus_Staked), message.ServiceUrl, message.Amount, message.Chains, typesUtil.HeightNotUsed, typesUtil.HeightNotUsed) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: er = store.InsertServiceNode(publicKey.Address(), publicKey.Bytes(), message.OutputAddress, false, int32(typesUtil.StakeStatus_Staked), message.ServiceUrl, message.Amount, message.Chains, typesUtil.HeightNotUsed, typesUtil.HeightNotUsed) case coreTypes.ActorType_ACTOR_TYPE_VAL: er = store.InsertValidator(publicKey.Address(), publicKey.Bytes(), message.OutputAddress, false, int32(typesUtil.StakeStatus_Staked), message.ServiceUrl, message.Amount, typesUtil.HeightNotUsed, typesUtil.HeightNotUsed) @@ -262,7 +262,7 @@ func (u *UtilityContext) HandleEditStakeMessage(message *typesUtil.MessageEditSt er = store.UpdateApp(message.Address, maxRelays, message.Amount, message.Chains) case coreTypes.ActorType_ACTOR_TYPE_FISH: er = store.UpdateFisherman(message.Address, message.ServiceUrl, message.Amount, message.Chains) - case coreTypes.ActorType_ACTOR_TYPE_NODE: + case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: er = store.UpdateServiceNode(message.Address, message.ServiceUrl, message.Amount, message.Chains) case coreTypes.ActorType_ACTOR_TYPE_VAL: er = store.UpdateValidator(message.Address, message.ServiceUrl, message.Amount) From 196845e918899941bca023847cd106714457b76b Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 00:54:39 +0000 Subject: [PATCH 068/120] refactor(runtime): simplified keygen --- runtime/test_artifacts/keygenerator/keygen.go | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/runtime/test_artifacts/keygenerator/keygen.go b/runtime/test_artifacts/keygenerator/keygen.go index 82086b842..ef2f1f5cc 100644 --- a/runtime/test_artifacts/keygenerator/keygen.go +++ b/runtime/test_artifacts/keygenerator/keygen.go @@ -17,16 +17,15 @@ type keyGenerator struct { func GetInstance() *keyGenerator { if keygen == nil { - privateKeySeed := getPrivateKeySeed() - keygen = &keyGenerator{ - privateKeySeed: privateKeySeed, - } + keygen = &keyGenerator{} + keygen.reset() } return keygen } func (k *keyGenerator) reset() { - k.privateKeySeed = getPrivateKeySeed() + rand.Seed(timestamppb.Now().Seconds) + k.privateKeySeed = rand.Int() } func (k *keyGenerator) SetSeed(seed int) (teardown func()) { @@ -53,9 +52,3 @@ func (k *keyGenerator) Next() (privateKey, publicKey, address string) { return } - -func getPrivateKeySeed() (privateKeySeed int) { - rand.Seed(timestamppb.Now().Seconds) - privateKeySeed = rand.Int() - return -} From d16a45530bc0dcbcc80010eb5bf522bffa792ecc Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 01:01:40 +0000 Subject: [PATCH 069/120] fix(persistence): genesis pool handling --- persistence/genesis.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/persistence/genesis.go b/persistence/genesis.go index d9a79d6ea..cd34871ff 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -105,8 +105,8 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { if err != nil { log.Fatalf("an error occurred inserting an %s in the genesis state: %s", saic.Name, err.Error()) } - if err = addValueToPool(coreTypes.PoolNames_POOL_NAMES_APP_STAKE.String(), act.GetStakedAmount()); err != nil { - log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", coreTypes.PoolNames_POOL_NAMES_APP_STAKE, err.Error()) + if err = addValueToPool(saic.Pool.String(), act.GetStakedAmount()); err != nil { + log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", saic.Pool, err.Error()) } } } From 7f64ccb3cecd3a54adf6f69c31bab0230f69c6cc Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 01:02:10 +0000 Subject: [PATCH 070/120] Update runtime/test_artifacts/generator.go Co-authored-by: Daniel Olshansky --- runtime/test_artifacts/generator.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/test_artifacts/generator.go b/runtime/test_artifacts/generator.go index 9f124d66a..0a8e43efc 100644 --- a/runtime/test_artifacts/generator.go +++ b/runtime/test_artifacts/generator.go @@ -81,7 +81,8 @@ func NewDefaultConfig(i int, pk string) *configs.Config { } } -func NewPools() (pools []*coreTypes.Account) { // TODO (Team) in the real testing suite, we need to populate the pool amounts dependent on the actors + // REFACTOR: Test artifact generator should reflect the sum of the initial account values to populate the initial pool values +func NewPools() (pools []*coreTypes.Account) { for _, name := range coreTypes.PoolNames_name { if name == coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.String() { pools = append(pools, &coreTypes.Account{ From ece9cf858dd6bba4014127f04f00e5c27805c4ce Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 20:56:33 +0000 Subject: [PATCH 071/120] fix(persistence): added missing actortype to queries --- persistence/actor.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/persistence/actor.go b/persistence/actor.go index b18f5d9ac..85c32be45 100644 --- a/persistence/actor.go +++ b/persistence/actor.go @@ -24,6 +24,7 @@ func (p PostgresContext) GetAllApps(height int64) (apps []*coreTypes.Actor, err if err != nil { return } + actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_APP actors = append(actors, actor) } rows.Close() @@ -53,6 +54,7 @@ func (p PostgresContext) GetAllValidators(height int64) (vals []*coreTypes.Actor if err != nil { return } + actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_VAL actors = append(actors, actor) } rows.Close() @@ -82,6 +84,7 @@ func (p PostgresContext) GetAllServiceNodes(height int64) (sn []*coreTypes.Actor if err != nil { return } + actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_SERVICENODE actors = append(actors, actor) } rows.Close() @@ -111,6 +114,7 @@ func (p PostgresContext) GetAllFishermen(height int64) (f []*coreTypes.Actor, er if err != nil { return } + actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_FISH actors = append(actors, actor) } rows.Close() From 8305e6ef0782c23c3013a394e9b6c0502c566018 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 22:35:31 +0000 Subject: [PATCH 072/120] fix(P2P): ActorsToAddrBook considers only validators --- p2p/addrbook_provider/persistence.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/p2p/addrbook_provider/persistence.go b/p2p/addrbook_provider/persistence.go index 8eb0267f0..e9b48bb83 100644 --- a/p2p/addrbook_provider/persistence.go +++ b/p2p/addrbook_provider/persistence.go @@ -74,6 +74,10 @@ func (pabp *persistenceAddrBookProvider) GetStakedAddrBookAtHeight(height uint64 func (pabp *persistenceAddrBookProvider) ActorsToAddrBook(actors map[string]coreTypes.Actor) (typesP2P.AddrBook, error) { book := make(typesP2P.AddrBook, 0) for _, v := range actors { + // only add validator actors since they are the only ones having a service url in their generic param at the moment + if v.ActorType != coreTypes.ActorType_ACTOR_TYPE_VAL { + continue + } networkPeer, err := pabp.ActorToNetworkPeer(v) if err != nil { log.Println("[WARN] Error connecting to validator: ", err) From 048ebbc797305d5a7d50b9de5f1a205afa787b25 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 22:36:16 +0000 Subject: [PATCH 073/120] fix(core): PoolNames FriendlyName() --- persistence/genesis.go | 2 +- runtime/test_artifacts/generator.go | 4 ++-- shared/core/types/pool_names.go | 18 ++++++++++++++++++ utility/block.go | 12 ++++++------ utility/test/actor_test.go | 8 ++++---- utility/transaction.go | 6 +++--- 6 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 shared/core/types/pool_names.go diff --git a/persistence/genesis.go b/persistence/genesis.go index cd34871ff..0b7ec9a24 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -105,7 +105,7 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { if err != nil { log.Fatalf("an error occurred inserting an %s in the genesis state: %s", saic.Name, err.Error()) } - if err = addValueToPool(saic.Pool.String(), act.GetStakedAmount()); err != nil { + if err = addValueToPool(saic.Pool.FriendlyName(), act.GetStakedAmount()); err != nil { log.Fatalf("an error occurred inserting staked tokens into %s pool: %s", saic.Pool, err.Error()) } } diff --git a/runtime/test_artifacts/generator.go b/runtime/test_artifacts/generator.go index 0a8e43efc..690c8904b 100644 --- a/runtime/test_artifacts/generator.go +++ b/runtime/test_artifacts/generator.go @@ -81,10 +81,10 @@ func NewDefaultConfig(i int, pk string) *configs.Config { } } - // REFACTOR: Test artifact generator should reflect the sum of the initial account values to populate the initial pool values +// REFACTOR: Test artifact generator should reflect the sum of the initial account values to populate the initial pool values func NewPools() (pools []*coreTypes.Account) { for _, name := range coreTypes.PoolNames_name { - if name == coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.String() { + if name == coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.FriendlyName() { pools = append(pools, &coreTypes.Account{ Address: name, Amount: "0", diff --git a/shared/core/types/pool_names.go b/shared/core/types/pool_names.go new file mode 100644 index 000000000..58fbc6af6 --- /dev/null +++ b/shared/core/types/pool_names.go @@ -0,0 +1,18 @@ +package types + +var poolFriendlyNames map[PoolNames]string + +func init() { + poolFriendlyNames = map[PoolNames]string{ + PoolNames_POOL_NAMES_UNSPECIFIED: "Unspecified", + PoolNames_POOL_NAMES_DAO: "DAO", + PoolNames_POOL_NAMES_FEE_COLLECTOR: "FeeCollector", + PoolNames_POOL_NAMES_APP_STAKE: "AppStakePool", + PoolNames_POOL_NAMES_VALIDATOR_STAKE: "ValidatorStakePool", + PoolNames_POOL_NAMES_SERVICE_NODE_STAKE: "ServiceNodeStakePool", + } +} + +func (pn PoolNames) FriendlyName() string { + return poolFriendlyNames[pn] +} diff --git a/utility/block.go b/utility/block.go index 0254e173f..283a1ae3b 100644 --- a/utility/block.go +++ b/utility/block.go @@ -218,16 +218,16 @@ func (u *UtilityContext) UnstakeActorsThatAreReady() (err typesUtil.Error) { switch actorType { case coreTypes.ActorType_ACTOR_TYPE_APP: readyToUnstake, er = store.GetAppsReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE.String() + poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_FISH: readyToUnstake, er = store.GetFishermenReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE.String() + poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: readyToUnstake, er = store.GetServiceNodesReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE.String() + poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_VAL: readyToUnstake, er = store.GetValidatorsReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.String() + poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_UNSPECIFIED: continue } @@ -296,7 +296,7 @@ func (u *UtilityContext) UnstakeActorPausedBefore(pausedBeforeHeight int64, Acto } func (u *UtilityContext) HandleProposalRewards(proposer []byte) typesUtil.Error { - feePoolName := coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.String() + feePoolName := coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.FriendlyName() feesAndRewardsCollected, err := u.GetPoolAmount(feePoolName) if err != nil { return err @@ -320,7 +320,7 @@ func (u *UtilityContext) HandleProposalRewards(proposer []byte) typesUtil.Error if err = u.AddAccountAmount(proposer, amountToProposer); err != nil { return err } - if err = u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_DAO.String(), amountToDAO); err != nil { + if err = u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_DAO.FriendlyName(), amountToDAO); err != nil { return err } return nil diff --git a/utility/test/actor_test.go b/utility/test/actor_test.go index 91fa577f9..4b1f106cd 100644 --- a/utility/test/actor_test.go +++ b/utility/test/actor_test.go @@ -489,13 +489,13 @@ func TestUtilityContext_UnstakeActorsThatAreReady(t *testing.T) { var poolName string switch actorType { case coreTypes.ActorType_ACTOR_TYPE_APP: - poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE.String() + poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_VAL: - poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.String() + poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_FISH: - poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE.String() + poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: - poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE.String() + poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE.FriendlyName() default: t.Fatalf("unexpected actor type %s", actorType.String()) } diff --git a/utility/transaction.go b/utility/transaction.go index 429a9db47..b1426c51b 100644 --- a/utility/transaction.go +++ b/utility/transaction.go @@ -91,7 +91,7 @@ func (u *UtilityContext) AnteHandleMessage(tx *typesUtil.Transaction) (msg types if err := u.SetAccountAmount(address, accountAmount); err != nil { return nil, signer, err } - if err := u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.String(), fee); err != nil { + if err := u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.FriendlyName(), fee); err != nil { return nil, "", err } msg.SetSigner(address) @@ -184,7 +184,7 @@ func (u *UtilityContext) HandleStakeMessage(message *typesUtil.MessageStake) typ return err } // move funds from account to pool - if err = u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE.String(), amount); err != nil { + if err = u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE.FriendlyName(), amount); err != nil { return err } var er error @@ -248,7 +248,7 @@ func (u *UtilityContext) HandleEditStakeMessage(message *typesUtil.MessageEditSt return err } // move funds from account to pool - if err := u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE.String(), amount); err != nil { + if err := u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE.FriendlyName(), amount); err != nil { return err } store := u.Store() From 0db801d78119844ce907663a07cd0a3d8dcc5b54 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 23:05:26 +0000 Subject: [PATCH 074/120] docs(demos): iteration 3 demo keys management --- docs/demos/iteration_3_end_to_end_tx.md | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/demos/iteration_3_end_to_end_tx.md b/docs/demos/iteration_3_end_to_end_tx.md index 55010445b..86bfc1983 100644 --- a/docs/demos/iteration_3_end_to_end_tx.md +++ b/docs/demos/iteration_3_end_to_end_tx.md @@ -10,6 +10,7 @@ - [Shell #4: Inspect the data in the database for node3](#shell-4-inspect-the-data-in-the-database-for-node3) - [Shell #5: Trigger a send transaction from the CLI](#shell-5-trigger-a-send-transaction-from-the-cli) - [Available Commands](#available-commands) + - [Accounts setup](#accounts-setup) - [First Transaction](#first-transaction) - [Second Transaction](#second-transaction) - [\[Optional\] Shell #6: See Swagger UI](#optional-shell-6-see-swagger-ui) @@ -96,12 +97,32 @@ Show all the commands available in the CLI: go run app/client/*.go ``` +#### Accounts setup + +Since our Keybase is under development, currently we have to manually inject the private keys of the accounts we want to use in the CLI. + +For the following steps you'll need to use the accounts of the first two validators, therefore you have some options: + +1) You can just: + ```bash + echo '"6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4"' > val1.json + echo '"5db3e9d97d04d6d70359de924bb02039c602080d6bf01a692bad31ad5ef93524c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb"' > val2.json + ``` + +2) You can use `jq` and run these commands: + ```bash + cat ./build/config/config1.json | jq '.private_key' > val1.json + cat ./build/config/config2.json | jq '.private_key' > val2.json + ``` + +3) You can manually copy-paste the private keys from the config files into the `val1.json` and `val2.json` files. Remember to keep the double quotes around the private keys ("private_key" field in the JSON). + ### First Transaction Trigger a send transaction from validator 1 to validator 2. ```bash -go run app/client/*.go --path_to_private_key_file=/Users/olshansky/workspace/pocket/pocket/build/pkeys/val1.json Account Send 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 67eb3f0a50ae459fecf666be0e93176e92441317 1000 +go run app/client/*.go --path_to_private_key_file=./val1.json Account Send 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 67eb3f0a50ae459fecf666be0e93176e92441317 1000 ``` 1. Use shell #2 to `TriggerNextView` and confirm height increased via `PrintNodeState` @@ -120,7 +141,7 @@ go run app/client/*.go --path_to_private_key_file=/Users/olshansky/workspace/poc Trigger a send transaction from validator 2 to validator 1. ```bash -go run app/client/*.go --path_to_private_key_file=/Users/olshansky/workspace/pocket/pocket/build/pkeys/val2.json Account Send 67eb3f0a50ae459fecf666be0e93176e92441317 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 1000 +go run app/client/*.go --path_to_private_key_file=./val2.json Account Send 67eb3f0a50ae459fecf666be0e93176e92441317 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 1000 ``` 1. Use shell #2 to `TriggerNextView` (one or more times) and confirm height increased via `PrintNodeState` From 5bacd1bea5eb5df4b48d7354327c13629f416d91 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 23:39:32 +0000 Subject: [PATCH 075/120] fix(P2P): added missing ActorType in tests --- p2p/utils_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/p2p/utils_test.go b/p2p/utils_test.go index 2abd984a8..df3e1a610 100644 --- a/p2p/utils_test.go +++ b/p2p/utils_test.go @@ -143,6 +143,7 @@ func createMockGenesisState(t *testing.T, valKeys []cryptoPocket.PrivateKey) *ge for i, valKey := range valKeys { addr := valKey.Address().String() mockActor := &coreTypes.Actor{ + ActorType: coreTypes.ActorType_ACTOR_TYPE_VAL, Address: addr, PublicKey: valKey.PublicKey().String(), GenericParam: validatorId(i + 1), From 8a9c0ae544558db89adacc6257678f759f62561b Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 23:41:26 +0000 Subject: [PATCH 076/120] fix(utility): poolName friendlyName --- utility/actor.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utility/actor.go b/utility/actor.go index dba0bf913..c7d1160ec 100644 --- a/utility/actor.go +++ b/utility/actor.go @@ -425,7 +425,7 @@ func (u *UtilityContext) BurnActor(actorType coreTypes.ActorType, percentage int } newTokensAfterBurn := big.NewInt(0).Sub(tokens, truncatedTokens) // remove from pool - if err := u.SubPoolAmount(coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.String(), typesUtil.BigIntToString(truncatedTokens)); err != nil { + if err := u.SubPoolAmount(coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.FriendlyName(), typesUtil.BigIntToString(truncatedTokens)); err != nil { return err } // remove from actor From 505a1048454f663118635acb3bdb64222fd6f612 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 27 Dec 2022 23:43:56 +0000 Subject: [PATCH 077/120] test(persistence): updated statehash in deterministic test --- persistence/test/state_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/persistence/test/state_test.go b/persistence/test/state_test.go index 9f021f6a9..2011ad554 100644 --- a/persistence/test/state_test.go +++ b/persistence/test/state_test.go @@ -48,9 +48,9 @@ func TestStateHash_DeterministicStateWhenUpdatingAppStake(t *testing.T) { // that the business logic doesn't change and that they remain deterministic. Anytime the business // logic changes, these hashes will need to be updated based on the test output. stateHashes := []string{ - "22208a52dcb27fdbf4f7b730eb211bc55fbf6ea6aa62aec5e0d5702e9cee3e88", - "8bf9381496bd72612bbb6e495bd288094cb7985968f9c6c753b29cbb001e77c7", - "a8cf891d9f3642722e118a6e3002688942337f31f78bcc1883cc34357b3e561e", + "67e8bc84db3bd7c9288242b53161ddbc8cd08cd6094814a9c9358d4d8369688c", + "dfbc92a3f72ac8fa5e436e37c8bb4e0949e113092d5411ef46244fa2651a238d", + "44fc53f0d4511d97296357e20d05d8089d7a3a06d3e07f6cf6197f7642553c91", } stakeAmount := initialStakeAmount From 3cfd657646e2c6cd7efe0b5a7149d835f0de116f Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 20:19:56 +0000 Subject: [PATCH 078/120] refactor(runtime): default config handling and separation --- runtime/configs/config.go | 43 +++ runtime/defaults/defaults.go | 25 +- runtime/defaults/params.go | 128 -------- runtime/manager.go | 18 +- runtime/manager_test.go | 456 ++++++++++++---------------- runtime/test_artifacts/defaults.go | 23 ++ runtime/test_artifacts/generator.go | 24 +- 7 files changed, 282 insertions(+), 435 deletions(-) delete mode 100644 runtime/defaults/params.go create mode 100644 runtime/test_artifacts/defaults.go diff --git a/runtime/configs/config.go b/runtime/configs/config.go index 9f78e9d1a..32b6996e6 100644 --- a/runtime/configs/config.go +++ b/runtime/configs/config.go @@ -1,5 +1,7 @@ package configs +import "github.com/pokt-network/pocket/runtime/defaults" + type Config struct { RootDirectory string `json:"root_directory"` PrivateKey string `json:"private_key"` // INVESTIGATE(#150): better architecture for key management (keybase, keyfiles, etc.) @@ -12,3 +14,44 @@ type Config struct { Logger *LoggerConfig `json:"logger"` RPC *RPCConfig `json:"rpc"` } + +func NewDefaultConfig() *Config { + return &Config{ + RootDirectory: "/go/src/github.com/pocket-network", + Consensus: &ConsensusConfig{ + MaxMempoolBytes: 500000000, + PacemakerConfig: &PacemakerConfig{ + TimeoutMsec: 5000, + Manual: true, + DebugTimeBetweenStepsMsec: 1000, + }, + }, + Utility: &UtilityConfig{ + MaxMempoolTransactionBytes: 1024 ^ 3, // 1GB V0 defaults + MaxMempoolTransactions: 9000, + }, + Persistence: &PersistenceConfig{ + PostgresUrl: "postgres://postgres:postgres@pocket-db:5432/postgres", + BlockStorePath: "/var/blockstore", + }, + P2P: &P2PConfig{ + ConsensusPort: 8080, + UseRainTree: true, + IsEmptyConnectionType: false, + MaxMempoolCount: defaults.DefaultP2PMaxMempoolCount, + }, + Telemetry: &TelemetryConfig{ + Enabled: true, + Address: "0.0.0.0:9000", + Endpoint: "/metrics", + }, + Logger: &LoggerConfig{ + Level: "debug", + Format: "pretty", + }, + RPC: &RPCConfig{ + Timeout: defaults.DefaultRpcTimeout, + Port: defaults.DefaultRpcPort, + }, + } +} diff --git a/runtime/defaults/defaults.go b/runtime/defaults/defaults.go index 7d6740d9a..2dad0e737 100644 --- a/runtime/defaults/defaults.go +++ b/runtime/defaults/defaults.go @@ -2,9 +2,6 @@ package defaults import ( "fmt" - "math/big" - - "github.com/pokt-network/pocket/shared/converters" ) const ( @@ -13,23 +10,9 @@ const ( defaultRPCTimeout = 30000 ) -// TODO: some of these defaults are used for production while others are used for testing. Need to separate them. var ( - DefaultChains = []string{"0001"} - DefaultServiceURL = "" - DefaultStakeAmount = big.NewInt(1000000000000) - DefaultStakeAmountString = converters.BigIntToString(DefaultStakeAmount) - DefaultMaxRelays = big.NewInt(1000000) - DefaultMaxRelaysString = converters.BigIntToString(DefaultMaxRelays) - DefaultAccountAmount = big.NewInt(100000000000000) - DefaultAccountAmountString = converters.BigIntToString(DefaultAccountAmount) - DefaultPauseHeight = int64(-1) - DefaultUnstakingHeight = int64(-1) - DefaultChainID = "testnet" - DefaultMaxBlockBytes = uint64(4000000) - ServiceUrlFormat = "node%d.consensus:8080" - DefaultRpcPort = defaultRPCPort - DefaultRpcTimeout = uint64(defaultRPCTimeout) - DefaultRemoteCLIURL = fmt.Sprintf("http://%s:%s", defaultRPCHost, defaultRPCPort) - DefaultP2PMaxMempoolCount = uint64(1e6) + DefaultRemoteCLIURL = fmt.Sprintf("http://%s:%s", defaultRPCHost, defaultRPCPort) + DefaultRpcPort = defaultRPCPort + DefaultRpcTimeout = uint64(defaultRPCTimeout) + DefaultP2PMaxMempoolCount = uint64(1e5) ) diff --git a/runtime/defaults/params.go b/runtime/defaults/params.go deleted file mode 100644 index 28dbd7b61..000000000 --- a/runtime/defaults/params.go +++ /dev/null @@ -1,128 +0,0 @@ -package defaults - -import ( - "math/big" - - "github.com/pokt-network/pocket/runtime/genesis" - "github.com/pokt-network/pocket/shared/converters" - "github.com/pokt-network/pocket/shared/crypto" -) - -var ( - DefaultParamsOwner, _ = crypto.NewPrivateKey("ff538589deb7f28bbce1ba68b37d2efc0eaa03204b36513cf88422a875559e38d6cbe0430ddd85a5e48e0c99ef3dea47bf0d1a83c6e6ad1640f72201dc8a0120") -) - -// TODO: These are default parameters for development purposes that need to be overridden by the genesis file in production. -func DefaultParams() *genesis.Params { - return &genesis.Params{ - BlocksPerSession: 4, - AppMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - AppMaxChains: 15, - AppBaselineStakeRate: 100, - AppStakingAdjustment: 0, - AppUnstakingBlocks: 2016, - AppMinimumPauseBlocks: 4, - AppMaxPauseBlocks: 672, - ServiceNodeMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - ServiceNodeMaxChains: 15, - ServiceNodeUnstakingBlocks: 2016, - ServiceNodeMinimumPauseBlocks: 4, - ServiceNodeMaxPauseBlocks: 672, - ServiceNodesPerSession: 24, - FishermanMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - FishermanMaxChains: 15, - FishermanUnstakingBlocks: 2016, - FishermanMinimumPauseBlocks: 4, - FishermanMaxPauseBlocks: 672, - ValidatorMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - ValidatorUnstakingBlocks: 2016, - ValidatorMinimumPauseBlocks: 4, - ValidatorMaxPauseBlocks: 672, - ValidatorMaximumMissedBlocks: 5, - ValidatorMaxEvidenceAgeInBlocks: 8, - ProposerPercentageOfFees: 10, - MissedBlocksBurnPercentage: 1, - DoubleSignBurnPercentage: 5, - MessageDoubleSignFee: converters.BigIntToString(big.NewInt(10000)), - MessageSendFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageFishermanPauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageTestScoreFee: converters.BigIntToString(big.NewInt(10000)), - MessageProveTestScoreFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeAppFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageChangeParameterFee: converters.BigIntToString(big.NewInt(10000)), - AclOwner: DefaultParamsOwner.Address().String(), - BlocksPerSessionOwner: DefaultParamsOwner.Address().String(), - AppMinimumStakeOwner: DefaultParamsOwner.Address().String(), - AppMaxChainsOwner: DefaultParamsOwner.Address().String(), - AppBaselineStakeRateOwner: DefaultParamsOwner.Address().String(), - AppStakingAdjustmentOwner: DefaultParamsOwner.Address().String(), - AppUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), - AppMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), - AppMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), - ServiceNodeMinimumStakeOwner: DefaultParamsOwner.Address().String(), - ServiceNodeMaxChainsOwner: DefaultParamsOwner.Address().String(), - ServiceNodeUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), - ServiceNodeMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), - ServiceNodeMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), - ServiceNodesPerSessionOwner: DefaultParamsOwner.Address().String(), - FishermanMinimumStakeOwner: DefaultParamsOwner.Address().String(), - FishermanMaxChainsOwner: DefaultParamsOwner.Address().String(), - FishermanUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), - FishermanMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), - FishermanMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), - ValidatorMinimumStakeOwner: DefaultParamsOwner.Address().String(), - ValidatorUnstakingBlocksOwner: DefaultParamsOwner.Address().String(), - ValidatorMinimumPauseBlocksOwner: DefaultParamsOwner.Address().String(), - ValidatorMaxPausedBlocksOwner: DefaultParamsOwner.Address().String(), - ValidatorMaximumMissedBlocksOwner: DefaultParamsOwner.Address().String(), - ValidatorMaxEvidenceAgeInBlocksOwner: DefaultParamsOwner.Address().String(), - ProposerPercentageOfFeesOwner: DefaultParamsOwner.Address().String(), - MissedBlocksBurnPercentageOwner: DefaultParamsOwner.Address().String(), - DoubleSignBurnPercentageOwner: DefaultParamsOwner.Address().String(), - MessageDoubleSignFeeOwner: DefaultParamsOwner.Address().String(), - MessageSendFeeOwner: DefaultParamsOwner.Address().String(), - MessageStakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), - MessageEditStakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnstakeFishermanFeeOwner: DefaultParamsOwner.Address().String(), - MessagePauseFishermanFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnpauseFishermanFeeOwner: DefaultParamsOwner.Address().String(), - MessageFishermanPauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessageTestScoreFeeOwner: DefaultParamsOwner.Address().String(), - MessageProveTestScoreFeeOwner: DefaultParamsOwner.Address().String(), - MessageStakeAppFeeOwner: DefaultParamsOwner.Address().String(), - MessageEditStakeAppFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnstakeAppFeeOwner: DefaultParamsOwner.Address().String(), - MessagePauseAppFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnpauseAppFeeOwner: DefaultParamsOwner.Address().String(), - MessageStakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), - MessageEditStakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnstakeValidatorFeeOwner: DefaultParamsOwner.Address().String(), - MessagePauseValidatorFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnpauseValidatorFeeOwner: DefaultParamsOwner.Address().String(), - MessageStakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessageEditStakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnstakeServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessagePauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessageUnpauseServiceNodeFeeOwner: DefaultParamsOwner.Address().String(), - MessageChangeParameterFeeOwner: DefaultParamsOwner.Address().String(), - } -} diff --git a/runtime/manager.go b/runtime/manager.go index 1a5952488..7cd6c291b 100644 --- a/runtime/manager.go +++ b/runtime/manager.go @@ -49,7 +49,7 @@ func NewManagerFromFiles(configPath, genesisPath string, options ...func(*Manage // // Useful for testing and when the user doesn't want to rely on the filesystem and instead intends plugging in different configuration management system. func NewManagerFromReaders(configReader, genesisReader io.Reader, options ...func(*Manager)) *Manager { - var cfg = new(configs.Config) + var cfg = configs.NewDefaultConfig() parse(configReader, cfg) var genesisState = new(genesis.GenesisState) @@ -82,7 +82,9 @@ func NewManager(config *configs.Config, genesisState *genesis.GenesisState, opti return mgr } -func (rc *Manager) init(configJSONPath, genesisJSONPath string) (config *configs.Config, genesisState *genesis.GenesisState, err error) { +func (m *Manager) init(configJSONPath, genesisJSONPath string) (config *configs.Config, genesisState *genesis.GenesisState, err error) { + config = configs.NewDefaultConfig() + dir, configFile := path.Split(configJSONPath) filename := strings.TrimSuffix(configFile, filepath.Ext(configFile)) @@ -114,16 +116,16 @@ func (rc *Manager) init(configJSONPath, genesisJSONPath string) (config *configs return } -func (b *Manager) GetConfig() *configs.Config { - return b.config +func (m *Manager) GetConfig() *configs.Config { + return m.config } -func (b *Manager) GetGenesis() *genesis.GenesisState { - return b.genesisState +func (m *Manager) GetGenesis() *genesis.GenesisState { + return m.genesisState } -func (b *Manager) GetClock() clock.Clock { - return b.clock +func (m *Manager) GetClock() clock.Clock { + return m.clock } func parse[T *configs.Config | *genesis.GenesisState](reader io.Reader, target T) { diff --git a/runtime/manager_test.go b/runtime/manager_test.go index 6c545c67b..5997e6f2a 100644 --- a/runtime/manager_test.go +++ b/runtime/manager_test.go @@ -2,20 +2,172 @@ package runtime import ( "io" - "math/big" "os" "strings" "testing" "github.com/benbjohnson/clock" "github.com/pokt-network/pocket/runtime/configs" + "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/runtime/genesis" - "github.com/pokt-network/pocket/shared/converters" + "github.com/pokt-network/pocket/runtime/test_artifacts" "github.com/pokt-network/pocket/shared/core/types" "github.com/stretchr/testify/require" "google.golang.org/protobuf/types/known/timestamppb" ) +var expectedGenesis = &genesis.GenesisState{ + GenesisTime: ×tamppb.Timestamp{ + Seconds: 1663610702, + Nanos: 405401000, + }, + ChainId: "testnet", + MaxBlockBytes: 4000000, + Pools: []*types.Account{ + { + Address: "DAO", + Amount: "100000000000000", + }, + { + Address: "FeeCollector", + Amount: "0", + }, + { + Address: "AppStakePool", + Amount: "100000000000000", + }, + { + Address: "ValidatorStakePool", + Amount: "100000000000000", + }, + { + Address: "ServiceNodeStakePool", + Amount: "100000000000000", + }, + { + Address: "FishermanStakePool", + Amount: "100000000000000", + }, + }, + Accounts: []*types.Account{ + { + Address: "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", + Amount: "100000000000000", + }, + { + Address: "67eb3f0a50ae459fecf666be0e93176e92441317", + Amount: "100000000000000", + }, + { + Address: "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", + Amount: "100000000000000", + }, + { + Address: "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", + Amount: "100000000000000", + }, + { + Address: "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", + Amount: "100000000000000", + }, + { + Address: "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", + Amount: "100000000000000", + }, + { + Address: "88a792b7aca673620132ef01f50e62caa58eca83", + Amount: "100000000000000", + }, + }, + Applications: []*types.Actor{ + { + ActorType: types.ActorType_ACTOR_TYPE_APP, + Address: "88a792b7aca673620132ef01f50e62caa58eca83", + PublicKey: "5f78658599943dc3e623539ce0b3c9fe4e192034a1e3fef308bc9f96915754e0", + Chains: []string{"0001"}, + GenericParam: "1000000", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "88a792b7aca673620132ef01f50e62caa58eca83", + }, + }, + Validators: []*types.Actor{ + + { + ActorType: types.ActorType_ACTOR_TYPE_VAL, + Address: "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", + PublicKey: "b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", + Chains: nil, + GenericParam: "node1.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", + }, + { + ActorType: types.ActorType_ACTOR_TYPE_VAL, + Address: "67eb3f0a50ae459fecf666be0e93176e92441317", + PublicKey: "c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb", + Chains: nil, + GenericParam: "node2.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "67eb3f0a50ae459fecf666be0e93176e92441317", + }, + { + ActorType: types.ActorType_ACTOR_TYPE_VAL, + Address: "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", + PublicKey: "a8b6be75d7551da093f788f7286c3a9cb885cfc8e52710eac5f1d5e5b4bf19b2", + Chains: nil, + GenericParam: "node3.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", + }, + { + ActorType: types.ActorType_ACTOR_TYPE_VAL, + Address: "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", + PublicKey: "53ee26c82826694ffe1773d7b60d5f20dd9e91bdf8745544711bec5ff9c6fb4a", + Chains: nil, + GenericParam: "node4.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", + }, + }, + ServiceNodes: []*types.Actor{ + { + ActorType: types.ActorType_ACTOR_TYPE_SERVICENODE, + Address: "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", + PublicKey: "16cd0a304c38d76271f74dd3c90325144425d904ef1b9a6fbab9b201d75a998b", + Chains: []string{"0001"}, + GenericParam: "node1.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", + }, + }, + Fishermen: []*types.Actor{ + { + ActorType: types.ActorType_ACTOR_TYPE_FISH, + Address: "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", + PublicKey: "68efd26af01692fcd77dc135ca1de69ede464e8243e6832bd6c37f282db8c9cb", + Chains: []string{"0001"}, + GenericParam: "node1.consensus:8080", + StakedAmount: "1000000000000", + PausedHeight: -1, + UnstakingHeight: -1, + Output: "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", + }, + }, + Params: test_artifacts.DefaultParams(), +} + func TestNewManagerFromReaders(t *testing.T) { type args struct { configReader io.Reader @@ -34,9 +186,10 @@ func TestNewManagerFromReaders(t *testing.T) { } tests := []struct { - name string - args args - want *Manager + name string + args args + want *Manager + assertion require.ComparisonAssertionFunc }{ { name: "reading from the build directory", @@ -73,7 +226,7 @@ func TestNewManagerFromReaders(t *testing.T) { ConsensusPort: 8080, UseRainTree: true, IsEmptyConnectionType: false, - MaxMempoolCount: 1e6, + MaxMempoolCount: 1e5, }, Telemetry: &configs.TelemetryConfig{ Enabled: true, @@ -91,275 +244,46 @@ func TestNewManagerFromReaders(t *testing.T) { UseCors: false, }, }, - &genesis.GenesisState{ - GenesisTime: ×tamppb.Timestamp{ - Seconds: 1663610702, - Nanos: 405401000, - }, - ChainId: "testnet", - MaxBlockBytes: 4000000, - Pools: []*types.Account{ - { - Address: "DAO", - Amount: "100000000000000", - }, - { - Address: "FeeCollector", - Amount: "0", - }, - { - Address: "AppStakePool", - Amount: "100000000000000", - }, - { - Address: "ValidatorStakePool", - Amount: "100000000000000", - }, - { - Address: "ServiceNodeStakePool", - Amount: "100000000000000", - }, - { - Address: "FishermanStakePool", - Amount: "100000000000000", - }, - }, - Accounts: []*types.Account{ - { - Address: "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", - Amount: "100000000000000", - }, - { - Address: "67eb3f0a50ae459fecf666be0e93176e92441317", - Amount: "100000000000000", - }, - { - Address: "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", - Amount: "100000000000000", - }, - { - Address: "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", - Amount: "100000000000000", - }, - { - Address: "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", - Amount: "100000000000000", - }, - { - Address: "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", - Amount: "100000000000000", - }, - { - Address: "88a792b7aca673620132ef01f50e62caa58eca83", - Amount: "100000000000000", - }, - }, - Applications: []*types.Actor{ - { - ActorType: types.ActorType_ACTOR_TYPE_APP, - Address: "88a792b7aca673620132ef01f50e62caa58eca83", - PublicKey: "5f78658599943dc3e623539ce0b3c9fe4e192034a1e3fef308bc9f96915754e0", - Chains: []string{"0001"}, - GenericParam: "1000000", - StakedAmount: "1000000000000", - PausedHeight: -1, - UnstakingHeight: -1, - Output: "88a792b7aca673620132ef01f50e62caa58eca83", - }, - }, - Validators: []*types.Actor{ - - { - ActorType: types.ActorType_ACTOR_TYPE_VAL, - Address: "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", - PublicKey: "b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", - Chains: nil, - GenericParam: "node1.consensus:8080", - StakedAmount: "1000000000000", - PausedHeight: -1, - UnstakingHeight: -1, - Output: "6f66574e1f50f0ef72dff748c3f11b9e0e89d32a", - }, - { - ActorType: types.ActorType_ACTOR_TYPE_VAL, - Address: "67eb3f0a50ae459fecf666be0e93176e92441317", - PublicKey: "c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb", - Chains: nil, - GenericParam: "node2.consensus:8080", - StakedAmount: "1000000000000", - PausedHeight: -1, - UnstakingHeight: -1, - Output: "67eb3f0a50ae459fecf666be0e93176e92441317", - }, - { - ActorType: types.ActorType_ACTOR_TYPE_VAL, - Address: "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", - PublicKey: "a8b6be75d7551da093f788f7286c3a9cb885cfc8e52710eac5f1d5e5b4bf19b2", - Chains: nil, - GenericParam: "node3.consensus:8080", - StakedAmount: "1000000000000", - PausedHeight: -1, - UnstakingHeight: -1, - Output: "3f52e08c4b3b65ab7cf098d77df5bf8cedcf5f99", - }, - { - ActorType: types.ActorType_ACTOR_TYPE_VAL, - Address: "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", - PublicKey: "53ee26c82826694ffe1773d7b60d5f20dd9e91bdf8745544711bec5ff9c6fb4a", - Chains: nil, - GenericParam: "node4.consensus:8080", - StakedAmount: "1000000000000", - PausedHeight: -1, - UnstakingHeight: -1, - Output: "113fdb095d42d6e09327ab5b8df13fd8197a1eaf", - }, - }, - ServiceNodes: []*types.Actor{ - { - ActorType: types.ActorType_ACTOR_TYPE_SERVICENODE, - Address: "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", - PublicKey: "16cd0a304c38d76271f74dd3c90325144425d904ef1b9a6fbab9b201d75a998b", - Chains: []string{"0001"}, - GenericParam: "node1.consensus:8080", - StakedAmount: "1000000000000", - PausedHeight: -1, - UnstakingHeight: -1, - Output: "43d9ea9d9ad9c58bb96ec41340f83cb2cabb6496", - }, - }, - Fishermen: []*types.Actor{ - { - ActorType: types.ActorType_ACTOR_TYPE_FISH, - Address: "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", - PublicKey: "68efd26af01692fcd77dc135ca1de69ede464e8243e6832bd6c37f282db8c9cb", - Chains: []string{"0001"}, - GenericParam: "node1.consensus:8080", - StakedAmount: "1000000000000", - PausedHeight: -1, - UnstakingHeight: -1, - Output: "9ba047197ec043665ad3f81278ab1f5d3eaf6b8b", - }, - }, - Params: &genesis.Params{ - BlocksPerSession: 4, - AppMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - AppMaxChains: 15, - AppBaselineStakeRate: 100, - AppStakingAdjustment: 0, - AppUnstakingBlocks: 2016, - AppMinimumPauseBlocks: 4, - AppMaxPauseBlocks: 672, - ServiceNodeMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - ServiceNodeMaxChains: 15, - ServiceNodeUnstakingBlocks: 2016, - ServiceNodeMinimumPauseBlocks: 4, - ServiceNodeMaxPauseBlocks: 672, - ServiceNodesPerSession: 24, - FishermanMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - FishermanMaxChains: 15, - FishermanUnstakingBlocks: 2016, - FishermanMinimumPauseBlocks: 4, - FishermanMaxPauseBlocks: 672, - ValidatorMinimumStake: converters.BigIntToString(big.NewInt(15000000000)), - ValidatorUnstakingBlocks: 2016, - ValidatorMinimumPauseBlocks: 4, - ValidatorMaxPauseBlocks: 672, - ValidatorMaximumMissedBlocks: 5, - ValidatorMaxEvidenceAgeInBlocks: 8, - ProposerPercentageOfFees: 10, - MissedBlocksBurnPercentage: 1, - DoubleSignBurnPercentage: 5, - MessageDoubleSignFee: converters.BigIntToString(big.NewInt(10000)), - MessageSendFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseFishermanFee: converters.BigIntToString(big.NewInt(10000)), - MessageFishermanPauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageTestScoreFee: converters.BigIntToString(big.NewInt(10000)), - MessageProveTestScoreFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeAppFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseAppFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseValidatorFee: converters.BigIntToString(big.NewInt(10000)), - MessageStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageEditStakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnstakeServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessagePauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageUnpauseServiceNodeFee: converters.BigIntToString(big.NewInt(10000)), - MessageChangeParameterFee: converters.BigIntToString(big.NewInt(10000)), - AclOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - BlocksPerSessionOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - AppMinimumStakeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - AppMaxChainsOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - AppBaselineStakeRateOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - AppStakingAdjustmentOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - AppUnstakingBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - AppMinimumPauseBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - AppMaxPausedBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ServiceNodeMinimumStakeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ServiceNodeMaxChainsOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ServiceNodeUnstakingBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ServiceNodeMinimumPauseBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ServiceNodeMaxPausedBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ServiceNodesPerSessionOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - FishermanMinimumStakeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - FishermanMaxChainsOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - FishermanUnstakingBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - FishermanMinimumPauseBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - FishermanMaxPausedBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ValidatorMinimumStakeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ValidatorUnstakingBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ValidatorMinimumPauseBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ValidatorMaxPausedBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ValidatorMaximumMissedBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ValidatorMaxEvidenceAgeInBlocksOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - ProposerPercentageOfFeesOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MissedBlocksBurnPercentageOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - DoubleSignBurnPercentageOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageDoubleSignFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageSendFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageStakeFishermanFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageEditStakeFishermanFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageUnstakeFishermanFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessagePauseFishermanFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageUnpauseFishermanFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageFishermanPauseServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageTestScoreFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageProveTestScoreFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageStakeAppFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageEditStakeAppFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageUnstakeAppFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessagePauseAppFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageUnpauseAppFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageStakeValidatorFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageEditStakeValidatorFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageUnstakeValidatorFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessagePauseValidatorFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageUnpauseValidatorFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageStakeServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageEditStakeServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageUnstakeServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessagePauseServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageUnpauseServiceNodeFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", - MessageChangeParameterFeeOwner: "da034209758b78eaea06dd99c07909ab54c99b45", + expectedGenesis, + clock.New(), + }, + assertion: require.Equal, + }, + { + name: "unset MaxMempoolCount should fallback to default value", + args: args{ + configReader: strings.NewReader(string(`{ + "p2p": { + "consensus_port": 8080, + "use_rain_tree": true, + "is_empty_connection_type": false, + "private_key": "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4" + } + }`)), + genesisReader: strings.NewReader(string(buildGenesisBytes)), + }, + want: &Manager{ + &configs.Config{ + P2P: &configs.P2PConfig{ + PrivateKey: "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", + ConsensusPort: 8080, + UseRainTree: true, + IsEmptyConnectionType: false, + MaxMempoolCount: defaults.DefaultP2PMaxMempoolCount, }, }, + expectedGenesis, clock.New(), }, + assertion: func(tt require.TestingT, want, got interface{}, _ ...interface{}) { + require.Equal(tt, want.(*Manager).config.P2P, got.(*Manager).config.P2P) + }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := NewManagerFromReaders(tt.args.configReader, tt.args.genesisReader, tt.args.options...) - require.Equal(t, tt.want, got) + tt.assertion(t, tt.want, got) }) } } diff --git a/runtime/test_artifacts/defaults.go b/runtime/test_artifacts/defaults.go new file mode 100644 index 000000000..4419a29d6 --- /dev/null +++ b/runtime/test_artifacts/defaults.go @@ -0,0 +1,23 @@ +package test_artifacts + +import ( + "math/big" + + "github.com/pokt-network/pocket/shared/converters" +) + +var ( + DefaultChains = []string{"0001"} + DefaultServiceURL = "" + DefaultStakeAmount = big.NewInt(1000000000000) + DefaultStakeAmountString = converters.BigIntToString(DefaultStakeAmount) + DefaultMaxRelays = big.NewInt(1000000) + DefaultMaxRelaysString = converters.BigIntToString(DefaultMaxRelays) + DefaultAccountAmount = big.NewInt(100000000000000) + DefaultAccountAmountString = converters.BigIntToString(DefaultAccountAmount) + DefaultPauseHeight = int64(-1) + DefaultUnstakingHeight = int64(-1) + DefaultChainID = "testnet" + ServiceUrlFormat = "node%d.consensus:8080" + DefaultMaxBlockBytes = uint64(4000000) +) diff --git a/runtime/test_artifacts/generator.go b/runtime/test_artifacts/generator.go index 690c8904b..cfb46136b 100644 --- a/runtime/test_artifacts/generator.go +++ b/runtime/test_artifacts/generator.go @@ -6,7 +6,6 @@ import ( "strconv" "github.com/pokt-network/pocket/runtime/configs" - "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/runtime/genesis" "github.com/pokt-network/pocket/runtime/test_artifacts/keygenerator" coreTypes "github.com/pokt-network/pocket/shared/core/types" @@ -23,8 +22,8 @@ func NewGenesisState(numValidators, numServiceNodes, numApplications, numFisherm genesisState := &genesis.GenesisState{ GenesisTime: timestamppb.Now(), - ChainId: defaults.DefaultChainID, - MaxBlockBytes: defaults.DefaultMaxBlockBytes, + ChainId: DefaultChainID, + MaxBlockBytes: DefaultMaxBlockBytes, Pools: NewPools(), Accounts: NewAccounts(numValidators+numServiceNodes+numApplications+numFisherman, append(append(append(validatorPrivateKeys, snPrivateKeys...), fishPrivateKeys...), appsPrivateKeys...)...), // TODO(olshansky): clean this up Applications: apps, @@ -72,6 +71,7 @@ func NewDefaultConfig(i int, pk string) *configs.Config { UseRainTree: true, IsEmptyConnectionType: false, PrivateKey: pk, + MaxMempoolCount: 1e5, }, Telemetry: &configs.TelemetryConfig{ Enabled: true, @@ -93,7 +93,7 @@ func NewPools() (pools []*coreTypes.Account) { } pools = append(pools, &coreTypes.Account{ Address: name, - Amount: defaults.DefaultAccountAmountString, + Amount: DefaultAccountAmountString, }) } return @@ -108,7 +108,7 @@ func NewAccounts(n int, privateKeys ...string) (accounts []*coreTypes.Account) { } accounts = append(accounts, &coreTypes.Account{ Address: addr, - Amount: defaults.DefaultAccountAmountString, + Amount: DefaultAccountAmountString, }) } return @@ -121,7 +121,7 @@ func NewActors(actorType coreTypes.ActorType, n int) (actors []*coreTypes.Actor, for i := 0; i < n; i++ { genericParam := getServiceUrl(i + 1) if int32(actorType) == int32(coreTypes.ActorType_ACTOR_TYPE_APP) { - genericParam = defaults.DefaultMaxRelaysString + genericParam = DefaultMaxRelaysString } actor, pk := NewDefaultActor(int32(actorType), genericParam) actors = append(actors, actor) @@ -132,25 +132,25 @@ func NewActors(actorType coreTypes.ActorType, n int) (actors []*coreTypes.Actor, } func getServiceUrl(n int) string { - return fmt.Sprintf(defaults.ServiceUrlFormat, n) + return fmt.Sprintf(ServiceUrlFormat, n) } func NewDefaultActor(actorType int32, genericParam string) (actor *coreTypes.Actor, privateKey string) { privKey, pubKey, addr := keygenerator.GetInstance().Next() - chains := defaults.DefaultChains + chains := DefaultChains if actorType == int32(coreTypes.ActorType_ACTOR_TYPE_VAL) { chains = nil } else if actorType == int32(coreTypes.ActorType_ACTOR_TYPE_APP) { - genericParam = defaults.DefaultMaxRelaysString + genericParam = DefaultMaxRelaysString } return &coreTypes.Actor{ Address: addr, PublicKey: pubKey, Chains: chains, GenericParam: genericParam, - StakedAmount: defaults.DefaultStakeAmountString, - PausedHeight: defaults.DefaultPauseHeight, - UnstakingHeight: defaults.DefaultUnstakingHeight, + StakedAmount: DefaultStakeAmountString, + PausedHeight: DefaultPauseHeight, + UnstakingHeight: DefaultUnstakingHeight, Output: addr, ActorType: coreTypes.ActorType(actorType), }, privKey From 2c420c7ce095f61d319b60aff0aebd57d6d3b97b Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 20:21:10 +0000 Subject: [PATCH 079/120] feat(genesis): params are not hardcoded anymore --- persistence/genesis.go | 3 +-- persistence/gov.go | 9 ++++++--- persistence/test/gov_test.go | 13 +++++++------ persistence/types/gov_test.go | 4 ++-- shared/modules/persistence_module.go | 3 ++- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/persistence/genesis.go b/persistence/genesis.go index 0b7ec9a24..ae02351a2 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -111,8 +111,7 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { } } - // TODO(team): use params from genesis file - not the hardcoded - if err = rwContext.InitParams(); err != nil { + if err = rwContext.InitParams(state.Params); err != nil { log.Fatalf("an error occurred initializing params: %s", err.Error()) } diff --git a/persistence/gov.go b/persistence/gov.go index 2e595ac6d..831d0629f 100644 --- a/persistence/gov.go +++ b/persistence/gov.go @@ -7,7 +7,7 @@ import ( "strconv" "github.com/pokt-network/pocket/persistence/types" - "github.com/pokt-network/pocket/runtime/defaults" + "github.com/pokt-network/pocket/runtime/genesis" ) // TODO : Deprecate these two constants when we change the persistenceRWContext interface to pass the `paramName` @@ -27,12 +27,15 @@ func (p PostgresContext) GetServiceNodesPerSessionAt(height int64) (int, error) return p.GetIntParam(ServiceNodesPerSessionParamName, height) } -func (p PostgresContext) InitParams() error { +func (p PostgresContext) InitParams(params *genesis.Params) error { ctx, tx, err := p.getCtxAndTx() if err != nil { return err } - _, err = tx.Exec(ctx, types.InsertParams(defaults.DefaultParams(), p.Height)) + if p.Height != 0 { + return fmt.Errorf("cannot initialize params at height %d", p.Height) + } + _, err = tx.Exec(ctx, types.InsertParams(params, p.Height)) return err } diff --git a/persistence/test/gov_test.go b/persistence/test/gov_test.go index 1cadfa46c..7b80a1d2f 100644 --- a/persistence/test/gov_test.go +++ b/persistence/test/gov_test.go @@ -4,6 +4,7 @@ import ( "encoding/hex" "testing" + "github.com/pokt-network/pocket/runtime/test_artifacts" "github.com/stretchr/testify/require" ) @@ -16,14 +17,14 @@ const ( func TestInitParams(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams() + err := db.InitParams(test_artifacts.DefaultParams()) require.NoError(t, err) } func TestGetSetIntParam(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams() + err := db.InitParams(test_artifacts.DefaultParams()) require.NoError(t, err) newMaxChains := 42 @@ -43,7 +44,7 @@ func TestGetSetIntParam(t *testing.T) { func TestGetSetStringParam(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams() + err := db.InitParams(test_artifacts.DefaultParams()) require.NoError(t, err) newServiceNodeMinimumStake := "99999999" @@ -63,7 +64,7 @@ func TestGetSetStringParam(t *testing.T) { func TestGetSetByteArrayParam(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams() + err := db.InitParams(test_artifacts.DefaultParams()) require.NoError(t, err) newOwner, err := hex.DecodeString("63585955783252764a6e576a5631647542486168426c63774e4655345a57617468545532637a6330516e4d5978575977674553537857644e4a6b4c7734575335416a65616c6d57494a47535364555933686d565a706e57564a6d6143526c54594248626864465a72646c624f646c59704a45536a6c6c52794d32527849545733566c6557464763745a465377466a57324a316157314562554a6c564b6c325470394753696c58544846474e786331567a70554d534a6c5335566d4c356f305157684663726c6b4e4a4e305931496c624a4e58537035554d4a7058564a705561506c3259484a47614b6c585a") @@ -121,7 +122,7 @@ func TestGetSetToggleIntFlag(t *testing.T) { func TestGetSetToggleStringFlag(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams() + err := db.InitParams(test_artifacts.DefaultParams()) require.NoError(t, err) newServiceNodeMinimumStake := "99999999" @@ -157,7 +158,7 @@ func TestGetSetToggleStringFlag(t *testing.T) { func TestGetSetToggleByteArrayFlag(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams() + err := db.InitParams(test_artifacts.DefaultParams()) require.NoError(t, err) newOwner, err := hex.DecodeString("576c687353324648536b685a4d6d785159565677536c5a596345704e565456775531684f536d4a735354465a4d45354b546d7473636d4e47614664524d473831544731574e564e58624642685658417a5757704b4d4531466548524f56336872553064534d6c6b794d587068565868455532784b55303156634870574d574e34546b64475346525962476c54527a6c7756444a7353315274546e42526132524b5530645362316b7a62454e694d58425a55323134536d4a71515856564d573831576c525753466c555a456c5a656c5a35557a4e4f56314a7352545657566b303055573157616d52704d545a5256557033576a4677556d5274576c6c57526d6779546c684b546c5a52") diff --git a/persistence/types/gov_test.go b/persistence/types/gov_test.go index 10ae74fe1..f3dea6c76 100644 --- a/persistence/types/gov_test.go +++ b/persistence/types/gov_test.go @@ -3,8 +3,8 @@ package types import ( "testing" - "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/runtime/genesis" + "github.com/pokt-network/pocket/runtime/test_artifacts" ) func TestInsertParams(t *testing.T) { @@ -20,7 +20,7 @@ func TestInsertParams(t *testing.T) { { name: "should insert genesis.DefaultParams() as expected", args: args{ - params: defaults.DefaultParams(), + params: test_artifacts.DefaultParams(), height: DefaultBigInt, }, want: "INSERT INTO params VALUES ('blocks_per_session', -1, 'BIGINT', 4)," + diff --git a/shared/modules/persistence_module.go b/shared/modules/persistence_module.go index 414df81de..6de7c5890 100644 --- a/shared/modules/persistence_module.go +++ b/shared/modules/persistence_module.go @@ -4,6 +4,7 @@ package modules import ( "github.com/pokt-network/pocket/persistence/kvstore" + "github.com/pokt-network/pocket/runtime/genesis" coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/messaging" ) @@ -109,7 +110,7 @@ type PersistenceWriteContext interface { SetValidatorMissedBlocks(address []byte, missedBlocks int) error // Param Operations - InitParams() error + InitParams(params *genesis.Params) error SetParam(paramName string, value interface{}) error // Flag Operations From 0d62c5b17fe1163c2621becdf820d2c307159937 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 20:22:20 +0000 Subject: [PATCH 080/120] test(utility): defaults from test_artifacts --- utility/test/actor_test.go | 21 ++++++++++----------- utility/test/module_test.go | 3 +-- utility/test/transaction_test.go | 3 +-- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/utility/test/actor_test.go b/utility/test/actor_test.go index 4b1f106cd..96a4cf791 100644 --- a/utility/test/actor_test.go +++ b/utility/test/actor_test.go @@ -8,7 +8,6 @@ import ( "sort" "testing" - "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/runtime/test_artifacts" coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/crypto" @@ -32,13 +31,13 @@ func TestUtilityContext_HandleMessageStake(t *testing.T) { outputAddress, err := crypto.GenerateAddress() require.NoError(t, err) - err = ctx.SetAccountAmount(outputAddress, defaults.DefaultAccountAmount) + err = ctx.SetAccountAmount(outputAddress, test_artifacts.DefaultAccountAmount) require.NoError(t, err, "error setting account amount error") msg := &typesUtil.MessageStake{ PublicKey: pubKey.Bytes(), - Chains: defaults.DefaultChains, - Amount: defaults.DefaultStakeAmountString, + Chains: test_artifacts.DefaultChains, + Amount: test_artifacts.DefaultStakeAmountString, ServiceUrl: "https://localhost.com", OutputAddress: outputAddress, Signer: outputAddress, @@ -55,7 +54,7 @@ func TestUtilityContext_HandleMessageStake(t *testing.T) { require.Equal(t, msg.Chains, actor.GetChains(), "incorrect actor chains") } require.Equal(t, typesUtil.HeightNotUsed, actor.GetPausedHeight(), "incorrect actor height") - require.Equal(t, defaults.DefaultStakeAmountString, actor.GetStakedAmount(), "incorrect actor stake amount") + require.Equal(t, test_artifacts.DefaultStakeAmountString, actor.GetStakedAmount(), "incorrect actor stake amount") require.Equal(t, typesUtil.HeightNotUsed, actor.GetUnstakingHeight(), "incorrect actor unstaking height") require.Equal(t, outputAddress.String(), actor.GetOutput(), "incorrect actor output address") @@ -76,8 +75,8 @@ func TestUtilityContext_HandleMessageEditStake(t *testing.T) { msg := &typesUtil.MessageEditStake{ Address: addrBz, - Chains: defaults.DefaultChains, - Amount: defaults.DefaultStakeAmountString, + Chains: test_artifacts.DefaultChains, + Amount: test_artifacts.DefaultStakeAmountString, Signer: addrBz, ActorType: actorType, } @@ -91,10 +90,10 @@ func TestUtilityContext_HandleMessageEditStake(t *testing.T) { if actorType != coreTypes.ActorType_ACTOR_TYPE_VAL { require.Equal(t, msgChainsEdited.Chains, actor.GetChains(), "incorrect edited chains") } - require.Equal(t, defaults.DefaultStakeAmountString, actor.GetStakedAmount(), "incorrect staked tokens") + require.Equal(t, test_artifacts.DefaultStakeAmountString, actor.GetStakedAmount(), "incorrect staked tokens") require.Equal(t, typesUtil.HeightNotUsed, actor.GetUnstakingHeight(), "incorrect unstaking height") - amountEdited := defaults.DefaultAccountAmount.Add(defaults.DefaultAccountAmount, big.NewInt(1)) + amountEdited := test_artifacts.DefaultAccountAmount.Add(test_artifacts.DefaultAccountAmount, big.NewInt(1)) amountEditedString := typesUtil.BigIntToString(amountEdited) msgAmountEdited := proto.Clone(msg).(*typesUtil.MessageEditStake) msgAmountEdited.Amount = amountEditedString @@ -355,8 +354,8 @@ func TestUtilityContext_GetMessageEditStakeSignerCandidates(t *testing.T) { msgEditStake := &typesUtil.MessageEditStake{ Address: addrBz, - Chains: defaults.DefaultChains, - Amount: defaults.DefaultStakeAmountString, + Chains: test_artifacts.DefaultChains, + Amount: test_artifacts.DefaultStakeAmountString, ActorType: actorType, } candidates, err := ctx.GetMessageEditStakeSignerCandidates(msgEditStake) diff --git a/utility/test/module_test.go b/utility/test/module_test.go index bc8f38ff9..76dc342d1 100644 --- a/utility/test/module_test.go +++ b/utility/test/module_test.go @@ -11,7 +11,6 @@ import ( "github.com/pokt-network/pocket/persistence" "github.com/pokt-network/pocket/runtime" "github.com/pokt-network/pocket/runtime/configs" - "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/runtime/test_artifacts" coreTypes "github.com/pokt-network/pocket/shared/core/types" "github.com/pokt-network/pocket/shared/messaging" @@ -33,7 +32,7 @@ var ( defaultTestingChainsEdited = []string{"0002"} defaultUnstaking = int64(2017) - defaultNonceString = utilTypes.BigIntToString(defaults.DefaultAccountAmount) + defaultNonceString = utilTypes.BigIntToString(test_artifacts.DefaultAccountAmount) testNonce = "defaultNonceString" testSchema = "test_schema" diff --git a/utility/test/transaction_test.go b/utility/test/transaction_test.go index 4cc4cb833..c8cd19d34 100644 --- a/utility/test/transaction_test.go +++ b/utility/test/transaction_test.go @@ -5,7 +5,6 @@ import ( "math/big" "testing" - "github.com/pokt-network/pocket/runtime/defaults" "github.com/pokt-network/pocket/runtime/test_artifacts" "github.com/pokt-network/pocket/shared/codec" coreTypes "github.com/pokt-network/pocket/shared/core/types" @@ -148,7 +147,7 @@ func TestUtilityContext_HandleMessage(t *testing.T) { func newTestingTransaction(t *testing.T, ctx utility.UtilityContext) (transaction *typesUtil.Transaction, startingBalance, amountSent *big.Int, signer crypto.PrivateKey) { amountSent = new(big.Int).Set(defaultSendAmount) - startingBalance = new(big.Int).Set(defaults.DefaultAccountAmount) + startingBalance = new(big.Int).Set(test_artifacts.DefaultAccountAmount) recipientAddr, err := crypto.GenerateAddress() require.NoError(t, err) From 10e04ccbaa41608429263aceebfaa6390ee0e826 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 20:25:53 +0000 Subject: [PATCH 081/120] fix(config): removed redundant cfg (now we have defaults logic) --- build/config/config1.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build/config/config1.json b/build/config/config1.json index 314907b27..e296eb787 100644 --- a/build/config/config1.json +++ b/build/config/config1.json @@ -25,8 +25,7 @@ "consensus_port": 8080, "use_rain_tree": true, "is_empty_connection_type": false, - "private_key": "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4", - "max_mempool_count": 1000000 + "private_key": "6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4" }, "telemetry": { "enabled": true, From e9cc6e823926c93bb5e76f8bc4c2c9c1da55de0a Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 20:31:20 +0000 Subject: [PATCH 082/120] Update utility/types/proto/stake_status.proto Co-authored-by: Daniel Olshansky --- utility/types/proto/stake_status.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/utility/types/proto/stake_status.proto b/utility/types/proto/stake_status.proto index b060d87f6..31f275ad1 100644 --- a/utility/types/proto/stake_status.proto +++ b/utility/types/proto/stake_status.proto @@ -4,6 +4,7 @@ package utility; option go_package = "github.com/pokt-network/pocket/utility/types"; // DISCUSS: *Design Decision* deprecating StakeStatus +REFACTOR(#258): Rename the protobuf types to follow best practices enum StakeStatus { UnknownStatus = 0; Unstaking = 1; From 1e6ceab9cfc38da111876115112ad52be471f748 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 20:32:55 +0000 Subject: [PATCH 083/120] Revert "Update utility/types/proto/stake_status.proto" This reverts commit e9cc6e823926c93bb5e76f8bc4c2c9c1da55de0a. --- utility/types/proto/stake_status.proto | 1 - 1 file changed, 1 deletion(-) diff --git a/utility/types/proto/stake_status.proto b/utility/types/proto/stake_status.proto index 31f275ad1..b060d87f6 100644 --- a/utility/types/proto/stake_status.proto +++ b/utility/types/proto/stake_status.proto @@ -4,7 +4,6 @@ package utility; option go_package = "github.com/pokt-network/pocket/utility/types"; // DISCUSS: *Design Decision* deprecating StakeStatus -REFACTOR(#258): Rename the protobuf types to follow best practices enum StakeStatus { UnknownStatus = 0; Unstaking = 1; From 623999f50c63fdab5ad609d39f3d229d6d56330e Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 20:33:38 +0000 Subject: [PATCH 084/120] docs(utility): linked issue #258 to todo item --- utility/types/proto/stake_status.proto | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utility/types/proto/stake_status.proto b/utility/types/proto/stake_status.proto index b060d87f6..4ed646fd4 100644 --- a/utility/types/proto/stake_status.proto +++ b/utility/types/proto/stake_status.proto @@ -1,11 +1,13 @@ syntax = "proto3"; + package utility; option go_package = "github.com/pokt-network/pocket/utility/types"; // DISCUSS: *Design Decision* deprecating StakeStatus +// REFACTOR(#258): Rename the protobuf types to follow best practices enum StakeStatus { UnknownStatus = 0; Unstaking = 1; Staked = 2; -} \ No newline at end of file +} From e9ebc6e757346385fc1aacd0380bcee80a247e5a Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 20:53:33 +0000 Subject: [PATCH 085/120] refactor(test_artifacts): DRY config generation logic --- runtime/configs/config.go | 24 ++++++++++++++-- runtime/test_artifacts/generator.go | 44 ++++------------------------- 2 files changed, 27 insertions(+), 41 deletions(-) diff --git a/runtime/configs/config.go b/runtime/configs/config.go index 32b6996e6..188a76a39 100644 --- a/runtime/configs/config.go +++ b/runtime/configs/config.go @@ -15,8 +15,8 @@ type Config struct { RPC *RPCConfig `json:"rpc"` } -func NewDefaultConfig() *Config { - return &Config{ +func NewDefaultConfig(options ...func(*Config)) *Config { + cfg := &Config{ RootDirectory: "/go/src/github.com/pocket-network", Consensus: &ConsensusConfig{ MaxMempoolBytes: 500000000, @@ -54,4 +54,24 @@ func NewDefaultConfig() *Config { Port: defaults.DefaultRpcPort, }, } + + for _, option := range options { + option(cfg) + } + + return cfg +} + +func WithPK(pk string) func(*Config) { + return func(cfg *Config) { + cfg.PrivateKey = pk + cfg.Consensus.PrivateKey = pk + cfg.P2P.PrivateKey = pk + } +} + +func WithNodeSchema(schema string) func(*Config) { + return func(cfg *Config) { + cfg.Persistence.NodeSchema = schema + } } diff --git a/runtime/test_artifacts/generator.go b/runtime/test_artifacts/generator.go index cfb46136b..17ce1ba15 100644 --- a/runtime/test_artifacts/generator.go +++ b/runtime/test_artifacts/generator.go @@ -37,50 +37,16 @@ func NewGenesisState(numValidators, numServiceNodes, numApplications, numFisherm return genesisState, validatorPrivateKeys } -func NewDefaultConfigs(privateKeys []string) (configs []*configs.Config) { +func NewDefaultConfigs(privateKeys []string) (cfgs []*configs.Config) { for i, pk := range privateKeys { - configs = append(configs, NewDefaultConfig(i, pk)) + cfgs = append(cfgs, configs.NewDefaultConfig( + configs.WithPK(pk), + configs.WithNodeSchema("node"+strconv.Itoa(i+1)), + )) } return } -func NewDefaultConfig(i int, pk string) *configs.Config { - return &configs.Config{ - RootDirectory: "/go/src/github.com/pocket-network", - PrivateKey: pk, - Consensus: &configs.ConsensusConfig{ - MaxMempoolBytes: 500000000, - PacemakerConfig: &configs.PacemakerConfig{ - TimeoutMsec: 5000, - Manual: true, - DebugTimeBetweenStepsMsec: 1000, - }, - PrivateKey: pk, - }, - Utility: &configs.UtilityConfig{ - MaxMempoolTransactionBytes: 1024 * 1024 * 1024, // 1GB V0 defaults - MaxMempoolTransactions: 9000, - }, - Persistence: &configs.PersistenceConfig{ - PostgresUrl: "postgres://postgres:postgres@pocket-db:5432/postgres", - NodeSchema: "node" + strconv.Itoa(i+1), - BlockStorePath: "/var/blockstore", - }, - P2P: &configs.P2PConfig{ - ConsensusPort: 8080, - UseRainTree: true, - IsEmptyConnectionType: false, - PrivateKey: pk, - MaxMempoolCount: 1e5, - }, - Telemetry: &configs.TelemetryConfig{ - Enabled: true, - Address: "0.0.0.0:9000", - Endpoint: "/metrics", - }, - } -} - // REFACTOR: Test artifact generator should reflect the sum of the initial account values to populate the initial pool values func NewPools() (pools []*coreTypes.Account) { for _, name := range coreTypes.PoolNames_name { From 4e24c6a1593eebf47036edee1d40a2b80ff3840e Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 21:34:31 +0000 Subject: [PATCH 086/120] docs(build): CHANGELOG --- build/doc/CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 build/doc/CHANGELOG.md diff --git a/build/doc/CHANGELOG.md b/build/doc/CHANGELOG.md new file mode 100644 index 000000000..17bcf4045 --- /dev/null +++ b/build/doc/CHANGELOG.md @@ -0,0 +1,17 @@ +# Changelog + +All notable changes to this module will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.0.0.1] - 2022-12-22 + +- Updated configs with the missing value `max_mempool_count` +- Added `is_client_only` to `config1.json` so that Viper knows it can be overridden. Done in the Makefile in `make client_connect`. Setting this can be avoided if we merge the changes in https://github.com/pokt-network/pocket/compare/main...issue/cli-viper-environment-vars-fix + +## [0.0.0.0] - 2022-12-22 + +- Introduced this `CHANGELOG.md` From b26663f7707c5192a01aa63bdc35613006e40735 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 21:40:32 +0000 Subject: [PATCH 087/120] docs(build): typo --- build/doc/CHANGELOG.md | 17 ----------------- build/docs/CHANGELOG.md | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 17 deletions(-) delete mode 100644 build/doc/CHANGELOG.md create mode 100644 build/docs/CHANGELOG.md diff --git a/build/doc/CHANGELOG.md b/build/doc/CHANGELOG.md deleted file mode 100644 index 17bcf4045..000000000 --- a/build/doc/CHANGELOG.md +++ /dev/null @@ -1,17 +0,0 @@ -# Changelog - -All notable changes to this module will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -## [0.0.0.1] - 2022-12-22 - -- Updated configs with the missing value `max_mempool_count` -- Added `is_client_only` to `config1.json` so that Viper knows it can be overridden. Done in the Makefile in `make client_connect`. Setting this can be avoided if we merge the changes in https://github.com/pokt-network/pocket/compare/main...issue/cli-viper-environment-vars-fix - -## [0.0.0.0] - 2022-12-22 - -- Introduced this `CHANGELOG.md` diff --git a/build/docs/CHANGELOG.md b/build/docs/CHANGELOG.md new file mode 100644 index 000000000..7712694a1 --- /dev/null +++ b/build/docs/CHANGELOG.md @@ -0,0 +1,17 @@ +# Changelog + +All notable changes to this module will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.0.0.1] - 2022-12-28 + +- Removed `BaseConfig` from `configs` +- Centralized `PersistenceGenesisState` and `ConsensusGenesisState` into `GenesisState` + +## [0.0.0.0] - 2022-12-22 + +- Introduced this `CHANGELOG.md` From be6ba7d93cd21c083b6c4c63897a0f1be3282a28 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 21:40:43 +0000 Subject: [PATCH 088/120] docs(logger): CHANGELOG --- logger/docs/CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 logger/docs/CHANGELOG.md diff --git a/logger/docs/CHANGELOG.md b/logger/docs/CHANGELOG.md new file mode 100644 index 000000000..6c2c56611 --- /dev/null +++ b/logger/docs/CHANGELOG.md @@ -0,0 +1,16 @@ +# Changelog + +All notable changes to this module will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.0.0.1] - 2022-12-28 + +- Refactored configs into `configs` package + +## [0.0.0.0] - 2022-12-28 + +- Introduced this `CHANGELOG.md` From df13c44a2f4faf562db9e7de2d53609163bf4f83 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 21:44:05 +0000 Subject: [PATCH 089/120] docs(telemetry): CHANGELOG --- telemetry/CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 telemetry/CHANGELOG.md diff --git a/telemetry/CHANGELOG.md b/telemetry/CHANGELOG.md new file mode 100644 index 000000000..6c2c56611 --- /dev/null +++ b/telemetry/CHANGELOG.md @@ -0,0 +1,16 @@ +# Changelog + +All notable changes to this module will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [0.0.0.1] - 2022-12-28 + +- Refactored configs into `configs` package + +## [0.0.0.0] - 2022-12-28 + +- Introduced this `CHANGELOG.md` From c47ddfa16d8a2ad9bf465634505a990a9c40059f Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 21:47:41 +0000 Subject: [PATCH 090/120] docs(consensus): CHANGELOG --- consensus/doc/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/consensus/doc/CHANGELOG.md b/consensus/doc/CHANGELOG.md index 1c6799122..4de73d107 100644 --- a/consensus/doc/CHANGELOG.md +++ b/consensus/doc/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.15] - 2022-12-28 + +- ValidatorMap uses `Actor` references now + ## [0.0.0.14] - 2022-12-21 - Updated do use the new centralized config and genesis From 31c79db192a42acb100a678e8b8b4956116c99a8 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 21:49:52 +0000 Subject: [PATCH 091/120] docs(P2P): CHANGELOG --- p2p/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/p2p/CHANGELOG.md b/p2p/CHANGELOG.md index 691b8a5b7..03453ba37 100644 --- a/p2p/CHANGELOG.md +++ b/p2p/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.14] - 2022-12-28 + +- `ActorsToAddrBook` now skips actors that are not validators since they don't have a serviceUrl generic parameter + ## [0.0.0.13] - 2022-12-21 - Updated to use the new centralized config and genesis handling From 00dc7f49641c92260dffc9dbf3a1a1d1636ed270 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 21:54:07 +0000 Subject: [PATCH 092/120] docs(persistence): CHANGELOG --- persistence/CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/persistence/CHANGELOG.md b/persistence/CHANGELOG.md index f84ab7d18..dd58802ba 100644 --- a/persistence/CHANGELOG.md +++ b/persistence/CHANGELOG.md @@ -9,6 +9,15 @@ TODO: consolidate `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` ## [Unreleased] +## [0.0.0.13] - 2022-12-28 + +- Added missing `ActorType` in `GetAllXXXX()` functions +- Updated to new `PoolNames` enums +- Using Enum.FriendlyName() instead of Enum.String() for `PoolNames` enums (backward compatibility + flexibility) +- Updated `InitParams` so that Params can be initialized from a `GenesisState` and not just hardcoded +- Refactored default values sourcing (test_artifacts for tests) +- Updated tests + ## [0.0.0.12] - 2022-12-15 - Remove `SetProposalBlock` and local vars to keep proposal state From ea999afef74bba7fcf3f59d8f2b1e4c4f1d8eefa Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 21:58:17 +0000 Subject: [PATCH 093/120] docs(RPC): CHANGELOG --- rpc/doc/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rpc/doc/CHANGELOG.md b/rpc/doc/CHANGELOG.md index 87c05c268..8fdb6c64a 100644 --- a/rpc/doc/CHANGELOG.md +++ b/rpc/doc/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.4] - 2022-12-21 +## [0.0.0.4] - 2022-12-28 - Updated to use the new centralized config and genesis handling From 9edd1e4875d113fcc3ac6b79e0d334599eca958d Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 22:00:43 +0000 Subject: [PATCH 094/120] docs(runtime): CHANGELOG --- runtime/docs/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/runtime/docs/CHANGELOG.md b/runtime/docs/CHANGELOG.md index 6f35c9dfd..46068f9ce 100644 --- a/runtime/docs/CHANGELOG.md +++ b/runtime/docs/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.3] - 2022-12-28 + +- Split testing/development configs into separate files +- Centralized `NewDefaultConfig` logic with options used by the config generator +- Refactored Params handling, not hardcoded anymore but sourced from genesis + ## [0.0.0.2] - 2022-12-21 - Centralized config handling into a `config` package From 2d58822520c9a47c6a5b6942548b5b5897a5ce13 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 22:02:49 +0000 Subject: [PATCH 095/120] docs(shared): CHANGELOG --- shared/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/shared/CHANGELOG.md b/shared/CHANGELOG.md index fa3044351..99cdb74e8 100644 --- a/shared/CHANGELOG.md +++ b/shared/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.8] - 2022-12-28 + +- Added `PoolNames.FriendlyName` method +- Renamed enums as per code-review +- Updated `InitParams` logic to use genesisState instead of hardcoded values + ## [0.0.0.7] - 2022-12-21 - Updated to use the new centralized config and genesis handling From 834b885c4004708f69f6dd6615174e26c14d5b5f Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 22:06:57 +0000 Subject: [PATCH 096/120] docs(utility): CHANGELOG --- utility/doc/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/utility/doc/CHANGELOG.md b/utility/doc/CHANGELOG.md index a5e6c899a..ef48c6e82 100644 --- a/utility/doc/CHANGELOG.md +++ b/utility/doc/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.15] - 2022-12-28 + +- Renamed enum names as per code-review +- Using defaults from `test_artifacts` for tests +- Updated tests to reflect the above changes + ## [0.0.0.14] - 2022-12-21 - Updated to use the new centralized config and genesis handling From f6100ad3358ac62008184d62e794958f188c3c0d Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 22:13:55 +0000 Subject: [PATCH 097/120] docs(persistence): CHANGELOG consolidation --- persistence/CHANGELOG.md | 165 ---------------------------------- persistence/docs/CHANGELOG.md | 161 +++++++++++++++++++++++---------- 2 files changed, 112 insertions(+), 214 deletions(-) delete mode 100644 persistence/CHANGELOG.md diff --git a/persistence/CHANGELOG.md b/persistence/CHANGELOG.md deleted file mode 100644 index dd58802ba..000000000 --- a/persistence/CHANGELOG.md +++ /dev/null @@ -1,165 +0,0 @@ -# Changelog - -All notable changes to this module will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -TODO: consolidate `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` - -## [Unreleased] - -## [0.0.0.13] - 2022-12-28 - -- Added missing `ActorType` in `GetAllXXXX()` functions -- Updated to new `PoolNames` enums -- Using Enum.FriendlyName() instead of Enum.String() for `PoolNames` enums (backward compatibility + flexibility) -- Updated `InitParams` so that Params can be initialized from a `GenesisState` and not just hardcoded -- Refactored default values sourcing (test_artifacts for tests) -- Updated tests - -## [0.0.0.12] - 2022-12-15 - -- Remove `SetProposalBlock` and local vars to keep proposal state -- Add `proposerAddr` to the `Commit` function -- Move the `PostgresContext` struct to `context.db` - -## [0.0.0.11] - 2022-12-14 - -- Moved Actor related getters from `genesis.go` to `actor.go` -- Added `GetAllStakedActors()` that returns all Actors - -## [0.0.0.10] - 2022-12-06 - -- Changed the scope of `TransactionExists` from the `PostgresContext` to the `PersistenceModule` - -## [0.0.0.9] - 2022-11-30 - -Core StateHash changes - -- Introduced & defined for `block_persistence.proto` - - A persistence specific protobuf for the Block stored in the BlockStore -- On `Commit`, prepare and store a persistence block in the KV Store, SQL Store -- Replace `IndexTransactions` (plural) to `IndexTransaction` (singular) -- Maintaining a list of StateTrees using Celestia’s SMT and badger as the KV store to compute the state hash -- Implemented `ComputeStateHash` to update the global state based on: - - Validators - - Applications - - Servicers - - Fisherman - - Accounts - - Pools - - Transactions - - Added a placeholder for `params` and `flags` -- Added a benchmarking and a determinism test suite to validate this - -Supporting StateHash changes - -- Implemented `GetAccountsUpdated`, `GetPoolsUpdated` and `GetActorsUpdated` functions -- Removed `GetPrevAppHash` and `indexTransactions` functions -- Removed `blockProtoBytes` and `txResults` from the local state and added `quorumCert` -- Consolidate all `resetContext` related operations into a single function -- Implemented `ReleaseWriteContext` -- Implemented ability to `ClearAllState` and `ResetToGenesis` for debugging & testing purposes -- Added unit tests for all of the supporting SQL functions implemented -- Some improvements in unit test preparation & cleanup (limited to this PR's functionality) - -KVStore changes - -- Renamed `Put` to `Set` -- Embedded `smt.MapStore` in the interface containing `Get`, `Set` and `Delete` -- Implemented `Delete` -- Modified `GetAll` to return both `keys` and `values` -- Turned off badger logging options since it’s noisy - -## [0.0.0.8] - 2022-11-15 - -- Rename `GetBlockHash` to `GetBlockHashAtHeight` -- Reduce visibility scope of `IndexTransactions` to `indexTransactions` -- Remove `quorumCertificate` from the local context state -- Remove `LatestQC` and `SetLatestQC` -- Remove `Latest` prefix from several functions including related to setting context of the proposal block -- Added `ReleaseWriteContext` placeholder -- Replaced `ResetContext` with `Release` - -## [0.0.0.7] - 2022-11-01 - -- Ported over storing blocks and block components to the Persistence module from Consensus and Utility modules -- Encapsulated `TxIndexer` logic to the persistence context only - -## [0.0.0.6] - 2022-10-06 - -- Don't ignore the exit code of `m.Run()` in the unit tests -- Fixed several broken unit tests related to type casting - -## [0.0.0.5] - 2022-09-14 - -- Consolidated `PostgresContext` and `PostgresDb` into a single structure - -## [0.0.0.4] - 2022-08-25 - -**Encapsulate structures previously in shared [#163](github.com/pokt-network/pocket/issues/163)** - -- Renamed schema -> types -- Added genesis, config, and unstaking proto files from shared -- Ensured proto structures implement shared interfaces -- Populate `PersistenceGenesisState` uses shared interfaces in order to accept `MockPersistenceGenesisState` -- ^ Same applies for `PersistenceConfig` -- Bumped cleanup TODOs to #149 due to scope size of #163 - -## [0.0.0.3] - 2022-08-16 - -**Main persistence module changes:** - -- Split `ConnectAndInitializeDatabase` into `connectToDatabase` and `initializeDatabase` - - This enables creating multiple contexts in parallel without re-initializing the DB connection -- Fix the SQL query used in `SelectActors`, `SelectAccounts` & `SelectPools` - - Add a generalized unit test for all actors -- Remove `NewPersistenceModule` and an injected `Config` + `Create` - - This improves isolation a a “injection-like” paradigm for unit testing -- Change `SetupPostgresDocker` to `SetupPostgresDockerPersistenceMod` - - This enables more “functional” like testing by returning a persistence module and avoiding global testing variables - - Only return once a connection to the DB has been initialized reducing the likelihood of test race conditions -- Implemented `NewReadContext` with a proper read-only context -- Add `ResetContext` to the persistence module and `Close` to the read context - -**Secondary persistence module changes** - -- Improve return values in `Commit` and `Release` (return error, add logging, etc…) -- Add `pgx.Conn` pointer to `PostgresDB` -- `s/db/conn/g` and `s/conn/tx/g` in some (not all) places where appropriate -- Make some exported variables / functions unexported for readability & access purposes -- Add a few helpers for persistence related unit testing -- Added unit tests and TODOs for handling multiple read/write contexts - -## [0.0.0.2] - 2022-08-03 - -Deprecate PrePersistence - -- Fix for bytes parameters -- Accounts / pools default to 0 -- Pre-added accounts to genesis file -- Separated out Persistence Read Context from Persistence Write Context -- Added various TODO's in order to code-complete a working persistence module -- Added genesis level functions to GetAllActors() and GetAllAccounts/Pools() for testing -- Added PopulateGenesisState function to persistence module -- Fixed the stake status iota issue -- Discovered and documented (with TODO) double setting parameters issue -- Attached to the Utility Module and using in `make compose_and_watch` - -## [0.0.0.1] - 2022-07-05 - -Pocket Persistence 1st Iteration (https://github.com/pokt-network/pocket/pull/73) - -# Added - -- Base persistence module implementation for the following actors: `Account`, `Pool`, `Validator`, `Fisherman`, `ServiceNode`, `Application` -- Generalization of common protocol actor behvaiours via the `ProtocolActor` and `BaseActor` interface and implementation -- A PostgreSQL based implementation of the persistence middleware including: - - SQL query implementation for each actor - - SQL schema definition for each actor - - SQL execution for common actor behaviours - - Golang interface implementation of the Persistence module -- Update to the Persistence module interface to enable historical height queries -- Library / infrastructure for persistence unit fuzz testing -- Tests triggered via `make test_persistence` diff --git a/persistence/docs/CHANGELOG.md b/persistence/docs/CHANGELOG.md index 6511f6758..d537b0bfd 100644 --- a/persistence/docs/CHANGELOG.md +++ b/persistence/docs/CHANGELOG.md @@ -5,11 +5,19 @@ All notable changes to this module will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -TODO: consolidate `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` - ## [Unreleased] -## [0.0.0.10] - 2022-12-21 +## [0.0.0.17] - 2022-12-28 + +- Added missing `ActorType` in `GetAllXXXX()` functions +- Updated to new `PoolNames` enums +- Using Enum.FriendlyName() instead of Enum.String() for `PoolNames` enums (backward compatibility + flexibility) +- Updated `InitParams` so that Params can be initialized from a `GenesisState` and not just hardcoded +- Refactored default values sourcing (test_artifacts for tests) +- Updated tests +- Consolidated `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` into `persistence/docs/CHANGELOG` + +## [0.0.0.16] - 2022-12-21 - Updated to use centralized config and genesis - Updated to use `Account` struct now under `coreTypes` @@ -17,7 +25,71 @@ TODO: consolidate `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` - Updated tests to use the new config and genesis handling - Updated statetest hashes to reflect updated genesis state -## [0.0.0.9] - 2022-11-08 +## [0.0.0.15] - 2022-12-15 + +- Remove `SetProposalBlock` and local vars to keep proposal state +- Add `proposerAddr` to the `Commit` function +- Move the `PostgresContext` struct to `context.db` + +## [0.0.0.14] - 2022-12-14 + +- Moved Actor related getters from `genesis.go` to `actor.go` +- Added `GetAllStakedActors()` that returns all Actors + +## [0.0.0.13] - 2022-12-06 + +- Changed the scope of `TransactionExists` from the `PostgresContext` to the `PersistenceModule` + +## [0.0.0.13] - 2022-11-30 + +Core StateHash changes + +- Introduced & defined for `block_persistence.proto` + - A persistence specific protobuf for the Block stored in the BlockStore +- On `Commit`, prepare and store a persistence block in the KV Store, SQL Store +- Replace `IndexTransactions` (plural) to `IndexTransaction` (singular) +- Maintaining a list of StateTrees using Celestia’s SMT and badger as the KV store to compute the state hash +- Implemented `ComputeStateHash` to update the global state based on: + - Validators + - Applications + - Servicers + - Fisherman + - Accounts + - Pools + - Transactions + - Added a placeholder for `params` and `flags` +- Added a benchmarking and a determinism test suite to validate this + +Supporting StateHash changes + +- Implemented `GetAccountsUpdated`, `GetPoolsUpdated` and `GetActorsUpdated` functions +- Removed `GetPrevAppHash` and `indexTransactions` functions +- Removed `blockProtoBytes` and `txResults` from the local state and added `quorumCert` +- Consolidate all `resetContext` related operations into a single function +- Implemented `ReleaseWriteContext` +- Implemented ability to `ClearAllState` and `ResetToGenesis` for debugging & testing purposes +- Added unit tests for all of the supporting SQL functions implemented +- Some improvements in unit test preparation & cleanup (limited to this PR's functionality) + +KVStore changes + +- Renamed `Put` to `Set` +- Embedded `smt.MapStore` in the interface containing `Get`, `Set` and `Delete` +- Implemented `Delete` +- Modified `GetAll` to return both `keys` and `values` +- Turned off badger logging options since it’s noisy + +## [0.0.0.12] - 2022-11-15 + +- Rename `GetBlockHash` to `GetBlockHashAtHeight` +- Reduce visibility scope of `IndexTransactions` to `indexTransactions` +- Remove `quorumCertificate` from the local context state +- Remove `LatestQC` and `SetLatestQC` +- Remove `Latest` prefix from several functions including related to setting context of the proposal block +- Added `ReleaseWriteContext` placeholder +- Replaced `ResetContext` with `Release` + +## [0.0.0.11] - 2022-11-08 - Changed the following exported functions to lowercase non-exported functions - [./pocket/persistence/] @@ -49,13 +121,20 @@ TODO: consolidate `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` - GetGenericActor - NewTestGenericActor -## [0.0.0.8] - 2022-10-19 +## [0.0.0.10] - 2022-11-01 + +- Ported over storing blocks and block components to the Persistence module from Consensus and Utility modules +- Encapsulated `TxIndexer` logic to the persistence context only + + +## [0.0.0.9] - 2022-10-19 - Fixed `ToPersistenceActors()` by filling all structure fields - Deprecated `BaseActor` -> `Actor` - Changed default actor type to `ActorType_Undefined` -## [0.0.0.7] - 2022-10-12 + +## [0.0.0.8] - 2022-10-12 ### [#235](https://github.com/pokt-network/pocket/pull/235) Config and genesis handling @@ -67,6 +146,13 @@ TODO: consolidate `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` - Added `TxIndexer` to both `PersistenceModule` and `PersistenceContext` - Implemented `TransactionExists` and `StoreTransaction` +## [0.0.0.7] - 2022-10-06 + +- Don't ignore the exit code of `m.Run()` in the unit tests +- Fixed several broken unit tests related to type casting + + + ## [0.0.0.6] - 2022-09-30 - Removed no-op `DeleteActor` code @@ -76,7 +162,12 @@ TODO: consolidate `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` - Added ticks to CHANGELOG.md - Removed reference to Utility Mod's `BigIntToString()` and used internal `BigIntToString()` -## [0.0.0.5] - 2022-08-25 + +## [0.0.0.5] - 2022-09-14 + +- Consolidated `PostgresContext` and `PostgresDb` into a single structure + +## [0.0.0.4] - 2022-08-25 **Encapsulate structures previously in shared [#163](github.com/pokt-network/pocket/issues/163)** @@ -87,20 +178,19 @@ TODO: consolidate `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` - ^ Same applies for `PersistenceConfig` - Bumped cleanup TODOs to #149 due to scope size of #163 -## [0.0.0.4] - 2022-08-16 +## [0.0.0.3] - 2022-08-16 **Main persistence module changes:** - Split `ConnectAndInitializeDatabase` into `connectToDatabase` and `initializeDatabase` - - This enables creating multiple contexts in parallel without re-initializing the DB connection + - This enables creating multiple contexts in parallel without re-initializing the DB connection - Fix the SQL query used in `SelectActors`, `SelectAccounts` & `SelectPools` - - Add a generalized unit test for all actors + - Add a generalized unit test for all actors - Remove `NewPersistenceModule` and an injected `Config` + `Create` - - This improves isolation a a “injection-like” paradigm for unit testing + - This improves isolation a a “injection-like” paradigm for unit testing - Change `SetupPostgresDocker` to `SetupPostgresDockerPersistenceMod` - - This enables more “functional” like testing by returning a persistence module and avoiding global testing - variables - - Only return once a connection to the DB has been initialized reducing the likelihood of test race conditions + - This enables more “functional” like testing by returning a persistence module and avoiding global testing variables + - Only return once a connection to the DB has been initialized reducing the likelihood of test race conditions - Implemented `NewReadContext` with a proper read-only context - Add `ResetContext` to the persistence module and `Close` to the read context @@ -113,33 +203,6 @@ TODO: consolidate `persistence/docs/CHANGELOG` and `persistence/CHANGELOG.md` - Add a few helpers for persistence related unit testing - Added unit tests and TODOs for handling multiple read/write contexts -## [0.0.0.3] - 2022-08-08 - -- Deprecated old placeholder `genesis_state` and `genesis_config` -- Added `utility_genesis_state` to `genesis_state` -- Added `consensus_genesis_state` to `genesis_state` -- Added `genesis_time` to `consensus_genesis_state` -- Added `chainID` to `consensus_genesis_state` -- Added `max_block_bytes` to `consensus_genesis_state` -- Added `accounts` and` pools to utility_genesis_state` -- Added `validators` to `utility_genesis_state` -- Added `applications` to `utility_genesis_state` -- Added `service_nodes` to `utility_genesis_state` -- Added `fishermen` to `utility_genesis_state` -- Deprecated `shared/config/` -- Added new `shared config proto3 structure` -- Added `base_config` to `config` -- Added `utility_config` to `config` -- Added `consensus_config` to `config` -- Added `persistence_config` to `config` -- Added `p2p_config` to `config` -- Added `telemetry_config` to `config` -- Opened followup issue #163 -- Added config and genesis generator to build package -- Deprecated old build files -- Use new config and genesis files for make `compose_and_watch` -- Use new config and genesis files for make `client_start && `make client_connect` - ## [0.0.0.2] - 2022-08-03 Deprecate PrePersistence @@ -159,15 +222,15 @@ Deprecate PrePersistence Pocket Persistence 1st Iteration (https://github.com/pokt-network/pocket/pull/73) -- Base persistence module implementation for the following actors: `Account`, `Pool`, `Validator`, `Fisherman` - , `ServiceNode`, `Application` -- Generalization of common protocol actor behvaiours via the `ProtocolActor` and `BaseActor` interface and - implementation +# Added + +- Base persistence module implementation for the following actors: `Account`, `Pool`, `Validator`, `Fisherman`, `ServiceNode`, `Application` +- Generalization of common protocol actor behvaiours via the `ProtocolActor` and `BaseActor` interface and implementation - A PostgreSQL based implementation of the persistence middleware including: - - SQL query implementation for each actor - - SQL schema definition for each actor - - SQL execution for common actor behaviours - - Golang interface implementation of the Persistence module + - SQL query implementation for each actor + - SQL schema definition for each actor + - SQL execution for common actor behaviours + - Golang interface implementation of the Persistence module - Update to the Persistence module interface to enable historical height queries - Library / infrastructure for persistence unit fuzz testing - Tests triggered via `make test_persistence` From a4fa535da0da02d519fa11fd4c1385f048fa306e Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 22:27:34 +0000 Subject: [PATCH 098/120] docs(CLI): CHANGELOG --- app/client/cli/doc/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/client/cli/doc/CHANGELOG.md b/app/client/cli/doc/CHANGELOG.md index 3f8516c53..35d9529ac 100644 --- a/app/client/cli/doc/CHANGELOG.md +++ b/app/client/cli/doc/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.3] - 2022-12-28 + +- Updated to use `coreTypes` instead of utility types for `Actor` and `ActorType` + ## [0.0.2] - 2022-11-02 ### Added From 8d02ad57361e9ab6de3d2c9f9d8d01dbd9219ad1 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Wed, 28 Dec 2022 22:29:56 +0000 Subject: [PATCH 099/120] fix(CLI): CHANGELOG versioning --- app/client/cli/doc/CHANGELOG.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/client/cli/doc/CHANGELOG.md b/app/client/cli/doc/CHANGELOG.md index 35d9529ac..f6c4e5cba 100644 --- a/app/client/cli/doc/CHANGELOG.md +++ b/app/client/cli/doc/CHANGELOG.md @@ -7,11 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.3] - 2022-12-28 +## [0.0.0.3] - 2022-12-28 - Updated to use `coreTypes` instead of utility types for `Actor` and `ActorType` -## [0.0.2] - 2022-11-02 +## [0.0.0.2] - 2022-11-02 ### Added @@ -20,13 +20,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - System commands working end-to-end - Added Consensus State commands -## [0.0.1] - 2022-09-09 +## [0.0.0.1] - 2022-09-09 ### Added - Commands documentation generator -## [0.0.0] - 2022-09-07 +## [0.0.0.0] - 2022-09-07 ### Added From ff578479d0bfee1af1187e9af7f741b2d2771b08 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Fri, 30 Dec 2022 08:06:09 +0000 Subject: [PATCH 100/120] Update docs/demos/iteration_3_end_to_end_tx.md Co-authored-by: Daniel Olshansky --- docs/demos/iteration_3_end_to_end_tx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/demos/iteration_3_end_to_end_tx.md b/docs/demos/iteration_3_end_to_end_tx.md index 86bfc1983..0f2eb82e7 100644 --- a/docs/demos/iteration_3_end_to_end_tx.md +++ b/docs/demos/iteration_3_end_to_end_tx.md @@ -99,7 +99,7 @@ go run app/client/*.go #### Accounts setup -Since our Keybase is under development, currently we have to manually inject the private keys of the accounts we want to use in the CLI. +Since our Keybase is under development, we have to manually inject the private keys of the accounts we want to use in the CLI. For the following steps you'll need to use the accounts of the first two validators, therefore you have some options: From 4bddf5f01605c3c03285b8afd6fe8d029cf0f22e Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Fri, 30 Dec 2022 08:06:24 +0000 Subject: [PATCH 101/120] Update docs/demos/iteration_3_end_to_end_tx.md Co-authored-by: Daniel Olshansky --- docs/demos/iteration_3_end_to_end_tx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/demos/iteration_3_end_to_end_tx.md b/docs/demos/iteration_3_end_to_end_tx.md index 0f2eb82e7..9a4133fb1 100644 --- a/docs/demos/iteration_3_end_to_end_tx.md +++ b/docs/demos/iteration_3_end_to_end_tx.md @@ -101,7 +101,7 @@ go run app/client/*.go Since our Keybase is under development, we have to manually inject the private keys of the accounts we want to use in the CLI. -For the following steps you'll need to use the accounts of the first two validators, therefore you have some options: +For the following steps, you'll need to use the accounts of the first two validators in the hard-coded development genesis file. Therefore you have some options: 1) You can just: ```bash From 0532b070a5ade46d9d97018f0fdde5a0e47416fd Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Fri, 30 Dec 2022 08:09:08 +0000 Subject: [PATCH 102/120] Update persistence/docs/CHANGELOG.md Co-authored-by: Daniel Olshansky --- persistence/docs/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence/docs/CHANGELOG.md b/persistence/docs/CHANGELOG.md index d537b0bfd..191a0f948 100644 --- a/persistence/docs/CHANGELOG.md +++ b/persistence/docs/CHANGELOG.md @@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added missing `ActorType` in `GetAllXXXX()` functions - Updated to new `PoolNames` enums -- Using Enum.FriendlyName() instead of Enum.String() for `PoolNames` enums (backward compatibility + flexibility) +- Using `Enum.FriendlyName()` instead of `Enum.String()` for `PoolNames` enums (backward compatibility + flexibility) - Updated `InitParams` so that Params can be initialized from a `GenesisState` and not just hardcoded - Refactored default values sourcing (test_artifacts for tests) - Updated tests From c86f8c580fbdc623e134b67004b90be6b14e360d Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Fri, 30 Dec 2022 11:27:33 +0000 Subject: [PATCH 103/120] refactor(persistence): s/InitParams/InitGenesisParams --- persistence/docs/CHANGELOG.md | 4 ++++ persistence/genesis.go | 2 +- persistence/gov.go | 2 +- persistence/test/gov_test.go | 14 +++++++------- shared/modules/persistence_module.go | 2 +- utility/types/error.go | 8 ++++---- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/persistence/docs/CHANGELOG.md b/persistence/docs/CHANGELOG.md index 191a0f948..abcb3c9c3 100644 --- a/persistence/docs/CHANGELOG.md +++ b/persistence/docs/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.0.18] - 2022-12-30 + +- Renamed `InitParams` to `InitGenesisParams` + ## [0.0.0.17] - 2022-12-28 - Added missing `ActorType` in `GetAllXXXX()` functions diff --git a/persistence/genesis.go b/persistence/genesis.go index ae02351a2..8745bd1ce 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -111,7 +111,7 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { } } - if err = rwContext.InitParams(state.Params); err != nil { + if err = rwContext.InitGenesisParams(state.Params); err != nil { log.Fatalf("an error occurred initializing params: %s", err.Error()) } diff --git a/persistence/gov.go b/persistence/gov.go index 831d0629f..135c268a0 100644 --- a/persistence/gov.go +++ b/persistence/gov.go @@ -27,7 +27,7 @@ func (p PostgresContext) GetServiceNodesPerSessionAt(height int64) (int, error) return p.GetIntParam(ServiceNodesPerSessionParamName, height) } -func (p PostgresContext) InitParams(params *genesis.Params) error { +func (p PostgresContext) InitGenesisParams(params *genesis.Params) error { ctx, tx, err := p.getCtxAndTx() if err != nil { return err diff --git a/persistence/test/gov_test.go b/persistence/test/gov_test.go index 7b80a1d2f..c07c3ea37 100644 --- a/persistence/test/gov_test.go +++ b/persistence/test/gov_test.go @@ -15,16 +15,16 @@ const ( ServiceNodeUnstakingBlocksOwner = "service_node_unstaking_blocks_owner" ) -func TestInitParams(t *testing.T) { +func TestInitGenesisParams(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams(test_artifacts.DefaultParams()) + err := db.InitGenesisParams(test_artifacts.DefaultParams()) require.NoError(t, err) } func TestGetSetIntParam(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams(test_artifacts.DefaultParams()) + err := db.InitGenesisParams(test_artifacts.DefaultParams()) require.NoError(t, err) newMaxChains := 42 @@ -44,7 +44,7 @@ func TestGetSetIntParam(t *testing.T) { func TestGetSetStringParam(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams(test_artifacts.DefaultParams()) + err := db.InitGenesisParams(test_artifacts.DefaultParams()) require.NoError(t, err) newServiceNodeMinimumStake := "99999999" @@ -64,7 +64,7 @@ func TestGetSetStringParam(t *testing.T) { func TestGetSetByteArrayParam(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams(test_artifacts.DefaultParams()) + err := db.InitGenesisParams(test_artifacts.DefaultParams()) require.NoError(t, err) newOwner, err := hex.DecodeString("63585955783252764a6e576a5631647542486168426c63774e4655345a57617468545532637a6330516e4d5978575977674553537857644e4a6b4c7734575335416a65616c6d57494a47535364555933686d565a706e57564a6d6143526c54594248626864465a72646c624f646c59704a45536a6c6c52794d32527849545733566c6557464763745a465377466a57324a316157314562554a6c564b6c325470394753696c58544846474e786331567a70554d534a6c5335566d4c356f305157684663726c6b4e4a4e305931496c624a4e58537035554d4a7058564a705561506c3259484a47614b6c585a") @@ -122,7 +122,7 @@ func TestGetSetToggleIntFlag(t *testing.T) { func TestGetSetToggleStringFlag(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams(test_artifacts.DefaultParams()) + err := db.InitGenesisParams(test_artifacts.DefaultParams()) require.NoError(t, err) newServiceNodeMinimumStake := "99999999" @@ -158,7 +158,7 @@ func TestGetSetToggleStringFlag(t *testing.T) { func TestGetSetToggleByteArrayFlag(t *testing.T) { db := NewTestPostgresContext(t, 0) - err := db.InitParams(test_artifacts.DefaultParams()) + err := db.InitGenesisParams(test_artifacts.DefaultParams()) require.NoError(t, err) newOwner, err := hex.DecodeString("576c687353324648536b685a4d6d785159565677536c5a596345704e565456775531684f536d4a735354465a4d45354b546d7473636d4e47614664524d473831544731574e564e58624642685658417a5757704b4d4531466548524f56336872553064534d6c6b794d587068565868455532784b55303156634870574d574e34546b64475346525962476c54527a6c7756444a7353315274546e42526132524b5530645362316b7a62454e694d58425a55323134536d4a71515856564d573831576c525753466c555a456c5a656c5a35557a4e4f56314a7352545657566b303055573157616d52704d545a5256557033576a4677556d5274576c6c57526d6779546c684b546c5a52") diff --git a/shared/modules/persistence_module.go b/shared/modules/persistence_module.go index 6de7c5890..ea120eb62 100644 --- a/shared/modules/persistence_module.go +++ b/shared/modules/persistence_module.go @@ -110,7 +110,7 @@ type PersistenceWriteContext interface { SetValidatorMissedBlocks(address []byte, missedBlocks int) error // Param Operations - InitParams(params *genesis.Params) error + InitGenesisParams(params *genesis.Params) error SetParam(paramName string, value interface{}) error // Flag Operations diff --git a/utility/types/error.go b/utility/types/error.go index 0034be174..e3e3c1705 100644 --- a/utility/types/error.go +++ b/utility/types/error.go @@ -126,7 +126,7 @@ const ( CodeEmptyParamValueError Code = 93 CodeGetOutputAddressError Code = 94 CodeTransactionAlreadyCommittedError Code = 95 - CodeInitParamsError Code = 96 + CodeInitGenesisParamsError Code = 96 CodeGetAllFishermenError Code = 97 CodeGetAllServiceNodesError Code = 98 CodeGetAllAppsError Code = 99 @@ -277,7 +277,7 @@ const ( ProtoUnmarshalError = "an error occurred unmarshalling the structure in protobuf" ProtoNewAnyError = "an error occurred creating the protobuf any" UpdateParamError = "an error occurred updating the parameter" - InitParamsError = "an error occurred initializing the params in genesis" + InitGenesisParamError = "an error occurred initializing the params in genesis" GetAllFishermenError = "an error occurred getting all of the fishermen¬" GetAllAppsError = "an error occurred getting all of the apps" GetAllServiceNodesError = "an error occurred getting all of the service nodes" @@ -784,8 +784,8 @@ func ErrUpdateParam(err error) Error { return NewError(CodeUpdateParamError, fmt.Sprintf("%s: %s", UpdateParamError, err.Error())) } -func ErrInitParams(err error) Error { - return NewError(CodeInitParamsError, fmt.Sprintf("%s: %s", InitParamsError, err.Error())) +func ErrInitGenesisParams(err error) Error { + return NewError(CodeInitGenesisParamsError, fmt.Sprintf("%s: %s", InitGenesisParamError, err.Error())) } func ErrUnknownActorType(actorType string) Error { From 69cb8eb1d49d308978441224cf2706f43741ddc1 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Fri, 30 Dec 2022 11:27:59 +0000 Subject: [PATCH 104/120] docs(runtime): config options godoc --- runtime/configs/config.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/runtime/configs/config.go b/runtime/configs/config.go index 188a76a39..92ff4f33b 100644 --- a/runtime/configs/config.go +++ b/runtime/configs/config.go @@ -62,6 +62,8 @@ func NewDefaultConfig(options ...func(*Config)) *Config { return cfg } +// WithPK is an option to configure module-specific keys in order to enable different "identities" +// for different purposes (i.e. validation, P2P, servicing, etc...). func WithPK(pk string) func(*Config) { return func(cfg *Config) { cfg.PrivateKey = pk @@ -70,6 +72,7 @@ func WithPK(pk string) func(*Config) { } } +// WithNodeSchema is an option to configure the schema for the node's database. func WithNodeSchema(schema string) func(*Config) { return func(cfg *Config) { cfg.Persistence.NodeSchema = schema From 00ae1439f932729f4b9c79be39a03495af9b7ec1 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Fri, 30 Dec 2022 11:38:27 +0000 Subject: [PATCH 105/120] refactor(runtime): default values in defaults package --- runtime/configs/config.go | 32 ++++++++++++++++---------------- runtime/defaults/defaults.go | 33 +++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/runtime/configs/config.go b/runtime/configs/config.go index 92ff4f33b..fe2864cb9 100644 --- a/runtime/configs/config.go +++ b/runtime/configs/config.go @@ -19,35 +19,35 @@ func NewDefaultConfig(options ...func(*Config)) *Config { cfg := &Config{ RootDirectory: "/go/src/github.com/pocket-network", Consensus: &ConsensusConfig{ - MaxMempoolBytes: 500000000, + MaxMempoolBytes: defaults.DefaultConsensusMaxMempoolBytes, PacemakerConfig: &PacemakerConfig{ - TimeoutMsec: 5000, - Manual: true, - DebugTimeBetweenStepsMsec: 1000, + TimeoutMsec: defaults.DefaultPacemakerTimeoutMsec, + Manual: defaults.DefaultPacemakerManual, + DebugTimeBetweenStepsMsec: defaults.DefaultPacemakerDebugTimeBetweenStepsMsec, }, }, Utility: &UtilityConfig{ - MaxMempoolTransactionBytes: 1024 ^ 3, // 1GB V0 defaults - MaxMempoolTransactions: 9000, + MaxMempoolTransactionBytes: defaults.DefaultUtilityMaxMempoolTransactionBytes, + MaxMempoolTransactions: defaults.DefaultUtilityMaxMempoolTransactions, }, Persistence: &PersistenceConfig{ - PostgresUrl: "postgres://postgres:postgres@pocket-db:5432/postgres", - BlockStorePath: "/var/blockstore", + PostgresUrl: defaults.DefaultPersistencePostgresUrl, + BlockStorePath: defaults.DefaultPersistenceBlockStorePath, }, P2P: &P2PConfig{ - ConsensusPort: 8080, - UseRainTree: true, - IsEmptyConnectionType: false, + ConsensusPort: defaults.DefaultP2PConsensusPort, + UseRainTree: defaults.DefaultP2PUseRainTree, + IsEmptyConnectionType: defaults.DefaultP2PIsEmptyConnectionType, MaxMempoolCount: defaults.DefaultP2PMaxMempoolCount, }, Telemetry: &TelemetryConfig{ - Enabled: true, - Address: "0.0.0.0:9000", - Endpoint: "/metrics", + Enabled: defaults.DefaultTelemetryEnabled, + Address: defaults.DefaultTelemetryAddress, + Endpoint: defaults.DefaultTelemetryEndpoint, }, Logger: &LoggerConfig{ - Level: "debug", - Format: "pretty", + Level: defaults.DefaultLoggerLevel, + Format: defaults.DefaultLoggerFormat, }, RPC: &RPCConfig{ Timeout: defaults.DefaultRpcTimeout, diff --git a/runtime/defaults/defaults.go b/runtime/defaults/defaults.go index 2dad0e737..99f0a1d23 100644 --- a/runtime/defaults/defaults.go +++ b/runtime/defaults/defaults.go @@ -11,8 +11,33 @@ const ( ) var ( - DefaultRemoteCLIURL = fmt.Sprintf("http://%s:%s", defaultRPCHost, defaultRPCPort) - DefaultRpcPort = defaultRPCPort - DefaultRpcTimeout = uint64(defaultRPCTimeout) - DefaultP2PMaxMempoolCount = uint64(1e5) + DefaultRemoteCLIURL = fmt.Sprintf("http://%s:%s", defaultRPCHost, defaultRPCPort) + + // consensus + DefaultConsensusMaxMempoolBytes = uint64(500000000) + // pacemaker + DefaultPacemakerTimeoutMsec = uint64(5000) + DefaultPacemakerManual = true + DefaultPacemakerDebugTimeBetweenStepsMsec = uint64(1000) + // utility + DefaultUtilityMaxMempoolTransactionBytes = uint64(1024 ^ 3) // 1GB V0 defaults + DefaultUtilityMaxMempoolTransactions = uint32(9000) + // persistence + DefaultPersistencePostgresUrl = "postgres://postgres:postgres@pocket-db:5432/postgres" + DefaultPersistenceBlockStorePath = "/var/blockstore" + // p2p + DefaultP2PConsensusPort = uint32(8080) + DefaultP2PUseRainTree = true + DefaultP2PIsEmptyConnectionType = false + DefaultP2PMaxMempoolCount = uint64(1e5) + // telemetry + DefaultTelemetryEnabled = true + DefaultTelemetryAddress = "0.0.0.0:9000" + DefaultTelemetryEndpoint = "/metrics" + // logger + DefaultLoggerLevel = "debug" + DefaultLoggerFormat = "pretty" + // rpc + DefaultRpcPort = defaultRPCPort + DefaultRpcTimeout = uint64(defaultRPCTimeout) ) From 5b237f2800063bfa57b1515525dba4beea66c006 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Fri, 30 Dec 2022 11:58:57 +0000 Subject: [PATCH 106/120] refactor(core): poolNames -> pools --- persistence/genesis.go | 10 +++++----- persistence/test/state_test.go | 6 +++--- runtime/test_artifacts/generator.go | 4 ++-- shared/core/types/pool_names.go | 18 ------------------ shared/core/types/pools.go | 18 ++++++++++++++++++ shared/core/types/proto/pool_names.proto | 15 --------------- shared/core/types/proto/pools.proto | 15 +++++++++++++++ utility/actor.go | 2 +- utility/block.go | 12 ++++++------ utility/test/actor_test.go | 8 ++++---- utility/transaction.go | 6 +++--- 11 files changed, 57 insertions(+), 57 deletions(-) delete mode 100644 shared/core/types/pool_names.go create mode 100644 shared/core/types/pools.go delete mode 100644 shared/core/types/proto/pool_names.proto create mode 100644 shared/core/types/proto/pools.proto diff --git a/persistence/genesis.go b/persistence/genesis.go index 8745bd1ce..83dcd611e 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -57,25 +57,25 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { Name string Getter func() []*coreTypes.Actor InsertFn func(address []byte, publicKey []byte, output []byte, paused bool, status int32, serviceURL string, stakedTokens string, chains []string, pausedHeight int64, unstakingHeight int64) error - Pool coreTypes.PoolNames + Pool coreTypes.Pools }{ { Name: "app", Getter: state.GetApplications, InsertFn: rwContext.InsertApp, - Pool: coreTypes.PoolNames_POOL_NAMES_APP_STAKE, + Pool: coreTypes.Pools_POOLS_APP_STAKE, }, { Name: "serviceNode", Getter: state.GetServiceNodes, InsertFn: rwContext.InsertServiceNode, - Pool: coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE, + Pool: coreTypes.Pools_POOLS_SERVICE_NODE_STAKE, }, { Name: "fisherman", Getter: state.GetFishermen, InsertFn: rwContext.InsertFisherman, - Pool: coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE, + Pool: coreTypes.Pools_POOLS_FISHERMAN_STAKE, }, { Name: "validator", @@ -83,7 +83,7 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { InsertFn: func(address, publicKey, output []byte, paused bool, status int32, serviceURL, stakedTokens string, chains []string, pausedHeight, unstakingHeight int64) error { return rwContext.InsertValidator(address, publicKey, output, paused, status, serviceURL, stakedTokens, pausedHeight, unstakingHeight) }, - Pool: coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE, + Pool: coreTypes.Pools_POOLS_VALIDATOR_STAKE, }, } diff --git a/persistence/test/state_test.go b/persistence/test/state_test.go index 2011ad554..57bfccf31 100644 --- a/persistence/test/state_test.go +++ b/persistence/test/state_test.go @@ -48,9 +48,9 @@ func TestStateHash_DeterministicStateWhenUpdatingAppStake(t *testing.T) { // that the business logic doesn't change and that they remain deterministic. Anytime the business // logic changes, these hashes will need to be updated based on the test output. stateHashes := []string{ - "67e8bc84db3bd7c9288242b53161ddbc8cd08cd6094814a9c9358d4d8369688c", - "dfbc92a3f72ac8fa5e436e37c8bb4e0949e113092d5411ef46244fa2651a238d", - "44fc53f0d4511d97296357e20d05d8089d7a3a06d3e07f6cf6197f7642553c91", + "d3e433812bef43bf8639be73f7584e85822f98378d46de436d363683aa9020c1", + "81e7af742329dead35969a163862337fba7bebc0444351cca54f00fc34bf48e2", + "6fc07bdec8f96f8ef59c86d44062e4947ba2591a2adf9d6b2fe7838cea6a1b4b", } stakeAmount := initialStakeAmount diff --git a/runtime/test_artifacts/generator.go b/runtime/test_artifacts/generator.go index 17ce1ba15..3061065fd 100644 --- a/runtime/test_artifacts/generator.go +++ b/runtime/test_artifacts/generator.go @@ -49,8 +49,8 @@ func NewDefaultConfigs(privateKeys []string) (cfgs []*configs.Config) { // REFACTOR: Test artifact generator should reflect the sum of the initial account values to populate the initial pool values func NewPools() (pools []*coreTypes.Account) { - for _, name := range coreTypes.PoolNames_name { - if name == coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.FriendlyName() { + for _, name := range coreTypes.Pools_name { + if name == coreTypes.Pools_POOLS_FEE_COLLECTOR.FriendlyName() { pools = append(pools, &coreTypes.Account{ Address: name, Amount: "0", diff --git a/shared/core/types/pool_names.go b/shared/core/types/pool_names.go deleted file mode 100644 index 58fbc6af6..000000000 --- a/shared/core/types/pool_names.go +++ /dev/null @@ -1,18 +0,0 @@ -package types - -var poolFriendlyNames map[PoolNames]string - -func init() { - poolFriendlyNames = map[PoolNames]string{ - PoolNames_POOL_NAMES_UNSPECIFIED: "Unspecified", - PoolNames_POOL_NAMES_DAO: "DAO", - PoolNames_POOL_NAMES_FEE_COLLECTOR: "FeeCollector", - PoolNames_POOL_NAMES_APP_STAKE: "AppStakePool", - PoolNames_POOL_NAMES_VALIDATOR_STAKE: "ValidatorStakePool", - PoolNames_POOL_NAMES_SERVICE_NODE_STAKE: "ServiceNodeStakePool", - } -} - -func (pn PoolNames) FriendlyName() string { - return poolFriendlyNames[pn] -} diff --git a/shared/core/types/pools.go b/shared/core/types/pools.go new file mode 100644 index 000000000..79092d265 --- /dev/null +++ b/shared/core/types/pools.go @@ -0,0 +1,18 @@ +package types + +var poolFriendlyNames map[Pools]string + +func init() { + poolFriendlyNames = map[Pools]string{ + Pools_POOLS_UNSPECIFIED: "Unspecified", + Pools_POOLS_DAO: "DAO", + Pools_POOLS_FEE_COLLECTOR: "FeeCollector", + Pools_POOLS_APP_STAKE: "AppStakePool", + Pools_POOLS_VALIDATOR_STAKE: "ValidatorStakePool", + Pools_POOLS_SERVICE_NODE_STAKE: "ServiceNodeStakePool", + } +} + +func (pn Pools) FriendlyName() string { + return poolFriendlyNames[pn] +} diff --git a/shared/core/types/proto/pool_names.proto b/shared/core/types/proto/pool_names.proto deleted file mode 100644 index e99d75df7..000000000 --- a/shared/core/types/proto/pool_names.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package core; - -option go_package = "github.com/pokt-network/pocket/shared/core/types"; - -enum PoolNames { - POOL_NAMES_UNSPECIFIED = 0; - POOL_NAMES_DAO = 1; - POOL_NAMES_FEE_COLLECTOR = 2; - POOL_NAMES_APP_STAKE = 3; - POOL_NAMES_VALIDATOR_STAKE = 4; - POOL_NAMES_SERVICE_NODE_STAKE = 5; - POOL_NAMES_FISHERMAN_STAKE = 6; -} diff --git a/shared/core/types/proto/pools.proto b/shared/core/types/proto/pools.proto new file mode 100644 index 000000000..cd91d66d9 --- /dev/null +++ b/shared/core/types/proto/pools.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; + +package core; + +option go_package = "github.com/pokt-network/pocket/shared/core/types"; + +enum Pools { + POOLS_UNSPECIFIED = 0; + POOLS_DAO = 1; + POOLS_FEE_COLLECTOR = 2; + POOLS_APP_STAKE = 3; + POOLS_VALIDATOR_STAKE = 4; + POOLS_SERVICE_NODE_STAKE = 5; + POOLS_FISHERMAN_STAKE = 6; +} diff --git a/utility/actor.go b/utility/actor.go index c7d1160ec..1ac51391f 100644 --- a/utility/actor.go +++ b/utility/actor.go @@ -425,7 +425,7 @@ func (u *UtilityContext) BurnActor(actorType coreTypes.ActorType, percentage int } newTokensAfterBurn := big.NewInt(0).Sub(tokens, truncatedTokens) // remove from pool - if err := u.SubPoolAmount(coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.FriendlyName(), typesUtil.BigIntToString(truncatedTokens)); err != nil { + if err := u.SubPoolAmount(coreTypes.Pools_POOLS_VALIDATOR_STAKE.FriendlyName(), typesUtil.BigIntToString(truncatedTokens)); err != nil { return err } // remove from actor diff --git a/utility/block.go b/utility/block.go index 283a1ae3b..970ef2e6c 100644 --- a/utility/block.go +++ b/utility/block.go @@ -218,16 +218,16 @@ func (u *UtilityContext) UnstakeActorsThatAreReady() (err typesUtil.Error) { switch actorType { case coreTypes.ActorType_ACTOR_TYPE_APP: readyToUnstake, er = store.GetAppsReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE.FriendlyName() + poolName = coreTypes.Pools_POOLS_APP_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_FISH: readyToUnstake, er = store.GetFishermenReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE.FriendlyName() + poolName = coreTypes.Pools_POOLS_FISHERMAN_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: readyToUnstake, er = store.GetServiceNodesReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE.FriendlyName() + poolName = coreTypes.Pools_POOLS_SERVICE_NODE_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_VAL: readyToUnstake, er = store.GetValidatorsReadyToUnstake(latestHeight, int32(typesUtil.StakeStatus_Unstaking)) - poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.FriendlyName() + poolName = coreTypes.Pools_POOLS_VALIDATOR_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_UNSPECIFIED: continue } @@ -296,7 +296,7 @@ func (u *UtilityContext) UnstakeActorPausedBefore(pausedBeforeHeight int64, Acto } func (u *UtilityContext) HandleProposalRewards(proposer []byte) typesUtil.Error { - feePoolName := coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.FriendlyName() + feePoolName := coreTypes.Pools_POOLS_FEE_COLLECTOR.FriendlyName() feesAndRewardsCollected, err := u.GetPoolAmount(feePoolName) if err != nil { return err @@ -320,7 +320,7 @@ func (u *UtilityContext) HandleProposalRewards(proposer []byte) typesUtil.Error if err = u.AddAccountAmount(proposer, amountToProposer); err != nil { return err } - if err = u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_DAO.FriendlyName(), amountToDAO); err != nil { + if err = u.AddPoolAmount(coreTypes.Pools_POOLS_DAO.FriendlyName(), amountToDAO); err != nil { return err } return nil diff --git a/utility/test/actor_test.go b/utility/test/actor_test.go index 96a4cf791..e3db7f974 100644 --- a/utility/test/actor_test.go +++ b/utility/test/actor_test.go @@ -488,13 +488,13 @@ func TestUtilityContext_UnstakeActorsThatAreReady(t *testing.T) { var poolName string switch actorType { case coreTypes.ActorType_ACTOR_TYPE_APP: - poolName = coreTypes.PoolNames_POOL_NAMES_APP_STAKE.FriendlyName() + poolName = coreTypes.Pools_POOLS_APP_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_VAL: - poolName = coreTypes.PoolNames_POOL_NAMES_VALIDATOR_STAKE.FriendlyName() + poolName = coreTypes.Pools_POOLS_VALIDATOR_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_FISH: - poolName = coreTypes.PoolNames_POOL_NAMES_FISHERMAN_STAKE.FriendlyName() + poolName = coreTypes.Pools_POOLS_FISHERMAN_STAKE.FriendlyName() case coreTypes.ActorType_ACTOR_TYPE_SERVICENODE: - poolName = coreTypes.PoolNames_POOL_NAMES_SERVICE_NODE_STAKE.FriendlyName() + poolName = coreTypes.Pools_POOLS_SERVICE_NODE_STAKE.FriendlyName() default: t.Fatalf("unexpected actor type %s", actorType.String()) } diff --git a/utility/transaction.go b/utility/transaction.go index b1426c51b..a82bb68c8 100644 --- a/utility/transaction.go +++ b/utility/transaction.go @@ -91,7 +91,7 @@ func (u *UtilityContext) AnteHandleMessage(tx *typesUtil.Transaction) (msg types if err := u.SetAccountAmount(address, accountAmount); err != nil { return nil, signer, err } - if err := u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_FEE_COLLECTOR.FriendlyName(), fee); err != nil { + if err := u.AddPoolAmount(coreTypes.Pools_POOLS_FEE_COLLECTOR.FriendlyName(), fee); err != nil { return nil, "", err } msg.SetSigner(address) @@ -184,7 +184,7 @@ func (u *UtilityContext) HandleStakeMessage(message *typesUtil.MessageStake) typ return err } // move funds from account to pool - if err = u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE.FriendlyName(), amount); err != nil { + if err = u.AddPoolAmount(coreTypes.Pools_POOLS_APP_STAKE.FriendlyName(), amount); err != nil { return err } var er error @@ -248,7 +248,7 @@ func (u *UtilityContext) HandleEditStakeMessage(message *typesUtil.MessageEditSt return err } // move funds from account to pool - if err := u.AddPoolAmount(coreTypes.PoolNames_POOL_NAMES_APP_STAKE.FriendlyName(), amount); err != nil { + if err := u.AddPoolAmount(coreTypes.Pools_POOLS_APP_STAKE.FriendlyName(), amount); err != nil { return err } store := u.Store() From 8d9cb1a253437f265bf768b12f479addc84f8d96 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Fri, 30 Dec 2022 12:04:11 +0000 Subject: [PATCH 107/120] docs(P2P): added TODO --- p2p/utils_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/p2p/utils_test.go b/p2p/utils_test.go index df3e1a610..3412cf4b3 100644 --- a/p2p/utils_test.go +++ b/p2p/utils_test.go @@ -135,6 +135,7 @@ func createMockRuntimeMgrs(t *testing.T, numValidators int) []modules.RuntimeMgr return mockRuntimeMgrs } +// TODO: we need to support all protocol actor types, not only validators // createMockGenesisState configures and returns a mocked GenesisState func createMockGenesisState(t *testing.T, valKeys []cryptoPocket.PrivateKey) *genesis.GenesisState { var genesisState = new(genesis.GenesisState) @@ -143,7 +144,7 @@ func createMockGenesisState(t *testing.T, valKeys []cryptoPocket.PrivateKey) *ge for i, valKey := range valKeys { addr := valKey.Address().String() mockActor := &coreTypes.Actor{ - ActorType: coreTypes.ActorType_ACTOR_TYPE_VAL, + ActorType: coreTypes.ActorType_ACTOR_TYPE_VAL, Address: addr, PublicKey: valKey.PublicKey().String(), GenericParam: validatorId(i + 1), From d7a521eb816c33d810f1e29f848028727512a149 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Fri, 30 Dec 2022 12:25:18 +0000 Subject: [PATCH 108/120] refactor(persistence): actorType from schema --- persistence/actor.go | 4 ---- persistence/shared_sql.go | 2 +- persistence/types/application.go | 4 ++++ persistence/types/base_actor.go | 7 +++++++ persistence/types/fisherman.go | 4 ++++ persistence/types/protocol_actor.go | 5 +++++ persistence/types/service_node.go | 4 ++++ persistence/types/validator.go | 2 ++ 8 files changed, 27 insertions(+), 5 deletions(-) diff --git a/persistence/actor.go b/persistence/actor.go index 85c32be45..b18f5d9ac 100644 --- a/persistence/actor.go +++ b/persistence/actor.go @@ -24,7 +24,6 @@ func (p PostgresContext) GetAllApps(height int64) (apps []*coreTypes.Actor, err if err != nil { return } - actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_APP actors = append(actors, actor) } rows.Close() @@ -54,7 +53,6 @@ func (p PostgresContext) GetAllValidators(height int64) (vals []*coreTypes.Actor if err != nil { return } - actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_VAL actors = append(actors, actor) } rows.Close() @@ -84,7 +82,6 @@ func (p PostgresContext) GetAllServiceNodes(height int64) (sn []*coreTypes.Actor if err != nil { return } - actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_SERVICENODE actors = append(actors, actor) } rows.Close() @@ -114,7 +111,6 @@ func (p PostgresContext) GetAllFishermen(height int64) (f []*coreTypes.Actor, er if err != nil { return } - actor.ActorType = coreTypes.ActorType_ACTOR_TYPE_FISH actors = append(actors, actor) } rows.Close() diff --git a/persistence/shared_sql.go b/persistence/shared_sql.go index 173e79b9c..f2fb2297d 100644 --- a/persistence/shared_sql.go +++ b/persistence/shared_sql.go @@ -92,7 +92,7 @@ func (p *PostgresContext) getActor(actorSchema types.ProtocolActorSchema, addres if err != nil { return } - + actor.ActorType = actorSchema.GetActorType() return p.getChainsForActor(ctx, tx, actorSchema, actor, height) } diff --git a/persistence/types/application.go b/persistence/types/application.go index 141dd46e4..a6881f9b7 100644 --- a/persistence/types/application.go +++ b/persistence/types/application.go @@ -1,5 +1,7 @@ package types +import coreTypes "github.com/pokt-network/pocket/shared/core/types" + var _ ProtocolActorSchema = &ApplicationSchema{} type ApplicationSchema struct { @@ -15,6 +17,8 @@ const ( var ApplicationActor ProtocolActorSchema = &ApplicationSchema{ BaseProtocolActorSchema: BaseProtocolActorSchema{ + actorType: coreTypes.ActorType_ACTOR_TYPE_APP, + tableName: AppTableName, chainsTableName: AppChainsTableName, diff --git a/persistence/types/base_actor.go b/persistence/types/base_actor.go index bb4c40098..16d3d1b6e 100644 --- a/persistence/types/base_actor.go +++ b/persistence/types/base_actor.go @@ -12,6 +12,9 @@ var _ ProtocolActorSchema = &BaseProtocolActorSchema{} // Note that this implementation assumes the protocol actor is chain dependant, so that behaviour needs // to be overridden if the actor (e.g. Validator) is chain independent. type BaseProtocolActorSchema struct { + // Actor Type + actorType coreTypes.ActorType + // SQL Tables tableName string chainsTableName string @@ -24,6 +27,10 @@ type BaseProtocolActorSchema struct { chainsHeightConstraintName string } +func (actor *BaseProtocolActorSchema) GetActorType() coreTypes.ActorType { + return actor.actorType +} + func (actor *BaseProtocolActorSchema) GetTableName() string { return actor.tableName } diff --git a/persistence/types/fisherman.go b/persistence/types/fisherman.go index da116a7fe..1ffe2e8b7 100644 --- a/persistence/types/fisherman.go +++ b/persistence/types/fisherman.go @@ -1,5 +1,7 @@ package types +import coreTypes "github.com/pokt-network/pocket/shared/core/types" + var _ ProtocolActorSchema = &FishermanSchema{} type FishermanSchema struct { @@ -15,6 +17,8 @@ const ( var FishermanActor ProtocolActorSchema = &FishermanSchema{ BaseProtocolActorSchema: BaseProtocolActorSchema{ + actorType: coreTypes.ActorType_ACTOR_TYPE_FISH, + tableName: FishermanTableName, chainsTableName: FishermanChainsTableName, diff --git a/persistence/types/protocol_actor.go b/persistence/types/protocol_actor.go index 709457b6c..7b16a1def 100644 --- a/persistence/types/protocol_actor.go +++ b/persistence/types/protocol_actor.go @@ -1,10 +1,15 @@ package types +import coreTypes "github.com/pokt-network/pocket/shared/core/types" + // Interface common to all protocol actors at the persistence schema layer. This exposes SQL specific // attributes and queries. type ProtocolActorSchema interface { /*** Protocol Actor Attributes ***/ + // Actor Type + GetActorType() coreTypes.ActorType + // SQL Table Names GetTableName() string GetChainsTableName() string diff --git a/persistence/types/service_node.go b/persistence/types/service_node.go index 76857e0da..d7bbe9cb0 100644 --- a/persistence/types/service_node.go +++ b/persistence/types/service_node.go @@ -1,5 +1,7 @@ package types +import coreTypes "github.com/pokt-network/pocket/shared/core/types" + var _ ProtocolActorSchema = &ServiceNodeSchema{} type ServiceNodeSchema struct { @@ -15,6 +17,8 @@ const ( var ServiceNodeActor ProtocolActorSchema = &ServiceNodeSchema{ BaseProtocolActorSchema: BaseProtocolActorSchema{ + actorType: coreTypes.ActorType_ACTOR_TYPE_SERVICENODE, + tableName: ServiceNodeTableName, chainsTableName: ServiceNodeChainsTableName, diff --git a/persistence/types/validator.go b/persistence/types/validator.go index cbbea273c..6cded8004 100644 --- a/persistence/types/validator.go +++ b/persistence/types/validator.go @@ -17,6 +17,8 @@ type ValidatorSchema struct { var ValidatorActor ProtocolActorSchema = &ValidatorSchema{ BaseProtocolActorSchema: BaseProtocolActorSchema{ + actorType: coreTypes.ActorType_ACTOR_TYPE_VAL, + tableName: ValidatorTableName, chainsTableName: NullString, From b8d1946ae470bfe656a5ff67cf64bf157109e302 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Fri, 30 Dec 2022 13:38:56 +0000 Subject: [PATCH 109/120] =?UTF-8?q?chore(shared):=20CHANGELOG=20?= =?UTF-8?q?=F0=9F=93=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/client/cli/doc/CHANGELOG.md | 2 +- build/docs/CHANGELOG.md | 2 +- consensus/doc/CHANGELOG.md | 2 +- logger/docs/CHANGELOG.md | 4 ++-- p2p/CHANGELOG.md | 2 +- persistence/docs/CHANGELOG.md | 2 +- rpc/doc/CHANGELOG.md | 2 +- runtime/docs/CHANGELOG.md | 2 +- shared/CHANGELOG.md | 2 +- telemetry/CHANGELOG.md | 4 ++-- utility/doc/CHANGELOG.md | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/client/cli/doc/CHANGELOG.md b/app/client/cli/doc/CHANGELOG.md index f6c4e5cba..920234cc6 100644 --- a/app/client/cli/doc/CHANGELOG.md +++ b/app/client/cli/doc/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.3] - 2022-12-28 +## [0.0.0.3] - 2022-12-30 - Updated to use `coreTypes` instead of utility types for `Actor` and `ActorType` diff --git a/build/docs/CHANGELOG.md b/build/docs/CHANGELOG.md index 7712694a1..38f4d6650 100644 --- a/build/docs/CHANGELOG.md +++ b/build/docs/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.1] - 2022-12-28 +## [0.0.0.1] - 2022-12-30 - Removed `BaseConfig` from `configs` - Centralized `PersistenceGenesisState` and `ConsensusGenesisState` into `GenesisState` diff --git a/consensus/doc/CHANGELOG.md b/consensus/doc/CHANGELOG.md index 4de73d107..9fd7de65e 100644 --- a/consensus/doc/CHANGELOG.md +++ b/consensus/doc/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.15] - 2022-12-28 +## [0.0.0.15] - 2022-12-30 - ValidatorMap uses `Actor` references now diff --git a/logger/docs/CHANGELOG.md b/logger/docs/CHANGELOG.md index 6c2c56611..991a86858 100644 --- a/logger/docs/CHANGELOG.md +++ b/logger/docs/CHANGELOG.md @@ -7,10 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.1] - 2022-12-28 +## [0.0.0.1] - 2022-12-30 - Refactored configs into `configs` package -## [0.0.0.0] - 2022-12-28 +## [0.0.0.0] - 2022-12-30 - Introduced this `CHANGELOG.md` diff --git a/p2p/CHANGELOG.md b/p2p/CHANGELOG.md index 03453ba37..c9e84264e 100644 --- a/p2p/CHANGELOG.md +++ b/p2p/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.14] - 2022-12-28 +## [0.0.0.14] - 2022-12-30 - `ActorsToAddrBook` now skips actors that are not validators since they don't have a serviceUrl generic parameter diff --git a/persistence/docs/CHANGELOG.md b/persistence/docs/CHANGELOG.md index abcb3c9c3..dea196a20 100644 --- a/persistence/docs/CHANGELOG.md +++ b/persistence/docs/CHANGELOG.md @@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Renamed `InitParams` to `InitGenesisParams` -## [0.0.0.17] - 2022-12-28 +## [0.0.0.17] - 2022-12-30 - Added missing `ActorType` in `GetAllXXXX()` functions - Updated to new `PoolNames` enums diff --git a/rpc/doc/CHANGELOG.md b/rpc/doc/CHANGELOG.md index 8fdb6c64a..21e3e335f 100644 --- a/rpc/doc/CHANGELOG.md +++ b/rpc/doc/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.4] - 2022-12-28 +## [0.0.0.4] - 2022-12-30 - Updated to use the new centralized config and genesis handling diff --git a/runtime/docs/CHANGELOG.md b/runtime/docs/CHANGELOG.md index 46068f9ce..820935a56 100644 --- a/runtime/docs/CHANGELOG.md +++ b/runtime/docs/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.3] - 2022-12-28 +## [0.0.0.3] - 2022-12-30 - Split testing/development configs into separate files - Centralized `NewDefaultConfig` logic with options used by the config generator diff --git a/shared/CHANGELOG.md b/shared/CHANGELOG.md index 99cdb74e8..cc9da41b9 100644 --- a/shared/CHANGELOG.md +++ b/shared/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.8] - 2022-12-28 +## [0.0.0.8] - 2022-12-30 - Added `PoolNames.FriendlyName` method - Renamed enums as per code-review diff --git a/telemetry/CHANGELOG.md b/telemetry/CHANGELOG.md index 6c2c56611..991a86858 100644 --- a/telemetry/CHANGELOG.md +++ b/telemetry/CHANGELOG.md @@ -7,10 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.1] - 2022-12-28 +## [0.0.0.1] - 2022-12-30 - Refactored configs into `configs` package -## [0.0.0.0] - 2022-12-28 +## [0.0.0.0] - 2022-12-30 - Introduced this `CHANGELOG.md` diff --git a/utility/doc/CHANGELOG.md b/utility/doc/CHANGELOG.md index ef48c6e82..67c348d07 100644 --- a/utility/doc/CHANGELOG.md +++ b/utility/doc/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.15] - 2022-12-28 +## [0.0.0.15] - 2022-12-30 - Renamed enum names as per code-review - Using defaults from `test_artifacts` for tests From fb42810947fe706561077ad191ee6a81246dab43 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 19:55:37 +0000 Subject: [PATCH 110/120] test(persistence): added test for GetAllStakedActors --- persistence/test/actor_test.go | 38 ++++++++++++++++++++++++++++++++++ persistence/test/setup_test.go | 12 ++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 persistence/test/actor_test.go diff --git a/persistence/test/actor_test.go b/persistence/test/actor_test.go new file mode 100644 index 000000000..2eab35c82 --- /dev/null +++ b/persistence/test/actor_test.go @@ -0,0 +1,38 @@ +package test + +import ( + "testing" + + "github.com/pokt-network/pocket/shared/core/types" + "github.com/stretchr/testify/require" +) + +func TestGetAllStakedActors(t *testing.T) { + db := NewTestPostgresContext(t, 0) + expectedActorCount := genesisStateNumValidators + genesisStateNumServiceNodes + genesisStateNumApplications + genesisStateNumFishermen + + actors, err := db.GetAllStakedActors(0) + require.NoError(t, err) + require.Equal(t, expectedActorCount, len(actors)) + + actualValidators := 0 + actualServiceNodes := 0 + actualApplications := 0 + actualFishermen := 0 + for _, actor := range actors { + switch actor.ActorType { + case types.ActorType_ACTOR_TYPE_VAL: + actualValidators++ + case types.ActorType_ACTOR_TYPE_SERVICENODE: + actualServiceNodes++ + case types.ActorType_ACTOR_TYPE_APP: + actualApplications++ + case types.ActorType_ACTOR_TYPE_FISH: + actualFishermen++ + } + } + require.Equal(t, genesisStateNumValidators, actualValidators) + require.Equal(t, genesisStateNumServiceNodes, actualServiceNodes) + require.Equal(t, genesisStateNumApplications, actualApplications) + require.Equal(t, genesisStateNumFishermen, actualFishermen) +} diff --git a/persistence/test/setup_test.go b/persistence/test/setup_test.go index acb62a9b6..3845bf8c2 100644 --- a/persistence/test/setup_test.go +++ b/persistence/test/setup_test.go @@ -49,6 +49,11 @@ var ( OlshanskyChains = []string{"OLSH"} testSchema = "test_schema" + + genesisStateNumValidators = 5 + genesisStateNumServiceNodes = 1 + genesisStateNumApplications = 1 + genesisStateNumFishermen = 1 ) var testPersistenceMod modules.PersistenceModule // initialized in TestMain @@ -96,7 +101,12 @@ func newTestPersistenceModule(databaseUrl string) modules.PersistenceModule { }, } - genesisState, _ := test_artifacts.NewGenesisState(5, 1, 1, 1) + genesisState, _ := test_artifacts.NewGenesisState( + genesisStateNumValidators, + genesisStateNumServiceNodes, + genesisStateNumApplications, + genesisStateNumServiceNodes, + ) runtimeCfg := runtime.NewManager(cfg, genesisState) persistenceMod, err := persistence.Create(runtimeCfg) From 6ff3c3ad2b446443df150931103c1b2b60df562b Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 19:57:08 +0000 Subject: [PATCH 111/120] refactor(persistence): actorType set in getActorForRow --- persistence/actor.go | 9 +++++---- persistence/shared_sql.go | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/persistence/actor.go b/persistence/actor.go index b18f5d9ac..74e5fda29 100644 --- a/persistence/actor.go +++ b/persistence/actor.go @@ -20,7 +20,7 @@ func (p PostgresContext) GetAllApps(height int64) (apps []*coreTypes.Actor, err var actors []*coreTypes.Actor for rows.Next() { var actor *coreTypes.Actor - actor, height, err = p.getActorFromRow(rows) + actor, height, err = p.getActorFromRow(types.ApplicationActor.GetActorType(), rows) if err != nil { return } @@ -49,10 +49,11 @@ func (p PostgresContext) GetAllValidators(height int64) (vals []*coreTypes.Actor var actors []*coreTypes.Actor for rows.Next() { var actor *coreTypes.Actor - actor, height, err = p.getActorFromRow(rows) + actor, height, err = p.getActorFromRow(types.ValidatorActor.GetActorType(), rows) if err != nil { return } + actor.ActorType = types.ValidatorActor.GetActorType() actors = append(actors, actor) } rows.Close() @@ -78,7 +79,7 @@ func (p PostgresContext) GetAllServiceNodes(height int64) (sn []*coreTypes.Actor var actors []*coreTypes.Actor for rows.Next() { var actor *coreTypes.Actor - actor, height, err = p.getActorFromRow(rows) + actor, height, err = p.getActorFromRow(types.ServiceNodeActor.GetActorType(), rows) if err != nil { return } @@ -107,7 +108,7 @@ func (p PostgresContext) GetAllFishermen(height int64) (f []*coreTypes.Actor, er var actors []*coreTypes.Actor for rows.Next() { var actor *coreTypes.Actor - actor, height, err = p.getActorFromRow(rows) + actor, height, err = p.getActorFromRow(types.FishermanActor.GetActorType(), rows) if err != nil { return } diff --git a/persistence/shared_sql.go b/persistence/shared_sql.go index f2fb2297d..f9311cc6d 100644 --- a/persistence/shared_sql.go +++ b/persistence/shared_sql.go @@ -88,16 +88,17 @@ func (p *PostgresContext) getActor(actorSchema types.ProtocolActorSchema, addres if err != nil { return } - actor, height, err = p.getActorFromRow(tx.QueryRow(ctx, actorSchema.GetQuery(hex.EncodeToString(address), height))) + actor, height, err = p.getActorFromRow(actorSchema.GetActorType(), tx.QueryRow(ctx, actorSchema.GetQuery(hex.EncodeToString(address), height))) if err != nil { return } - actor.ActorType = actorSchema.GetActorType() return p.getChainsForActor(ctx, tx, actorSchema, actor, height) } -func (p *PostgresContext) getActorFromRow(row pgx.Row) (actor *coreTypes.Actor, height int64, err error) { - actor = new(coreTypes.Actor) +func (p *PostgresContext) getActorFromRow(actorType coreTypes.ActorType, row pgx.Row) (actor *coreTypes.Actor, height int64, err error) { + actor = &coreTypes.Actor{ + ActorType: actorType, + } err = row.Scan( &actor.Address, &actor.PublicKey, From 414276a319578d42ace88037e4956c9e4e13adf8 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 21:14:25 +0000 Subject: [PATCH 112/120] chore(persistence): argument types in InsertFn --- persistence/genesis.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence/genesis.go b/persistence/genesis.go index 83dcd611e..1c94316d6 100644 --- a/persistence/genesis.go +++ b/persistence/genesis.go @@ -56,7 +56,7 @@ func (m *persistenceModule) populateGenesisState(state *genesis.GenesisState) { stakedActorsInsertConfigs := []struct { Name string Getter func() []*coreTypes.Actor - InsertFn func(address []byte, publicKey []byte, output []byte, paused bool, status int32, serviceURL string, stakedTokens string, chains []string, pausedHeight int64, unstakingHeight int64) error + InsertFn func(address, publicKey, output []byte, paused bool, status int32, serviceURL, stakedTokens string, chains []string, pausedHeight, unstakingHeight int64) error Pool coreTypes.Pools }{ { From d82b01856c743ab2cf4b7af141bf22cadda19170 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 21:16:34 +0000 Subject: [PATCH 113/120] docs(shared): CHANGELOGs dates --- app/client/cli/doc/CHANGELOG.md | 2 +- build/docs/CHANGELOG.md | 2 +- consensus/doc/CHANGELOG.md | 2 +- logger/docs/CHANGELOG.md | 4 ++-- p2p/CHANGELOG.md | 2 +- persistence/docs/CHANGELOG.md | 4 ++-- rpc/doc/CHANGELOG.md | 2 +- runtime/docs/CHANGELOG.md | 2 +- shared/CHANGELOG.md | 2 +- telemetry/CHANGELOG.md | 4 ++-- utility/doc/CHANGELOG.md | 2 +- val1.json | 1 + val2.json | 1 + 13 files changed, 16 insertions(+), 14 deletions(-) create mode 100644 val1.json create mode 100644 val2.json diff --git a/app/client/cli/doc/CHANGELOG.md b/app/client/cli/doc/CHANGELOG.md index 920234cc6..f78e6fa72 100644 --- a/app/client/cli/doc/CHANGELOG.md +++ b/app/client/cli/doc/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.3] - 2022-12-30 +## [0.0.0.3] - 2023-01-03 - Updated to use `coreTypes` instead of utility types for `Actor` and `ActorType` diff --git a/build/docs/CHANGELOG.md b/build/docs/CHANGELOG.md index 38f4d6650..aa092940b 100644 --- a/build/docs/CHANGELOG.md +++ b/build/docs/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.1] - 2022-12-30 +## [0.0.0.1] - 2023-01-03 - Removed `BaseConfig` from `configs` - Centralized `PersistenceGenesisState` and `ConsensusGenesisState` into `GenesisState` diff --git a/consensus/doc/CHANGELOG.md b/consensus/doc/CHANGELOG.md index 9fd7de65e..d59274cf2 100644 --- a/consensus/doc/CHANGELOG.md +++ b/consensus/doc/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.15] - 2022-12-30 +## [0.0.0.15] - 2023-01-03 - ValidatorMap uses `Actor` references now diff --git a/logger/docs/CHANGELOG.md b/logger/docs/CHANGELOG.md index 991a86858..3cfd02919 100644 --- a/logger/docs/CHANGELOG.md +++ b/logger/docs/CHANGELOG.md @@ -7,10 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.1] - 2022-12-30 +## [0.0.0.1] - 2023-01-03 - Refactored configs into `configs` package -## [0.0.0.0] - 2022-12-30 +## [0.0.0.0] - 2023-01-03 - Introduced this `CHANGELOG.md` diff --git a/p2p/CHANGELOG.md b/p2p/CHANGELOG.md index c9e84264e..000e2772e 100644 --- a/p2p/CHANGELOG.md +++ b/p2p/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.14] - 2022-12-30 +## [0.0.0.14] - 2023-01-03 - `ActorsToAddrBook` now skips actors that are not validators since they don't have a serviceUrl generic parameter diff --git a/persistence/docs/CHANGELOG.md b/persistence/docs/CHANGELOG.md index dea196a20..fcc6d1888 100644 --- a/persistence/docs/CHANGELOG.md +++ b/persistence/docs/CHANGELOG.md @@ -7,11 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.18] - 2022-12-30 +## [0.0.0.18] - 2023-01-03 - Renamed `InitParams` to `InitGenesisParams` -## [0.0.0.17] - 2022-12-30 +## [0.0.0.17] - 2023-01-03 - Added missing `ActorType` in `GetAllXXXX()` functions - Updated to new `PoolNames` enums diff --git a/rpc/doc/CHANGELOG.md b/rpc/doc/CHANGELOG.md index 21e3e335f..490508aa9 100644 --- a/rpc/doc/CHANGELOG.md +++ b/rpc/doc/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.4] - 2022-12-30 +## [0.0.0.4] - 2023-01-03 - Updated to use the new centralized config and genesis handling diff --git a/runtime/docs/CHANGELOG.md b/runtime/docs/CHANGELOG.md index 820935a56..945232db7 100644 --- a/runtime/docs/CHANGELOG.md +++ b/runtime/docs/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.3] - 2022-12-30 +## [0.0.0.3] - 2023-01-03 - Split testing/development configs into separate files - Centralized `NewDefaultConfig` logic with options used by the config generator diff --git a/shared/CHANGELOG.md b/shared/CHANGELOG.md index cc9da41b9..e7dd1d6d5 100644 --- a/shared/CHANGELOG.md +++ b/shared/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.8] - 2022-12-30 +## [0.0.0.8] - 2023-01-03 - Added `PoolNames.FriendlyName` method - Renamed enums as per code-review diff --git a/telemetry/CHANGELOG.md b/telemetry/CHANGELOG.md index 991a86858..3cfd02919 100644 --- a/telemetry/CHANGELOG.md +++ b/telemetry/CHANGELOG.md @@ -7,10 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.1] - 2022-12-30 +## [0.0.0.1] - 2023-01-03 - Refactored configs into `configs` package -## [0.0.0.0] - 2022-12-30 +## [0.0.0.0] - 2023-01-03 - Introduced this `CHANGELOG.md` diff --git a/utility/doc/CHANGELOG.md b/utility/doc/CHANGELOG.md index 67c348d07..e16aea9d3 100644 --- a/utility/doc/CHANGELOG.md +++ b/utility/doc/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.0.0.15] - 2022-12-30 +## [0.0.0.15] - 2023-01-03 - Renamed enum names as per code-review - Using defaults from `test_artifacts` for tests diff --git a/val1.json b/val1.json new file mode 100644 index 000000000..94149390a --- /dev/null +++ b/val1.json @@ -0,0 +1 @@ +"6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4" diff --git a/val2.json b/val2.json new file mode 100644 index 000000000..fb3fd2fd9 --- /dev/null +++ b/val2.json @@ -0,0 +1 @@ +"5db3e9d97d04d6d70359de924bb02039c602080d6bf01a692bad31ad5ef93524c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb" From 6dea7941030aa00fd128546051c6dfe0a55ee076 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 21:49:34 +0000 Subject: [PATCH 114/120] chore(shared): rm val keys --- val1.json | 1 - val2.json | 1 - 2 files changed, 2 deletions(-) delete mode 100644 val1.json delete mode 100644 val2.json diff --git a/val1.json b/val1.json deleted file mode 100644 index 94149390a..000000000 --- a/val1.json +++ /dev/null @@ -1 +0,0 @@ -"6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4" diff --git a/val2.json b/val2.json deleted file mode 100644 index fb3fd2fd9..000000000 --- a/val2.json +++ /dev/null @@ -1 +0,0 @@ -"5db3e9d97d04d6d70359de924bb02039c602080d6bf01a692bad31ad5ef93524c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb" From 52b500bd6af5b00d720127d7a8b2c3d755bfba6e Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 21:51:14 +0000 Subject: [PATCH 115/120] chore(gitignore): added validator keys --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6e13223e1..ad7a24047 100644 --- a/.gitignore +++ b/.gitignore @@ -63,4 +63,8 @@ rpc/client.gen.go build/config/gen*.json # Ignored generated files by build -bin/* \ No newline at end of file +bin/* + +# Validator keys used for testing/demoes +val1.json +val2.json \ No newline at end of file From ac0e99d4bdd761cf88e4e3eae98b6780dab4e7b4 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 21:53:46 +0000 Subject: [PATCH 116/120] docs(iteration3demo): updated to source keys from /tmp/ --- docs/demos/iteration_3_end_to_end_tx.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/demos/iteration_3_end_to_end_tx.md b/docs/demos/iteration_3_end_to_end_tx.md index 9a4133fb1..38c5fd8c5 100644 --- a/docs/demos/iteration_3_end_to_end_tx.md +++ b/docs/demos/iteration_3_end_to_end_tx.md @@ -105,24 +105,24 @@ For the following steps, you'll need to use the accounts of the first two valida 1) You can just: ```bash - echo '"6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4"' > val1.json - echo '"5db3e9d97d04d6d70359de924bb02039c602080d6bf01a692bad31ad5ef93524c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb"' > val2.json + echo '"6fd0bc54cc2dd205eaf226eebdb0451629b321f11d279013ce6fdd5a33059256b2eda2232ffb2750bf761141f70f75a03a025f65b2b2b417c7f8b3c9ca91e8e4"' > /tmp/val1.json + echo '"5db3e9d97d04d6d70359de924bb02039c602080d6bf01a692bad31ad5ef93524c16043323c83ffd901a8bf7d73543814b8655aa4695f7bfb49d01926fc161cdb"' > /tmp/val2.json ``` 2) You can use `jq` and run these commands: ```bash - cat ./build/config/config1.json | jq '.private_key' > val1.json - cat ./build/config/config2.json | jq '.private_key' > val2.json + cat ./build/config/config1.json | jq '.private_key' > /tmp/val1.json + cat ./build/config/config2.json | jq '.private_key' > /tmp/val2.json ``` -3) You can manually copy-paste the private keys from the config files into the `val1.json` and `val2.json` files. Remember to keep the double quotes around the private keys ("private_key" field in the JSON). +3) You can manually copy-paste the private keys from the config files into the `/tmp/val1.json` and `/tmp/val2.json` files. Remember to keep the double quotes around the private keys ("private_key" field in the JSON). ### First Transaction Trigger a send transaction from validator 1 to validator 2. ```bash -go run app/client/*.go --path_to_private_key_file=./val1.json Account Send 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 67eb3f0a50ae459fecf666be0e93176e92441317 1000 +go run app/client/*.go --path_to_private_key_file=/tmp/val1.json Account Send 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 67eb3f0a50ae459fecf666be0e93176e92441317 1000 ``` 1. Use shell #2 to `TriggerNextView` and confirm height increased via `PrintNodeState` @@ -141,7 +141,7 @@ go run app/client/*.go --path_to_private_key_file=./val1.json Account Send 6f665 Trigger a send transaction from validator 2 to validator 1. ```bash -go run app/client/*.go --path_to_private_key_file=./val2.json Account Send 67eb3f0a50ae459fecf666be0e93176e92441317 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 1000 +go run app/client/*.go --path_to_private_key_file=/tmp/val2.json Account Send 67eb3f0a50ae459fecf666be0e93176e92441317 6f66574e1f50f0ef72dff748c3f11b9e0e89d32a 1000 ``` 1. Use shell #2 to `TriggerNextView` (one or more times) and confirm height increased via `PrintNodeState` From 3524dc97c6d3a3de13b26599ff1f75c5b59331f6 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 22:30:02 +0000 Subject: [PATCH 117/120] docs(P2P): added todo #426 --- p2p/addrbook_provider/persistence.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/p2p/addrbook_provider/persistence.go b/p2p/addrbook_provider/persistence.go index e9b48bb83..81db1d718 100644 --- a/p2p/addrbook_provider/persistence.go +++ b/p2p/addrbook_provider/persistence.go @@ -71,6 +71,9 @@ func (pabp *persistenceAddrBookProvider) GetStakedAddrBookAtHeight(height uint64 return addrBook, nil } +// TODO (#426): refactor so that it's possible to connect to peers without using the GenericParam and having to filter out non-validator actors. +// AddrBook and similar concepts shouldn't leak outside the P2P module. It should be possible to broadcast messages to all peers or only to a specific actor type +// without having to know the underlying implementation in the P2P module. func (pabp *persistenceAddrBookProvider) ActorsToAddrBook(actors map[string]coreTypes.Actor) (typesP2P.AddrBook, error) { book := make(typesP2P.AddrBook, 0) for _, v := range actors { @@ -88,6 +91,7 @@ func (pabp *persistenceAddrBookProvider) ActorsToAddrBook(actors map[string]core return book, nil } +// TODO (#426): refactor so that it doesn't use the GenericParam anymore to connect to the peer func (pabp *persistenceAddrBookProvider) ActorToNetworkPeer(v coreTypes.Actor) (*typesP2P.NetworkPeer, error) { conn, err := pabp.connFactory(pabp.p2pCfg, v.GetGenericParam()) // service url if err != nil { From 636638fad99ab48bf4d2437a2229e2d0cfd998d3 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 22:51:17 +0000 Subject: [PATCH 118/120] docs(CLI): updated README --- app/client/cli/doc/CHANGELOG.md | 1 + app/client/cli/doc/README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/app/client/cli/doc/CHANGELOG.md b/app/client/cli/doc/CHANGELOG.md index f78e6fa72..5cbd7faf9 100644 --- a/app/client/cli/doc/CHANGELOG.md +++ b/app/client/cli/doc/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [0.0.0.3] - 2023-01-03 - Updated to use `coreTypes` instead of utility types for `Actor` and `ActorType` +- Updated README.md ## [0.0.0.2] - 2022-11-02 diff --git a/app/client/cli/doc/README.md b/app/client/cli/doc/README.md index abbc2ac4e..d4e1c7b07 100644 --- a/app/client/cli/doc/README.md +++ b/app/client/cli/doc/README.md @@ -24,6 +24,7 @@ Command tree available [here](./commands/client.md) │ │ └── main.go # commands specific documentation generator │ ├── gov.go # Governance subcommand │ ├── utils.go # support functions +│ ├── system.go # System subcommand │ └── utils_test.go # tests for the support functions └── main.go # entrypoint ``` From 2f73d5efa9ba3e2f5d880e46e34c8e6b864e0a50 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 22:51:46 +0000 Subject: [PATCH 119/120] docs(runtime): updated README --- runtime/docs/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/runtime/docs/README.md b/runtime/docs/README.md index 4b5b8ecb2..19a4623bf 100644 --- a/runtime/docs/README.md +++ b/runtime/docs/README.md @@ -4,8 +4,10 @@ This document outlines the purpose of this module, its components and how they a ## Contents -- [Overview](#overview) -- [Components](#components) +- [RuntimeMgr](#runtimemgr) + - [Contents](#contents) + - [Overview](#overview) + - [Components](#components) ### Overview @@ -38,8 +40,7 @@ This module includes the following components: The genesis represents the initial state of the blockchain. This allows the binary to start with a specific initial state. - - Similarly to `Config`, these are scoped by module as well and currently we have `Persistence` and `Consensus` specific `GenesisState`s + - **Clock** From 26ef163bf7812bb30c481d4f0e1efc57e21b47a3 Mon Sep 17 00:00:00 2001 From: Alessandro De Blasis Date: Tue, 3 Jan 2023 22:58:09 +0000 Subject: [PATCH 120/120] docs(development): README --- docs/development/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/development/README.md b/docs/development/README.md index bf8bdc924..7116d0f2f 100644 --- a/docs/development/README.md +++ b/docs/development/README.md @@ -161,11 +161,14 @@ Pocket | ├── deployments # Docker-compose to run different cluster of services for development | ├── Docker* # Various Dockerfile(s) ├── consensus # Implementation of the Consensus module -├── core # [currently-unused] ├── docs # Links to V1 Protocol implementation documentation (excluding the protocol specification) +├── logger # Implementation of the Logger module ├── p2p # Implementation of the P2P module ├── persistence # Implementation of the Persistence module +├── rpc # Implementation of the RPC module +├── runtime # Implementation of the Runtime module ├── shared # [to-be-refactored] Shared types, modules and utils +├── telemetry # Implementation of the Telemetry module ├── utility # Implementation of the Utility module ├── Makefile # [to-be-deleted] The source of targets used to develop, build and test ```