diff --git a/aclmapping/dependency_generator.go b/aclmapping/dependency_generator.go index beec9783a8..3b276cdaf4 100644 --- a/aclmapping/dependency_generator.go +++ b/aclmapping/dependency_generator.go @@ -4,6 +4,7 @@ import ( aclkeeper "github.com/cosmos/cosmos-sdk/x/accesscontrol/keeper" aclbankmapping "github.com/sei-protocol/sei-chain/aclmapping/bank" acldexmapping "github.com/sei-protocol/sei-chain/aclmapping/dex" + acltokenfactorymapping "github.com/sei-protocol/sei-chain/aclmapping/tokenfactory" aclwasmmapping "github.com/sei-protocol/sei-chain/aclmapping/wasm" ) @@ -15,11 +16,12 @@ func NewCustomDependencyGenerator() CustomDependencyGenerator { func (customDepGen CustomDependencyGenerator) GetCustomDependencyGenerators() aclkeeper.DependencyGeneratorMap { dependencyGeneratorMap := make(aclkeeper.DependencyGeneratorMap) - - dependencyGeneratorMap.Merge(acldexmapping.GetDexDependencyGenerators()) - dependencyGeneratorMap.Merge(aclbankmapping.GetBankDepedencyGenerator()) wasmDependencyGenerators := aclwasmmapping.NewWasmDependencyGenerator() - dependencyGeneratorMap.Merge(wasmDependencyGenerators.GetWasmDependencyGenerators()) + + dependencyGeneratorMap = dependencyGeneratorMap.Merge(acldexmapping.GetDexDependencyGenerators()) + dependencyGeneratorMap = dependencyGeneratorMap.Merge(aclbankmapping.GetBankDepedencyGenerator()) + dependencyGeneratorMap = dependencyGeneratorMap.Merge(acltokenfactorymapping.GetTokenFactoryDependencyGenerators()) + dependencyGeneratorMap = dependencyGeneratorMap.Merge(wasmDependencyGenerators.GetWasmDependencyGenerators()) return dependencyGeneratorMap } diff --git a/aclmapping/tokenfactory/mappings.go b/aclmapping/tokenfactory/mappings.go new file mode 100644 index 0000000000..0eda913365 --- /dev/null +++ b/aclmapping/tokenfactory/mappings.go @@ -0,0 +1,152 @@ +package aclTokenFactorymapping + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkacltypes "github.com/cosmos/cosmos-sdk/types/accesscontrol" + aclkeeper "github.com/cosmos/cosmos-sdk/x/accesscontrol/keeper" + acltypes "github.com/cosmos/cosmos-sdk/x/accesscontrol/types" + utils "github.com/sei-protocol/sei-chain/aclmapping/utils" + tokenfactorymoduletypes "github.com/sei-protocol/sei-chain/x/tokenfactory/types" +) + +var ErrInvalidMessageType = fmt.Errorf("invalid message received for TokenFactory Module") + +func GetTokenFactoryDependencyGenerators() aclkeeper.DependencyGeneratorMap { + dependencyGeneratorMap := make(aclkeeper.DependencyGeneratorMap) + MintMsgKey := acltypes.GenerateMessageKey(&tokenfactorymoduletypes.MsgMint{}) + dependencyGeneratorMap[MintMsgKey] = TokenFactoryMintDependencyGenerator + + BurnMsgKey := acltypes.GenerateMessageKey(&tokenfactorymoduletypes.MsgBurn{}) + dependencyGeneratorMap[BurnMsgKey] = TokenFactoryBurnDependencyGenerator + + return dependencyGeneratorMap +} + +func TokenFactoryMintDependencyGenerator(keeper aclkeeper.Keeper, ctx sdk.Context, msg sdk.Msg) ([]sdkacltypes.AccessOperation, error) { + mintMsg, ok := msg.(*tokenfactorymoduletypes.MsgMint) + if !ok { + return []sdkacltypes.AccessOperation{}, ErrInvalidMessageType + } + + denom := mintMsg.GetAmount().Denom + return []sdkacltypes.AccessOperation{ + // Reads denom data From BankKeeper + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: denom, + }, + + // Gets Authoritity data related to the denom + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule(utils.TOKENFACTORY, denom), + }, + + // Gets Module Account information + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule(utils.AUTH, tokenfactorymoduletypes.ModuleName), + }, + + // Sends coins to module account - deferred deposit + + // Updates Supply of the denom + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: utils.GetPrefixedIdentifierTemplatePerModule(utils.BANK, "supply", denom), + }, + { + AccessType: sdkacltypes.AccessType_WRITE, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: utils.GetPrefixedIdentifierTemplatePerModule(utils.BANK, "supply", denom), + }, + + // Sends coins to the msgSender from the Module Account (deferred withdrawal) + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule(utils.BANK, mintMsg.Sender), + }, + { + AccessType: sdkacltypes.AccessType_WRITE, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule(utils.BANK, mintMsg.Sender), + }, + }, nil +} + +func TokenFactoryBurnDependencyGenerator(keeper aclkeeper.Keeper, ctx sdk.Context, msg sdk.Msg) ([]sdkacltypes.AccessOperation, error) { + burnMsg, ok := msg.(*tokenfactorymoduletypes.MsgBurn) + if !ok { + return []sdkacltypes.AccessOperation{}, ErrInvalidMessageType + } + + denom := burnMsg.GetAmount().Denom + return []sdkacltypes.AccessOperation{ + // Reads denom data From BankKeeper + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: denom, + }, + + // Gets Authoritity data related to the denom + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV_TOKENFACTORY, + IdentifierTemplate: denom, + }, + + // Gets Module Account information + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule(utils.AUTH, tokenfactorymoduletypes.ModuleName), + }, + + // Sends from Sender to Module account (deferred deposit) + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule(utils.BANK, burnMsg.Sender), + }, + { + AccessType: sdkacltypes.AccessType_WRITE, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule(utils.BANK, burnMsg.Sender), + }, + + // Sends coins to the msgSender + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule(utils.BANK, burnMsg.Sender), + }, + { + AccessType: sdkacltypes.AccessType_WRITE, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule(utils.BANK, burnMsg.Sender), + }, + + // Coins removed from Module account (Deferred) + + // Updates Supply of the denom - they should be under the supply prefix - this should always be + // synchronous + { + AccessType: sdkacltypes.AccessType_READ, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule("supply", denom), + }, + { + AccessType: sdkacltypes.AccessType_WRITE, + ResourceType: sdkacltypes.ResourceType_KV_BANK, + IdentifierTemplate: utils.GetIdentifierTemplatePerModule("supply", denom), + }, + }, nil +} diff --git a/aclmapping/utils/identifier_templates.go b/aclmapping/utils/identifier_templates.go index 3098e33742..546e816fdb 100644 --- a/aclmapping/utils/identifier_templates.go +++ b/aclmapping/utils/identifier_templates.go @@ -12,6 +12,7 @@ const ( BANK = "bank" AUTH = "auth" STAKING = "staking" + TOKENFACTORY = "tokenfactory" DefaultIDTemplate = "*" ) diff --git a/go.mod b/go.mod index 72b2d3097b..6decc4a6eb 100644 --- a/go.mod +++ b/go.mod @@ -131,7 +131,7 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/sei-protocol/sei-cosmos v0.1.192 + github.com/cosmos/cosmos-sdk => github.com/sei-protocol/sei-cosmos v0.1.194 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/keybase/go-keychain => github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 github.com/tendermint/tendermint => github.com/sei-protocol/sei-tendermint v0.1.59 diff --git a/go.sum b/go.sum index ff4bb4d040..f895f19eac 100644 --- a/go.sum +++ b/go.sum @@ -1098,8 +1098,8 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/securego/gosec/v2 v2.11.0/go.mod h1:SX8bptShuG8reGC0XS09+a4H2BoWSJi+fscA+Pulbpo= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= -github.com/sei-protocol/sei-cosmos v0.1.192 h1:qrrzr2qHrj7zMDmU7KizOjlXm2uLROUtz8ogEYSxfSE= -github.com/sei-protocol/sei-cosmos v0.1.192/go.mod h1:8ccWQxpBkWbpvBos/T4QO9K9gQxFs0duTqKRnagKo+0= +github.com/sei-protocol/sei-cosmos v0.1.194 h1:6vm3HlPY1ErGu0s+V9zLX7lYowSmj4u0vUL2W65KVcs= +github.com/sei-protocol/sei-cosmos v0.1.194/go.mod h1:8ccWQxpBkWbpvBos/T4QO9K9gQxFs0duTqKRnagKo+0= github.com/sei-protocol/sei-tendermint v0.1.59 h1:POGL60PumMQHF4EzAHzvkGfDnodQJLHpl65LuiwSO/Y= github.com/sei-protocol/sei-tendermint v0.1.59/go.mod h1:Olwbjyagrpoxj5DAUhHxMTWDVEfQ3FYdpypaJ3+6Hs8= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= diff --git a/loadtest/config.json b/loadtest/config.json index 71dfde2c71..d8729f6b7e 100644 --- a/loadtest/config.json +++ b/loadtest/config.json @@ -1,7 +1,7 @@ { "msgs_per_tx": 10, "chain_id": "sei-loadtest-testnet", - "txs_per_block": 400, + "orders_per_block": 400, "rounds": 5, "price_distribution": { "min": "45", diff --git a/loadtest/scripts/metrics.py b/loadtest/scripts/metrics.py index e698a930e8..d59c90e0de 100644 --- a/loadtest/scripts/metrics.py +++ b/loadtest/scripts/metrics.py @@ -47,7 +47,7 @@ def get_metrics(): average_block_time = total_duration.total_seconds() / (len(skip_edge_blocks) - 1) total_txs_num = sum([block["number_of_txs"] for block in skip_edge_blocks]) average_txs_num = total_txs_num / len(skip_edge_blocks) - + return { "Summary (excl. edge block)": { "average_block_time": average_block_time, diff --git a/loadtest/scripts/populate_genesis_accounts.py b/loadtest/scripts/populate_genesis_accounts.py index a85f9a4bc1..feb4348188 100644 --- a/loadtest/scripts/populate_genesis_accounts.py +++ b/loadtest/scripts/populate_genesis_accounts.py @@ -5,11 +5,14 @@ import threading import time +from pathlib import Path + PARALLEISM=32 # Global Variable used for accounts # Does not need to be thread safe, each thread should only be writing to its own index global_accounts_mapping = {} +home_path = os.path.expanduser('~') def add_key(account_name, local=False): if local: @@ -34,7 +37,6 @@ def add_account(account_name, address, mnemonic, local=False): else: add_account_cmd = f"printf '12345678\n' | ~/go/bin/seid add-genesis-account {address} 1000000000usei" - home_path = os.path.expanduser('~') filename = f"{home_path}/test_accounts/{account_name}.json" os.makedirs(os.path.dirname(filename), exist_ok=True) with open(filename, 'w') as f: @@ -68,10 +70,10 @@ def create_genesis_account(account_index, account_name, local=False): retry_counter += 1 sleep_time += 0.5 time.sleep(sleep_time) - + if retry_counter >= 1000: exit(-1) - + global_accounts_mapping[account_index] = { "balance": { "address": address, @@ -98,14 +100,14 @@ def bulk_create_genesis_accounts(number_of_accounts, start_idx, is_local=False): print(f"Created account {i}") -def read_genesis_file(): - with open("/root/.sei/config/genesis.json", 'r') as f: +def read_genesis_file(genesis_json_file_path): + with open(genesis_json_file_path, 'r') as f: return json.load(f) -def write_genesis_file(data): +def write_genesis_file(genesis_json_file_path, data): print("Writing results to genesis file") - with open("/root/.sei/config/genesis.json", 'w') as f: + with open(genesis_json_file_path, 'w') as f: json.dump(data, f, indent=4) @@ -116,7 +118,8 @@ def main(): if len(args) > 1 and args[1] == "loc": is_local = True - genesis_file = read_genesis_file() + genesis_json_file_path = f"{home_path}/.sei/config/genesis.json" + genesis_file = read_genesis_file(genesis_json_file_path) num_threads = number_of_accounts // PARALLEISM threads = [] @@ -145,7 +148,7 @@ def main(): print(f'Created {num_accounts_created} accounts') assert num_accounts_created >= number_of_accounts - write_genesis_file(genesis_file) + write_genesis_file(genesis_json_file_path, genesis_file) if __name__ == "__main__": main() diff --git a/scripts/initialize_local.sh b/scripts/initialize_local.sh index d05bb654d7..7fa5444fdc 100755 --- a/scripts/initialize_local.sh +++ b/scripts/initialize_local.sh @@ -29,4 +29,4 @@ cat ~/.sei/config/genesis.json | jq '.app_state["staking"]["params"]["bond_denom cat ~/.sei/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["max_deposit_period"]="30s"' > ~/.sei/config/tmp_genesis.json && mv ~/.sei/config/tmp_genesis.json ~/.sei/config/genesis.json cat ~/.sei/config/genesis.json | jq '.app_state["gov"]["voting_params"]["voting_period"]="30s"' > ~/.sei/config/tmp_genesis.json && mv ~/.sei/config/tmp_genesis.json ~/.sei/config/genesis.json cat ~/.sei/config/genesis.json | jq '.consensus_params["block"]["time_iota_ms"]="30"' > ~/.sei/config/tmp_genesis.json && mv ~/.sei/config/tmp_genesis.json ~/.sei/config/genesis.json -printf '00000000\n' | ./build/seid start --log_level warn --chain-id sei-chain \ No newline at end of file +printf '00000000\n' | ./build/seid start --log_level warn --chain-id sei-chain diff --git a/scripts/old_initialize_local.sh b/scripts/old_initialize_local.sh index ea0167b0cb..d03ac5a5cb 100644 --- a/scripts/old_initialize_local.sh +++ b/scripts/old_initialize_local.sh @@ -1,48 +1,44 @@ -#!/bin/bash -echo -n OS Password: -read -s password -echo -echo -n Key Name: -read keyname -echo -echo -n Number of Test Accounts: -read numtestaccount -echo -docker stop jaeger -docker rm jaeger -docker run -d --name jaeger \ - -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \ - -p 5775:5775/udp \ - -p 6831:6831/udp \ - -p 6832:6832/udp \ - -p 5778:5778 \ - -p 16686:16686 \ - -p 14250:14250 \ - -p 14268:14268 \ - -p 14269:14269 \ - -p 9411:9411 \ - jaegertracing/all-in-one:1.33 +#!/bin/bash + +keyname=admin +#docker stop jaeger +#docker rm jaeger +#docker run -d --name jaeger \ +# -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \ +# -p 5775:5775/udp \ +# -p 6831:6831/udp \ +# -p 6832:6832/udp \ +# -p 5778:5778 \ +# -p 16686:16686 \ +# -p 14250:14250 \ +# -p 14268:14268 \ +# -p 14269:14269 \ +# -p 9411:9411 \ +# jaegertracing/all-in-one:1.33 +rm -rf ~/.sei echo "Building..." make install -echo $password | sudo -S rm -r ~/.sei/ -echo $password | sudo -S rm -r ~/test_accounts/ +#echo $password | sudo -S rm -r ~/.sei/ +#echo $password | sudo -S rm -r ~/test_accounts/ ~/go/bin/seid init demo --chain-id sei-chain -yes | ~/go/bin/seid keys add $keyname -yes | ~/go/bin/seid keys add faucet -printf '12345678\n' | ~/go/bin/seid add-genesis-account $(~/go/bin/seid keys show $keyname -a) 100000000000000000000usei,100000000000000000000uusdc,100000000000000000000uatom -printf '12345678\n' | ~/go/bin/seid add-genesis-account $(~/go/bin/seid keys show faucet -a) 100000000000000000000usei,100000000000000000000uusdc,100000000000000000000uatom -python3 ./loadtest/scripts/populate_genesis_accounts.py $numtestaccount loc -printf '12345678\n' | ~/go/bin/seid gentx $keyname 70000000000000000000usei --chain-id sei-chain -sed -i 's/mode = "full"/mode = "validator"/g' $HOME/.sei/config/config.toml -sed -i 's/indexer = \["null"\]/indexer = \["kv"\]/g' $HOME/.sei/config/config.toml +~/go/bin/seid keys add $keyname --keyring-backend test +#yes | ~/go/bin/seid keys add faucet +~/go/bin/seid add-genesis-account $(~/go/bin/seid keys show $keyname -a --keyring-backend test) 100000000000000000000usei,100000000000000000000uusdc,100000000000000000000uatom +~/go/bin/seid gentx $keyname 70000000000000000000usei --chain-id sei-chain --keyring-backend test +sed -i '' 's/mode = "full"/mode = "validator"/g' $HOME/.sei/config/config.toml +sed -i '' 's/indexer = \["null"\]/indexer = \["kv"\]/g' $HOME/.sei/config/config.toml KEY=$(jq '.pub_key' ~/.sei/config/priv_validator_key.json -c) jq '.validators = [{}]' ~/.sei/config/genesis.json > ~/.sei/config/tmp_genesis.json jq '.validators[0] += {"power":"70000000000000"}' ~/.sei/config/tmp_genesis.json > ~/.sei/config/tmp_genesis_2.json jq '.validators[0] += {"pub_key":'$KEY'}' ~/.sei/config/tmp_genesis_2.json > ~/.sei/config/tmp_genesis_3.json mv ~/.sei/config/tmp_genesis_3.json ~/.sei/config/genesis.json && rm ~/.sei/config/tmp_genesis.json && rm ~/.sei/config/tmp_genesis_2.json + +echo "Creating Accounts" +python3 loadtest/scripts/populate_genesis_accounts.py 50 loc + ~/go/bin/seid collect-gentxs cat ~/.sei/config/genesis.json | jq '.app_state["crisis"]["constant_fee"]["denom"]="usei"' > ~/.sei/config/tmp_genesis.json && mv ~/.sei/config/tmp_genesis.json ~/.sei/config/genesis.json cat ~/.sei/config/genesis.json | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["denom"]="usei"' > ~/.sei/config/tmp_genesis.json && mv ~/.sei/config/tmp_genesis.json ~/.sei/config/genesis.json @@ -80,4 +76,4 @@ else fi # start the chain with log tracing -GORACE="log_path=/tmp/race/seid_race" ~/go/bin/seid start --trace --chain-id sei-chain \ No newline at end of file +GORACE="log_path=/tmp/race/seid_race" ~/go/bin/seid start --trace --chain-id sei-chain diff --git a/x/mint/types/expected_keepers.go b/x/mint/types/expected_keepers.go index 85b6d776c5..445bfc6441 100644 --- a/x/mint/types/expected_keepers.go +++ b/x/mint/types/expected_keepers.go @@ -26,4 +26,6 @@ type BankKeeper interface { SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error SendCoinsFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, amt sdk.Coins) error MintCoins(ctx sdk.Context, name string, amt sdk.Coins) error + DeferredMintCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error + DeferredBurnCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error } diff --git a/x/oracle/keeper/test_utils.go b/x/oracle/keeper/test_utils.go old mode 100755 new mode 100644 diff --git a/x/oracle/simulation/operations.go b/x/oracle/simulation/operations.go index 6b3dc6c946..e7af90f2a9 100644 --- a/x/oracle/simulation/operations.go +++ b/x/oracle/simulation/operations.go @@ -83,7 +83,7 @@ func WeightedOperations( } // SimulateMsgAggregateExchangeRatePrevote generates a MsgAggregateExchangeRatePrevote with random values. -//nolint: funlen +// nolint: funlen func SimulateMsgAggregateExchangeRatePrevote(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, @@ -146,7 +146,7 @@ func SimulateMsgAggregateExchangeRatePrevote(ak types.AccountKeeper, bk types.Ba } // SimulateMsgAggregateExchangeRateVote generates a MsgAggregateExchangeRateVote with random values. -//nolint: funlen +// nolint: funlen func SimulateMsgAggregateExchangeRateVote(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, @@ -213,7 +213,7 @@ func SimulateMsgAggregateExchangeRateVote(ak types.AccountKeeper, bk types.BankK } // SimulateMsgDelegateFeedConsent generates a MsgDelegateFeedConsent with random values. -//nolint: funlen +// nolint: funlen func SimulateMsgDelegateFeedConsent(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, diff --git a/x/tokenfactory/keeper/bankactions.go b/x/tokenfactory/keeper/bankactions.go index 853c517ef8..a052db180a 100644 --- a/x/tokenfactory/keeper/bankactions.go +++ b/x/tokenfactory/keeper/bankactions.go @@ -1,6 +1,8 @@ package keeper import ( + "fmt" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/sei-protocol/sei-chain/x/tokenfactory/types" @@ -13,7 +15,8 @@ func (k Keeper) mintTo(ctx sdk.Context, amount sdk.Coin, mintTo string) error { return err } - err = k.bankKeeper.MintCoins(ctx, types.ModuleName, sdk.NewCoins(amount)) + ctx.Logger().Info(fmt.Sprintf("Minting amount=%s for module=%s", amount.String(), types.ModuleName)) + err = k.bankKeeper.DeferredMintCoins(ctx, types.ModuleName, sdk.NewCoins(amount)) if err != nil { return err } @@ -23,7 +26,8 @@ func (k Keeper) mintTo(ctx sdk.Context, amount sdk.Coin, mintTo string) error { return err } - return k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, + ctx.Logger().Info(fmt.Sprintf("Sending Minted amount=%s to addr=%s", amount.String(), addr.String())) + return k.bankKeeper.DeferredSendCoinsFromModuleToAccount(ctx, types.ModuleName, addr, sdk.NewCoins(amount)) } @@ -40,7 +44,8 @@ func (k Keeper) burnFrom(ctx sdk.Context, amount sdk.Coin, burnFrom string) erro return err } - err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, + ctx.Logger().Info(fmt.Sprintf("Sending amount=%s to module=%s from account=%s", amount.String(), types.ModuleName, addr.String())) + err = k.bankKeeper.DeferredSendCoinsFromAccountToModule(ctx, addr, types.ModuleName, sdk.NewCoins(amount)) @@ -48,7 +53,8 @@ func (k Keeper) burnFrom(ctx sdk.Context, amount sdk.Coin, burnFrom string) erro return err } - return k.bankKeeper.BurnCoins(ctx, types.ModuleName, sdk.NewCoins(amount)) + ctx.Logger().Info(fmt.Sprintf("Burning amount=%s from module=%s", amount.String(), types.ModuleName)) + return k.bankKeeper.DeferredBurnCoins(ctx, types.ModuleName, sdk.NewCoins(amount)) } // func (k Keeper) forceTransfer(ctx sdk.Context, amount sdk.Coin, fromAddr string, toAddr string) error { diff --git a/x/tokenfactory/types/expected_keepers.go b/x/tokenfactory/types/expected_keepers.go index 1f750fd8d3..3b4e3c9e0a 100644 --- a/x/tokenfactory/types/expected_keepers.go +++ b/x/tokenfactory/types/expected_keepers.go @@ -15,6 +15,12 @@ type BankKeeper interface { SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + + DeferredSendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amount sdk.Coins) error + DeferredSendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error + DeferredMintCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error + DeferredBurnCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error + DelegateCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error UndelegateCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error MintCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error