diff --git a/config/config.go b/config/config.go index f707ac2..5aa01ae 100644 --- a/config/config.go +++ b/config/config.go @@ -3,6 +3,10 @@ package config import ( "encoding/json" "sync" + + "github.com/planetmint/planetmint-go/lib" + "github.com/planetmint/planetmint-go/lib/trustwallet" + "github.com/rddl-network/go-utils/logger" ) const DefaultConfigTemplate = ` @@ -11,7 +15,7 @@ const DefaultConfigTemplate = ` ############################################################################### [planetmint] -validator-address = "{{ .PlmntConfig.ValidatorAddress }}" +validator-address = "{{ .PlmntConfig.validatorAddress }}" mqtt-domain = "{{ .PlmntConfig.MqttDomain }}" mqtt-port = {{ .PlmntConfig.MqttPort }} mqtt-user = "{{ .PlmntConfig.MqttUser }}" @@ -24,7 +28,6 @@ certs-path = "{{ .PlmntConfig.CertsPath }}" // Config defines Planetmint's top level configuration type Config struct { - ValidatorAddress string `json:"validator-address" mapstructure:"validator-address"` MqttDomain string `json:"mqtt-domain" mapstructure:"mqtt-domain"` MqttPort int `json:"mqtt-port" mapstructure:"mqtt-port"` MqttUser string `json:"mqtt-user" mapstructure:"mqtt-user"` @@ -33,6 +36,7 @@ type Config struct { MqttTLS bool `json:"mqtt-tls" mapstructure:"mqtt-tls"` IssuerHost string `json:"issuer-host" mapstructure:"issuer-host"` CertsPath string `json:"certs-path" mapstructure:"certs-path"` + validatorAddress string `json:"validator-address" mapstructure:"validator-address"` } // cosmos-sdk wide global singleton @@ -44,7 +48,6 @@ var ( // DefaultConfig returns planetmint's default configuration. func DefaultConfig() *Config { return &Config{ - ValidatorAddress: "plmnt1w5dww335zhh98pzv783hqre355ck3u4w4hjxcx", MqttDomain: "testnet-mqtt.rddl.io", MqttPort: 1886, MqttUser: "user", @@ -53,6 +56,7 @@ func DefaultConfig() *Config { MqttTLS: true, IssuerHost: "https://testnet-issuer.rddl.io", CertsPath: "./certs/", + validatorAddress: "plmnt1w5dww335zhh98pzv783hqre355ck3u4w4hjxcx", } } @@ -75,3 +79,29 @@ func (config *Config) SetPlanetmintConfig(planetmintconfig interface{}) { panic(err) } } + +func (config *Config) SetValidatorAddress(validatorAddress string) *Config { + config.validatorAddress = validatorAddress + return config +} + +func (config *Config) GetValidatorAddress() string { + libConfig := lib.GetConfig() + if libConfig.GetSerialPort() == "" { + return config.validatorAddress + } + + connector, err := trustwallet.NewTrustWalletConnector(libConfig.GetSerialPort()) + if err != nil { + logger.GetLogger(logger.ERROR).Error("msg", err.Error()) + return "" + } + + keys, err := connector.GetPlanetmintKeys() + if err != nil { + logger.GetLogger(logger.ERROR).Error("msg", err.Error()) + return "" + } + + return keys.PlanetmintAddress +} diff --git a/lib/config.go b/lib/config.go index 9898fcb..bf9f845 100644 --- a/lib/config.go +++ b/lib/config.go @@ -125,3 +125,7 @@ func (config *Config) SetSerialPort(port string) *Config { config.serialPort = port return config } + +func (config *Config) GetSerialPort() string { + return config.serialPort +} diff --git a/monitor/mqtt_monitor.go b/monitor/mqtt_monitor.go index 23023f2..92a7fd7 100644 --- a/monitor/mqtt_monitor.go +++ b/monitor/mqtt_monitor.go @@ -68,7 +68,7 @@ func (mms *MqttMonitor) setNumDBElements(numElements int64) { func getClientID() string { conf := config.GetConfig() - return "monitor-" + conf.ValidatorAddress + return "monitor-" + conf.GetValidatorAddress() } func (mms *MqttMonitor) lazyLoadMonitorMQTTClient() util.MQTTClientI { diff --git a/testutil/network/network.go b/testutil/network/network.go index 66abfb4..2c17286 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -596,7 +596,7 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) { l.Log("started validator", idx) if idx == 0 { conf := config.GetConfig() - conf.ValidatorAddress = network.Validators[0].Address.String() + conf.SetValidatorAddress(network.Validators[0].Address.String()) // set missing validator client context values for sending txs var output bytes.Buffer network.Validators[0].ClientCtx.BroadcastMode = "sync" diff --git a/util/issue_commands.go b/util/issue_commands.go index 89d42a8..0b88920 100644 --- a/util/issue_commands.go +++ b/util/issue_commands.go @@ -51,7 +51,7 @@ func buildSignBroadcastTx(goCtx context.Context, loggingContext string, sendingV func SendInitReissuance(goCtx context.Context, proposerAddress string, txUnsigned string, blockHeight int64, firstIncludedPop int64, lastIncludedPop int64) { - sendingValidatorAddress := config.GetConfig().ValidatorAddress + sendingValidatorAddress := config.GetConfig().GetValidatorAddress() msg := daotypes.NewMsgReissueRDDLProposal(sendingValidatorAddress, proposerAddress, txUnsigned, blockHeight, firstIncludedPop, lastIncludedPop) loggingContext := "reissuance proposal" @@ -59,14 +59,14 @@ func SendInitReissuance(goCtx context.Context, proposerAddress string, txUnsigne } func SendReissuanceResult(goCtx context.Context, proposerAddress string, txID string, blockHeight int64) { - sendingValidatorAddress := config.GetConfig().ValidatorAddress + sendingValidatorAddress := config.GetConfig().GetValidatorAddress() msg := daotypes.NewMsgReissueRDDLResult(sendingValidatorAddress, proposerAddress, txID, blockHeight) loggingContext := "reissuance result" buildSignBroadcastTx(goCtx, loggingContext, sendingValidatorAddress, msg) } func SendDistributionRequest(goCtx context.Context, distribution daotypes.DistributionOrder) { - sendingValidatorAddress := config.GetConfig().ValidatorAddress + sendingValidatorAddress := config.GetConfig().GetValidatorAddress() msg := daotypes.NewMsgDistributionRequest(sendingValidatorAddress, &distribution) loggingContext := "distribution request" buildSignBroadcastTx(goCtx, loggingContext, sendingValidatorAddress, msg) @@ -74,35 +74,35 @@ func SendDistributionRequest(goCtx context.Context, distribution daotypes.Distri func SendDistributionResult(goCtx context.Context, lastPoP int64, daoTxID string, invTxID string, popTxID string, earlyInvestorTxID string, strategicTxID string) { - sendingValidatorAddress := config.GetConfig().ValidatorAddress + sendingValidatorAddress := config.GetConfig().GetValidatorAddress() msg := daotypes.NewMsgDistributionResult(sendingValidatorAddress, lastPoP, daoTxID, invTxID, popTxID, earlyInvestorTxID, strategicTxID) loggingContext := "distribution result" buildSignBroadcastTx(goCtx, loggingContext, sendingValidatorAddress, msg) } func SendLiquidAssetRegistration(goCtx context.Context, notarizedAsset machinetypes.LiquidAsset) { - sendingValidatorAddress := config.GetConfig().ValidatorAddress + sendingValidatorAddress := config.GetConfig().GetValidatorAddress() msg := machinetypes.NewMsgNotarizeLiquidAsset(sendingValidatorAddress, ¬arizedAsset) loggingContext := "notarize liquid asset" buildSignBroadcastTx(goCtx, loggingContext, sendingValidatorAddress, msg) } func SendInitPoP(goCtx context.Context, proposer string, challenger string, challengee string, blockHeight int64) { - sendingValidatorAddress := config.GetConfig().ValidatorAddress + sendingValidatorAddress := config.GetConfig().GetValidatorAddress() msg := daotypes.NewMsgInitPop(sendingValidatorAddress, proposer, challenger, challengee, blockHeight) loggingContext := "PoP" buildSignBroadcastTx(goCtx, loggingContext, sendingValidatorAddress, msg) } func SendUpdateRedeemClaim(goCtx context.Context, beneficiary string, id uint64, txID string) { - sendingValidatorAddress := config.GetConfig().ValidatorAddress + sendingValidatorAddress := config.GetConfig().GetValidatorAddress() msg := daotypes.NewMsgUpdateRedeemClaim(sendingValidatorAddress, beneficiary, txID, id) loggingContext := "redeem claim" buildSignBroadcastTx(goCtx, loggingContext, sendingValidatorAddress, msg) } func SendTokens(goCtx context.Context, beneficiary sdk.AccAddress, amount uint64, denominator string) { - sendingValidatorAddress := config.GetConfig().ValidatorAddress + sendingValidatorAddress := config.GetConfig().GetValidatorAddress() coin := sdk.NewCoin(denominator, sdk.NewIntFromUint64(amount)) coins := sdk.NewCoins(coin) diff --git a/util/mqtt.go b/util/mqtt.go index 49f7305..35e9af9 100644 --- a/util/mqtt.go +++ b/util/mqtt.go @@ -49,7 +49,7 @@ func LazyLoadMQTTClient() { } opts := mqtt.NewClientOptions().AddBroker(uri) - opts.SetClientID(conf.ValidatorAddress) + opts.SetClientID(conf.GetValidatorAddress()) opts.SetUsername(conf.MqttUser) opts.SetPassword(conf.MqttPassword) if conf.MqttTLS {