Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions aclmapping/dependency_generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)

Expand All @@ -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
}
152 changes: 152 additions & 0 deletions aclmapping/tokenfactory/mappings.go
Original file line number Diff line number Diff line change
@@ -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
}
1 change: 1 addition & 0 deletions aclmapping/utils/identifier_templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const (
BANK = "bank"
AUTH = "auth"
STAKING = "staking"
TOKENFACTORY = "tokenfactory"
DefaultIDTemplate = "*"
)

Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand Down
2 changes: 1 addition & 1 deletion loadtest/config.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion loadtest/scripts/metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
21 changes: 12 additions & 9 deletions loadtest/scripts/populate_genesis_accounts.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand Down Expand Up @@ -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,
Expand All @@ -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)


Expand All @@ -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 = []
Expand Down Expand Up @@ -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()
2 changes: 1 addition & 1 deletion scripts/initialize_local.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
printf '00000000\n' | ./build/seid start --log_level warn --chain-id sei-chain
66 changes: 31 additions & 35 deletions scripts/old_initialize_local.sh
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
GORACE="log_path=/tmp/race/seid_race" ~/go/bin/seid start --trace --chain-id sei-chain
2 changes: 2 additions & 0 deletions x/mint/types/expected_keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Empty file modified x/oracle/keeper/test_utils.go
100755 → 100644
Empty file.
Loading