diff --git a/.github/workflows/e2e-testing.yaml b/.github/workflows/e2e-testing.yaml index d398185b..accc9931 100644 --- a/.github/workflows/e2e-testing.yaml +++ b/.github/workflows/e2e-testing.yaml @@ -88,6 +88,7 @@ jobs: - "ictest-ibchooks" - "ictest-pfm" - "ictest-lsm" + - "ictest-liquidstake" fail-fast: false steps: diff --git a/.gitignore b/.gitignore index 3be84613..ad7b3f97 100755 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ build/ release/ bin/ +.DS_Store *.swp diff --git a/Makefile b/Makefile index b4858aa9..871fd8df 100644 --- a/Makefile +++ b/Makefile @@ -281,7 +281,11 @@ ictest-lsm: rm-testcache ictest-haltfork: rm-testcache cd interchaintest && go test -race -v -run TestPersistenceLSMHaltFork . +# Executes Liquidstake tests +ictest-liquidstake: rm-testcache + cd interchaintest && go test -race -v -run TestLiquidStakeStkXPRT . + rm-testcache: go clean -testcache -.PHONY: test ictest-all ictest-basic ictest-ibchooks ictest-pfm ictest-upgrade ictest-upgrade-local ictest-ibc ictest-pob ictest-lsm +.PHONY: test ictest-all ictest-basic ictest-ibchooks ictest-pfm ictest-upgrade ictest-upgrade-local ictest-ibc ictest-pob ictest-lsm ictest-liquidstake diff --git a/app/keepers/keepers.go b/app/keepers/keepers.go index d672399c..ff57237e 100644 --- a/app/keepers/keepers.go +++ b/app/keepers/keepers.go @@ -82,6 +82,8 @@ import ( interchainquerytypes "github.com/persistenceOne/persistence-sdk/v2/x/interchainquery/types" oraclekeeper "github.com/persistenceOne/persistence-sdk/v2/x/oracle/keeper" oracletypes "github.com/persistenceOne/persistence-sdk/v2/x/oracle/types" + liquidstakekeeper "github.com/persistenceOne/pstake-native/v2/x/liquidstake/keeper" + liquidstaketypes "github.com/persistenceOne/pstake-native/v2/x/liquidstake/types" "github.com/persistenceOne/pstake-native/v2/x/liquidstakeibc" liquidstakeibckeeper "github.com/persistenceOne/pstake-native/v2/x/liquidstakeibc/keeper" liquidstakeibctypes "github.com/persistenceOne/pstake-native/v2/x/liquidstakeibc/types" @@ -126,6 +128,7 @@ type AppKeepers struct { InterchainQueryKeeper *interchainquerykeeper.Keeper TransferHooksKeeper *ibchookerkeeper.Keeper LiquidStakeIBCKeeper *liquidstakeibckeeper.Keeper + LiquidStakeKeeper *liquidstakekeeper.Keeper ConsensusParamsKeeper *consensusparamskeeper.Keeper GroupKeeper *groupkeeper.Keeper PacketForwardKeeper *packetforwardkeeper.Keeper @@ -433,6 +436,19 @@ func NewAppKeeper( ) appKeepers.LiquidStakeIBCKeeper = &liquidStakeIBCKeeper + liquidStakeKeeper := liquidstakekeeper.NewKeeper( + appCodec, + appKeepers.keys[liquidstaketypes.StoreKey], + appKeepers.AccountKeeper, + appKeepers.BankKeeper, + appKeepers.StakingKeeper, + appKeepers.DistributionKeeper, + appKeepers.SlashingKeeper, + bApp.MsgServiceRouter(), + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + ) + appKeepers.LiquidStakeKeeper = &liquidStakeKeeper + err := appKeepers.InterchainQueryKeeper.SetCallbackHandler(liquidstakeibctypes.ModuleName, appKeepers.LiquidStakeIBCKeeper.CallbackHandler()) if err != nil { panic(err) diff --git a/app/keepers/keys.go b/app/keepers/keys.go index bbcaa5c4..a21a21c5 100644 --- a/app/keepers/keys.go +++ b/app/keepers/keys.go @@ -31,6 +31,7 @@ import ( "github.com/persistenceOne/persistence-sdk/v2/x/halving" interchainquerytypes "github.com/persistenceOne/persistence-sdk/v2/x/interchainquery/types" oracletypes "github.com/persistenceOne/persistence-sdk/v2/x/oracle/types" + liquidstaketypes "github.com/persistenceOne/pstake-native/v2/x/liquidstake/types" liquidstakeibctypes "github.com/persistenceOne/pstake-native/v2/x/liquidstakeibc/types" buildertypes "github.com/skip-mev/pob/x/builder/types" ) @@ -61,6 +62,7 @@ func (appKeepers *AppKeepers) GenerateKeys() { icahosttypes.StoreKey, interchainquerytypes.StoreKey, liquidstakeibctypes.StoreKey, + liquidstaketypes.StoreKey, minttypes.StoreKey, oracletypes.StoreKey, paramstypes.StoreKey, diff --git a/app/keepers/modules.go b/app/keepers/modules.go index d0a54714..5965ba54 100644 --- a/app/keepers/modules.go +++ b/app/keepers/modules.go @@ -38,6 +38,7 @@ import ( "github.com/persistenceOne/persistence-sdk/v2/x/ibchooker" "github.com/persistenceOne/persistence-sdk/v2/x/interchainquery" "github.com/persistenceOne/persistence-sdk/v2/x/oracle" + "github.com/persistenceOne/pstake-native/v2/x/liquidstake" "github.com/persistenceOne/pstake-native/v2/x/liquidstakeibc" "github.com/persistenceOne/pstake-native/v2/x/lscosmos" buildermodule "github.com/skip-mev/pob/x/builder" @@ -84,6 +85,7 @@ var AppModuleBasics = []module.AppModuleBasic{ oracle.AppModuleBasic{}, lscosmos.AppModuleBasic{}, liquidstakeibc.AppModuleBasic{}, + liquidstake.AppModuleBasic{}, consensus.AppModuleBasic{}, groupmodule.AppModuleBasic{}, ibchooks.AppModuleBasic{}, diff --git a/app/modules.go b/app/modules.go index 77150f8f..5408111f 100644 --- a/app/modules.go +++ b/app/modules.go @@ -57,6 +57,8 @@ import ( interchainquerytypes "github.com/persistenceOne/persistence-sdk/v2/x/interchainquery/types" "github.com/persistenceOne/persistence-sdk/v2/x/oracle" oracletypes "github.com/persistenceOne/persistence-sdk/v2/x/oracle/types" + "github.com/persistenceOne/pstake-native/v2/x/liquidstake" + liquidstaketypes "github.com/persistenceOne/pstake-native/v2/x/liquidstake/types" "github.com/persistenceOne/pstake-native/v2/x/liquidstakeibc" liquidstakeibctypes "github.com/persistenceOne/pstake-native/v2/x/liquidstakeibc/types" "github.com/skip-mev/pob/x/builder" @@ -81,6 +83,7 @@ var ModuleAccountPermissions = map[string][]string{ liquidstakeibctypes.DepositModuleAccount: nil, liquidstakeibctypes.UndelegationModuleAccount: {authtypes.Burner}, buildertypes.ModuleName: nil, + liquidstaketypes.ModuleName: {authtypes.Minter, authtypes.Burner}, } var receiveAllowedMAcc = map[string]bool{ @@ -127,6 +130,7 @@ func appModules( epochs.NewAppModule(*app.EpochsKeeper), app.InterchainQueryModule, liquidstakeibc.NewAppModule(*app.LiquidStakeIBCKeeper), + liquidstake.NewAppModule(*app.LiquidStakeKeeper), oracle.NewAppModule(appCodec, *app.OracleKeeper, app.AccountKeeper, app.BankKeeper), builder.NewAppModule(appCodec, *app.BuilderKeeper), crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)), // always be last to make sure that it checks for all invariants and not only part of them @@ -178,6 +182,7 @@ func orderBeginBlockers() []string { ibchookertypes.ModuleName, interchainquerytypes.ModuleName, liquidstakeibctypes.ModuleName, + liquidstaketypes.ModuleName, oracletypes.ModuleName, } } @@ -214,6 +219,7 @@ func orderEndBlockers() []string { ibchookertypes.ModuleName, interchainquerytypes.ModuleName, liquidstakeibctypes.ModuleName, + liquidstaketypes.ModuleName, oracletypes.ModuleName, buildertypes.ModuleName, } @@ -256,6 +262,7 @@ func orderInitGenesis() []string { ibchookertypes.ModuleName, interchainquerytypes.ModuleName, liquidstakeibctypes.ModuleName, + liquidstaketypes.ModuleName, oracletypes.ModuleName, buildertypes.ModuleName, } diff --git a/app/upgrades/v11/constants.go b/app/upgrades/v11/constants.go index a86fee8d..b98d3a9b 100644 --- a/app/upgrades/v11/constants.go +++ b/app/upgrades/v11/constants.go @@ -4,6 +4,7 @@ import ( store "github.com/cosmos/cosmos-sdk/store/types" "github.com/persistenceOne/persistenceCore/v11/app/upgrades" + liquidstaketypes "github.com/persistenceOne/pstake-native/v2/x/liquidstake/types" ) const ( @@ -15,6 +16,8 @@ var Upgrade = upgrades.Upgrade{ UpgradeName: UpgradeName, CreateUpgradeHandler: CreateUpgradeHandler, StoreUpgrades: store.StoreUpgrades{ - Added: []string{}, + Added: []string{ + liquidstaketypes.StoreKey, + }, }, } diff --git a/go.mod b/go.mod index c186e18d..8fd4a271 100644 --- a/go.mod +++ b/go.mod @@ -17,11 +17,11 @@ require ( github.com/cosmos/ibc-go/v7 v7.1.0 github.com/gorilla/mux v1.8.1 github.com/persistenceOne/persistence-sdk/v2 v2.1.1 - github.com/persistenceOne/pstake-native/v2 v2.6.0 + github.com/persistenceOne/pstake-native/v2 v2.7.1 github.com/prometheus/client_golang v1.15.0 github.com/rakyll/statik v0.1.7 github.com/skip-mev/pob v1.0.1 - github.com/spf13/cast v1.5.1 + github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.16.0 diff --git a/go.sum b/go.sum index bae541c0..a0d6ad00 100644 --- a/go.sum +++ b/go.sum @@ -499,8 +499,8 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= @@ -1022,8 +1022,8 @@ github.com/persistenceOne/persistence-sdk/v2 v2.1.1 h1:fo8Og2QkjsqqhH/wiEiOSB99M github.com/persistenceOne/persistence-sdk/v2 v2.1.1/go.mod h1:6ufKMowypJB865CT5Gm6Gs42YCtSkX7k3ZqKzx63y+8= github.com/persistenceOne/pob v1.0.3-lsm3 h1:dhJa84Lp5eKeyqwFrimrL8eQJ09CvlIPWH1WV3YGuEs= github.com/persistenceOne/pob v1.0.3-lsm3/go.mod h1:kwZ0T3o6unLjnx8ynntI4v2WVJTPzvr1R+PI9pvH28k= -github.com/persistenceOne/pstake-native/v2 v2.6.0 h1:dRqQiGY3rvQA349riu6pHlsUSrV50YLGR0ZeOBtAXXg= -github.com/persistenceOne/pstake-native/v2 v2.6.0/go.mod h1:gew8e6tF5ufSnKyt6l7nxryqYEbZKOBponYO7m33x/o= +github.com/persistenceOne/pstake-native/v2 v2.7.1 h1:4rsAdABLLOf8ygy4ItHMnILFTTe6C9tP7mO5lpcpgW8= +github.com/persistenceOne/pstake-native/v2 v2.7.1/go.mod h1:ksqU+x2hb0hTwMjsPGtcbJmgCzG1u80dejTDUAsFqDU= github.com/persistenceOne/wasmd v0.40.2-lsm3 h1:JdUu2TNEA+rJVYX7gt7EP/WUUA78f67joBOWtWAEShg= github.com/persistenceOne/wasmd v0.40.2-lsm3/go.mod h1:xF6v70lqO7+Ys2wsfAHybuQXQI7IOqGf2LCq/XK8Fk8= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= @@ -1132,8 +1132,8 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= diff --git a/interchaintest/contracts/README.md b/interchaintest/contracts/README.md index b1cedce6..4439db87 100644 --- a/interchaintest/contracts/README.md +++ b/interchaintest/contracts/README.md @@ -4,3 +4,5 @@ A list of the contracts here which are pre-compiled in other repos. > cw_template -> > ibchooks_counter.wasm -> +> dexter_superfluid_lp.wasm -> + \ No newline at end of file diff --git a/interchaintest/contracts/dexter_superfluid_lp.wasm b/interchaintest/contracts/dexter_superfluid_lp.wasm new file mode 100644 index 00000000..ac854774 Binary files /dev/null and b/interchaintest/contracts/dexter_superfluid_lp.wasm differ diff --git a/interchaintest/go.mod b/interchaintest/go.mod index a0628161..4c08f52c 100644 --- a/interchaintest/go.mod +++ b/interchaintest/go.mod @@ -3,13 +3,14 @@ module github.com/persistenceOne/persistenceCore/v11/interchaintest go 1.21 require ( - cosmossdk.io/math v1.1.2 + cosmossdk.io/math v1.2.0 github.com/CosmWasm/wasmd v0.41.0 github.com/avast/retry-go/v4 v4.5.0 github.com/cometbft/cometbft v0.37.2 github.com/cosmos/cosmos-sdk v0.47.5 github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/ibc-go/v7 v7.3.0 + github.com/persistenceOne/pstake-native/v2 v2.7.1 github.com/pkg/errors v0.9.1 github.com/strangelove-ventures/interchaintest/v7 v7.0.0-20230905210439-3e17efc70581 github.com/stretchr/testify v1.8.4 @@ -17,8 +18,8 @@ require ( ) require ( - cloud.google.com/go v0.110.4 // indirect - cloud.google.com/go/compute v1.21.0 // indirect + cloud.google.com/go v0.110.7 // indirect + cloud.google.com/go/compute v1.23.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.1 // indirect cloud.google.com/go/storage v1.30.1 // indirect @@ -98,7 +99,7 @@ require ( github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.3 // indirect - github.com/golang/glog v1.1.0 // indirect + github.com/golang/glog v1.1.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.3 // indirect @@ -107,11 +108,11 @@ require ( github.com/google/go-cmp v0.5.9 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.4 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.11.0 // indirect github.com/gorilla/handlers v1.5.1 // indirect - github.com/gorilla/mux v1.8.0 // indirect + github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect @@ -164,10 +165,8 @@ require ( github.com/multiformats/go-multicodec v0.8.1 // indirect github.com/multiformats/go-multihash v0.2.1 // indirect github.com/multiformats/go-varint v0.0.7 // indirect - github.com/onsi/gomega v1.27.6 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect - github.com/opencontainers/runc v1.1.5 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.9 // indirect github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect @@ -184,11 +183,10 @@ require ( github.com/rs/cors v1.8.3 // indirect github.com/rs/zerolog v1.30.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/sirupsen/logrus v1.9.3 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.9.5 // indirect - github.com/spf13/cast v1.5.1 // indirect - github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.16.0 // indirect @@ -208,7 +206,7 @@ require ( golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect - golang.org/x/oauth2 v0.10.0 // indirect + golang.org/x/oauth2 v0.11.0 // indirect golang.org/x/sync v0.3.0 // indirect golang.org/x/sys v0.11.0 // indirect golang.org/x/term v0.11.0 // indirect @@ -217,10 +215,10 @@ require ( golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.126.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 // indirect - google.golang.org/grpc v1.58.0 // indirect + google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect + google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect diff --git a/interchaintest/go.sum b/interchaintest/go.sum index dd3476e4..d9cdd5d2 100644 --- a/interchaintest/go.sum +++ b/interchaintest/go.sum @@ -34,8 +34,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.110.4 h1:1JYyxKMN9hd5dR2MYTPWkGUgcoxVVhg0LKNKEo0qvmk= -cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.7 h1:rJyC7nWRg2jWGZ4wSJ5nY65GTdYJkg0cd/uXb+ACI6o= +cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -73,8 +73,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.21.0 h1:JNBsyXVoOoNJtTQcnEY5uYpZIbeCTYIeDe0Xh1bySMk= -cloud.google.com/go/compute v1.21.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -201,8 +201,8 @@ cosmossdk.io/errors v1.0.0 h1:nxF07lmlBbB8NKQhtJ+sJm6ef5uV1XkvPXG2bUntb04= cosmossdk.io/errors v1.0.0/go.mod h1:+hJZLuhdDE0pYN8HkOrVNwrIOYvUGnn6+4fjnJs/oV0= cosmossdk.io/log v1.2.1 h1:Xc1GgTCicniwmMiKwDxUjO4eLhPxoVdI9vtMW8Ti/uk= cosmossdk.io/log v1.2.1/go.mod h1:GNSCc/6+DhFIj1aLn/j7Id7PaO8DzNylUZoOYBL9+I4= -cosmossdk.io/math v1.1.2 h1:ORZetZCTyWkI5GlZ6CZS28fMHi83ZYf+A2vVnHNzZBM= -cosmossdk.io/math v1.1.2/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= +cosmossdk.io/math v1.2.0 h1:8gudhTkkD3NxOP2YyyJIYYmt6dQ55ZfJkDOaxXpy7Ig= +cosmossdk.io/math v1.2.0/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -354,7 +354,6 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= @@ -368,7 +367,6 @@ github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObk github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= -github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= @@ -408,14 +406,12 @@ github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/ github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= -github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= @@ -444,13 +440,12 @@ github.com/cosmos/rosetta-sdk-go v0.10.0 h1:E5RhTruuoA7KTIXUcMicL76cffyeoyvNybzU github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFgWl/ENIznEoYQI4= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/taskgroup v0.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJFxv2Li8= github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= 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/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= -github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= @@ -499,7 +494,6 @@ github.com/docker/docker v24.0.5+incompatible h1:WmgcE4fxyI6EEXxBRxsHnZXrO1pQ3sm github.com/docker/docker v24.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= @@ -540,9 +534,8 @@ github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= @@ -609,7 +602,6 @@ github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MG github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= @@ -619,8 +611,8 @@ github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzw github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -721,8 +713,9 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= @@ -747,8 +740,9 @@ github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -988,7 +982,6 @@ github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI= github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -1003,7 +996,6 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= @@ -1063,8 +1055,6 @@ github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7X github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -1093,6 +1083,8 @@ github.com/persistenceOne/cosmos-sdk v0.47.3-lsm5 h1:z5k9M81ogHgaMyLck7GVzfdNYvn github.com/persistenceOne/cosmos-sdk v0.47.3-lsm5/go.mod h1:4oxikyyHyEe1wlYQFMGITfW/r01wYtfj8yjwru7bSWE= github.com/persistenceOne/ibc-go/v7 v7.2.0-lsm3 h1:U4NsRXpg9VHCFVyrk1JfG+sIA3frtZIWbtNmmumjta8= github.com/persistenceOne/ibc-go/v7 v7.2.0-lsm3/go.mod h1:PDvFOPEd8Fz25qBmhX7KXSPX4COyGnytKweRdEP1yfA= +github.com/persistenceOne/pstake-native/v2 v2.7.1 h1:4rsAdABLLOf8ygy4ItHMnILFTTe6C9tP7mO5lpcpgW8= +github.com/persistenceOne/pstake-native/v2 v2.7.1/go.mod h1:ksqU+x2hb0hTwMjsPGtcbJmgCzG1u80dejTDUAsFqDU= github.com/persistenceOne/wasmd v0.40.2-lsm3 h1:JdUu2TNEA+rJVYX7gt7EP/WUUA78f67joBOWtWAEShg= github.com/persistenceOne/wasmd v0.40.2-lsm3/go.mod h1:xF6v70lqO7+Ys2wsfAHybuQXQI7IOqGf2LCq/XK8Fk8= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= @@ -1185,7 +1177,6 @@ github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0 github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= @@ -1197,7 +1188,6 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= @@ -1211,12 +1201,12 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -1255,7 +1245,6 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= @@ -1296,8 +1285,6 @@ github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/X github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/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/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= @@ -1524,8 +1511,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= +golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1561,7 +1548,6 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1571,7 +1557,6 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1627,12 +1612,10 @@ golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1650,7 +1633,6 @@ golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/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-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1948,12 +1930,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98 h1:Z0hjGZePRE0ZBWotvtrwxFNrNE9CUAGtplaDK5NNI/g= -google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= -google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98 h1:FmF5cCW94Ij59cfpoLiwTgodWmm60eEV0CjlsVg2fuw= -google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98 h1:bVf09lpb+OJbByTj913DRJioFFAjf/ZGxEz7MajTp2U= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d h1:VBu5YqKPv6XiJ199exd8Br+Aetz+o08F+PLMnwJQHAY= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d h1:DoPTO70H+bcDXcd39vOqb2viZxgqeBeSGtZ55yZU4/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1995,8 +1977,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.58.0 h1:32JY8YpPMSR45K+c3o6b8VL73V+rR8k+DeMIr4vRH8o= -google.golang.org/grpc v1.58.0/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= diff --git a/interchaintest/helpers/cosmwasm.go b/interchaintest/helpers/cosmwasm.go index f9439da9..488fc533 100644 --- a/interchaintest/helpers/cosmwasm.go +++ b/interchaintest/helpers/cosmwasm.go @@ -36,7 +36,7 @@ func ExecuteMsgWithAmount( chain *cosmos.CosmosChain, user ibc.Wallet, contractAddr, amount, message string, -) { +) (txHash string) { cmd := []string{ "wasm", "execute", contractAddr, message, "--gas", "500000", @@ -51,6 +51,8 @@ func ExecuteMsgWithAmount( require.NoError(t, err) debugOutput(t, string(stdout)) + + return txHash } func ExecuteMsgWithFee( @@ -59,7 +61,7 @@ func ExecuteMsgWithFee( chain *cosmos.CosmosChain, user ibc.Wallet, contractAddr, amount, feeCoin, message string, -) { +) (txHash string) { cmd := []string{ "wasm", "execute", contractAddr, message, "--fees", feeCoin, @@ -78,4 +80,6 @@ func ExecuteMsgWithFee( require.NoError(t, err) debugOutput(t, string(stdout)) + + return txHash } diff --git a/interchaintest/helpers/staking.go b/interchaintest/helpers/staking.go index b32ab860..52baf68b 100644 --- a/interchaintest/helpers/staking.go +++ b/interchaintest/helpers/staking.go @@ -64,6 +64,26 @@ func QueryDelegation( return resp.Delegation } +// QueryUnbondingDelegation gets info about particular unbonding delegation +func QueryUnbondingDelegation( + t *testing.T, + ctx context.Context, + chainNode *cosmos.ChainNode, + delegatorAddr string, + valoperAddr string, +) UnbondingDelegation { + stdout, _, err := chainNode.ExecQuery(ctx, "staking", "unbonding-delegation", delegatorAddr, valoperAddr) + require.NoError(t, err) + + debugOutput(t, string(stdout)) + + var resp UnbondingDelegation + err = json.Unmarshal([]byte(stdout), &resp) + require.NoError(t, err) + + return resp +} + type queryDelegationResponse struct { Delegation Delegation `json:"delegation"` } @@ -90,3 +110,21 @@ type Validator struct { ValidatorBondShares sdk.Dec `json:"validator_bond_shares"` LiquidShares sdk.Dec `json:"liquid_shares"` } + +type UnbondingDelegation struct { + DelegatorAddress string `json:"delegator_address"` + ValidatorAddress string `json:"validator_address"` + + Entries []UnbondingDelegationEntry `json:"entries"` +} + +type UnbondingDelegationEntry struct { + CreationHeight string `json:"creation_height"` + CompletionTime time.Time `json:"completion_time"` + InitialBalance sdk.Int `json:"initial_balance"` + Balance sdk.Int `json:"balance"` + UnbondingID string `json:"unbonding_id"` + UnbondingOnHoldRefCount string `json:"unbonding_on_hold_ref_count"` + ValidatorBondFactor sdk.Dec `json:"validator_bond_factor"` + GlobalLiquidStakingCap sdk.Dec `json:"global_liquid_staking_cap"` +} diff --git a/interchaintest/helpers/superfluid_lp.go b/interchaintest/helpers/superfluid_lp.go new file mode 100644 index 00000000..7434374e --- /dev/null +++ b/interchaintest/helpers/superfluid_lp.go @@ -0,0 +1,46 @@ +package helpers + +import ( + "context" + "encoding/json" + "testing" + + "cosmossdk.io/math" + "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" + "github.com/stretchr/testify/require" +) + +func GetLockedLstForUser( + t *testing.T, + ctx context.Context, + chainNode *cosmos.ChainNode, + contract, + uaddr string, +) math.Int { + query, err := json.Marshal(QueryMsg{ + GetLockedLstForUser: &GetLockedLstForUserQuery{ + Asset: Asset{ + Amount: math.NewInt(0), + Info: AssetInfo{ + NativeToken: NativeTokenInfo{ + Denom: "stk/uxprt", + }, + }, + }, + User: uaddr, + }, + }) + require.NoError(t, err) + + stdout, _, err := chainNode.ExecQuery(ctx, "wasm", "contract-state", "smart", contract, string(query)) + require.NoError(t, err, "error querying superfluid LP contract for locked LST amount") + + debugOutput(t, string(stdout)) + + var res GetLockedLstForUserResponse + + err = json.Unmarshal([]byte(stdout), &res) + require.NoError(t, err) + + return math.Int(res.Data) +} diff --git a/interchaintest/helpers/types.go b/interchaintest/helpers/types.go index 2b686aa3..f2b59d3c 100644 --- a/interchaintest/helpers/types.go +++ b/interchaintest/helpers/types.go @@ -1,13 +1,18 @@ package helpers -// Go based data types for querying on the contract. -// Execute types are not needed here. We just use strings. Could add though in the future and to_string it +import "cosmossdk.io/math" -// EntryPoint type QueryMsg struct { // IBCHooks GetCount *GetCountQuery `json:"get_count,omitempty"` GetTotalFunds *GetTotalFundsQuery `json:"get_total_funds,omitempty"` + + // Superfluid LP + GetLockedLstForUser *GetLockedLstForUserQuery `json:"locked_lst_for_user,omitempty"` +} + +type ExecMsg struct { + LockLstAssetForUser *LockLstAssetForUserMsg `json:"lock_lst_asset_for_user,omitempty"` } type GetTotalFundsQuery struct { @@ -42,3 +47,31 @@ type GetCountResponse struct { type GetCountObj struct { Count int64 `json:"count"` } + +type GetLockedLstForUserQuery struct { + // {"locked_lst_for_user": {"user":"persistence1..."}} + Asset Asset `json:"asset"` + User string `json:"user"` +} + +type GetLockedLstForUserResponse struct { + Data math.Int `json:"data"` +} + +type Asset struct { + Amount math.Int `json:"amount"` + Info AssetInfo `json:"info"` +} + +type AssetInfo struct { + NativeToken NativeTokenInfo `json:"native_token"` +} + +type NativeTokenInfo struct { + Denom string `json:"denom"` +} + +type LockLstAssetForUserMsg struct { + Asset Asset `json:"asset"` + User string `json:"user"` +} diff --git a/interchaintest/liquidstake_stkxprt_test.go b/interchaintest/liquidstake_stkxprt_test.go new file mode 100644 index 00000000..e8ce7bcf --- /dev/null +++ b/interchaintest/liquidstake_stkxprt_test.go @@ -0,0 +1,272 @@ +package interchaintest + +import ( + "context" + "encoding/json" + "testing" + + "cosmossdk.io/math" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" + "github.com/strangelove-ventures/interchaintest/v7" + "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v7/ibc" + "github.com/strangelove-ventures/interchaintest/v7/testutil" + "github.com/stretchr/testify/require" + + "github.com/persistenceOne/persistenceCore/v11/interchaintest/helpers" + liquidstaketypes "github.com/persistenceOne/pstake-native/v2/x/liquidstake/types" +) + +// TestLiquidStakeStkXPRT runs the flow of liquid XPRT staking using +// liquidstake module, including LSM-LP flow when stake gets locked into Superfluid LP. +func TestLiquidStakeStkXPRT(t *testing.T) { + if testing.Short() { + t.Skip() + } + + t.Parallel() + + // override SDK bech prefixes with chain specific + helpers.SetConfig() + + ctx, cancelFn := context.WithCancel(context.Background()) + t.Cleanup(func() { + cancelFn() + }) + + // create a single chain instance with 4 validators + validatorsCount := 4 + + // important overrides: fast voting for quick proposal passing + ic, chain := CreateChain(t, ctx, validatorsCount, 0, fastVotingGenesisOverridesKV...) + chainNode := chain.Nodes()[0] + testDenom := chain.Config().Denom + + require.NotNil(t, ic) + require.NotNil(t, chain) + + t.Cleanup(func() { + _ = ic.Close() + }) + + // Allocate two chain users with funds + firstUserFunds := int64(10_000_000_000) + firstUser := interchaintest.GetAndFundTestUsers(t, ctx, firstUserName(t.Name()), firstUserFunds, chain)[0] + secondUserFunds := int64(1_000_000) + secondUser := interchaintest.GetAndFundTestUsers(t, ctx, secondUserName(t.Name()), secondUserFunds, chain)[0] + + _, lpContractAddr := helpers.SetupContract( + t, ctx, chain, firstUser.KeyName(), + "contracts/dexter_superfluid_lp.wasm", + `{"base_lock_period":0}`, + ) + t.Logf("Deployed Superfluid LP contract: %s", lpContractAddr) + + lockedLST := helpers.GetLockedLstForUser(t, ctx, chainNode, lpContractAddr, firstUser.FormattedAddress()) + require.Equal(t, math.ZeroInt(), lockedLST, "no locked LST expected") + + // Get list of validators + validators := helpers.QueryAllValidators(t, ctx, chainNode) + require.Len(t, validators, validatorsCount, "validators returned must match count of validators created") + + // Updating liquidstake params for a new chain + height, err := chain.Height(ctx) + require.NoError(t, err, "error fetching height before submitting a proposal") + + msgUpdateParams, err := codectypes.NewAnyWithValue(&liquidstaketypes.MsgUpdateParams{ + Authority: authtypes.NewModuleAddress("gov").String(), + Params: liquidstaketypes.Params{ + LiquidBondDenom: liquidstaketypes.DefaultLiquidBondDenom, + WhitelistedValidators: []liquidstaketypes.WhitelistedValidator{{ + ValidatorAddress: validators[0].OperatorAddress, + TargetWeight: math.NewInt(1), + }}, + LsmDisabled: false, + UnstakeFeeRate: liquidstaketypes.DefaultUnstakeFeeRate, + MinLiquidStakeAmount: liquidstaketypes.DefaultMinLiquidStakeAmount, + CwLockedPoolAddress: lpContractAddr, + }, + }) + + require.NoError(t, err, "failed to pack liquidstaketypes.MsgUpdateParams") + + broadcaster := cosmos.NewBroadcaster(t, chain) + txResp, err := cosmos.BroadcastTx( + ctx, + broadcaster, + firstUser, + &govv1.MsgSubmitProposal{ + InitialDeposit: []sdk.Coin{sdk.NewCoin(chain.Config().Denom, sdk.NewInt(500_000_000))}, + Proposer: firstUser.FormattedAddress(), + Title: "LiquidStake Params Update", + Summary: "Sets whitelisted validators for liquidstake", + Messages: []*codectypes.Any{msgUpdateParams}, + }, + ) + require.NoError(t, err, "error submitting liquidstake params update tx") + + upgradeTx, err := helpers.QueryProposalTx(context.Background(), chain.Nodes()[0], txResp.TxHash) + require.NoError(t, err, "error checking proposal tx") + + err = chain.VoteOnProposalAllValidators(ctx, upgradeTx.ProposalID, cosmos.ProposalVoteYes) + require.NoError(t, err, "failed to submit votes") + + _, err = cosmos.PollForProposalStatus(ctx, chain, height, height+15, upgradeTx.ProposalID, cosmos.ProposalStatusPassed) + require.NoError(t, err, "proposal status did not change to passed in expected number of blocks") + + err = testutil.WaitForBlocks(ctx, 2, chain) + require.NoError(t, err) + + // Liquid stake XPRT from the first user (5 XPRT) + + firstUserLiquidStakeAmount := sdk.NewInt(5_000_000) + firstUserLiquidStakeCoins := sdk.NewCoin(testDenom, firstUserLiquidStakeAmount) + txHash, err := chainNode.ExecTx(ctx, firstUser.KeyName(), + "liquidstake", "liquid-stake", firstUserLiquidStakeCoins.String(), + "--gas=auto", + ) + require.NoError(t, err) + + _, err = helpers.QueryTx(ctx, chainNode, txHash) + require.NoError(t, err) + + stkXPRTBalance, err := chain.GetBalance(ctx, firstUser.FormattedAddress(), "stk/uxprt") + require.NoError(t, err) + require.Equal(t, firstUserLiquidStakeAmount, stkXPRTBalance, "stkXPRT balance must match the liquid-staked amount") + + // Lock some liquid stkXPRT tokens into LP contract manually, using a direct CW call + + tokensToLock := sdk.NewCoin("stk/uxprt", math.NewInt(1_000_000)) + + msg := &helpers.LockLstAssetForUserMsg{ + Asset: helpers.Asset{ + Amount: tokensToLock.Amount, + Info: helpers.AssetInfo{ + NativeToken: helpers.NativeTokenInfo{ + Denom: tokensToLock.Denom, + }, + }, + }, + + User: firstUser.FormattedAddress(), + } + + callData, err := json.Marshal(&helpers.ExecMsg{ + LockLstAssetForUser: msg, + }) + require.NoError(t, err, "failed to marshal ExecMsg") + + txHash = helpers.ExecuteMsgWithAmount(t, ctx, chain, firstUser, lpContractAddr, tokensToLock.String(), string(callData)) + _, err = helpers.QueryTx(ctx, chainNode, txHash) + require.NoError(t, err) + + lockedLST = helpers.GetLockedLstForUser(t, ctx, chainNode, lpContractAddr, firstUser.FormattedAddress()) + require.Equal(t, tokensToLock.Amount, lockedLST, "expected LST tokens to be locked") + + stkXPRTBalance, err = chain.GetBalance(ctx, firstUser.FormattedAddress(), "stk/uxprt") + require.NoError(t, err) + require.Equal(t, firstUserLiquidStakeAmount.Sub(tokensToLock.Amount), stkXPRTBalance, "first user's stkXPRT balance must be reduced by locked stkXPRT") + + // Delegate from the first user to get a delegation that could be used to obtain non-liquid stkXPRT + + firstUserDelegationAmount := sdk.NewInt(5_000_000) + firstUserDelegationCoins := sdk.NewCoin(testDenom, firstUserDelegationAmount) + + txHash, err = chainNode.ExecTx(ctx, firstUser.KeyName(), + "staking", "delegate", validators[0].OperatorAddress, firstUserDelegationCoins.String(), + "--gas=auto", + ) + require.NoError(t, err) + + _, err = helpers.QueryTx(ctx, chainNode, txHash) + require.NoError(t, err) + + delegation := helpers.QueryDelegation(t, ctx, chainNode, firstUser.FormattedAddress(), validators[0].OperatorAddress) + require.Equal(t, sdk.NewDecFromInt(firstUserDelegationCoins.Amount), delegation.Shares) + require.False(t, delegation.ValidatorBond) + + firstUserXPRTBalanceBeforeLock, err := chain.GetBalance(ctx, firstUser.FormattedAddress(), testDenom) + require.NoError(t, err) + + // Lock more liquid stkXPRT tokens into LP contract, as well as stake (through implicit LSM) + // using pStake's liquidstake module + tokensToLock2 := sdk.NewCoin(testDenom, math.NewInt(1_000_000)) + stakeToLP := sdk.NewCoin(testDenom, math.NewInt(2_000_000)) + + txHash, err = chainNode.ExecTx(ctx, firstUser.KeyName(), + "liquidstake", "stake-to-lp", validators[0].OperatorAddress, stakeToLP.String(), tokensToLock2.String(), + "--gas=auto", + ) + require.NoError(t, err) + + _, err = helpers.QueryTx(ctx, chainNode, txHash) + require.NoError(t, err) + + // check that delegation has reduced by stakeToLP amount + delegation = helpers.QueryDelegation(t, ctx, chainNode, firstUser.FormattedAddress(), validators[0].OperatorAddress) + require.Equal(t, firstUserDelegationCoins.Amount.Sub(stakeToLP.Amount).ToLegacyDec(), delegation.Shares) + + firstUserXPRTBalanceAfterLock, err := chain.GetBalance(ctx, firstUser.FormattedAddress(), testDenom) + require.NoError(t, err) + require.Equal(t, + firstUserXPRTBalanceBeforeLock.Sub(tokensToLock2.Amount).Add(sdk.NewInt(1)), // fix a blip from LSM rewards + firstUserXPRTBalanceAfterLock, + "first user's XPRT balance must be reduced by locked XPRT during stake-to-lp", + ) + + // Check total expected locked stkXPRT in LP: two deposits of liquid stkXPRT in different ways + // and one stake transfer through LSM-LP flow (using stake-to-lp). + totalLockedExpected := tokensToLock.Amount.Add(tokensToLock2.Amount).Add(stakeToLP.Amount) + totalLockedExpected = totalLockedExpected.Sub(sdk.NewInt(3)) // some dust lost due to stk math + + lockedLST = helpers.GetLockedLstForUser(t, ctx, chainNode, lpContractAddr, firstUser.FormattedAddress()) + require.Equal(t, totalLockedExpected, lockedLST, "expected LST tokens to add up") + + // Send some stkXPRT tokens from first user to second user + + tokensToSend := ibc.WalletAmount{ + Address: secondUser.FormattedAddress(), // recipient + Denom: "stk/uxprt", + Amount: math.NewInt(1_000_000), + } + + err = chainNode.SendFunds(ctx, firstUser.KeyName(), tokensToSend) + require.NoError(t, err) + + stkXPRTBalance, err = chain.GetBalance(ctx, secondUser.FormattedAddress(), "stk/uxprt") + require.NoError(t, err) + require.Equal(t, tokensToSend.Amount, stkXPRTBalance, "second user's stkXPRT balance must match sent stk tokens") + + // Try to unstake stkXPRT from second user + + unstakeCoins := sdk.NewCoin("stk/uxprt", stkXPRTBalance) + txHash, err = chainNode.ExecTx(ctx, secondUser.KeyName(), + "liquidstake", "liquid-unstake", unstakeCoins.String(), + "--gas=auto", + ) + require.NoError(t, err) + + _, err = helpers.QueryTx(ctx, chainNode, txHash) + require.NoError(t, err) + + // Check token balances afterwards + + stkXPRTBalance, err = chain.GetBalance(ctx, secondUser.FormattedAddress(), "stk/uxprt") + require.NoError(t, err) + require.Equal(t, math.ZeroInt(), stkXPRTBalance, "second user's stkXPRT balance must be 0") + + xprtBalance, err := chain.GetBalance(ctx, secondUser.FormattedAddress(), "uxprt") + require.NoError(t, err) + require.Equal(t, xprtBalance.Int64(), secondUserFunds, "second user's XPRT balance must be untouched") + + // Query the created unbonding delegation in favour of second user + + unbondingDelegation := helpers.QueryUnbondingDelegation(t, ctx, chainNode, secondUser.FormattedAddress(), validators[0].OperatorAddress) + require.Len(t, unbondingDelegation.Entries, 1) + require.Equal(t, secondUser.FormattedAddress(), unbondingDelegation.DelegatorAddress, "unbonding delegation must have second user as delegator") + expectedUnbondingBalance := tokensToSend.Amount.Add(sdk.NewInt(1)) + require.Equal(t, expectedUnbondingBalance, unbondingDelegation.Entries[0].Balance, "balance of unbonding delegation to match for stkXPRT unbonding") +} diff --git a/interchaintest/setup.go b/interchaintest/setup.go index b7096f7b..dc34cde4 100644 --- a/interchaintest/setup.go +++ b/interchaintest/setup.go @@ -8,8 +8,6 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap/zaptest" - "github.com/persistenceOne/persistenceCore/v11/interchaintest/helpers" - wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" testutil "github.com/cosmos/cosmos-sdk/types/module/testutil" ibclocalhost "github.com/cosmos/ibc-go/v7/modules/light-clients/09-localhost" @@ -17,6 +15,9 @@ import ( "github.com/strangelove-ventures/interchaintest/v7/chain/cosmos" "github.com/strangelove-ventures/interchaintest/v7/ibc" "github.com/strangelove-ventures/interchaintest/v7/testreporter" + + "github.com/persistenceOne/persistenceCore/v11/interchaintest/helpers" + liquidstaketypes "github.com/persistenceOne/pstake-native/v2/x/liquidstake/types" ) var ( @@ -30,7 +31,7 @@ var ( UidGid: "1025:1025", } - defaultGenesisOverridesKV = append([]cosmos.GenesisKV{ + defaultGenesisOverridesKV = []cosmos.GenesisKV{ { Key: "app_state.gov.params.voting_period", Value: "15s", @@ -51,9 +52,9 @@ var ( Key: "app_state.builder.params.min_bid_increment.denom", Value: helpers.PersistenceBondDenom, }, - }) + } - votingGenesisOverridesKV = append([]cosmos.GenesisKV{ + votingGenesisOverridesKV = []cosmos.GenesisKV{ { Key: "app_state.gov.params.voting_period", Value: "600s", @@ -70,7 +71,26 @@ var ( Key: "app_state.gov.params.min_deposit.0.amount", Value: "10", }, - }) + } + + fastVotingGenesisOverridesKV = []cosmos.GenesisKV{ + { + Key: "app_state.gov.params.voting_period", + Value: "5s", + }, + { + Key: "app_state.gov.params.max_deposit_period", + Value: "5s", + }, + { + Key: "app_state.gov.params.min_deposit.0.denom", + Value: helpers.PersistenceBondDenom, + }, + { + Key: "app_state.gov.params.min_deposit.0.amount", + Value: "10", + }, + } genesisWalletAmount = int64(10_000_000) ) @@ -83,6 +103,7 @@ func persistenceEncoding() *testutil.TestEncodingConfig { // register custom types ibclocalhost.RegisterInterfaces(cfg.InterfaceRegistry) wasmtypes.RegisterInterfaces(cfg.InterfaceRegistry) + liquidstaketypes.RegisterInterfaces(cfg.InterfaceRegistry) return &cfg }