From e47dd2e841578ad57adf363b8e42d4374067cbb2 Mon Sep 17 00:00:00 2001 From: Ilya Raykker Date: Fri, 16 Aug 2024 10:35:45 +0400 Subject: [PATCH] Fix compute tests --- x/compute/internal/keeper/bench_test.go | 2 +- .../internal/keeper/distribution_test.go | 2 +- x/compute/internal/keeper/gov_test.go | 4 +- x/compute/internal/keeper/keeper_test.go | 82 +++---- x/compute/internal/keeper/mint_test.go | 2 +- .../keeper/param_verification_test.go | 222 +++++++++--------- x/compute/internal/keeper/querier_test.go | 90 ++++--- x/compute/internal/keeper/recurse_test.go | 13 +- .../keeper/secret_contracts_exec_test.go | 8 +- .../keeper/secret_contracts_init_test.go | 2 +- .../keeper/secret_contracts_migrate_test.go | 4 +- .../keeper/secret_contracts_utils_test.go | 156 +----------- x/compute/internal/keeper/staking_test.go | 12 +- x/compute/internal/keeper/test_common.go | 120 +++++----- 14 files changed, 279 insertions(+), 440 deletions(-) diff --git a/x/compute/internal/keeper/bench_test.go b/x/compute/internal/keeper/bench_test.go index e408fd4e9..42c4d541d 100644 --- a/x/compute/internal/keeper/bench_test.go +++ b/x/compute/internal/keeper/bench_test.go @@ -156,7 +156,7 @@ func initBenchContract(t *testing.T) (contract sdk.AccAddress, creator sdk.AccAd accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, creatorPriv, _ = CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...), 2001) + creator, creatorPriv, _ = CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...)) // store the code wasmCode, err := os.ReadFile(TestContractPaths[benchContract]) diff --git a/x/compute/internal/keeper/distribution_test.go b/x/compute/internal/keeper/distribution_test.go index 9740153b6..50623e10c 100644 --- a/x/compute/internal/keeper/distribution_test.go +++ b/x/compute/internal/keeper/distribution_test.go @@ -48,7 +48,7 @@ func TestDistributionRewards(t *testing.T) { depositCoin := sdk.NewInt64Coin(sdk.DefaultBondDenom, 5_000_000_000) deposit := sdk.NewCoins(depositCoin) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 8000) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) require.Equal(t, keeper.bankKeeper.GetBalance(ctx, creator, sdk.DefaultBondDenom), depositCoin) delTokens := sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction) diff --git a/x/compute/internal/keeper/gov_test.go b/x/compute/internal/keeper/gov_test.go index 9e87da2e3..ec00dddfb 100644 --- a/x/compute/internal/keeper/gov_test.go +++ b/x/compute/internal/keeper/gov_test.go @@ -52,7 +52,7 @@ func TestGovQueryProposals(t *testing.T) { govKeeper.Params.Set(ctx, v1types.DefaultParams()) deposit := sdk.NewCoins(sdk.NewInt64Coin("stake", 5_000_000_000)) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 1071) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) // // upload staking derivates code @@ -120,7 +120,7 @@ func TestGovVote(t *testing.T) { deposit2 := sdk.NewCoins(sdk.NewInt64Coin("stake", 5_000_000_000)) deposit := sdk.NewCoins(sdk.NewInt64Coin("stake", 5_000_000_000)) initFunds := sdk.NewCoins(sdk.NewInt64Coin("stake", 10_000_000_000)) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, initFunds, 1070) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, initFunds) // // upload staking derivates code diff --git a/x/compute/internal/keeper/keeper_test.go b/x/compute/internal/keeper/keeper_test.go index 3be8cc976..917ace132 100644 --- a/x/compute/internal/keeper/keeper_test.go +++ b/x/compute/internal/keeper/keeper_test.go @@ -83,7 +83,7 @@ func TestCreate(t *testing.T) { accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 2002) + creator, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) @@ -108,7 +108,7 @@ func TestCreateDuplicate(t *testing.T) { accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 2003) + creator, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) @@ -146,7 +146,7 @@ func TestCreateWithSimulation(t *testing.T) { WithGasMeter(stypes.NewInfiniteGasMeter()) deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 2004) + creator, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) @@ -205,7 +205,7 @@ func TestCreateWithGzippedPayload(t *testing.T) { accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 2005) + creator, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) wasmCode, err := os.ReadFile(filepath.Join(".", contractPath, "test_gzip_contract.wasm.gz")) require.NoError(t, err) @@ -242,7 +242,7 @@ func TestInstantiate(t *testing.T) { accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, privKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 2006) + creator, privKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) @@ -297,8 +297,7 @@ func TestInstantiate(t *testing.T) { // create with no balance is also legal contractAddr, _, err := keeper.Instantiate(ctx, contractID, creator, nil, initMsgBz, "demo contract 1", nil, nil) require.NoError(t, err) - // TODO: uncomment when all tests are fixed - // require.Equal(t, "secret1uhfqhj6cvt7983n6xdxkjhfvx9833qk5pmgfl4", contractAddr.String()) + require.Equal(t, "secret1hqy37xwhgaj6dlnevnsr5q2077uv36ceqd74ec", contractAddr.String()) // gas can change +- 10% before we start failing, though maybe for consensus we should check a constant amount gasAfter := ctx.GasMeter().GasConsumed() @@ -329,11 +328,13 @@ func TestInstantiateWithDeposit(t *testing.T) { fundAddr: false, expError: true, }, - // "blocked address": { - // srcActor: supply.NewModuleAddress(auth.FeeCollectorName), - // fundAddr: true, - // expError: true, - // }, + /* + "blocked address": { + srcActor: supply.NewModuleAddress(auth.FeeCollectorName), + fundAddr: true, + expError: true, + }, + */ } for msg, spec := range specs { t.Run(msg, func(t *testing.T) { @@ -344,9 +345,9 @@ func TestInstantiateWithDeposit(t *testing.T) { if spec.fundAddr { funds = 200 } - bob, bobPriv, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", funds)), 2007) + bob, bobPriv, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", funds))) - fred, _, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), 2008) + fred, _, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 0))) initMsgBz, err := json.Marshal(InitMsg{Verifier: fred, Beneficiary: bob}) require.NoError(t, err) @@ -382,7 +383,7 @@ func TestInstantiateWithNonExistingCodeID(t *testing.T) { accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, privKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 2009) + creator, privKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) const nonExistingCodeID = 9999 @@ -429,8 +430,8 @@ func TestExecute(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 5000)) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...), 2010) - fred, privFred, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp, 2011) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...)) + fred, privFred, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) @@ -466,8 +467,7 @@ func TestExecute(t *testing.T) { require.NoError(t, err) - // TODO: uncomment when all tests are fixed - // require.Equal(t, "secret12exhpaft5rv3t8lcw9nykudxaddq2nmtv4r3tl", addr.String()) + require.Equal(t, "secret15epw6kku2uzeae27u9m6zh2q8z7ynvqrwnsxup", addr.String()) // ensure bob doesn't exist bobAcct := accKeeper.GetAccount(ctx, bob) @@ -556,18 +556,20 @@ func TestExecuteWithDeposit(t *testing.T) { fundAddr: false, expError: true, }, - // "blocked address as actor": { - // srcActor: blockedAddr, - // fundAddr: true, - // beneficiary: fred, - // expError: true, - // }, - // "blocked address as beneficiary": { - // srcActor: bob, - // fundAddr: true, - // beneficiary: blockedAddr, - // expError: true, - // }, + /* + "blocked address as actor": { + srcActor: blockedAddr, + fundAddr: true, + beneficiary: fred, + expError: true, + }, + "blocked address as beneficiary": { + srcActor: bob, + fundAddr: true, + beneficiary: blockedAddr, + expError: true, + }, + */ } for msg, spec := range specs { t.Run(msg, func(t *testing.T) { @@ -578,8 +580,8 @@ func TestExecuteWithDeposit(t *testing.T) { if spec.fundAddr { funds = 200 } - bob, bobPriv, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", funds)), 2012) - fred, _, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), 2013) + bob, bobPriv, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", funds))) + fred, _, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 0))) initMsgBz, err := json.Marshal(InitMsg{Verifier: bob, Beneficiary: fred}) require.NoError(t, err) @@ -619,7 +621,7 @@ func TestExecuteWithNonExistingAddress(t *testing.T) { accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, privKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...), 2014) + creator, privKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...)) // unauthorized - trialCtx so we don't change state nonExistingAddress := sdk.AccAddress([]byte{9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}) @@ -660,8 +662,8 @@ func TestExecuteWithPanic(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 5000)) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...), 2015) - fred, fredPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp, 2016) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...)) + fred, fredPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) @@ -717,8 +719,8 @@ func TestExecuteWithCpuLoop(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 5000)) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...), 2017) - fred, fredPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp, 2018) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...)) + fred, fredPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) @@ -833,8 +835,8 @@ func TestExecuteWithStorageLoop(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 5000)) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...), 2019) - fred, fredPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp, 2020) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...)) + fred, fredPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) diff --git a/x/compute/internal/keeper/mint_test.go b/x/compute/internal/keeper/mint_test.go index 264ee3c85..a61580ea4 100644 --- a/x/compute/internal/keeper/mint_test.go +++ b/x/compute/internal/keeper/mint_test.go @@ -45,7 +45,7 @@ func TestMintQuerier(t *testing.T) { assert.Equal(t, v.GetDelegatorShares(), math.LegacyNewDec(100)) deposit := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 5_000_000_000)) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 9000) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) delTokens := sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction) msg2 := stakingtypes.NewMsgDelegate(creator.String(), valAddr.String(), diff --git a/x/compute/internal/keeper/param_verification_test.go b/x/compute/internal/keeper/param_verification_test.go index 4562e8284..dc2bf599d 100644 --- a/x/compute/internal/keeper/param_verification_test.go +++ b/x/compute/internal/keeper/param_verification_test.go @@ -1,110 +1,71 @@ package keeper import ( - // "fmt" + "fmt" "testing" "github.com/stretchr/testify/require" - // "github.com/cosmos/cosmos-proto/anyutil" - // "google.golang.org/protobuf/proto" - // "google.golang.org/protobuf/types/known/anypb" - // "github.com/cosmos/cosmos-sdk/client" - // "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - // multisigkeys "github.com/cosmos/cosmos-sdk/crypto/keys/multisig" + txsigning "cosmossdk.io/x/tx/signing" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + multisigkeys "github.com/cosmos/cosmos-sdk/crypto/keys/multisig" crypto "github.com/cosmos/cosmos-sdk/crypto/types" - // "github.com/cosmos/cosmos-sdk/crypto/types/multisig" + "github.com/cosmos/cosmos-sdk/crypto/types/multisig" sdk "github.com/cosmos/cosmos-sdk/types" - // sdksigning "github.com/cosmos/cosmos-sdk/types/tx/signing" + sdksigning "github.com/cosmos/cosmos-sdk/types/tx/signing" authante "github.com/cosmos/cosmos-sdk/x/auth/ante" - // authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" - // txsigning "cosmossdk.io/x/tx/signing" - // signingv1beta1 "cosmossdk.io/api/cosmos/tx/signing/v1beta1" - // txv1beta1 "cosmossdk.io/api/cosmos/tx/v1beta1" + authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" + authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - // wasmtypes "github.com/scrtlabs/SecretNetwork/go-cosmwasm/types" - // v010types "github.com/scrtlabs/SecretNetwork/go-cosmwasm/types/v010" + wasmtypes "github.com/scrtlabs/SecretNetwork/go-cosmwasm/types" + v010types "github.com/scrtlabs/SecretNetwork/go-cosmwasm/types/v010" "github.com/scrtlabs/SecretNetwork/x/compute/internal/types" ) -/* func getSignBytes( - t *testing.T, ctx *sdk.Context, signModeHandlerMap *txsigning.HandlerMap, builder client.TxBuilder, multisigAccount Account, signer Account, sdkMsg sdk.Msg, + t *testing.T, ctx sdk.Context, signModeHandler txsigning.HandlerMap, builder client.TxBuilder, multisigAccount Account, signer Account, rootMultisigAccount *Account, ) []byte { - // sig := sdksigning.SignatureV2{ - // PubKey: signer.public, - // Sequence: multisigAccount.acct.GetSequence() - 1, - // Data: &sdksigning.SingleSignatureData{ - // SignMode: sdksigning.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, - // Signature: nil, - // }, - // } - // err := builder.SetSignatures(sig) - // require.NoError(t, err) - signerData := txsigning.SignerData{ - ChainID: TestConfig.ChainID, - AccountNumber: signer.acct.GetAccountNumber(), - Sequence: signer.acct.GetSequence() - 1, + // workaround for nested multisigs + if rootMultisigAccount == nil { + rootMultisigAccount = &multisigAccount } - - ////// - - anyPk, err := anyutil.New(signer.public) - require.NoError(t, err) - signerInfo := []*txv1beta1.SignerInfo{ - { - PublicKey: anyPk, - ModeInfo: &txv1beta1.ModeInfo{ - Sum: &txv1beta1.ModeInfo_Single_{ - Single: &txv1beta1.ModeInfo_Single{ - Mode: signingv1beta1.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, - }, - }, - }, - Sequence: multisigAccount.acct.GetSequence() - 1, + sig := sdksigning.SignatureV2{ + PubKey: signer.public, + Sequence: multisigAccount.acct.GetSequence() - 1, + Data: &sdksigning.SingleSignatureData{ + SignMode: sdksigning.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, + Signature: nil, }, } - - anyMsg, err := anyutil.New(sdkMsg) - require.NoError(t, err) - - txBody := &txv1beta1.TxBody{ - Messages: []*anypb.Any{anyMsg}, - } - - authInfo := &txv1beta1.AuthInfo{ - SignerInfos: signerInfo, - } - - bodyBz, err := proto.Marshal(txBody) + err := builder.SetSignatures(sig) require.NoError(t, err) - - authInfoBz, err := proto.Marshal(authInfo) - require.NoError(t, err) - - txData := txsigning.TxData{ - Body: txBody, - AuthInfo: authInfo, - AuthInfoBytes: authInfoBz, - BodyBytes: bodyBz, + signerData := authsigning.SignerData{ + ChainID: TestConfig.ChainID, + AccountNumber: rootMultisigAccount.acct.GetAccountNumber(), + Sequence: rootMultisigAccount.acct.GetSequence() - 1, + Address: rootMultisigAccount.acct.GetPubKey().String(), + PubKey: signer.acct.GetPubKey(), } - - bytesToSign, err := signModeHandlerMap.GetSignBytes(ctx, signingv1beta1.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signerData, txData) + bytesToSign, err := authsigning.GetSignBytesAdapter(ctx, &signModeHandler, sdksigning.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, signerData, builder.GetTx()) require.NoError(t, err) return bytesToSign } func generateSignatures( - t *testing.T, ctx *sdk.Context, signModeHandlerMap *txsigning.HandlerMap, - builder client.TxBuilder, multisigAccount Account, signers []Account, actualSigners int, sdkMsg sdk.Msg, + t *testing.T, ctx sdk.Context, signModeHandler txsigning.HandlerMap, + builder client.TxBuilder, multisigAccount Account, signers []Account, actualSigners int, + rootMultisigAccount *Account, ) *sdksigning.MultiSignatureData { multiSig := multisig.NewMultisig(len(signers)) for i := 0; i < len(signers); i++ { - signBytes := getSignBytes(t, ctx, signModeHandlerMap, builder, multisigAccount, signers[i], sdkMsg) + signBytes := getSignBytes(t, ctx, signModeHandler, builder, multisigAccount, signers[i], rootMultisigAccount) var signature []byte if i < actualSigners { + fmt.Printf("SIGNBYTES %v", signBytes) signature, _ = signers[i].private.Sign(signBytes) } signatureData := sdksigning.SingleSignatureData{ @@ -122,62 +83,74 @@ func generateSignatures( } func multisigTxCreator( - t *testing.T, ctx *sdk.Context, keeper Keeper, n int, threshold int, actualSigners int, sdkMsg sdk.Msg, -) (*txsigning.HandlerMap, []Account, Account) { - fmt.Println("CHECKPOINT 0") + t *testing.T, ctx *sdk.Context, keeper Keeper, n int, threshold int, actualSigners int, sdkMsg sdk.Msg, rootMultisigAccount *Account, +) (txsigning.HandlerMap, []Account, Account) { + fmt.Println("CHECKPOINT 6.1") signers, multisigAccount := generateMultisigAccount(*ctx, keeper, n, threshold) - fmt.Println("CHECKPOINT 0.5") - signModeHandlerMap := multisigTxCreatorForExisting(t, ctx, multisigAccount, signers, actualSigners, sdkMsg) - fmt.Println("CHECKPOINT 1") - return signModeHandlerMap, signers, multisigAccount + fmt.Println("CHECKPOINT 6.2") + signModeHandler := multisigTxCreatorForExisting(t, ctx, multisigAccount, signers, actualSigners, sdkMsg, rootMultisigAccount) + fmt.Println("CHECKPOINT 6.3") + return signModeHandler, signers, multisigAccount } func multisigTxCreatorForExisting( - t *testing.T, ctx *sdk.Context, multisigAccount Account, signers []Account, actualSigners int, sdkMsg sdk.Msg, -) *txsigning.HandlerMap { - fmt.Println("CHECKPOINT 10") + t *testing.T, ctx *sdk.Context, multisigAccount Account, signers []Account, actualSigners int, sdkMsg sdk.Msg, rootMultisigAccount *Account, +) txsigning.HandlerMap { + fmt.Println("CHECKPOINT 6.2.1") switch msg := sdkMsg.(type) { case *types.MsgInstantiateContract: msg.Sender = multisigAccount.address + msg.SenderAddress = multisigAccount.address.String() case *types.MsgExecuteContract: msg.Sender = multisigAccount.address + msg.SenderAddress = multisigAccount.address.String() } - fmt.Println("CHECKPOINT 11") + fmt.Println("CHECKPOINT 6.2.2") txConfig := authtx.NewTxConfig(MakeTestCodec(), authtx.DefaultSignModes) - signModeHandlerMap := txConfig.SignModeHandler() + fmt.Println("CHECKPOINT 6.2.3") + signmodeHandler := txConfig.SignModeHandler() + fmt.Println("CHECKPOINT 6.2.4") builder := txConfig.NewTxBuilder() + fmt.Println("CHECKPOINT 6.2.5") builder.SetFeeAmount(nil) + fmt.Println("CHECKPOINT 6.2.6") builder.SetGasLimit(0) + fmt.Println("CHECKPOINT 6.2.7") builder.SetTimeoutHeight(0) + fmt.Println("CHECKPOINT 6.2.8") - fmt.Println("CHECKPOINT 12") _ = builder.SetMsgs(sdkMsg) - fmt.Println("CHECKPOINT 2") - multiSignature := generateSignatures(t, ctx, signModeHandlerMap, builder, multisigAccount, signers, actualSigners, sdkMsg) - fmt.Println("CHECKPOINT 4") + fmt.Println("CHECKPOINT 6.2.9") + multiSignature := generateSignatures(t, *ctx, *signmodeHandler, builder, multisigAccount, signers, actualSigners, rootMultisigAccount) + fmt.Println("CHECKPOINT 6.2.10") signature := sdksigning.SignatureV2{ PubKey: multisigAccount.public, Sequence: multisigAccount.acct.GetSequence() - 1, Data: multiSignature, } + fmt.Println("CHECKPOINT 6.2.11") err := builder.SetSignatures(signature) require.NoError(t, err) + fmt.Println("CHECKPOINT 6.2.12") tx := builder.(protoTxProvider) + fmt.Println("CHECKPOINT 6.2.13") txBytes, err := tx.GetProtoTx().Marshal() + fmt.Println("CHECKPOINT 6.2.14") require.NoError(t, err) *ctx = ctx.WithTxBytes(txBytes) + fmt.Println("CHECKPOINT 6.2.15") *ctx = types.WithTXCounter(*ctx, 1) + fmt.Println("CHECKPOINT 6.2.16") // updateLightClientHelper(t, *ctx) - fmt.Println("CHECKPOINT 3") - return signModeHandlerMap + return *signmodeHandler } type Account struct { - acct authtypes.AccountI + acct sdk.AccountI address sdk.AccAddress public crypto.PubKey private crypto.PrivKey @@ -211,13 +184,19 @@ func (accts Accounts) pubKeys() []crypto.PubKey { func generateMultisigAccount(ctx sdk.Context, keeper Keeper, n int, threshold int) ([]Account, Account) { accounts := make([]Account, n) + fmt.Println("CHECKPOINT 6.1.1") for i := 0; i < n; i++ { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - _, privKey, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, deposit.Add(deposit...), 9812) + fmt.Println("CHECKPOINT 6.1.2") + _, privKey, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, deposit.Add(deposit...)) + fmt.Println("CHECKPOINT 6.1.3") accounts[i] = newAccount(ctx, keeper, privKey) + fmt.Println("CHECKPOINT 6.1.4") } + fmt.Println("CHECKPOINT 6.1.5") multisigAccount := generateMultisigAccountFromPublicKeys(ctx, keeper, Accounts(accounts).pubKeys(), threshold) + fmt.Println("CHECKPOINT 6.1.6") return accounts, multisigAccount } @@ -228,9 +207,9 @@ func generateMultisigAccountFromPublicKeys(ctx sdk.Context, keeper Keeper, pubKe // Register to keeper addr := multisigPubkey.Address().Bytes() baseAcct := authtypes.NewBaseAccountWithAddress(addr) + baseAcct.SetAccountNumber(keeper.accountKeeper.NextAccountNumber(ctx)) coins := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) _ = baseAcct.SetPubKey(multisigPubkey) - baseAcct.SetAccountNumber(9913) keeper.accountKeeper.SetAccount(ctx, baseAcct) if err := keeper.bankKeeper.MintCoins(ctx, faucetAccountName, coins); err != nil { @@ -245,11 +224,11 @@ func generateMultisigAccountFromPublicKeys(ctx sdk.Context, keeper Keeper, pubKe public: multisigPubkey, private: nil, } -}*/ +} func prepareInitSignedTxMultipleMsgs( t *testing.T, keeper Keeper, ctx sdk.Context, - creators []sdk.AccAddress, privKeys []crypto.PrivKey, initMsgs []sdk.Msg, _ uint64, + creators []sdk.AccAddress, privKeys []crypto.PrivKey, initMsgs []sdk.Msg, codeID uint64, ) sdk.Context { accounts := make([]sdk.AccountI, len(creators)) for i, acc := range creators { @@ -372,19 +351,23 @@ func TestWrongSigner(t *testing.T) { require.Contains(t, err.Error(), "is not found in the tx signer set") } -/* func TestMultiSig(t *testing.T) { + fmt.Println("CHECKPOINT 1") ctx, keeper, codeID, codeHash, _, _, _, _ := setupTest(t, "./testdata/contract.wasm", sdk.Coins{}) + fmt.Println("CHECKPOINT 2") initMsg := `{"nop":{}}` msg := types.NewSecretMsg([]byte(codeHash), []byte(initMsg)) + fmt.Println("CHECKPOINT 3") initMsgBz, err := wasmCtx.Encrypt(msg.Serialize()) require.NoError(t, err) nonce := initMsgBz[0:32] + fmt.Println("CHECKPOINT 4") for i := 0; i < 5; i++ { for j := 0; j <= i; j++ { + fmt.Println("CHECKPOINT 5") label := fmt.Sprintf("demo contract %d %d", i, j) sdkMsg := types.MsgInstantiateContract{ CodeID: codeID, @@ -392,16 +375,21 @@ func TestMultiSig(t *testing.T) { InitMsg: initMsgBz, InitFunds: nil, } + fmt.Println("CHECKPOINT 6") - _, _, multisigAddr := multisigTxCreator(t, &ctx, keeper, i+1, j+1, i+1, &sdkMsg) + _, _, multisigAddr := multisigTxCreator(t, &ctx, keeper, i+1, j+1, i+1, &sdkMsg, nil) + fmt.Println("CHECKPOINT 7") contractAddressA, _, err := keeper.Instantiate(ctx, codeID, multisigAddr.address, nil, initMsgBz, label, sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), nil) + fmt.Println("CHECKPOINT 8") if err != nil { err = extractInnerError(t, err, nonce, false, false) } require.NoError(t, err) + fmt.Println("CHECKPOINT 9") wasmEvents := getDecryptedWasmEvents(t, ctx, nonce) + fmt.Println("CHECKPOINT 10") require.Equal(t, []ContractEvent{ @@ -412,11 +400,13 @@ func TestMultiSig(t *testing.T) { }, wasmEvents, ) + fmt.Println("CHECKPOINT 11") // Reset wasm events ctx, keeper, codeID, codeHash, _, _, _, _ = setupTest(t, "./testdata/contract.wasm", sdk.Coins{}) } } + fmt.Println("CHECKPOINT 12") } func TestMultiSigThreshold(t *testing.T) { @@ -444,7 +434,7 @@ func TestMultiSigThreshold(t *testing.T) { InitFunds: sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), } - _, _, multisigAddr := multisigTxCreator(t, &ctx, keeper, i+1, j+1, j+1, &sdkMsg) + _, _, multisigAddr := multisigTxCreator(t, &ctx, keeper, i+1, j+1, j+1, &sdkMsg, nil) contractAddressA, _, err := keeper.Instantiate(ctx, codeID, multisigAddr.address, nil, initMsgBz, label, sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), nil) if err != nil { @@ -492,7 +482,7 @@ func TestMultiSigThresholdNotMet(t *testing.T) { InitFunds: sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), } - _, _, multisigAddr := multisigTxCreator(t, &ctx, keeper, 3, 2, 1, &sdkMsg) + _, _, multisigAddr := multisigTxCreator(t, &ctx, keeper, 3, 2, 1, &sdkMsg, nil) _, _, err = keeper.Instantiate(ctx, codeID, multisigAddr.address, nil, initMsgBz, "demo contract 1", sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), nil) if err != nil { @@ -533,7 +523,7 @@ func TestMultiSigExecute(t *testing.T) { CallbackSig: nil, } - _ = multisigTxCreatorForExisting(t, &ctx, multisigAccount, accounts, 4, &sdkMsg) + _ = multisigTxCreatorForExisting(t, &ctx, multisigAccount, accounts, 4, &sdkMsg, nil) execRes, err := keeper.Execute(ctx, contractAddress, multisigAccount.address, execMsgBz, funds, nil, wasmtypes.HandleTypeExecute) if err != nil { @@ -592,7 +582,7 @@ func TestMultiSigCallbacks(t *testing.T) { CallbackSig: nil, } - _, _, multisigAddr := multisigTxCreator(t, &ctx, keeper, 3, 2, 2, &sdkMsg) + _, _, multisigAddr := multisigTxCreator(t, &ctx, keeper, 3, 2, 2, &sdkMsg, nil) execRes, err := keeper.Execute(ctx, contractAddress, multisigAddr.address, execMsgBz, sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), nil, wasmtypes.HandleTypeExecute) if err != nil { @@ -629,7 +619,8 @@ func TestMultiSigInMultiSig(t *testing.T) { nonce := initMsgBz[0:32] sdkMsg := types.MsgInstantiateContract{ - Sender: multimultisigAccount.address, + Sender: multimultisigAccount.address, + SenderAddress: multimultisigAccount.address.String(), // Admin: nil, CodeID: codeID, Label: "demo contract 1", @@ -637,7 +628,7 @@ func TestMultiSigInMultiSig(t *testing.T) { InitFunds: sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), } - txConfig := authtx.NewTxConfig(nil, authtx.DefaultSignModes) + txConfig := authtx.NewTxConfig(MakeTestCodec(), authtx.DefaultSignModes) signModeHandler := txConfig.SignModeHandler() builder := txConfig.NewTxBuilder() builder.SetFeeAmount(nil) @@ -645,11 +636,11 @@ func TestMultiSigInMultiSig(t *testing.T) { builder.SetTimeoutHeight(0) _ = builder.SetMsgs(&sdkMsg) - multimultiSignBytes := getSignBytes(t, ctx, signModeHandler, builder, multimultisigAccount, multisigAccount) + multimultiSignBytes := getSignBytes(t, ctx, *signModeHandler, builder, multimultisigAccount, multisigAccount, &multimultisigAccount) multimultiSig := multisig.NewMultisig(3) // Sign by multisig - multiSignature := generateSignatures(t, ctx, signModeHandler, builder, multisigAccount, accounts, 3) + multiSignature := generateSignatures(t, ctx, *signModeHandler, builder, multisigAccount, accounts, 3, &multimultisigAccount) fmt.Printf("multisig sig: %v\n", multiSignature) // Sign by wallet A @@ -735,7 +726,8 @@ func TestMultiSigInMultiSigDifferentOrder(t *testing.T) { nonce := initMsgBz[0:32] sdkMsg := types.MsgInstantiateContract{ - Sender: multimultisigAccount.address, + Sender: multimultisigAccount.address, + SenderAddress: multimultisigAccount.address.String(), // Admin: nil, CodeID: codeID, Label: "demo contract 1", @@ -743,7 +735,7 @@ func TestMultiSigInMultiSigDifferentOrder(t *testing.T) { InitFunds: sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), } - txConfig := authtx.NewTxConfig(nil, authtx.DefaultSignModes) + txConfig := authtx.NewTxConfig(MakeTestCodec(), authtx.DefaultSignModes) signModeHandler := txConfig.SignModeHandler() builder := txConfig.NewTxBuilder() builder.SetFeeAmount(nil) @@ -751,11 +743,11 @@ func TestMultiSigInMultiSigDifferentOrder(t *testing.T) { builder.SetTimeoutHeight(0) _ = builder.SetMsgs(&sdkMsg) - multimultiSignBytes := getSignBytes(t, ctx, signModeHandler, builder, multimultisigAccount, multisigAccount) + multimultiSignBytes := getSignBytes(t, ctx, *signModeHandler, builder, multimultisigAccount, multisigAccount, &multimultisigAccount) multimultiSig := multisig.NewMultisig(3) // Sign by multisig - multiSignature := generateSignatures(t, ctx, signModeHandler, builder, multisigAccount, accounts, 3) + multiSignature := generateSignatures(t, ctx, *signModeHandler, builder, multisigAccount, accounts, 3, &multimultisigAccount) fmt.Printf("multisig sig: %v\n", multiSignature) // Sign by wallet A @@ -829,6 +821,7 @@ func TestInvalidKeyType(t *testing.T) { edPub := edKey.PubKey() edAddr := sdk.AccAddress(edPub.Address()) baseAcct := authtypes.NewBaseAccountWithAddress(edAddr) + baseAcct.SetAccountNumber(keeper.accountKeeper.NextAccountNumber(ctx)) coins := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) _ = baseAcct.SetPubKey(edPub) @@ -873,6 +866,7 @@ func TestInvalidKeyTypeInMultisig(t *testing.T) { edPub := edKey.PubKey() edAddr := sdk.AccAddress(edPub.Address()) baseAcct := authtypes.NewBaseAccountWithAddress(edAddr) + baseAcct.SetAccountNumber(keeper.accountKeeper.NextAccountNumber(ctx)) coins := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) _ = baseAcct.SetPubKey(edPub) @@ -916,7 +910,7 @@ func TestInvalidKeyTypeInMultisig(t *testing.T) { InitFunds: sdk.NewCoins(sdk.NewInt64Coin("denom", 0)), } - txConfig := authtx.NewTxConfig(nil, authtx.DefaultSignModes) + txConfig := authtx.NewTxConfig(MakeTestCodec(), authtx.DefaultSignModes) signModeHanler := txConfig.SignModeHandler() builder := txConfig.NewTxBuilder() builder.SetFeeAmount(nil) @@ -925,7 +919,7 @@ func TestInvalidKeyTypeInMultisig(t *testing.T) { _ = builder.SetMsgs(&sdkMsg) - multiSignature := generateSignatures(t, ctx, signModeHanler, builder, multisigPubkey, accounts, 3) + multiSignature := generateSignatures(t, ctx, *signModeHanler, builder, multisigPubkey, accounts, 3, nil) multisigAcc := keeper.accountKeeper.GetAccount(ctx, multisigPubkey.address.Bytes()) signature := sdksigning.SignatureV2{ @@ -1070,4 +1064,4 @@ func TestWrongContractAddress(t *testing.T) { } require.Error(t, err) require.Contains(t, err.Error(), "failed to verify transaction signature") -}*/ +} diff --git a/x/compute/internal/keeper/querier_test.go b/x/compute/internal/keeper/querier_test.go index 68b878a85..4f3f6fda3 100644 --- a/x/compute/internal/keeper/querier_test.go +++ b/x/compute/internal/keeper/querier_test.go @@ -13,8 +13,6 @@ import ( errorsmod "cosmossdk.io/errors" storetypes "cosmossdk.io/store/types" - // abci "github.com/cometbft/cometbft/abci/types" - sdk "github.com/cosmos/cosmos-sdk/types" sdkErrors "github.com/cosmos/cosmos-sdk/types/errors" authante "github.com/cosmos/cosmos-sdk/x/auth/ante" @@ -34,8 +32,8 @@ func TestQueryContractLabel(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 5000)) - creator, privCreator, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...), 1050) - anyAddr, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp, 1051) + creator, privCreator, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...)) + anyAddr, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) @@ -109,7 +107,6 @@ func TestQueryContractLabel(t *testing.T) { } } -/* func TestQueryContractState(t *testing.T) { t.SkipNow() // cannot interact directly with state @@ -124,8 +121,8 @@ func TestQueryContractState(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 5000)) - creator, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...), 10003) - anyAddr, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp, 10002) + creator, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...)) + anyAddr, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) @@ -164,62 +161,60 @@ func TestQueryContractState(t *testing.T) { keeper.importContractState(ctx, addr, contractModel) // this gets us full error, not redacted sdk.Error - q := NewLegacyQuerier(keeper) + q := NewGrpcQuerier(keeper) specs := map[string]struct { - srcPath []string - srcReq abci.RequestQuery + srcReq types.QuerySecretContractRequest // smart queries return raw bytes from contract not []types.Model // if this is set, then we just compare - (should be json encoded string) expSmartRes string // if success and expSmartRes is not set, we parse into []types.Model and compare expModelLen int expModelContains []types.Model - expErr *sdkErrors.Error + expErr *errorsmod.Error }{ "query": { - srcPath: []string{QueryGetContractState, addr.String()}, - srcReq: abci.RequestQuery{Data: []byte(`{"verifier":{}}`)}, + srcReq: types.QuerySecretContractRequest{ContractAddress: addr.String(), Query: []byte(`{"verifier":{}}`)}, expSmartRes: fmt.Sprintf(`{"verifier":"%s"}`, anyAddr.String()), }, "query invalid request": { - srcPath: []string{QueryGetContractState, addr.String()}, - srcReq: abci.RequestQuery{Data: []byte(`{"raw":{"key":"config"}}`)}, - expErr: types.ErrQueryFailed, + srcReq: types.QuerySecretContractRequest{ContractAddress: addr.String(), Query: []byte(`{"raw":{"key":"config"}}`)}, + expErr: types.ErrQueryFailed, }, - // "query raw key": { - // srcPath: []string{QueryGetContractState, addr.String(), QueryMethodContractStateRaw}, - // srcReq: abci.RequestQuery{Data: []byte("foo")}, - // expModelLen: 1, - // expModelContains: []types.Model{{Key: []byte("foo"), Value: []byte(`"bar"`)}}, - // }, - // "query raw binary key": { - // srcPath: []string{QueryGetContractState, addr.String(), QueryMethodContractStateRaw}, - // srcReq: abci.RequestQuery{Data: []byte{0x0, 0x1}}, - // expModelLen: 1, - // expModelContains: []types.Model{{Key: []byte{0x0, 0x1}, Value: []byte(`{"count":8}`)}}, - // }, + /* + "query raw key": { + srcPath: []string{QueryGetContractState, addr.String(), QueryMethodContractStateRaw}, + srcReq: abci.RequestQuery{Data: []byte("foo")}, + expModelLen: 1, + expModelContains: []types.Model{{Key: []byte("foo"), Value: []byte(`"bar"`)}}, + }, + "query raw binary key": { + srcPath: []string{QueryGetContractState, addr.String(), QueryMethodContractStateRaw}, + srcReq: abci.RequestQuery{Data: []byte{0x0, 0x1}}, + expModelLen: 1, + expModelContains: []types.Model{{Key: []byte{0x0, 0x1}, Value: []byte(`{"count":8}`)}}, + }, + */ "query smart": { - srcPath: []string{QueryGetContractState, addr.String(), QueryMethodContractStateSmart}, - srcReq: abci.RequestQuery{Data: []byte(`{"verifier":{}}`)}, + srcReq: types.QuerySecretContractRequest{ContractAddress: addr.String(), Query: []byte(`{"verifier":{}}`)}, expSmartRes: fmt.Sprintf(`{"verifier":"%s"}`, anyAddr.String()), }, "query smart invalid request": { - srcPath: []string{QueryGetContractState, addr.String(), QueryMethodContractStateSmart}, - srcReq: abci.RequestQuery{Data: []byte(`{"raw":{"key":"config"}}`)}, - expErr: types.ErrQueryFailed, + srcReq: types.QuerySecretContractRequest{ContractAddress: addr.String(), Query: []byte(`{"raw":{"key":"config"}}`)}, + expErr: types.ErrQueryFailed, }, "query smart with invalid json": { - srcPath: []string{QueryGetContractState, addr.String(), QueryMethodContractStateSmart}, - srcReq: abci.RequestQuery{Data: []byte(`not a json string`)}, - expErr: types.ErrQueryFailed, + srcReq: types.QuerySecretContractRequest{ContractAddress: addr.String(), Query: []byte(`not a json string`)}, + expErr: types.ErrQueryFailed, }, - // "query unknown raw key": { - // srcPath: []string{QueryGetContractState, addr.String(), QueryMethodContractStateRaw}, - // srcReq: abci.RequestQuery{Data: []byte("unknown")}, - // expModelLen: 0, - // }, + /* + "query unknown raw key": { + srcPath: []string{QueryGetContractState, addr.String(), QueryMethodContractStateRaw}, + srcReq: abci.RequestQuery{Data: []byte("unknown")}, + expModelLen: 0, + }, + */ "query with unknown address": { - srcPath: []string{QueryGetContractState, anyAddr.String()}, + srcReq: types.QuerySecretContractRequest{ContractAddress: anyAddr.String()}, expModelLen: 0, expErr: types.ErrNotFound, }, @@ -227,20 +222,20 @@ func TestQueryContractState(t *testing.T) { for msg, spec := range specs { t.Run(msg, func(t *testing.T) { - binResult, err := q(ctx, spec.srcPath, spec.srcReq) + binResult, err := q.QuerySecretContract(ctx, &spec.srcReq) // require.True(t, spec.expErr.Is(err), "unexpected error") require.True(t, spec.expErr.Is(err), err) // if smart query, check custom response if spec.expSmartRes != "" { - require.Equal(t, spec.expSmartRes, string(binResult)) + require.Equal(t, spec.expSmartRes, string(binResult.Data)) return } // otherwise, check returned models var r []types.Model if spec.expErr == nil { - require.NoError(t, json.Unmarshal(binResult, &r)) + require.NoError(t, json.Unmarshal(binResult.Data, &r)) require.NotNil(t, r) } require.Len(t, r, spec.expModelLen) @@ -251,7 +246,6 @@ func TestQueryContractState(t *testing.T) { }) } } -*/ func TestListContractByCodeOrdering(t *testing.T) { encodingConfig := MakeEncodingConfig() @@ -265,8 +259,8 @@ func TestListContractByCodeOrdering(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 1000000)) topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 500)) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 10005) - anyAddr, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp, 1054) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) + anyAddr, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, topUp) wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) require.NoError(t, err) diff --git a/x/compute/internal/keeper/recurse_test.go b/x/compute/internal/keeper/recurse_test.go index 8f5f81f56..3a4ff9d93 100644 --- a/x/compute/internal/keeper/recurse_test.go +++ b/x/compute/internal/keeper/recurse_test.go @@ -11,8 +11,6 @@ import ( storetypes "cosmossdk.io/store/types" - // abci "github.com/cometbft/cometbft/abci/types" - sdk "github.com/cosmos/cosmos-sdk/types" wasmTypes "github.com/scrtlabs/SecretNetwork/go-cosmwasm/types" @@ -65,7 +63,7 @@ func initRecurseContract(t *testing.T) (contract sdk.AccAddress, creator sdk.Acc realWasmQuerier = WasmQuerier(&keeper) deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, creatorPriv, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...), 9876) + creator, creatorPriv, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit.Add(deposit...)) // store the code wasmCode, err := os.ReadFile(TestContractPaths[hackAtomContract]) @@ -185,7 +183,6 @@ func TestGasCostOnQuery(t *testing.T) { } } -/* func TestGasOnExternalQuery(t *testing.T) { const ( // todo: tune gas numbers @@ -254,22 +251,20 @@ func TestGasOnExternalQuery(t *testing.T) { require.NoError(t, err) // do the query - path := []string{QueryGetContractState, contractAddr.String(), QueryMethodContractStateSmart} - req := abci.RequestQuery{Data: msg} if tc.expectPanic { require.Panics(t, func() { // this should run out of gas - _, err := NewLegacyQuerier(keeper)(ctx, path, req) + _, err := keeper.QuerySmart(ctx, contractAddr, msg, true) t.Logf("%v", err) }) } else { // otherwise, make sure we get a good success - _, err := NewLegacyQuerier(keeper)(ctx, path, req) + _, err := keeper.QuerySmart(ctx, contractAddr, msg, true) require.NoError(t, err) } }) } -}*/ +} func TestLimitRecursiveQueryGas(t *testing.T) { // The point of this test from https://github.com/CosmWasm/cosmwasm/issues/456 diff --git a/x/compute/internal/keeper/secret_contracts_exec_test.go b/x/compute/internal/keeper/secret_contracts_exec_test.go index 03954e3c6..3c116feb1 100644 --- a/x/compute/internal/keeper/secret_contracts_exec_test.go +++ b/x/compute/internal/keeper/secret_contracts_exec_test.go @@ -1355,8 +1355,8 @@ func TestSendFunds(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), 4001) - receivingWallet, _, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(), 4002) + fundingWallet, fundingWalletPrivKey, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, stringToCoins(test.balancesBefore)) + receivingWallet, _, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins()) // verify that the account was funded correctly fundingWalletCoinsBefore := keeper.bankKeeper.GetAllBalances(ctx, fundingWallet) @@ -2328,7 +2328,7 @@ func TestCheckGas(t *testing.T) { gasUsed, err2 := strconv.ParseUint(execEvent[1].Value, 10, 64) require.Empty(t, err2) - require.Equal(t, baseGasUsed-baseContractUsage, gasUsed+4) + require.Equal(t, baseGasUsed-baseContractUsage, gasUsed+3) } func TestConsumeExact(t *testing.T) { @@ -2337,7 +2337,7 @@ func TestConsumeExact(t *testing.T) { require.Empty(t, initErr) // not sure where the 16 extra gas comes vs the previous check_gas test, but it makes everything play nice, so.... - baseContractUsage := types.InstanceCost + 1031 - 13 + baseContractUsage := types.InstanceCost + 1031 - 14 for _, test := range []struct { description string diff --git a/x/compute/internal/keeper/secret_contracts_init_test.go b/x/compute/internal/keeper/secret_contracts_init_test.go index 870c21894..9b50881cd 100644 --- a/x/compute/internal/keeper/secret_contracts_init_test.go +++ b/x/compute/internal/keeper/secret_contracts_init_test.go @@ -531,7 +531,7 @@ func TestWasmTooHighInitialMemoryStaticFail(t *testing.T) { ctx, keepers := CreateTestInput(t, false, SupportedFeatures, &encoders, nil) accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper - walletA, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 1)), 3001) + walletA, _, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 1))) wasmCode, err := os.ReadFile(TestContractPaths[staticTooHighMemoryContract]) require.NoError(t, err) diff --git a/x/compute/internal/keeper/secret_contracts_migrate_test.go b/x/compute/internal/keeper/secret_contracts_migrate_test.go index 1645a36ca..8a8f68b23 100644 --- a/x/compute/internal/keeper/secret_contracts_migrate_test.go +++ b/x/compute/internal/keeper/secret_contracts_migrate_test.go @@ -1288,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), 9912) - receivingWallet, _, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins(), 9913) + fundingWallet, fundingWalletPrivKey, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, stringToCoins(test.balancesBefore)) + receivingWallet, _, _ := CreateFakeFundedAccount(ctx, keeper.accountKeeper, keeper.bankKeeper, sdk.NewCoins()) // verify that the account was funded correctly fundingWalletCoinsBefore := keeper.bankKeeper.GetAllBalances(ctx, fundingWallet) diff --git a/x/compute/internal/keeper/secret_contracts_utils_test.go b/x/compute/internal/keeper/secret_contracts_utils_test.go index 21b7099f7..d272d0fee 100644 --- a/x/compute/internal/keeper/secret_contracts_utils_test.go +++ b/x/compute/internal/keeper/secret_contracts_utils_test.go @@ -131,8 +131,8 @@ func setupBasicTest(t *testing.T, additionalCoinsInWallets sdk.Coins) (sdk.Conte ctx, keepers := CreateTestInput(t, false, SupportedFeatures, &encoders, nil) accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper - walletA, privKeyA, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 200000)).Add(additionalCoinsInWallets...), 2021) - walletB, privKeyB, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 5000)).Add(additionalCoinsInWallets...), 2022) + walletA, privKeyA, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 200000)).Add(additionalCoinsInWallets...)) + walletB, privKeyB, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 5000)).Add(additionalCoinsInWallets...)) return ctx, keeper, walletA, privKeyA, walletB, privKeyB } @@ -413,32 +413,12 @@ func queryHelperImpl( // events from past calls gasMeter := &WasmCounterGasMeter{0, stypes.NewGasMeter(gas)} - kvGasConfig := stypes.GasConfig{ - HasCost: 100, - DeleteCost: 100, - ReadCostFlat: 100, - ReadCostPerByte: 1, - WriteCostFlat: 200, - WriteCostPerByte: 5, - IterNextCostFlat: 5, - } - - transientGasConfig := stypes.GasConfig{ - HasCost: 10, - DeleteCost: 10, - ReadCostFlat: 10, - ReadCostPerByte: 0, - WriteCostFlat: 20, - WriteCostPerByte: 1, - IterNextCostFlat: 1, - } - ctx = sdk.NewContext( ctx.MultiStore(), ctx.BlockHeader(), ctx.IsCheckTx(), log.NewNopLogger(), - ).WithGasMeter(gasMeter).WithKVGasConfig(kvGasConfig).WithTransientKVGasConfig(transientGasConfig) + ).WithGasMeter(gasMeter) resultCipherBz, err := keeper.QuerySmart(ctx, contractAddr, queryBz, false) @@ -612,32 +592,12 @@ func execTxBuilderImpl( // events from past calls gasMeter := &WasmCounterGasMeter{0, stypes.NewGasMeter(gas)} - kvGasConfig := stypes.GasConfig{ - HasCost: 100, - DeleteCost: 100, - ReadCostFlat: 100, - ReadCostPerByte: 1, - WriteCostFlat: 200, - WriteCostPerByte: 5, - IterNextCostFlat: 5, - } - - transientGasConfig := stypes.GasConfig{ - HasCost: 10, - DeleteCost: 10, - ReadCostFlat: 10, - ReadCostPerByte: 0, - WriteCostFlat: 20, - WriteCostPerByte: 1, - IterNextCostFlat: 1, - } - ctx = sdk.NewContext( ctx.MultiStore(), ctx.BlockHeader(), ctx.IsCheckTx(), log.NewNopLogger(), - ).WithGasMeter(gasMeter).WithKVGasConfig(kvGasConfig).WithTransientKVGasConfig(transientGasConfig) + ).WithGasMeter(gasMeter) ctx = PrepareExecSignedTxWithMultipleMsgs(t, keeper, ctx, txSender, senderPrivKey, secretMsgsBz, contractAddress, coins) @@ -757,32 +717,12 @@ func initHelperImpl( // events from past calls gasMeter := &WasmCounterGasMeter{0, stypes.NewGasMeter(gas)} - kvGasConfig := stypes.GasConfig{ - HasCost: 100, - DeleteCost: 100, - ReadCostFlat: 100, - ReadCostPerByte: 1, - WriteCostFlat: 200, - WriteCostPerByte: 5, - IterNextCostFlat: 5, - } - - transientGasConfig := stypes.GasConfig{ - HasCost: 10, - DeleteCost: 10, - ReadCostFlat: 10, - ReadCostPerByte: 0, - WriteCostFlat: 20, - WriteCostPerByte: 1, - IterNextCostFlat: 1, - } - ctx = sdk.NewContext( ctx.MultiStore(), ctx.BlockHeader(), ctx.IsCheckTx(), log.NewNopLogger(), - ).WithGasMeter(gasMeter).WithKVGasConfig(kvGasConfig).WithTransientKVGasConfig(transientGasConfig) + ).WithGasMeter(gasMeter) ctx = PrepareInitSignedTx(t, keeper, ctx, creator, admin, creatorPrivKey, initMsgBz, codeID, sentFunds) // make the label a random base64 string, because why not? @@ -885,32 +825,12 @@ func migrateHelper( // events from past calls gasMeter := &WasmCounterGasMeter{0, stypes.NewGasMeter(gas)} - kvGasConfig := stypes.GasConfig{ - HasCost: 100, - DeleteCost: 100, - ReadCostFlat: 100, - ReadCostPerByte: 1, - WriteCostFlat: 200, - WriteCostPerByte: 5, - IterNextCostFlat: 5, - } - - transientGasConfig := stypes.GasConfig{ - HasCost: 10, - DeleteCost: 10, - ReadCostFlat: 10, - ReadCostPerByte: 0, - WriteCostFlat: 20, - WriteCostPerByte: 1, - IterNextCostFlat: 1, - } - ctx = sdk.NewContext( ctx.MultiStore(), ctx.BlockHeader(), ctx.IsCheckTx(), log.NewNopLogger(), - ).WithGasMeter(gasMeter).WithKVGasConfig(kvGasConfig).WithTransientKVGasConfig(transientGasConfig) + ).WithGasMeter(gasMeter) ctx = prepareMigrateSignedTx(t, keeper, ctx, contractAddress.String(), txSender, senderPrivKey, migrateMsgBz, newCodeId) @@ -989,32 +909,12 @@ func updateAdminHelper( // events from past calls gasMeter := &WasmCounterGasMeter{0, stypes.NewGasMeter(gas)} - kvGasConfig := stypes.GasConfig{ - HasCost: 100, - DeleteCost: 100, - ReadCostFlat: 100, - ReadCostPerByte: 1, - WriteCostFlat: 200, - WriteCostPerByte: 5, - IterNextCostFlat: 5, - } - - transientGasConfig := stypes.GasConfig{ - HasCost: 10, - DeleteCost: 10, - ReadCostFlat: 10, - ReadCostPerByte: 0, - WriteCostFlat: 20, - WriteCostPerByte: 1, - IterNextCostFlat: 1, - } - ctx = sdk.NewContext( ctx.MultiStore(), ctx.BlockHeader(), ctx.IsCheckTx(), log.NewNopLogger(), - ).WithGasMeter(gasMeter).WithKVGasConfig(kvGasConfig).WithTransientKVGasConfig(transientGasConfig) + ).WithGasMeter(gasMeter) if newAdmin.Empty() { ctx = prepareClearAdminSignedTx(t, keeper, ctx, contractAddress.String(), sender, senderPrivkey) @@ -1110,31 +1010,12 @@ func fakeUpdateAdminHelper( // events from past calls gasMeter := &WasmCounterGasMeter{0, stypes.NewGasMeter(gas)} - kvGasConfig := stypes.GasConfig{ - HasCost: 100, - DeleteCost: 100, - ReadCostFlat: 100, - ReadCostPerByte: 1, - WriteCostFlat: 200, - WriteCostPerByte: 5, - IterNextCostFlat: 5, - } - - transientGasConfig := stypes.GasConfig{ - HasCost: 10, - DeleteCost: 10, - ReadCostFlat: 10, - ReadCostPerByte: 0, - WriteCostFlat: 20, - WriteCostPerByte: 1, - IterNextCostFlat: 1, - } ctx = sdk.NewContext( ctx.MultiStore(), ctx.BlockHeader(), ctx.IsCheckTx(), log.NewNopLogger(), - ).WithGasMeter(gasMeter).WithKVGasConfig(kvGasConfig).WithTransientKVGasConfig(transientGasConfig) + ).WithGasMeter(gasMeter) if newAdmin.Empty() { ctx = prepareClearAdminSignedTx(t, keeper, ctx, contractAddress.String(), sender, senderPrivkey) @@ -1316,31 +1197,12 @@ func fakeMigrateHelper( // events from past calls gasMeter := &WasmCounterGasMeter{0, stypes.NewGasMeter(gas)} - kvGasConfig := stypes.GasConfig{ - HasCost: 100, - DeleteCost: 100, - ReadCostFlat: 100, - ReadCostPerByte: 1, - WriteCostFlat: 200, - WriteCostPerByte: 5, - IterNextCostFlat: 5, - } - - transientGasConfig := stypes.GasConfig{ - HasCost: 10, - DeleteCost: 10, - ReadCostFlat: 10, - ReadCostPerByte: 0, - WriteCostFlat: 20, - WriteCostPerByte: 1, - IterNextCostFlat: 1, - } ctx = sdk.NewContext( ctx.MultiStore(), ctx.BlockHeader(), ctx.IsCheckTx(), log.NewNopLogger(), - ).WithGasMeter(gasMeter).WithKVGasConfig(kvGasConfig).WithTransientKVGasConfig(transientGasConfig) + ).WithGasMeter(gasMeter) ctx = prepareMigrateSignedTx(t, keeper, ctx, contractAddress.String(), txSender, senderPrivKey, migrateMsgBz, newCodeId) diff --git a/x/compute/internal/keeper/staking_test.go b/x/compute/internal/keeper/staking_test.go index 153aca7c6..912cdf711 100644 --- a/x/compute/internal/keeper/staking_test.go +++ b/x/compute/internal/keeper/staking_test.go @@ -113,7 +113,7 @@ func TestInitializeStaking(t *testing.T) { assert.Equal(t, v.GetDelegatorShares(), math.LegacyNewDec(1234567)) deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000), sdk.NewInt64Coin("stake", 500000)) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 5000) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) // upload staking derivates code stakingCode, err := os.ReadFile("./testdata/staking.wasm") @@ -207,7 +207,7 @@ func initializeStaking(t *testing.T) initInfo { assert.Equal(t, v.Status, stakingtypes.Bonded) deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000), sdk.NewInt64Coin(sdk.DefaultBondDenom, 500000)) - creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit, 5001) + creator, creatorPrivKey, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, deposit) // upload staking derivates code stakingCode, err := os.ReadFile("./testdata/staking.wasm") @@ -279,7 +279,7 @@ func TestBonding(t *testing.T) { // bob has 160k, putting 80k into the contract full := sdk.NewCoins(sdk.NewInt64Coin("stake", 160000)) funds := sdk.NewCoins(sdk.NewInt64Coin("stake", 80000)) - bob, privBob, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, full, 5002) + bob, privBob, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, full) // check contract state before assertBalance(t, ctx, keeper, contractAddr, bob, "0") @@ -331,7 +331,7 @@ func TestUnbonding(t *testing.T) { // bob has 160k, putting 80k into the contract full := sdk.NewCoins(sdk.NewInt64Coin("stake", 160000)) funds := sdk.NewCoins(sdk.NewInt64Coin("stake", 80000)) - bob, privBob, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, full, 5003) + bob, privBob, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, full) bond := StakingHandleMsg{ Bond: &struct{}{}, @@ -405,7 +405,7 @@ func TestReinvest(t *testing.T) { // full is 2x funds, 1x goes to the contract, other stays on his wallet full := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 400000)) funds := sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, 200000)) - bob, privBob, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, full, 5004) + bob, privBob, _ := CreateFakeFundedAccount(ctx, accKeeper, keeper.bankKeeper, full) // we will stake 200k to a validator with 1M self-bond // this means we should get 1/6 of the rewards @@ -466,7 +466,7 @@ func TestReinvest(t *testing.T) { // adds a few validators and returns a list of validators that are registered func addValidator(ctx sdk.Context, stakingKeeper stakingkeeper.Keeper, accountKeeper authkeeper.AccountKeeper, bankKeeper bankkeeper.Keeper, value sdk.Coin) sdk.ValAddress { - accAddr, _, pub := CreateFakeFundedAccount(ctx, accountKeeper, bankKeeper, sdk.Coins{value}, 6000) + accAddr, _, pub := CreateFakeFundedAccount(ctx, accountKeeper, bankKeeper, sdk.Coins{value}) addr := sdk.ValAddress(accAddr) diff --git a/x/compute/internal/keeper/test_common.go b/x/compute/internal/keeper/test_common.go index 6cc9849a8..8fe27f15e 100644 --- a/x/compute/internal/keeper/test_common.go +++ b/x/compute/internal/keeper/test_common.go @@ -1,7 +1,6 @@ package keeper import ( - // "context" "crypto/rand" "crypto/sha256" "encoding/binary" @@ -19,8 +18,8 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/vesting" authz "github.com/cosmos/cosmos-sdk/x/authz/module" - // "github.com/scrtlabs/SecretNetwork/go-cosmwasm/api" "github.com/cosmos/gogoproto/proto" + "github.com/scrtlabs/SecretNetwork/go-cosmwasm/api" scrt "github.com/scrtlabs/SecretNetwork/types" cosmwasm "github.com/scrtlabs/SecretNetwork/go-cosmwasm/types" @@ -41,18 +40,17 @@ import ( "github.com/cosmos/ibc-go/v8/modules/apps/transfer" ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" - // // ibcclient "github.com/cosmos/ibc-go/v8/modules/core/02-client/client" ibchost "github.com/cosmos/ibc-go/v8/modules/core/exported" ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" "github.com/stretchr/testify/require" - // tmenclave "github.com/scrtlabs/tm-secret-enclave" errorsmod "cosmossdk.io/errors" "cosmossdk.io/log" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" tmtypes "github.com/cometbft/cometbft/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + tmenclave "github.com/scrtlabs/tm-secret-enclave" dbm "github.com/cosmos/cosmos-db" @@ -62,7 +60,6 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" crypto "github.com/cosmos/cosmos-sdk/crypto/types" - // // simappparams "github.com/cosmos/cosmos-sdk/simapp/params" "cosmossdk.io/store" "cosmossdk.io/store/metrics" storetypes "cosmossdk.io/store/types" @@ -93,7 +90,6 @@ import ( crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" "github.com/cosmos/cosmos-sdk/x/distribution" - // // distrclient "github.com/cosmos/cosmos-sdk/x/distribution/client" distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" @@ -121,7 +117,6 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "cosmossdk.io/x/upgrade" - // // upgradeclient "cosmossdk.io/x/upgrade/client" wasmtypes "github.com/scrtlabs/SecretNetwork/x/compute/internal/types" "github.com/scrtlabs/SecretNetwork/x/registration" @@ -355,31 +350,11 @@ func CreateTestInput(t *testing.T, isCheckTx bool, supportedFeatures string, enc require.NoError(t, ms.LoadLatestVersion()) - kvGasConfig := storetypes.GasConfig{ - HasCost: 100, - DeleteCost: 100, - ReadCostFlat: 100, - ReadCostPerByte: 1, - WriteCostFlat: 200, - WriteCostPerByte: 5, - IterNextCostFlat: 5, - } - - transientGasConfig := storetypes.GasConfig{ - HasCost: 10, - DeleteCost: 10, - ReadCostFlat: 10, - ReadCostPerByte: 0, - WriteCostFlat: 20, - WriteCostPerByte: 1, - IterNextCostFlat: 1, - } - ctx := sdk.NewContext(ms, tmproto.Header{ Height: 1234567, Time: time.Date(2020, time.April, 22, 12, 0, 0, 0, time.UTC), ChainID: TestConfig.ChainID, - }, isCheckTx, log.NewNopLogger()).WithKVGasConfig(kvGasConfig).WithTransientKVGasConfig(transientGasConfig) + }, isCheckTx, log.NewNopLogger()) encodingConfig := MakeEncodingConfig() paramsKeeper := paramskeeper.NewKeeper( encodingConfig.Codec, @@ -407,7 +382,6 @@ func CreateTestInput(t *testing.T, isCheckTx bool, supportedFeatures string, enc stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, govtypes.ModuleName: {authtypes.Burner}, } - // authSubsp, _ := paramsKeeper.GetSubspace(authtypes.ModuleName) authKeeper := authkeeper.NewAccountKeeper( encodingConfig.Codec, runtime.NewKVStoreService(keys[authtypes.StoreKey]), // target store @@ -496,13 +470,13 @@ func CreateTestInput(t *testing.T, isCheckTx bool, supportedFeatures string, enc bondPool := authtypes.NewEmptyModuleAccount(stakingtypes.BondedPoolName, authtypes.Burner, authtypes.Staking) feeCollectorAcc := authtypes.NewEmptyModuleAccount(authtypes.FeeCollectorName) - err = distrAcc.SetAccountNumber(10001) + err = distrAcc.SetAccountNumber(authKeeper.NextAccountNumber(ctx)) require.NoError(t, err) - err = bondPool.SetAccountNumber(10002) + err = bondPool.SetAccountNumber(authKeeper.NextAccountNumber(ctx)) require.NoError(t, err) - err = notBondedPool.SetAccountNumber(10003) + err = notBondedPool.SetAccountNumber(authKeeper.NextAccountNumber(ctx)) require.NoError(t, err) - err = feeCollectorAcc.SetAccountNumber(10004) + err = feeCollectorAcc.SetAccountNumber(authKeeper.NextAccountNumber(ctx)) require.NoError(t, err) authKeeper.SetModuleAccount(ctx, distrAcc) @@ -513,19 +487,9 @@ func CreateTestInput(t *testing.T, isCheckTx bool, supportedFeatures string, enc err = bankKeeper.SendCoinsFromModuleToModule(ctx, faucetAccountName, stakingtypes.NotBondedPoolName, totalSupply) require.NoError(t, err) - // router := baseapp.NewRouter() - // bh := bank.NewHandler(bankKeeper) - // router.AddRoute(sdk.NewRoute(banktypes.RouterKey, bh)) - // sh := staking.NewHandler(stakingKeeper) - // router.AddRoute(sdk.NewRoute(stakingtypes.RouterKey, sh)) - // dh := distribution.NewHandler(distKeeper) - // router.AddRoute(sdk.NewRoute(distrtypes.RouterKey, dh)) - govRouter := govv1beta1.NewRouter(). AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler). AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(paramsKeeper)) - // AddRoute(distrtypes.RouterKey, distribution.NewCommunityPoolSpendProposalHandler(distKeeper)) - // AddRoute(wasmtypes.RouterKey, NewWasmProposalHandler(keeper, wasmtypes.EnableAllProposals)) queryRouter := baseapp.NewGRPCQueryRouter() queryRouter.SetInterfaceRegistry(encodingConfig.InterfaceRegistry) @@ -540,7 +504,6 @@ func CreateTestInput(t *testing.T, isCheckTx bool, supportedFeatures string, enc // bank := bankKeeper. // bk := bank.Keeper(bankKeeper) - // mintSubsp, _ := paramsKeeper.GetSubspace(minttypes.ModuleName) mintKeeper := mintkeeper.NewKeeper(encodingConfig.Codec, runtime.NewKVStoreService(keys[minttypes.StoreKey]), stakingKeeper, authKeeper, bankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String()) err = mintKeeper.Minter.Set(ctx, minttypes.DefaultInitialMinter()) require.NoError(t, err) @@ -552,8 +515,6 @@ func CreateTestInput(t *testing.T, isCheckTx bool, supportedFeatures string, enc require.NoError(t, err) err = govKeeper.Params.Set(ctx, govv1.DefaultParams()) require.NoError(t, err) - // gh := gov.NewHandler(govKeeper) - // router.AddRoute(sdk.NewRoute(govtypes.RouterKey, gh)) // Load default wasm config wasmConfig := wasmtypes.DefaultWasmConfig() @@ -630,7 +591,6 @@ func CreateTestInput(t *testing.T, isCheckTx bool, supportedFeatures string, enc MockIBCTransferKeeper{}, ibcKeeper.ChannelKeeper, nil, - // router, msgRouter, queryRouter, tempDir, @@ -642,7 +602,6 @@ func CreateTestInput(t *testing.T, isCheckTx bool, supportedFeatures string, enc ) // keeper.setParams(ctx, wasmtypes.DefaultParams()) // add wasm handler so we can loop-back (contracts calling contracts) - // router.AddRoute(sdk.NewRoute(wasmtypes.RouterKey, TestHandler(keeper))) random := make([]byte, 32) _, _ = rand.Read(random) @@ -998,11 +957,11 @@ func NewTestTxMultiple(ctx sdk.Context, msgs []sdk.Msg, creatorAccs []sdk.Accoun return newTx.GetProtoTx() } -func CreateFakeFundedAccount(ctx sdk.Context, am authkeeper.AccountKeeper, bk bankkeeper.Keeper, coins sdk.Coins, accountNumber uint64) (sdk.AccAddress, crypto.PrivKey, crypto.PubKey) { +func CreateFakeFundedAccount(ctx sdk.Context, am authkeeper.AccountKeeper, bk bankkeeper.Keeper, coins sdk.Coins) (sdk.AccAddress, crypto.PrivKey, crypto.PubKey) { priv, pub, addr := keyPubAddr() baseAcct := authtypes.NewBaseAccountWithAddress(addr) _ = baseAcct.SetPubKey(pub) - err := baseAcct.SetAccountNumber(accountNumber) + err := baseAcct.SetAccountNumber(am.NextAccountNumber(ctx)) if err != nil { ctx.Logger().Error("SetAccountNumber", "account", err.Error()) } @@ -1061,7 +1020,51 @@ type protoTxProvider interface { // return protoProvider.GetProtoTx(), nil //} -/* +func MakeCommit(blockID tmtypes.BlockID, height int64, round int32, valSet *tmtypes.ValidatorSet, privVals []tmtypes.PrivValidator, chainID string, now time.Time) (*tmtypes.Commit, error) { + sigs := make([]tmtypes.CommitSig, len(valSet.Validators)) + for i := 0; i < len(valSet.Validators); i++ { + sigs[i] = tmtypes.NewCommitSigAbsent() + } + + for _, privVal := range privVals { + pk, err := privVal.GetPubKey() + if err != nil { + return nil, err + } + addr := pk.Address() + + idx, _ := valSet.GetByAddress(addr) + if idx < 0 { + return nil, fmt.Errorf("validator with address %s not in validator set", addr) + } + + vote := &tmtypes.Vote{ + ValidatorAddress: addr, + ValidatorIndex: idx, + Height: height, + Round: round, + Type: tmproto.PrecommitType, + BlockID: blockID, + Timestamp: now, + } + + v := vote.ToProto() + + if err := privVal.SignVote(chainID, v); err != nil { + return nil, err + } + + sigs[idx] = tmtypes.CommitSig{ + BlockIDFlag: tmtypes.BlockIDFlagCommit, + ValidatorAddress: addr, + Timestamp: now, + Signature: v.Signature, + } + } + + return &tmtypes.Commit{Height: height, Round: round, BlockID: blockID, Signatures: sigs}, nil +} + func updateLightClientHelper(t *testing.T, ctx sdk.Context) { blockData := tmproto.Data{ Txs: [][]byte{ctx.TxBytes()}, @@ -1073,8 +1076,8 @@ func updateLightClientHelper(t *testing.T, ctx sdk.Context) { blockId := makeBlockIDRandom() - voteSet, valSet, vals := randVoteSet(ctx, 0, tmproto.PrecommitType, 1, 1) - commit, err := tmtypes.MakeCommit(blockId, blockHeader.Height, 0, voteSet, vals, time.Now()) + valSet, privValidators := tmtypes.RandValidatorSet(1, 1) + commit, err := MakeCommit(blockId, blockHeader.Height, 0, valSet, privValidators, ctx.ChainID(), time.Now()) require.NoError(t, err) commitBz, err := commit.ToProto().Marshal() @@ -1107,17 +1110,6 @@ func updateLightClientHelper(t *testing.T, ctx sdk.Context) { _, err = api.SubmitBlockSignatures(headerBz, commitBz, dataBz, randomAndProofBz) require.NoError(t, err) -}*/ - -func randVoteSet( - ctx sdk.Context, - round int32, - signedMsgType tmproto.SignedMsgType, - numValidators int, - votingPower int64, -) (*tmtypes.VoteSet, *tmtypes.ValidatorSet, []tmtypes.PrivValidator) { - valSet, privValidators := tmtypes.RandValidatorSet(numValidators, votingPower) - return tmtypes.NewVoteSet(ctx.ChainID(), ctx.BlockHeight(), round, signedMsgType, valSet), valSet, privValidators } func makeBlockIDRandom() tmtypes.BlockID {