Skip to content

Commit a1def41

Browse files
authored
Multi-contract load test (#197)
1 parent 3ce1585 commit a1def41

29 files changed

+3890
-18
lines changed

.gitignore

+6-1
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,9 @@ package-lock.json
2525
c.out
2626

2727
# fuzz test data
28-
**/testdata/fuzz/**
28+
**/testdata/fuzz/**
29+
30+
# loadtest contracts build artifact
31+
loadtest/contracts/**/artifacts/
32+
loadtest/contracts/**/target/
33+
loadtest/contracts/**.json

loadtest/config.json

+20-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
{
22
"batch_size": 10,
33
"chain_id": "sei-chain",
4-
"contract_address": "sei14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9sh9m79m",
5-
"orders_per_block": 10000,
4+
"orders_per_block": 400,
65
"rounds": 5,
76
"price_distribution": {
87
"min": "45",
@@ -17,5 +16,23 @@
1716
"message_type_distribution": {
1817
"limit_order_percentage": "0.8",
1918
"market_order_percentage": "0.2"
20-
}
19+
},
20+
"contract_distribution": [
21+
{
22+
"contract_address": "sei1yw4xvtc43me9scqfr2jr2gzvcxd3a9y4eq7gaukreugw2yd2f8tsy4qgdm",
23+
"percentage": "0.25"
24+
},
25+
{
26+
"contract_address": "sei1wug8sewp6cedgkmrmvhl3lf3tulagm9hnvy8p0rppz9yjw0g4wtq05fpn3",
27+
"percentage": "0.25"
28+
},
29+
{
30+
"contract_address": "sei1qg5ega6dykkxc307y25pecuufrjkxkaggkkxh7nad0vhyhtuhw3scwfwpd",
31+
"percentage": "0.25"
32+
},
33+
{
34+
"contract_address": "sei1zwv6feuzhy6a9wekh96cd57lsarmqlwxdypdsplw6zhfncqw6ftqr428wx",
35+
"percentage": "0.25"
36+
}
37+
]
2138
}

loadtest/contracts/deploy.sh

+98
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
#!/bin/bash
2+
echo -n Admin Key Name:
3+
read keyname
4+
echo
5+
echo -n Chain ID:
6+
read chainid
7+
echo
8+
echo -n seid binary:
9+
read seidbin
10+
echo
11+
echo -n sei-chain directory:
12+
read seihome
13+
echo
14+
15+
# Build all contracts
16+
echo "Building contracts..."
17+
18+
cd $seihome/loadtest/contracts/jupiter && cargo build && docker run --rm -v "$(pwd)":/code \
19+
--mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \
20+
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
21+
cosmwasm/rust-optimizer:0.12.5
22+
23+
cd $seihome/loadtest/contracts/mars && cargo build && docker run --rm -v "$(pwd)":/code \
24+
--mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \
25+
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
26+
cosmwasm/rust-optimizer:0.12.5
27+
28+
cd $seihome/loadtest/contracts/saturn && cargo build && docker run --rm -v "$(pwd)":/code \
29+
--mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \
30+
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
31+
cosmwasm/rust-optimizer:0.12.5
32+
33+
cd $seihome/loadtest/contracts/venus && cargo build && docker run --rm -v "$(pwd)":/code \
34+
--mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \
35+
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
36+
cosmwasm/rust-optimizer:0.12.5
37+
38+
# Deploy all contracts
39+
echo "Deploying contracts..."
40+
41+
cd $seihome/loadtest/contracts
42+
# store
43+
echo "Storing..."
44+
jupiterstoreres=$($seidbin tx wasm store jupiter/artifacts/jupiter.wasm -y --from=$keyname --chain-id=$chainid --gas=5000000 --fees=1000000usei --broadcast-mode=block --output=json)
45+
marsstoreres=$($seidbin tx wasm store mars/artifacts/mars.wasm -y --from=$keyname --chain-id=$chainid --gas=5000000 --fees=1000000usei --broadcast-mode=block --output=json)
46+
saturnstoreres=$($seidbin tx wasm store saturn/artifacts/saturn.wasm -y --from=$keyname --chain-id=$chainid --gas=5000000 --fees=1000000usei --broadcast-mode=block --output=json)
47+
venusstoreres=$($seidbin tx wasm store venus/artifacts/venus.wasm -y --from=$keyname --chain-id=$chainid --gas=5000000 --fees=1000000usei --broadcast-mode=block --output=json)
48+
jupiterid=$(python3 parser.py code_id $jupiterstoreres)
49+
marsid=$(python3 parser.py code_id $marsstoreres)
50+
saturnid=$(python3 parser.py code_id $saturnstoreres)
51+
venusid=$(python3 parser.py code_id $venusstoreres)
52+
53+
# instantiate
54+
echo "Instantiating..."
55+
marsinsres=$($seidbin tx wasm instantiate $marsid '{}' -y --no-admin --from=$keyname --chain-id=$chainid --gas=5000000 --fees=1000000usei --broadcast-mode=block --label=dex --output=json)
56+
saturninsres=$($seidbin tx wasm instantiate $saturnid '{}' -y --no-admin --from=$keyname --chain-id=$chainid --gas=5000000 --fees=1000000usei --broadcast-mode=block --label=dex --output=json)
57+
venusinsres=$($seidbin tx wasm instantiate $venusid '{}' -y --no-admin --from=$keyname --chain-id=$chainid --gas=5000000 --fees=1000000usei --broadcast-mode=block --label=dex --output=json)
58+
marsaddr=$(python3 parser.py contract_address $marsinsres)
59+
saturnaddr=$(python3 parser.py contract_address $saturninsres)
60+
venusaddr=$(python3 parser.py contract_address $venusinsres)
61+
jupiterinsres=$($seidbin tx wasm instantiate $jupiterid '{"mars_address":"'$marsaddr'"}' -y --no-admin --from=$keyname --chain-id=$chainid --gas=5000000 --fees=1000000usei --broadcast-mode=block --label=dex --output=json)
62+
jupiteraddr=$(python3 parser.py contract_address $jupiterinsres)
63+
64+
# register
65+
echo "Registering..."
66+
$seidbin tx dex register-contract $marsaddr $marsid false true -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
67+
$seidbin tx dex register-contract $saturnaddr $saturnid false true $marsaddr -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
68+
$seidbin tx dex register-contract $venusaddr $venusid false true -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
69+
$seidbin tx dex register-contract $jupiteraddr $jupiterid false true $marsaddr -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
70+
71+
echo '{"title":"Jupiter","description":"jupiter","batch_contract_pair":[{"contract_addr":"'$jupiteraddr'","pairs":[{"price_denom":"SEI","asset_denom":"ATOM","tick_size":"0.0000001"}]}],"deposit":"1000000usei"}' > jupiter.json
72+
jupiterpair=$($seidbin tx dex register-pairs-proposal jupiter.json -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block --output=json)
73+
jupiterproposalid=$(python3 parser.py proposal_id $jupiterpair)
74+
$seidbin tx gov deposit $jupiterproposalid 10000000usei -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
75+
$seidbin tx gov vote $jupiterproposalid yes -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
76+
77+
echo '{"title":"Mars","description":"mars","batch_contract_pair":[{"contract_addr":"'$marsaddr'","pairs":[{"price_denom":"SEI","asset_denom":"ATOM","tick_size":"0.0000001"}]}],"deposit":"1000000usei"}' > mars.json
78+
marspair=$($seidbin tx dex register-pairs-proposal mars.json -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block --output=json)
79+
marsproposalid=$(python3 parser.py proposal_id $marspair)
80+
$seidbin tx gov deposit $marsproposalid 10000000usei -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
81+
$seidbin tx gov vote $marsproposalid yes -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
82+
83+
echo '{"title":"Saturn","description":"saturn","batch_contract_pair":[{"contract_addr":"'$saturnaddr'","pairs":[{"price_denom":"SEI","asset_denom":"ATOM","tick_size":"0.0000001"}]}],"deposit":"1000000usei"}' > saturn.json
84+
saturnpair=$($seidbin tx dex register-pairs-proposal saturn.json -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block --output=json)
85+
saturnproposalid=$(python3 parser.py proposal_id $saturnpair)
86+
$seidbin tx gov deposit $saturnproposalid 10000000usei -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
87+
$seidbin tx gov vote $saturnproposalid yes -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
88+
89+
echo '{"title":"Venus","description":"venus","batch_contract_pair":[{"contract_addr":"'$venusaddr'","pairs":[{"price_denom":"SEI","asset_denom":"ATOM","tick_size":"0.0000001"}]}],"deposit":"1000000usei"}' > venus.json
90+
venuspair=$($seidbin tx dex register-pairs-proposal venus.json -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block --output=json)
91+
venusproposalid=$(python3 parser.py proposal_id $venuspair)
92+
$seidbin tx gov deposit $venusproposalid 10000000usei -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
93+
$seidbin tx gov vote $venusproposalid yes -y --from=$keyname --chain-id=$chainid --fees=10000000usei --gas=500000 --broadcast-mode=block
94+
95+
echo "Jupiter address: "$jupiteraddr
96+
echo "Mars address: "$marsaddr
97+
echo "Saturn address: "$saturnaddr
98+
echo "Venus address: "$venusaddr

0 commit comments

Comments
 (0)