From d43e947751eaf43fab70999c7b773a0ef577b5f5 Mon Sep 17 00:00:00 2001 From: H4NLee Date: Wed, 14 Dec 2022 20:17:14 +0900 Subject: [PATCH 1/5] feat: add v2.1.0 upgrade handler --- app/app.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/app/app.go b/app/app.go index 8010e9f8..b6a13870 100644 --- a/app/app.go +++ b/app/app.go @@ -886,6 +886,27 @@ func (app *App) registerUpgradeHandlers() error { return app.mm.RunMigrations(ctx, app.configurator, fromVM) }) + // v2.1.0 + app.UpgradeKeeper.SetUpgradeHandler("v2.1.0", func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { + // use custom genesis state for genesis oracle + fromVM["oracle"] = oracle.AppModule{}.ConsensusVersion() + + genesisState := oracletypes.DefaultGenesis() + genesisState.Oracles = append(genesisState.Oracles, oracletypes.Oracle{ + OracleAddress: "panacea1ewugvs354xput6xydl5cd5tvkzcuymkejekwk3", + UniqueId: "uniqueId", + Endpoint: "myendpoint.org", + UpdateTime: ctx.BlockTime(), + OracleCommissionRate: sdk.NewDecWithPrec(1, 1), + OracleCommissionMaxRate: sdk.NewDecWithPrec(1, 1), + OracleCommissionMaxChangeRate: sdk.NewDecWithPrec(1, 1), + }) + + oracle.InitGenesis(ctx, app.oracleKeeper, *genesisState) + + return app.mm.RunMigrations(ctx, app.configurator, fromVM) + }) + upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() if err != nil { return err @@ -901,5 +922,13 @@ func (app *App) registerUpgradeHandlers() error { app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades)) } + if upgradeInfo.Name == "v2.1.0" && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { + storeUpgrades := storetypes.StoreUpgrades{ + Added: []string{"datadeal", "oracle"}, + } + + app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades)) + } + return nil } From 84cd457c2b84bf02dd8af7487abdc25e517ee411 Mon Sep 17 00:00:00 2001 From: H4NLee Date: Wed, 14 Dec 2022 21:15:14 +0900 Subject: [PATCH 2/5] tmp --- app/app.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index b6a13870..6ac5af59 100644 --- a/app/app.go +++ b/app/app.go @@ -891,10 +891,12 @@ func (app *App) registerUpgradeHandlers() error { // use custom genesis state for genesis oracle fromVM["oracle"] = oracle.AppModule{}.ConsensusVersion() + uniqueID := "test-unique-id" + genesisState := oracletypes.DefaultGenesis() genesisState.Oracles = append(genesisState.Oracles, oracletypes.Oracle{ OracleAddress: "panacea1ewugvs354xput6xydl5cd5tvkzcuymkejekwk3", - UniqueId: "uniqueId", + UniqueId: uniqueID, Endpoint: "myendpoint.org", UpdateTime: ctx.BlockTime(), OracleCommissionRate: sdk.NewDecWithPrec(1, 1), @@ -902,6 +904,8 @@ func (app *App) registerUpgradeHandlers() error { OracleCommissionMaxChangeRate: sdk.NewDecWithPrec(1, 1), }) + genesisState.Params.UniqueId = uniqueID + oracle.InitGenesis(ctx, app.oracleKeeper, *genesisState) return app.mm.RunMigrations(ctx, app.configurator, fromVM) From 4d993543f4174c0e84ef9c84ddc9e97f11890adc Mon Sep 17 00:00:00 2001 From: H4NLee Date: Wed, 14 Dec 2022 21:34:41 +0900 Subject: [PATCH 3/5] tmp --- app/app.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/app.go b/app/app.go index 6ac5af59..e48d080d 100644 --- a/app/app.go +++ b/app/app.go @@ -707,6 +707,10 @@ func (app *App) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.Res if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil { panic(err) } + + // set module version map + // https://docs.cosmos.network/main/core/upgrade#genesis-state + app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()) return app.mm.InitGenesis(ctx, app.appCodec, genesisState) } @@ -891,20 +895,22 @@ func (app *App) registerUpgradeHandlers() error { // use custom genesis state for genesis oracle fromVM["oracle"] = oracle.AppModule{}.ConsensusVersion() - uniqueID := "test-unique-id" + uniqueID := "desired-unique-id" genesisState := oracletypes.DefaultGenesis() genesisState.Oracles = append(genesisState.Oracles, oracletypes.Oracle{ - OracleAddress: "panacea1ewugvs354xput6xydl5cd5tvkzcuymkejekwk3", + OracleAddress: "panacea1ewugvs354xput6xydl5cd5tvkzcuymkejekwk3", // desired oracle address UniqueId: uniqueID, - Endpoint: "myendpoint.org", - UpdateTime: ctx.BlockTime(), + Endpoint: "medibloc-oracle.com", // desired endpoint + UpdateTime: ctx.BlockTime(), // current time OracleCommissionRate: sdk.NewDecWithPrec(1, 1), - OracleCommissionMaxRate: sdk.NewDecWithPrec(1, 1), - OracleCommissionMaxChangeRate: sdk.NewDecWithPrec(1, 1), + OracleCommissionMaxRate: sdk.NewDecWithPrec(2, 1), + OracleCommissionMaxChangeRate: sdk.NewDecWithPrec(2, 2), }) genesisState.Params.UniqueId = uniqueID + //genesisState.Params.OraclePublicKey = + //genesisState.Params.OraclePubKeyRemoteReport = oracle.InitGenesis(ctx, app.oracleKeeper, *genesisState) From f2f7fafef5609167b32ee08e038049ef6db22396 Mon Sep 17 00:00:00 2001 From: Youngjoon Lee Date: Thu, 15 Dec 2022 11:48:42 +0900 Subject: [PATCH 4/5] update uniqueid and pubkey --- app/app.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/app.go b/app/app.go index e48d080d..d2dbd64a 100644 --- a/app/app.go +++ b/app/app.go @@ -895,22 +895,22 @@ func (app *App) registerUpgradeHandlers() error { // use custom genesis state for genesis oracle fromVM["oracle"] = oracle.AppModule{}.ConsensusVersion() - uniqueID := "desired-unique-id" + uniqueID := "cf521e2cd0c19afee3fff3890b0def993d613390fe4c298e5ef841f16bfca88d" genesisState := oracletypes.DefaultGenesis() genesisState.Oracles = append(genesisState.Oracles, oracletypes.Oracle{ - OracleAddress: "panacea1ewugvs354xput6xydl5cd5tvkzcuymkejekwk3", // desired oracle address + OracleAddress: "panacea129vkzgx405x6st8l38tpt7dmf3cc3s3tzhxewr", // desired oracle address UniqueId: uniqueID, - Endpoint: "medibloc-oracle.com", // desired endpoint - UpdateTime: ctx.BlockTime(), // current time + Endpoint: "https://testnet-api.medibloc-oracle.com", // desired endpoint + UpdateTime: ctx.BlockTime(), // current time OracleCommissionRate: sdk.NewDecWithPrec(1, 1), OracleCommissionMaxRate: sdk.NewDecWithPrec(2, 1), OracleCommissionMaxChangeRate: sdk.NewDecWithPrec(2, 2), }) genesisState.Params.UniqueId = uniqueID - //genesisState.Params.OraclePublicKey = - //genesisState.Params.OraclePubKeyRemoteReport = + genesisState.Params.OraclePublicKey = "A0oFPG/3O6ZNIU+vRrPSeckGFtkqOVLh9GfD/YMNeDhR" + genesisState.Params.OraclePubKeyRemoteReport = "AQAAAAIAAAD4EQAAAAAAAAMAAgAAAAAACQANAJOacjP3nEyplAoNs5V/BgfOPtQCY2LAliLNNbe8Z01CAAAAABMTAgf/gAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAABwAAAAAAAADPUh4s0MGa/uP/84kLDe+ZPWEzkP5MKY5e+EHxa/yojQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ3UVb+0aHJWtl7j1DSmLYuqiJC3fNrpMVLICuwnOAo0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0oFPG/3O6ZNIU+vRrPSeckGFtkqOVLh9GfD/YMNeDhRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQQAABbpO5YMJGJqpLiMpQ30X8d5KfobEL0lFoKEen5Ghc9/KcgOhf85EfZgqF9McNeHGc+EdXVnXjIokCA0Q8HGEXi2Cln4cEkemyOeYquxT8/e4OBtVTL/Obi92wJk4hSDvQXRb2b6MByFpgjVJy0HprBhRpPsmAhpkQFZwmZGF5p+BMTAgf/gAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAABwAAAAAAAADOHaiawfVKgHJXxOV8eBQMvGZS1NWH1g8FgxJaJ5K+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjE9XddeWUD6WE393xoqCmgBWrI3tcBQLCBsJRJDFe/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxuELRD4D71Gb6LoC7GSaMebz1JaqHajRVk92sWNqYYUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGrJVeYtIJk4JLOfnOw0lJj9phDIISjLMziN4wgsNKAZHdoZd7ODgl5fK+PHqL3C1FPafD1xlFh4EJVp6eiSls0gAAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fBQDcDQAALS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVqVENDQkRPZ0F3SUJBZ0lVVmhjY2NqT1Y2YU5LaWdEYjBUTkJ4MlNOczlzd0NnWUlLb1pJemowRUF3SXcKY1RFak1DRUdBMVVFQXd3YVNXNTBaV3dnVTBkWUlGQkRTeUJRY205alpYTnpiM0lnUTBFeEdqQVlCZ05WQkFvTQpFVWx1ZEdWc0lFTnZjbkJ2Y21GMGFXOXVNUlF3RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFCkNBd0NRMEV4Q3pBSkJnTlZCQVlUQWxWVE1CNFhEVEl5TVRFeU9ESXhORGt3TlZvWERUSTVNVEV5T0RJeE5Ea3cKTlZvd2NERWlNQ0FHQTFVRUF3d1pTVzUwWld3Z1UwZFlJRkJEU3lCRFpYSjBhV1pwWTJGMFpURWFNQmdHQTFVRQpDZ3dSU1c1MFpXd2dRMjl5Y0c5eVlYUnBiMjR4RkRBU0JnTlZCQWNNQzFOaGJuUmhJRU5zWVhKaE1Rc3dDUVlEClZRUUlEQUpEUVRFTE1Ba0dBMVVFQmhNQ1ZWTXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU1UKR3JQM2lyeEE5RXFpaDBDVGZCQkV4Q09yMTRxMHFSOXhXeFZNUmNWV0FmTThiZ1ZhKzRRYWtTb2QwZTVURXRheApZSEt4WXhsZm1maDVGVlBuL3JmZm80SUNxRENDQXFRd0h3WURWUjBqQkJnd0ZvQVUwT2lxMm5YWCtTNUpGNWc4CmV4UmwwTlh5V1Uwd2JBWURWUjBmQkdVd1l6QmhvRitnWFlaYmFIUjBjSE02THk5aGNHa3VkSEoxYzNSbFpITmwKY25acFkyVnpMbWx1ZEdWc0xtTnZiUzl6WjNndlkyVnlkR2xtYVdOaGRHbHZiaTkyTXk5d1kydGpjbXcvWTJFOQpjSEp2WTJWemMyOXlKbVZ1WTI5a2FXNW5QV1JsY2pBZEJnTlZIUTRFRmdRVWw1dTlTVWxpaTNZdFNZY0xyd1BTCm1QcUtjNGt3RGdZRFZSMFBBUUgvQkFRREFnYkFNQXdHQTFVZEV3RUIvd1FDTUFBd2dnSFVCZ2txaGtpRytFMEIKRFFFRWdnSEZNSUlCd1RBZUJnb3Foa2lHK0UwQkRRRUJCQkJITEFIVG9LczZnVmxUTmpWdDdPSGZNSUlCWkFZSwpLb1pJaHZoTkFRMEJBakNDQVZRd0VBWUxLb1pJaHZoTkFRMEJBZ0VDQVJNd0VBWUxLb1pJaHZoTkFRMEJBZ0lDCkFSTXdFQVlMS29aSWh2aE5BUTBCQWdNQ0FRSXdFQVlMS29aSWh2aE5BUTBCQWdRQ0FRUXdFQVlMS29aSWh2aE4KQVEwQkFnVUNBUUV3RVFZTEtvWklodmhOQVEwQkFnWUNBZ0NBTUJBR0N5cUdTSWI0VFFFTkFRSUhBZ0VHTUJBRwpDeXFHU0liNFRRRU5BUUlJQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlKQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlLCkFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJTEFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJTUFnRUFNQkFHQ3lxR1NJYjQKVFFFTkFRSU5BZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSU9BZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSVBBZ0VBTUJBRwpDeXFHU0liNFRRRU5BUUlRQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlSQWdFTk1COEdDeXFHU0liNFRRRU5BUUlTCkJCQVRFd0lFQVlBR0FBQUFBQUFBQUFBQU1CQUdDaXFHU0liNFRRRU5BUU1FQWdBQU1CUUdDaXFHU0liNFRRRU4KQVFRRUJnQ1FidFVBQURBUEJnb3Foa2lHK0UwQkRRRUZDZ0VBTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUVzYwpoMnkzVWFONmlHUFd6U01IcGIvS1RSZ1Bub2owdDhuV1BjMHZDRXJoQWlFQXBRZmcreHV5REMxMHJWMG4yZHJkCmp2ckMwZGJRLzFUTDRlU09oTnVORkRzPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDbURDQ0FqNmdBd0lCQWdJVkFORG9xdHAxMS9rdVNSZVlQSHNVWmREVjhsbE5NQW9HQ0NxR1NNNDlCQU1DCk1HZ3hHakFZQmdOVkJBTU1FVWx1ZEdWc0lGTkhXQ0JTYjI5MElFTkJNUm93R0FZRFZRUUtEQkZKYm5SbGJDQkQKYjNKd2IzSmhkR2x2YmpFVU1CSUdBMVVFQnd3TFUyRnVkR0VnUTJ4aGNtRXhDekFKQmdOVkJBZ01Ba05CTVFzdwpDUVlEVlFRR0V3SlZVekFlRncweE9EQTFNakV4TURVd01UQmFGdzB6TXpBMU1qRXhNRFV3TVRCYU1IRXhJekFoCkJnTlZCQU1NR2tsdWRHVnNJRk5IV0NCUVEwc2dVSEp2WTJWemMyOXlJRU5CTVJvd0dBWURWUVFLREJGSmJuUmwKYkNCRGIzSndiM0poZEdsdmJqRVVNQklHQTFVRUJ3d0xVMkZ1ZEdFZ1EyeGhjbUV4Q3pBSkJnTlZCQWdNQWtOQgpNUXN3Q1FZRFZRUUdFd0pWVXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkw5cStOTXAySU9nCnRkbDFiay91V1o1K1RHUW04YUNpOHo3OGZzK2ZLQ1EzZCt1RHpYblZUQVQyWmhEQ2lmeUl1Snd2TjN3TkJwOWkKSEJTU01KTUpyQk9qZ2Jzd2diZ3dId1lEVlIwakJCZ3dGb0FVSW1VTTFscWROSW56ZzdTVlVyOVFHemtuQnF3dwpVZ1lEVlIwZkJFc3dTVEJIb0VXZ1E0WkJhSFIwY0hNNkx5OWpaWEowYVdacFkyRjBaWE11ZEhKMWMzUmxaSE5sCmNuWnBZMlZ6TG1sdWRHVnNMbU52YlM5SmJuUmxiRk5IV0ZKdmIzUkRRUzVrWlhJd0hRWURWUjBPQkJZRUZORG8KcXRwMTEva3VTUmVZUEhzVVpkRFY4bGxOTUE0R0ExVWREd0VCL3dRRUF3SUJCakFTQmdOVkhSTUJBZjhFQ0RBRwpBUUgvQWdFQU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ0pnVGJ0VnFPeVoxbTNqcWlBWE02UVlhNnI1c1dTCjR5L0c3eTh1SUpHeGR3SWdScVB2QlNLenpRYWdCTFFxNXM1QTcwcGRvaWFSSjh6LzB1RHo0TmdWOTFrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDanpDQ0FqU2dBd0lCQWdJVUltVU0xbHFkTkluemc3U1ZVcjlRR3prbkJxd3dDZ1lJS29aSXpqMEVBd0l3CmFERWFNQmdHQTFVRUF3d1JTVzUwWld3Z1UwZFlJRkp2YjNRZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWc0lFTnYKY25CdmNtRjBhVzl1TVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSgpCZ05WQkFZVEFsVlRNQjRYRFRFNE1EVXlNVEV3TkRVeE1Gb1hEVFE1TVRJek1USXpOVGsxT1Zvd2FERWFNQmdHCkExVUVBd3dSU1c1MFpXd2dVMGRZSUZKdmIzUWdRMEV4R2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52Y25CdmNtRjAKYVc5dU1SUXdFZ1lEVlFRSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBFeEN6QUpCZ05WQkFZVApBbFZUTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQzZuRXdNRElZWk9qL2lQV3NDemFFS2k3CjFPaU9TTFJGaFdHamJuQlZKZlZua1k0dTNJamtEWVlMME14TzRtcXN5WWpsQmFsVFZZeEZQMnNKQks1emxLT0IKdXpDQnVEQWZCZ05WSFNNRUdEQVdnQlFpWlF6V1dwMDBpZk9EdEpWU3YxQWJPU2NHckRCU0JnTlZIUjhFU3pCSgpNRWVnUmFCRGhrRm9kSFJ3Y3pvdkwyTmxjblJwWm1sallYUmxjeTUwY25WemRHVmtjMlZ5ZG1salpYTXVhVzUwClpXd3VZMjl0TDBsdWRHVnNVMGRZVW05dmRFTkJMbVJsY2pBZEJnTlZIUTRFRmdRVUltVU0xbHFkTkluemc3U1YKVXI5UUd6a25CcXd3RGdZRFZSMFBBUUgvQkFRREFnRUdNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUV3Q2dZSQpLb1pJemowRUF3SURTUUF3UmdJaEFPVy81UWtSK1M5Q2lTRGNOb293THVQUkxzV0dmL1lpN0dTWDk0Qmd3VHdnCkFpRUE0SjBsckhvTXMrWG81by9zWDZPOVFXeEhSQXZaVUdPZFJRN2N2cVJYYXFJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgA=" oracle.InitGenesis(ctx, app.oracleKeeper, *genesisState) From ed5cf5b37cc455077439a2765fdf28f36a6adfcc Mon Sep 17 00:00:00 2001 From: H4NLee Date: Thu, 15 Dec 2022 16:03:53 +0900 Subject: [PATCH 5/5] empty value --- app/app.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/app.go b/app/app.go index d2dbd64a..498b8996 100644 --- a/app/app.go +++ b/app/app.go @@ -895,22 +895,22 @@ func (app *App) registerUpgradeHandlers() error { // use custom genesis state for genesis oracle fromVM["oracle"] = oracle.AppModule{}.ConsensusVersion() - uniqueID := "cf521e2cd0c19afee3fff3890b0def993d613390fe4c298e5ef841f16bfca88d" + uniqueID := "" // desired unique ID genesisState := oracletypes.DefaultGenesis() genesisState.Oracles = append(genesisState.Oracles, oracletypes.Oracle{ - OracleAddress: "panacea129vkzgx405x6st8l38tpt7dmf3cc3s3tzhxewr", // desired oracle address + OracleAddress: "", // desired oracle address UniqueId: uniqueID, - Endpoint: "https://testnet-api.medibloc-oracle.com", // desired endpoint - UpdateTime: ctx.BlockTime(), // current time - OracleCommissionRate: sdk.NewDecWithPrec(1, 1), - OracleCommissionMaxRate: sdk.NewDecWithPrec(2, 1), - OracleCommissionMaxChangeRate: sdk.NewDecWithPrec(2, 2), + Endpoint: "", // desired endpoint + UpdateTime: ctx.BlockTime(), // current time + OracleCommissionRate: sdk.NewDecWithPrec(1, 1), // set your commission rate + OracleCommissionMaxRate: sdk.NewDecWithPrec(2, 1), // set your commission max rate + OracleCommissionMaxChangeRate: sdk.NewDecWithPrec(2, 2), // set your commission max change rate }) genesisState.Params.UniqueId = uniqueID - genesisState.Params.OraclePublicKey = "A0oFPG/3O6ZNIU+vRrPSeckGFtkqOVLh9GfD/YMNeDhR" - genesisState.Params.OraclePubKeyRemoteReport = "AQAAAAIAAAD4EQAAAAAAAAMAAgAAAAAACQANAJOacjP3nEyplAoNs5V/BgfOPtQCY2LAliLNNbe8Z01CAAAAABMTAgf/gAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAABwAAAAAAAADPUh4s0MGa/uP/84kLDe+ZPWEzkP5MKY5e+EHxa/yojQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ3UVb+0aHJWtl7j1DSmLYuqiJC3fNrpMVLICuwnOAo0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0oFPG/3O6ZNIU+vRrPSeckGFtkqOVLh9GfD/YMNeDhRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQQAABbpO5YMJGJqpLiMpQ30X8d5KfobEL0lFoKEen5Ghc9/KcgOhf85EfZgqF9McNeHGc+EdXVnXjIokCA0Q8HGEXi2Cln4cEkemyOeYquxT8/e4OBtVTL/Obi92wJk4hSDvQXRb2b6MByFpgjVJy0HprBhRpPsmAhpkQFZwmZGF5p+BMTAgf/gAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAABwAAAAAAAADOHaiawfVKgHJXxOV8eBQMvGZS1NWH1g8FgxJaJ5K+cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjE9XddeWUD6WE393xoqCmgBWrI3tcBQLCBsJRJDFe/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxuELRD4D71Gb6LoC7GSaMebz1JaqHajRVk92sWNqYYUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGrJVeYtIJk4JLOfnOw0lJj9phDIISjLMziN4wgsNKAZHdoZd7ODgl5fK+PHqL3C1FPafD1xlFh4EJVp6eiSls0gAAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fBQDcDQAALS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVqVENDQkRPZ0F3SUJBZ0lVVmhjY2NqT1Y2YU5LaWdEYjBUTkJ4MlNOczlzd0NnWUlLb1pJemowRUF3SXcKY1RFak1DRUdBMVVFQXd3YVNXNTBaV3dnVTBkWUlGQkRTeUJRY205alpYTnpiM0lnUTBFeEdqQVlCZ05WQkFvTQpFVWx1ZEdWc0lFTnZjbkJ2Y21GMGFXOXVNUlF3RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFCkNBd0NRMEV4Q3pBSkJnTlZCQVlUQWxWVE1CNFhEVEl5TVRFeU9ESXhORGt3TlZvWERUSTVNVEV5T0RJeE5Ea3cKTlZvd2NERWlNQ0FHQTFVRUF3d1pTVzUwWld3Z1UwZFlJRkJEU3lCRFpYSjBhV1pwWTJGMFpURWFNQmdHQTFVRQpDZ3dSU1c1MFpXd2dRMjl5Y0c5eVlYUnBiMjR4RkRBU0JnTlZCQWNNQzFOaGJuUmhJRU5zWVhKaE1Rc3dDUVlEClZRUUlEQUpEUVRFTE1Ba0dBMVVFQmhNQ1ZWTXdXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU1UKR3JQM2lyeEE5RXFpaDBDVGZCQkV4Q09yMTRxMHFSOXhXeFZNUmNWV0FmTThiZ1ZhKzRRYWtTb2QwZTVURXRheApZSEt4WXhsZm1maDVGVlBuL3JmZm80SUNxRENDQXFRd0h3WURWUjBqQkJnd0ZvQVUwT2lxMm5YWCtTNUpGNWc4CmV4UmwwTlh5V1Uwd2JBWURWUjBmQkdVd1l6QmhvRitnWFlaYmFIUjBjSE02THk5aGNHa3VkSEoxYzNSbFpITmwKY25acFkyVnpMbWx1ZEdWc0xtTnZiUzl6WjNndlkyVnlkR2xtYVdOaGRHbHZiaTkyTXk5d1kydGpjbXcvWTJFOQpjSEp2WTJWemMyOXlKbVZ1WTI5a2FXNW5QV1JsY2pBZEJnTlZIUTRFRmdRVWw1dTlTVWxpaTNZdFNZY0xyd1BTCm1QcUtjNGt3RGdZRFZSMFBBUUgvQkFRREFnYkFNQXdHQTFVZEV3RUIvd1FDTUFBd2dnSFVCZ2txaGtpRytFMEIKRFFFRWdnSEZNSUlCd1RBZUJnb3Foa2lHK0UwQkRRRUJCQkJITEFIVG9LczZnVmxUTmpWdDdPSGZNSUlCWkFZSwpLb1pJaHZoTkFRMEJBakNDQVZRd0VBWUxLb1pJaHZoTkFRMEJBZ0VDQVJNd0VBWUxLb1pJaHZoTkFRMEJBZ0lDCkFSTXdFQVlMS29aSWh2aE5BUTBCQWdNQ0FRSXdFQVlMS29aSWh2aE5BUTBCQWdRQ0FRUXdFQVlMS29aSWh2aE4KQVEwQkFnVUNBUUV3RVFZTEtvWklodmhOQVEwQkFnWUNBZ0NBTUJBR0N5cUdTSWI0VFFFTkFRSUhBZ0VHTUJBRwpDeXFHU0liNFRRRU5BUUlJQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlKQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlLCkFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJTEFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJTUFnRUFNQkFHQ3lxR1NJYjQKVFFFTkFRSU5BZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSU9BZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSVBBZ0VBTUJBRwpDeXFHU0liNFRRRU5BUUlRQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlSQWdFTk1COEdDeXFHU0liNFRRRU5BUUlTCkJCQVRFd0lFQVlBR0FBQUFBQUFBQUFBQU1CQUdDaXFHU0liNFRRRU5BUU1FQWdBQU1CUUdDaXFHU0liNFRRRU4KQVFRRUJnQ1FidFVBQURBUEJnb3Foa2lHK0UwQkRRRUZDZ0VBTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSUVzYwpoMnkzVWFONmlHUFd6U01IcGIvS1RSZ1Bub2owdDhuV1BjMHZDRXJoQWlFQXBRZmcreHV5REMxMHJWMG4yZHJkCmp2ckMwZGJRLzFUTDRlU09oTnVORkRzPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDbURDQ0FqNmdBd0lCQWdJVkFORG9xdHAxMS9rdVNSZVlQSHNVWmREVjhsbE5NQW9HQ0NxR1NNNDlCQU1DCk1HZ3hHakFZQmdOVkJBTU1FVWx1ZEdWc0lGTkhXQ0JTYjI5MElFTkJNUm93R0FZRFZRUUtEQkZKYm5SbGJDQkQKYjNKd2IzSmhkR2x2YmpFVU1CSUdBMVVFQnd3TFUyRnVkR0VnUTJ4aGNtRXhDekFKQmdOVkJBZ01Ba05CTVFzdwpDUVlEVlFRR0V3SlZVekFlRncweE9EQTFNakV4TURVd01UQmFGdzB6TXpBMU1qRXhNRFV3TVRCYU1IRXhJekFoCkJnTlZCQU1NR2tsdWRHVnNJRk5IV0NCUVEwc2dVSEp2WTJWemMyOXlJRU5CTVJvd0dBWURWUVFLREJGSmJuUmwKYkNCRGIzSndiM0poZEdsdmJqRVVNQklHQTFVRUJ3d0xVMkZ1ZEdFZ1EyeGhjbUV4Q3pBSkJnTlZCQWdNQWtOQgpNUXN3Q1FZRFZRUUdFd0pWVXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkw5cStOTXAySU9nCnRkbDFiay91V1o1K1RHUW04YUNpOHo3OGZzK2ZLQ1EzZCt1RHpYblZUQVQyWmhEQ2lmeUl1Snd2TjN3TkJwOWkKSEJTU01KTUpyQk9qZ2Jzd2diZ3dId1lEVlIwakJCZ3dGb0FVSW1VTTFscWROSW56ZzdTVlVyOVFHemtuQnF3dwpVZ1lEVlIwZkJFc3dTVEJIb0VXZ1E0WkJhSFIwY0hNNkx5OWpaWEowYVdacFkyRjBaWE11ZEhKMWMzUmxaSE5sCmNuWnBZMlZ6TG1sdWRHVnNMbU52YlM5SmJuUmxiRk5IV0ZKdmIzUkRRUzVrWlhJd0hRWURWUjBPQkJZRUZORG8KcXRwMTEva3VTUmVZUEhzVVpkRFY4bGxOTUE0R0ExVWREd0VCL3dRRUF3SUJCakFTQmdOVkhSTUJBZjhFQ0RBRwpBUUgvQWdFQU1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ0pnVGJ0VnFPeVoxbTNqcWlBWE02UVlhNnI1c1dTCjR5L0c3eTh1SUpHeGR3SWdScVB2QlNLenpRYWdCTFFxNXM1QTcwcGRvaWFSSjh6LzB1RHo0TmdWOTFrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDanpDQ0FqU2dBd0lCQWdJVUltVU0xbHFkTkluemc3U1ZVcjlRR3prbkJxd3dDZ1lJS29aSXpqMEVBd0l3CmFERWFNQmdHQTFVRUF3d1JTVzUwWld3Z1UwZFlJRkp2YjNRZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWc0lFTnYKY25CdmNtRjBhVzl1TVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSgpCZ05WQkFZVEFsVlRNQjRYRFRFNE1EVXlNVEV3TkRVeE1Gb1hEVFE1TVRJek1USXpOVGsxT1Zvd2FERWFNQmdHCkExVUVBd3dSU1c1MFpXd2dVMGRZSUZKdmIzUWdRMEV4R2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52Y25CdmNtRjAKYVc5dU1SUXdFZ1lEVlFRSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBFeEN6QUpCZ05WQkFZVApBbFZUTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFQzZuRXdNRElZWk9qL2lQV3NDemFFS2k3CjFPaU9TTFJGaFdHamJuQlZKZlZua1k0dTNJamtEWVlMME14TzRtcXN5WWpsQmFsVFZZeEZQMnNKQks1emxLT0IKdXpDQnVEQWZCZ05WSFNNRUdEQVdnQlFpWlF6V1dwMDBpZk9EdEpWU3YxQWJPU2NHckRCU0JnTlZIUjhFU3pCSgpNRWVnUmFCRGhrRm9kSFJ3Y3pvdkwyTmxjblJwWm1sallYUmxjeTUwY25WemRHVmtjMlZ5ZG1salpYTXVhVzUwClpXd3VZMjl0TDBsdWRHVnNVMGRZVW05dmRFTkJMbVJsY2pBZEJnTlZIUTRFRmdRVUltVU0xbHFkTkluemc3U1YKVXI5UUd6a25CcXd3RGdZRFZSMFBBUUgvQkFRREFnRUdNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUV3Q2dZSQpLb1pJemowRUF3SURTUUF3UmdJaEFPVy81UWtSK1M5Q2lTRGNOb293THVQUkxzV0dmL1lpN0dTWDk0Qmd3VHdnCkFpRUE0SjBsckhvTXMrWG81by9zWDZPOVFXeEhSQXZaVUdPZFJRN2N2cVJYYXFJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgA=" + genesisState.Params.OraclePublicKey = "" // desired base64 encoded oracle public key + genesisState.Params.OraclePubKeyRemoteReport = "" // desired base64 encoded remote report oracle.InitGenesis(ctx, app.oracleKeeper, *genesisState)