Skip to content

Commit

Permalink
Map home dir of validator from host machine to container instead of l…
Browse files Browse the repository at this point in the history
…et the data inside container + Sample of proposal (#26)

* add sample gov proposal to change min gov proposal deposit amt

* Mapping home dir of each validator to their own container (#25)
  • Loading branch information
VictorTrustyDev committed Jun 28, 2022
1 parent da0de44 commit d119949
Show file tree
Hide file tree
Showing 10 changed files with 112 additions and 18 deletions.
8 changes: 4 additions & 4 deletions all-in-one.sh
Original file line number Diff line number Diff line change
Expand Up @@ -137,16 +137,16 @@ fi
echo "> [Load up token for IBC account on chain 1]"
echo "Keyring: $KEYRING"
if [ "$KEYRING" = "test" ]; then
docker exec -it vtevmos11 bash -c "$CHAIN_1_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_1_ADDR $(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_1_DENOM_EXPONENT)")$HERMES_CFG_CHAIN_1_GAS_PRICE_DENOM_SYMBOL --home /.evmosd11 --node 'tcp://127.0.0.1:26657' --yes"
docker exec -it vtevmos11 bash -c "$CHAIN_1_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_1_ADDR $(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_1_DENOM_EXPONENT)")$HERMES_CFG_CHAIN_1_GAS_PRICE_DENOM_SYMBOL --home /.evmosd1 --node 'tcp://127.0.0.1:26657' --yes"
else
docker exec -it vtevmos11 bash -c "echo '$VAL_KEYRING_FILE_ENCRYPTION_PASSWORD' | $CHAIN_1_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_1_ADDR $(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_1_DENOM_EXPONENT)")$HERMES_CFG_CHAIN_1_GAS_PRICE_DENOM_SYMBOL --home /.evmosd11 --node 'tcp://127.0.0.1:26657' --yes"
docker exec -it vtevmos11 bash -c "echo '$VAL_KEYRING_FILE_ENCRYPTION_PASSWORD' | $CHAIN_1_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_1_ADDR $(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_1_DENOM_EXPONENT)")$HERMES_CFG_CHAIN_1_GAS_PRICE_DENOM_SYMBOL --home /.evmosd1 --node 'tcp://127.0.0.1:26657' --yes"
fi
[ $? -eq 0 ] || { echo >&2 "ERR AIO: Operation failed"; exit 1; }
echo "> [Load up token for IBC account on chain 2]"
if [ "$KEYRING" = "test" ]; then
docker exec -it vtevmos21 bash -c "$CHAIN_2_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_2_ADDR $(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_2_DENOM_EXPONENT)")$HERMES_CFG_CHAIN_2_GAS_PRICE_DENOM_SYMBOL --home /.evmosd21 --node 'tcp://127.0.0.1:26657' --yes"
docker exec -it vtevmos21 bash -c "$CHAIN_2_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_2_ADDR $(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_2_DENOM_EXPONENT)")$HERMES_CFG_CHAIN_2_GAS_PRICE_DENOM_SYMBOL --home /.evmosd2 --node 'tcp://127.0.0.1:26657' --yes"
else
docker exec -it vtevmos21 bash -c "echo '$VAL_KEYRING_FILE_ENCRYPTION_PASSWORD' | $CHAIN_2_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_2_ADDR $(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_2_DENOM_EXPONENT)")$HERMES_CFG_CHAIN_2_GAS_PRICE_DENOM_SYMBOL --home /.evmosd21 --node 'tcp://127.0.0.1:26657' --yes"
docker exec -it vtevmos21 bash -c "echo '$VAL_KEYRING_FILE_ENCRYPTION_PASSWORD' | $CHAIN_2_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_2_ADDR $(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_2_DENOM_EXPONENT)")$HERMES_CFG_CHAIN_2_GAS_PRICE_DENOM_SYMBOL --home /.evmosd2 --node 'tcp://127.0.0.1:26657' --yes"
fi
[ $? -eq 0 ] || { echo >&2 "ERR AIO: Operation failed"; exit 1; }

Expand Down
3 changes: 3 additions & 0 deletions blockchain-in-docker/1_prepare-genesis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,9 @@ if [ $DISABLE_CLAIM -eq 0 ]; then
echo '- Claimn module account addr '$EVMOS_CLAIM_MODULE_ACCOUNT', total '$(bc <<< "$amount_to_claim / (10^$DENOM_EXPONENT)")' '$DENOM_SYMBOL
cat $GENESIS_JSON | jq '.app_state["bank"]["balances"] += [{"address":"'$EVMOS_CLAIM_MODULE_ACCOUNT'","coins":[{"denom":"'$MIN_DENOM_SYMBOL'", "amount":"'$amount_to_claim'"}]}]' > $GENESIS_JSON_TMP && mv $GENESIS_JSON_TMP $GENESIS_JSON
fi
## Gov deposit
echo '- Set minimum deposit to '$MINIMUM_GOV_DEPOSIT' '$DENOM_SYMBOL' by setting [app_state > gov > deposit_params > min_deposit[0] > amount]'
cat $GENESIS_JSON | jq '.app_state["gov"]["deposit_params"]["min_deposit"][0]["amount"]="'$(bc <<< "$MINIMUM_GOV_DEPOSIT * (10^$DENOM_EXPONENT)")'"' > $GENESIS_JSON_TMP && mv $GENESIS_JSON_TMP $GENESIS_JSON


# Update app.toml
Expand Down
8 changes: 8 additions & 0 deletions blockchain-in-docker/2_build-docker-image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -99,10 +99,16 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s,_p_src_dir_,$SOURCE_CODE_DIR,g" "$DOCKER_FILE"
sed -i '' "s/_p_daemon_binary_/$DAEMON_BINARY_NAME/g" "$DOCKER_FILE"
sed -i '' "s/_p_home_prefix_/$VAL_HOME_PREFIX/g" "$DOCKER_FILE"
sed -i '' "s/_p_user_name_/$USER/g" "$DOCKER_FILE"
sed -i '' "s/_p_user_id_/$(id -u)/g" "$DOCKER_FILE"
sed -i '' "s/_p_group_id_/$(id -g)/g" "$DOCKER_FILE"
else
sed -i "s,_p_src_dir_,$SOURCE_CODE_DIR,g" "$DOCKER_FILE"
sed -i "s/_p_daemon_binary_/$DAEMON_BINARY_NAME/g" "$DOCKER_FILE"
sed -i "s/_p_home_prefix_/$VAL_HOME_PREFIX/g" "$DOCKER_FILE"
sed -i "s/_p_user_name_/$USER/g" "$DOCKER_FILE"
sed -i "s/_p_user_id_/$(id -u)/g" "$DOCKER_FILE"
sed -i "s/_p_group_id_/$(id -g)/g" "$DOCKER_FILE"
fi

# Docker build
Expand All @@ -122,6 +128,7 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s/_p_1317_/$PORT_1317/g" "$DOCKER_COMPOSE_FILE"
sed -i '' "s/_p_26656_/$PORT_26656/g" "$DOCKER_COMPOSE_FILE"
sed -i '' "s/_p_image_prefix_/$DOCKER_IMAGE_NAME_PREFIX/g" "$DOCKER_COMPOSE_FILE"
sed -i '' "s/_p_home_prefix_/$VAL_HOME_PREFIX/g" "$DOCKER_COMPOSE_FILE"
else
sed -i "s/_p_chain_no_/$CHAIN_NO/g" "$DOCKER_COMPOSE_FILE"
sed -i "s/_p_26657_/$PORT_26657/g" "$DOCKER_COMPOSE_FILE"
Expand All @@ -130,6 +137,7 @@ else
sed -i "s/_p_1317_/$PORT_1317/g" "$DOCKER_COMPOSE_FILE"
sed -i "s/_p_26656_/$PORT_26656/g" "$DOCKER_COMPOSE_FILE"
sed -i "s/_p_image_prefix_/$DOCKER_IMAGE_NAME_PREFIX/g" "$DOCKER_COMPOSE_FILE"
sed -i "s/_p_home_prefix_/$VAL_HOME_PREFIX/g" "$DOCKER_COMPOSE_FILE"
fi
echo '- Expose ports:'
echo "+ 26657 => $PORT_26657"
Expand Down
15 changes: 14 additions & 1 deletion blockchain-in-docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,17 @@ Here are some of them:

Performance: 2 chains created by this sample can run in parallel smoothly in a 4 Core 4 Gb RAM machine

This sample is using keyring-backend is `test`, you may need to change to `file` ([env.sh](https://github.com/VictorTrustyDev/EVMOS-sample-scripts/blob/main/env.sh)) to secure your test env if needed
This sample is using keyring-backend is `test`, you may need to change to `file` ([env.sh](https://github.com/VictorTrustyDev/EVMOS-sample-scripts/blob/main/env.sh)) to secure your test env if needed

### V. Mapped volumes

| Network | Chain ID | Container name | Home dir within container | Mapped home dir in host machine |
| --- | --- | --- | --- | --- |
| 1 | evmos_9006-1 | vtevmos10 (val1) | /.evmosd1 | /path/to/EVMOS-sample-scripts/blockchain-in-docker/.evmosd10 |
| 1 | evmos_9006-1 | vtevmos11 (val2) | /.evmosd1 | /path/to/EVMOS-sample-scripts/blockchain-in-docker/.evmosd11 |
| 1 | evmos_9006-1 | vtevmos12 (val3) | /.evmosd1 | /path/to/EVMOS-sample-scripts/blockchain-in-docker/.evmosd12 |
| 2 | evmos_9007-1 | vtevmos20 (val1) | /.evmosd2 | /path/to/EVMOS-sample-scripts/blockchain-in-docker/.evmosd20 |
| 2 | evmos_9007-1 | vtevmos21 (val2) | /.evmosd2 | /path/to/EVMOS-sample-scripts/blockchain-in-docker/.evmosd21 |
| 2 | evmos_9007-1 | vtevmos22 (val3) | /.evmosd2 | /path/to/EVMOS-sample-scripts/blockchain-in-docker/.evmosd22 |

The [gov-sample-proposals](https://github.com/VictorTrustyDev/EVMOS-sample-scripts/tree/main/blockchain-in-docker/gov-sample-proposals) also mapped to `/gov-sample-proposals` vol within each container
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"title": "Decrease the minimum deposit amount for governance proposals and maximum deposit period",
"description": "If successful, this parameter-change governance proposal that will change the minimum deposit from 64 EVMOS to 100000 aevmos and max deposit period changes from 14 days to 7 days",
"changes": [
{
"subspace": "gov",
"key": "depositparams",
"value": {
"min_deposit": [
{
"denom": "aevmos",
"amount": "100000"
}
],
"max_deposit_period": "604800000000000"
}
}
],
"deposit": "65000000000000000000aevmos"
}
41 changes: 41 additions & 0 deletions blockchain-in-docker/gov-sample-proposals/evmos/1-sample.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
### Decrease the minimum deposit amount for governance proposals and maximum deposit period
#### If successful, this parameter-change governance proposal that will change the minimum deposit from 64 EVMOS to 100000 aevmos and max deposit period changes from 14 days to 7 days
1. Remote into container and move to sample directory
> docker exec -it vtevmos20 bash
> cd /gov-sample-proposals/evmos/
2. Submit proposal
> evmosd tx gov submit-proposal param-change "./1-gov_min_deposit_change.json" --from val1 --node tcp://127.0.0.1:26657 --home /.evmosd2 --gas 300000
3. Vote
> docker exec -it vtevmos20 bash
> evmosd tx gov vote `[proposal id eg 1]` yes --gas auto --from val1 --home /.evmosd2
> docker exec -it vtevmos21 bash
> evmosd tx gov vote `[proposal id eg 1]` yes --gas auto --from val2 --home /.evmosd2
> docker exec -it vtevmos22 bash
> evmosd tx gov vote `[proposal id eg 1]` yes --gas auto --from val3 --home /.evmosd2
4. Result:
- Previous:
> evmosd q params subspace gov depositparams --chain-id evmos_9007-1 --node tcp://127.0.0.1:36657
> key: depositparams
> subspace: gov
> value: '{"min_deposit":[{"denom":"aevmos","amount":"64000000000000000000"}],"max_deposit_period":"172800000000000"}'
- Later:
> evmosd q params subspace gov depositparams --chain-id evmos_9007-1 --node tcp://127.0.0.1:36657
> key: depositparams
> subspace: gov
> value: '{"min_deposit":[{"denom":"aevmos","amount":"100000"}],"max_deposit_period":"604800000000000"}'
10 changes: 3 additions & 7 deletions blockchain-in-docker/template.DockerfileX
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,12 @@ COPY --from=build-env /go/victortrusty.dev/build/_p_daemon_binary_ /usr/bin/_p_d

RUN apt-get update -y
RUN apt-get install ca-certificates jq -y
RUN useradd -m _p_user_name_ --uid=_p_user_id_

WORKDIR /_p_home_prefix_0
COPY ./_p_home_prefix_0 .
WORKDIR /_p_home_prefix_1
COPY ./_p_home_prefix_1 .
WORKDIR /_p_home_prefix_2
COPY ./_p_home_prefix_2 .
USER _p_user_id_:_p_group_id_

WORKDIR /root

EXPOSE 26656 26657 1317 9090 8545

ENTRYPOINT /usr/bin/_p_daemon_binary_ start --home "/_p_home_prefix_$NODE"
ENTRYPOINT /usr/bin/_p_daemon_binary_ start --home "/_p_home_prefix_"
17 changes: 13 additions & 4 deletions blockchain-in-docker/template.networkX.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,35 @@ services:
networks:
- vtevmosnw_p_chain_no_
environment:
- NODE=0
- NODE_IDX=0
restart: always
image: _p_image_prefix__p_chain_no_
volumes:
- ./gov-sample-proposals:/gov-sample-proposals
- ./_p_home_prefix_0:/_p_home_prefix_
vtevmos_p_chain_no_1:
container_name: vtevmos_p_chain_no_1
networks:
- vtevmosnw_p_chain_no_
environment:
- NODE=1
- NODE_IDX=1
depends_on:
- vtevmos_p_chain_no_0
restart: always
image: _p_image_prefix__p_chain_no_
volumes:
- ./gov-sample-proposals:/gov-sample-proposals
- ./_p_home_prefix_1:/_p_home_prefix_
vtevmos_p_chain_no_2:
container_name: vtevmos_p_chain_no_2
networks:
- vtevmosnw_p_chain_no_
environment:
- NODE=2
- NODE_IDX=2
depends_on:
- vtevmos_p_chain_no_0
restart: always
image: _p_image_prefix__p_chain_no_
image: _p_image_prefix__p_chain_no_
volumes:
- ./gov-sample-proposals:/gov-sample-proposals
- ./_p_home_prefix_2:/_p_home_prefix_
4 changes: 4 additions & 0 deletions env.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#!/bin/bash

### IMPORTANT NOTICE
### It is not recommended to modify this file directly. Instead you can create a file named `override-env.sh` and write modified values there

# Pre-requisites
command -v jq > /dev/null 2>&1 || { echo >&2 "ERR: jq not installed. More info: https://stedolan.github.io/jq/download/ (Hint: sudo apt install jq -y)"; exit 1; }
command -v yq > /dev/null 2>&1 || { echo >&2 "ERR: yq not installed. More info: https://github.com/kislyuk/yq/ (Hint: sudo apt install python3-pip -y && pip3 install yq)"; exit 1; }
Expand All @@ -20,6 +23,7 @@ export NOTICE_DEV_ENV="This sample scripts was developed on an Ubuntu 22.04 LTS
## Network
export MONIKER='moniker'
export NUMBER_OF_VALIDATOR=5 # Maximum number of active validators. If number of validators more than this, only the first X validators will be choosen (order by power)
export MINIMUM_GOV_DEPOSIT=64 # Minimum amount of coins required to submit a proposal
### Chain 1
export CHAIN_1_TYPE="evmos" # valid values are 'evmos' or 'cosmos' only, must be 'evmos' for evmos chain, otherwise 'cosmos' for other chains
export CHAIN_1_ID="evmos_9006-1"
Expand Down
4 changes: 2 additions & 2 deletions hermes-as-ibc-relayer/create-relayer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ if [ "$HERMES_NO_CONFIRM_BALANCE" != "1" ]; then
echo "Go prepare yourself"
echo "Hint: you can do this"
echo " docker exec -it vtevmos11 bash"
echo " $CHAIN_1_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_1_ADDR "$(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_1_DENOM_EXPONENT)")"$HERMES_CFG_CHAIN_1_GAS_PRICE_DENOM_SYMBOL --home /.evmosd11 --node tcp://127.0.0.1:26657"
echo " $CHAIN_1_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_1_ADDR "$(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_1_DENOM_EXPONENT)")"$HERMES_CFG_CHAIN_1_GAS_PRICE_DENOM_SYMBOL --home /.evmosd1 --node tcp://127.0.0.1:26657"
echo " docker exec -it vtevmos21 bash"
echo " $CHAIN_2_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_2_ADDR "$(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_2_DENOM_EXPONENT)")"$HERMES_CFG_CHAIN_2_GAS_PRICE_DENOM_SYMBOL --home /.evmosd21 --node tcp://127.0.0.1:26657"
echo " $CHAIN_2_DAEMON_BINARY_NAME tx bank send $VAL_2_KEY_NAME $REL_2_ADDR "$(bc <<< "$HERMES_RESERVED_FEE * (10^$HERMES_CFG_CHAIN_2_DENOM_EXPONENT)")"$HERMES_CFG_CHAIN_2_GAS_PRICE_DENOM_SYMBOL --home /.evmosd2 --node tcp://127.0.0.1:26657"
exit 0
fi
fi
Expand Down

0 comments on commit d119949

Please sign in to comment.