Skip to content

Commit

Permalink
Merge branch 'cosmos-sdk-0.50.x' of github.com:scrtlabs/SecretNetwork…
Browse files Browse the repository at this point in the history
… into cosmos-sdk-0.50.x
  • Loading branch information
quaisx committed May 3, 2024
2 parents b24709a + e83395d commit 2646c20
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 92 deletions.
21 changes: 11 additions & 10 deletions x/compute/internal/keeper/distribution_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@ import (
"os"
"testing"

"cosmossdk.io/math"
"github.com/scrtlabs/SecretNetwork/x/compute/internal/types"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/staking"
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
)

Expand All @@ -34,36 +35,36 @@ func TestDistributionRewards(t *testing.T) {
transferPortSource = MockIBCTransferKeeper{GetPortFn: func(ctx sdk.Context) string {
return "myTransferPort"
}}
encoders := DefaultEncoders(transferPortSource, encodingConfig.Marshaler)
encoders := DefaultEncoders(transferPortSource, encodingConfig.Codec)
ctx, keepers := CreateTestInput(t, false, SupportedFeatures, &encoders, nil)
accKeeper, stakingKeeper, keeper, distKeeper := keepers.AccountKeeper, keepers.StakingKeeper, keepers.WasmKeeper, keepers.DistKeeper

valAddr := addValidator(ctx, stakingKeeper, accKeeper, keeper.bankKeeper, sdk.NewInt64Coin("stake", 100))
ctx = nextBlock(ctx, stakingKeeper, keeper)

v, found := stakingKeeper.GetValidator(ctx, valAddr)
assert.True(t, found)
assert.Equal(t, v.GetDelegatorShares(), sdk.NewDec(100))
v, err := stakingKeeper.GetValidator(ctx, valAddr)
assert.True(t, err == nil)
assert.Equal(t, v.GetDelegatorShares(), math.LegacyNewDec(100))

depositCoin := sdk.NewInt64Coin(sdk.DefaultBondDenom, 5_000_000_000)
deposit := sdk.NewCoins(depositCoin)
creator, creatorPrivKey := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit)
creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 8000)
require.Equal(t, keeper.bankKeeper.GetBalance(ctx, creator, sdk.DefaultBondDenom), depositCoin)

delTokens := sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction)
msg2 := stakingtypes.NewMsgDelegate(creator, valAddr,
msg2 := stakingtypes.NewMsgDelegate(creator.String(), valAddr.String(),
sdk.NewCoin(sdk.DefaultBondDenom, delTokens))

require.Equal(t, uint64(2), distKeeper.GetValidatorHistoricalReferenceCount(ctx))

sh := staking.NewHandler(stakingKeeper)
sh := stakingkeeper.NewMsgServerImpl(&stakingKeeper)

res2, err := sh(ctx, msg2)
res2, err := sh.Delegate(ctx, msg2)
require.NoError(t, err)
require.NotNil(t, res2)
require.NoError(t, err)

distKeeper.AllocateTokensToValidator(ctx, v, sdk.NewDecCoins(sdk.NewDecCoin("stake", sdk.NewInt(100))))
distKeeper.AllocateTokensToValidator(ctx, v, sdk.NewDecCoins(sdk.NewDecCoin("stake", math.NewInt(100))))

// upload staking derivates code
govCode, err := os.ReadFile("./testdata/dist.wasm")
Expand Down
117 changes: 50 additions & 67 deletions x/compute/internal/keeper/query_plugins.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package keeper
import (
"encoding/json"
"fmt"
"strings"

channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types"
"github.com/scrtlabs/SecretNetwork/x/compute/internal/types"
Expand All @@ -11,6 +12,7 @@ import (
"github.com/cosmos/cosmos-sdk/baseapp"
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
Expand Down Expand Up @@ -356,59 +358,42 @@ func MintQuerier(keeper mintkeeper.Keeper) func(ctx sdk.Context, request *wasmTy

func DistQuerier(keeper distrkeeper.Keeper) func(ctx sdk.Context, request *wasmTypes.DistQuery) ([]byte, error) {
return func(ctx sdk.Context, request *wasmTypes.DistQuery) ([]byte, error) {
// TODO: rewrite the function
/*
if request.Rewards != nil {
addr, err := sdk.AccAddressFromBech32(request.Rewards.Delegator)
if err != nil {
return nil, sdkerrors.ErrInvalidAddress.Wrap(request.Rewards.Delegator)
}
params := distrtypes.NewQueryDelegatorParams(addr)
jsonParams, _ := json.Marshal(params)
req := abci.RequestQuery{
Data: jsonParams,
}
// keeper.DelegationTotalRewards(ctx, distrtypes.QueryDelegationTotalRewardsRequest{
// DelegatorAddress: request.Rewards.Delegator,
// })
route := []string{distrtypes.QueryDelegatorTotalRewards}
query, err := distrkeeper.NewQuerier(keeper, codec.NewLegacyAmino())(ctx, route, req)
if err != nil {
return nil, sdkerrors.ErrUnknownRequest.Wrap(err.Error())
}
if request.Rewards != nil {
req := distrtypes.QueryDelegationTotalRewardsRequest{
DelegatorAddress: request.Rewards.Delegator,
}

var res wasmTypes.RewardsResponse
response, err := distrkeeper.NewQuerier(keeper).DelegationTotalRewards(ctx, &req)
if err != nil {
return nil, sdkerrors.ErrUnknownRequest.Wrap(err.Error())
}

err = json.Unmarshal(query, &res)
if err != nil {
return nil, sdkerrors.ErrJSONMarshal.Wrap(err.Error())
}
var res wasmTypes.RewardsResponse
res.Rewards = make([]wasmTypes.Rewards, len(response.Rewards))

for i, valRewards := range res.Rewards {
res.Rewards[i].Validator = valRewards.Validator
for j, valReward := range valRewards.Reward {
// this is here so we can remove fractions of uscrt from the result
res.Rewards[i].Reward[j].Amount = strings.Split(valReward.Amount, ".")[0]
res.Rewards[i].Reward[j].Denom = valReward.Denom
}
for i, valRewards := range response.Rewards {
res.Rewards[i].Validator = valRewards.ValidatorAddress
res.Rewards[i].Reward = make([]wasmTypes.Coin, len(valRewards.Reward))
for j, valReward := range valRewards.Reward {
// this is here so we can remove fractions of uscrt from the result
res.Rewards[i].Reward[j].Amount = strings.Split(valReward.Amount.String(), ".")[0]
res.Rewards[i].Reward[j].Denom = valReward.Denom
}
}

for i, val := range res.Total {
res.Total[i].Amount = strings.Split(val.Amount, ".")[0]
res.Total[i].Denom = val.Denom
}
res.Total = make([]wasmTypes.Coin, len(response.Total))
for i, val := range response.Total {
res.Total[i].Amount = strings.Split(val.Amount.String(), ".")[0]
res.Total[i].Denom = val.Denom
}

ret, err := json.Marshal(res)
if err != nil {
return nil, sdkerrors.ErrJSONMarshal.Wrap(err.Error())
}
ret, err := json.Marshal(res)
if err != nil {
return nil, sdkerrors.ErrJSONMarshal.Wrap(err.Error())
}

return ret, nil
}*/
return ret, nil
}
return nil, wasmTypes.UnsupportedRequest{Kind: "unknown DistQuery variant"}
}
}
Expand Down Expand Up @@ -679,30 +664,28 @@ func sdkToFullDelegation(ctx sdk.Context, keeper stakingkeeper.Keeper, distKeepe
// FIXME: simplify this enormously when
// https://github.com/cosmos/cosmos-sdk/issues/7466 is merged
func getAccumulatedRewards(ctx sdk.Context, distKeeper distrkeeper.Keeper, delegation stakingtypes.Delegation) ([]wasmTypes.Coin, error) {
/*
// Try to get *delegator* reward info!
// Try to get *delegator* reward info!

params := distrtypes.QueryDelegationRewardsRequest{
DelegatorAddress: delegation.DelegatorAddress,
ValidatorAddress: delegation.ValidatorAddress,
}
cache, _ := ctx.CacheContext()
// TODO: rewrite the function
qres, err := distKeeper.Querier.DelegationRewards(sdk.WrapSDKContext(cache), &params)
if err != nil {
return nil, err
}
params := distrtypes.QueryDelegationRewardsRequest{
DelegatorAddress: delegation.DelegatorAddress,
ValidatorAddress: delegation.ValidatorAddress,
}
cache, _ := ctx.CacheContext()
querier := distrkeeper.NewQuerier(distKeeper)
qres, err := querier.DelegationRewards(sdk.WrapSDKContext(cache), &params)
if err != nil {
return nil, err
}

// now we have it, convert it into wasmTypes
rewards := make([]wasmTypes.Coin, len(qres.Rewards))
for i, r := range qres.Rewards {
rewards[i] = wasmTypes.Coin{
Denom: r.Denom,
Amount: r.Amount.TruncateInt().String(),
}
// now we have it, convert it into wasmTypes
rewards := make([]wasmTypes.Coin, len(qres.Rewards))
for i, r := range qres.Rewards {
rewards[i] = wasmTypes.Coin{
Denom: r.Denom,
Amount: r.Amount.TruncateInt().String(),
}
return rewards, nil*/
return nil, nil
}
return rewards, nil
}

func WasmQuerier(wasm *Keeper) func(ctx sdk.Context, request *wasmTypes.WasmQuery, queryDepth uint32) ([]byte, error) {
Expand Down
28 changes: 15 additions & 13 deletions x/compute/internal/keeper/secret_contracts_migrate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import (

sdk "github.com/cosmos/cosmos-sdk/types"

storetypes "cosmossdk.io/store/types"

v010types "github.com/scrtlabs/SecretNetwork/go-cosmwasm/types/v010"
"github.com/scrtlabs/SecretNetwork/x/compute/internal/types"

Expand Down Expand Up @@ -988,7 +990,7 @@ func TestAllocateOnHeapFailBecauseGasLimitAfterMigrate(t *testing.T) {
defer func() {
r := recover()
require.NotNil(t, r)
_, ok := r.(sdk.ErrorOutOfGas)
_, ok := r.(storetypes.ErrorOutOfGas)
require.True(t, ok, "%+v", r)
}()

Expand Down Expand Up @@ -1124,15 +1126,15 @@ func TestBankMsgSendAfterMigrate(t *testing.T) {
isSuccuss: false,
balancesBefore: "5000assaf,200000denom 5000assaf,5000denom",
balancesAfter: "4998assaf,199998denom 5000assaf,5000denom",
errorMsg: "encrypted: dispatch: submessages: 2denom is smaller than 3denom: insufficient funds",
errorMsg: "encrypted: dispatch: submessages: spendable balance 2denom is smaller than 3denom: insufficient funds",
},
{
description: "non-existing denom",
input: `[{"amount":"1","denom":"blabla"}]`,
isSuccuss: false,
balancesBefore: "5000assaf,200000denom 5000assaf,5000denom",
balancesAfter: "4998assaf,199998denom 5000assaf,5000denom",
errorMsg: "encrypted: dispatch: submessages: 0blabla is smaller than 1blabla: insufficient funds",
errorMsg: "encrypted: dispatch: submessages: spendable balance 0blabla is smaller than 1blabla: insufficient funds",
},
{
description: "none",
Expand Down Expand Up @@ -1225,7 +1227,7 @@ func TestSendFundsAfterMigrate(t *testing.T) {
description: "one, missing",
coinsToSend: `20one`,
isSuccess: false,
errorMsg: "0one is smaller than 20one: insufficient funds",
errorMsg: "spendable balance 0one is smaller than 20one: insufficient funds",
balancesBefore: "5000another",
balancesAfter: "5000another",
destinationBalancesAfter: "",
Expand All @@ -1234,7 +1236,7 @@ func TestSendFundsAfterMigrate(t *testing.T) {
description: "one, not enough",
coinsToSend: `20one`,
isSuccess: false,
errorMsg: "19one is smaller than 20one: insufficient funds",
errorMsg: "spendable balance 19one is smaller than 20one: insufficient funds",
balancesBefore: "5000another,19one",
balancesAfter: "5000another,19one",
destinationBalancesAfter: "",
Expand All @@ -1259,7 +1261,7 @@ func TestSendFundsAfterMigrate(t *testing.T) {
description: "multi-coin, missing one",
coinsToSend: `130assaf,15denom`,
isSuccess: false,
errorMsg: "0assaf is smaller than 130assaf: insufficient funds",
errorMsg: "spendable balance 0assaf is smaller than 130assaf: insufficient funds",
balancesBefore: "200000denom",
balancesAfter: "200000denom",
destinationBalancesAfter: "",
Expand All @@ -1268,7 +1270,7 @@ func TestSendFundsAfterMigrate(t *testing.T) {
description: "multi-coin, not enough of one of them",
coinsToSend: `130assaf,15denom`,
isSuccess: false,
errorMsg: "10denom is smaller than 15denom: insufficient funds",
errorMsg: "spendable balance 10denom is smaller than 15denom: insufficient funds",
balancesBefore: "5000assaf,10denom",
balancesAfter: "5000assaf,10denom",
destinationBalancesAfter: "",
Expand All @@ -1277,7 +1279,7 @@ func TestSendFundsAfterMigrate(t *testing.T) {
description: "multi-coin, not enough of all of them",
coinsToSend: `130assaf,15denom`,
isSuccess: false,
errorMsg: "12assaf is smaller than 130assaf: insufficient funds",
errorMsg: "spendable balance 12assaf is smaller than 130assaf: insufficient funds",
balancesBefore: "12assaf,10denom",
balancesAfter: "12assaf,10denom",
destinationBalancesAfter: "",
Expand All @@ -1286,8 +1288,8 @@ func TestSendFundsAfterMigrate(t *testing.T) {
t.Run(test.description, func(t *testing.T) {
ctx, keeper, helperWallet, helperPrivKey, _, _ := setupBasicTest(t, sdk.NewCoins(sdk.NewInt64Coin("assaf", 5000)))

fundingWallet, fundingWalletPrivKey := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, stringToCoins(test.balancesBefore))
receivingWallet, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins())
fundingWallet, fundingWalletPrivKey, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, stringToCoins(test.balancesBefore), 9912)
receivingWallet, _, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(), 9913)

// verify that the account was funded correctly
fundingWalletCoinsBefore := keeper.bankKeeper.GetAllBalances(ctx, fundingWallet)
Expand Down Expand Up @@ -3571,7 +3573,7 @@ func TestAllocateOnHeapFailBecauseGasLimitDuringMigrate(t *testing.T) {
defer func() {
r := recover()
require.NotNil(t, r)
_, ok := r.(sdk.ErrorOutOfGas)
_, ok := r.(storetypes.ErrorOutOfGas)
require.True(t, ok, "%+v", r)
}()

Expand Down Expand Up @@ -3701,15 +3703,15 @@ func TestBankMsgSendDuringMigrate(t *testing.T) {
isSuccuss: false,
balancesBefore: "5000assaf,200000denom 5000assaf,5000denom",
balancesAfter: "4998assaf,199998denom 5000assaf,5000denom",
errorMsg: "encrypted: dispatch: submessages: 2denom is smaller than 3denom: insufficient funds",
errorMsg: "encrypted: dispatch: submessages: spendable balance 2denom is smaller than 3denom: insufficient funds",
},
{
description: "non-existing denom",
input: `[{"amount":"1","denom":"blabla"}]`,
isSuccuss: false,
balancesBefore: "5000assaf,200000denom 5000assaf,5000denom",
balancesAfter: "4998assaf,199998denom 5000assaf,5000denom",
errorMsg: "encrypted: dispatch: submessages: 0blabla is smaller than 1blabla: insufficient funds",
errorMsg: "encrypted: dispatch: submessages: spendable balance 0blabla is smaller than 1blabla: insufficient funds",
},
{
description: "none",
Expand Down
5 changes: 3 additions & 2 deletions x/compute/internal/keeper/secret_contracts_submsgs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"math"
"testing"

stypes "cosmossdk.io/store/types"
v010cosmwasm "github.com/scrtlabs/SecretNetwork/go-cosmwasm/types/v010"
"github.com/stretchr/testify/require"

Expand Down Expand Up @@ -1479,7 +1480,7 @@ func TestSubmessageGasExceedingMessageGas(t *testing.T) {
defer func() {
r := recover()
require.NotNil(t, r)
_, ok := r.(sdk.ErrorOutOfGas)
_, ok := r.(stypes.ErrorOutOfGas)
require.True(t, ok, "%+v", r)
}()
_, _, _, _, _ = initHelper(t, keeper, ctx, codeID, walletA, nil, privKeyA, `{"measure_gas_for_submessage":{"id":0}}`, false, true, defaultGasForTests)
Expand All @@ -1491,7 +1492,7 @@ func TestReplyGasExceedingMessageGas(t *testing.T) {
defer func() {
r := recover()
require.NotNil(t, r)
_, ok := r.(sdk.ErrorOutOfGas)
_, ok := r.(stypes.ErrorOutOfGas)
require.True(t, ok, "%+v", r)
}()
_, _, _, _, _ = initHelper(t, keeper, ctx, codeID, walletA, nil, privKeyA, `{"measure_gas_for_submessage":{"id":2600}}`, false, true, defaultGasForTests)
Expand Down

0 comments on commit 2646c20

Please sign in to comment.