Skip to content

Commit ca42408

Browse files
new script for push-chain-node start for docker
1 parent bad15b3 commit ca42408

File tree

3 files changed

+186
-12
lines changed

3 files changed

+186
-12
lines changed

Dockerfile.e2e

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ ENV CHAIN_ID=localchain_9000-1 \
2424
BLOCK_TIME=1000ms \
2525
CLEAN=true
2626

27-
CMD ["bash", "scripts/test_node.sh"]
27+
CMD ["bash", "scripts/test_node_e2e.sh"]

scripts/test_node.sh

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ export ROSETTA=${ROSETTA:-"8080"}
3030
export BLOCK_TIME=${BLOCK_TIME:-"1s"}
3131

3232
# if which binary does not exist, install it
33-
# if [ -z `which $BINARY` ]; then
34-
# make install
33+
if [ -z `which $BINARY` ]; then
34+
make install
3535

36-
# if [ -z `which $BINARY` ]; then
37-
# echo "Ensure $BINARY is installed and in your PATH"
38-
# exit 1
39-
# fi
40-
# fi
36+
if [ -z `which $BINARY` ]; then
37+
echo "Ensure $BINARY is installed and in your PATH"
38+
exit 1
39+
fi
40+
fi
4141

4242
alias BINARY="$BINARY --home=$HOME_DIR"
4343

@@ -53,7 +53,7 @@ set_config
5353

5454
from_scratch () {
5555
# Fresh install on current branch
56-
# make install
56+
make install
5757

5858
# remove existing daemon files.
5959
if [ ${#HOME_DIR} -le 2 ]; then
@@ -171,6 +171,4 @@ sed -i -e 's/address = ":8080"/address = "0.0.0.0:'$ROSETTA'"/g' $HOME_DIR/confi
171171
# Faster blocks
172172
sed -i -e 's/timeout_commit = "5s"/timeout_commit = "'$BLOCK_TIME'"/g' $HOME_DIR/config/config.toml
173173

174-
sed -i -e 's/address = "127.0.0.1:8545"/address = "0.0.0.0:8545"/g' $HOME_DIR/config/app.toml
175-
176-
BINARY start --pruning=nothing --minimum-gas-prices=1000000000$DENOM --rpc.laddr="tcp://0.0.0.0:$RPC" --json-rpc.address="0.0.0.0:8545" --json-rpc.api=eth,txpool,personal,net,debug,web3 --chain-id="$CHAIN_ID"
174+
BINARY start --pruning=nothing --minimum-gas-prices=1000000000$DENOM --rpc.laddr="tcp://0.0.0.0:$RPC" --json-rpc.api=eth,txpool,personal,net,debug,web3 --chain-id="$CHAIN_ID"

scripts/test_node_e2e.sh

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
#!/bin/bash
2+
# Run this script to quickly install, setup, and run the current version of the network without docker.
3+
#
4+
# Examples:
5+
# CHAIN_ID="localchain_9000-1" HOME_DIR="~/.pchain" BLOCK_TIME="1000ms" CLEAN=true sh scripts/test_node.sh
6+
# CHAIN_ID="localchain_9000-2" HOME_DIR="~/.pchain" CLEAN=true RPC=36657 REST=2317 PROFF=6061 P2P=36656 GRPC=8090 GRPC_WEB=8091 ROSETTA=8081 BLOCK_TIME="500ms" sh scripts/test_node.sh
7+
shopt -s expand_aliases
8+
set -eu
9+
10+
export KEY1="acc1"
11+
export KEY2="acc2"
12+
export KEY3="acc3"
13+
14+
export CHAIN_ID=${CHAIN_ID:-"localchain_9000-1"}
15+
export MONIKER=${MONIKER:-"localvalidator"}
16+
export KEYALGO="eth_secp256k1"
17+
export KEYRING=${KEYRING:-"test"}
18+
export HOME_DIR=$(eval echo "${HOME_DIR:-"~/.pchain"}")
19+
export BINARY=${BINARY:-pchaind}
20+
export DENOM=${DENOM:-upc}
21+
22+
export CLEAN=${CLEAN:-"false"}
23+
export RPC=${RPC:-"26657"}
24+
export REST=${REST:-"1317"}
25+
export PROFF=${PROFF:-"6060"}
26+
export P2P=${P2P:-"26656"}
27+
export GRPC=${GRPC:-"9090"}
28+
export GRPC_WEB=${GRPC_WEB:-"9091"}
29+
export ROSETTA=${ROSETTA:-"8080"}
30+
export BLOCK_TIME=${BLOCK_TIME:-"1s"}
31+
32+
# if which binary does not exist, install it
33+
# if [ -z `which $BINARY` ]; then
34+
# make install
35+
36+
# if [ -z `which $BINARY` ]; then
37+
# echo "Ensure $BINARY is installed and in your PATH"
38+
# exit 1
39+
# fi
40+
# fi
41+
42+
alias BINARY="$BINARY --home=$HOME_DIR"
43+
44+
command -v $BINARY > /dev/null 2>&1 || { echo >&2 "$BINARY command not found. Ensure this is setup / properly installed in your GOPATH (make install)."; exit 1; }
45+
command -v jq > /dev/null 2>&1 || { echo >&2 "jq not installed. More info: https://stedolan.github.io/jq/download/"; exit 1; }
46+
47+
set_config() {
48+
$BINARY config set client chain-id $CHAIN_ID
49+
$BINARY config set client keyring-backend $KEYRING
50+
}
51+
set_config
52+
53+
54+
from_scratch () {
55+
# Fresh install on current branch
56+
# make install
57+
58+
# remove existing daemon files.
59+
if [ ${#HOME_DIR} -le 2 ]; then
60+
echo "HOME_DIR must be more than 2 characters long"
61+
return
62+
fi
63+
rm -rf $HOME_DIR && echo "Removed $HOME_DIR"
64+
65+
# reset values if not set already after whipe
66+
set_config
67+
68+
add_key() {
69+
key=$1
70+
mnemonic=$2
71+
echo $mnemonic | BINARY keys add $key --keyring-backend $KEYRING --algo $KEYALGO --recover
72+
}
73+
74+
# push1ss5j8c8j453uecnczt3ms23lze30kxt4pzfvh9
75+
add_key $KEY1 "surface task term spring horse impact tortoise often session cable off catch harvest rain able jealous coral cargo portion surge spring genre mix avoid"
76+
# push1j55s4vpvmncruakqhj2k2fywnc9mvsuhcap28q
77+
add_key $KEY2 "season wing cost lunch leg absurd parent practice frost mistake choose leopard switch shrug wrist this pistol bright spike hurt fit meadow smart hazard"
78+
# push1fgaewhyd9fkwtqaj9c233letwcuey6dgly9gv9
79+
add_key $KEY3 "episode silver life middle tumble slogan genius loop divide alpha raven bridge drive calm club system school raccoon unfold marine oyster radio treat sphere"
80+
81+
BINARY init $MONIKER --chain-id $CHAIN_ID --default-denom $DENOM
82+
83+
update_test_genesis () {
84+
cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && mv $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json
85+
}
86+
87+
# === CORE MODULES ===
88+
89+
# Block
90+
update_test_genesis '.consensus_params["block"]["max_gas"]="100000000"'
91+
92+
# Gov
93+
update_test_genesis `printf '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"%s","amount":"1000000"}]' $DENOM`
94+
update_test_genesis '.app_state["gov"]["params"]["voting_period"]="30s"'
95+
update_test_genesis '.app_state["gov"]["params"]["expedited_voting_period"]="15s"'
96+
97+
update_test_genesis `printf '.app_state["evm"]["params"]["evm_denom"]="%s"' $DENOM`
98+
update_test_genesis '.app_state["evm"]["params"]["active_static_precompiles"]=["0x00000000000000000000000000000000000000CB","0x00000000000000000000000000000000000000ca","0x0000000000000000000000000000000000000100","0x0000000000000000000000000000000000000400","0x0000000000000000000000000000000000000800","0x0000000000000000000000000000000000000801","0x0000000000000000000000000000000000000802","0x0000000000000000000000000000000000000803","0x0000000000000000000000000000000000000804","0x0000000000000000000000000000000000000805"]'
99+
update_test_genesis '.app_state["erc20"]["params"]["native_precompiles"]=["0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"]' # https://eips.ethereum.org/EIPS/eip-7528
100+
update_test_genesis `printf '.app_state["erc20"]["token_pairs"]=[{contract_owner:1,erc20_address:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",denom:"%s",enabled:true}]' $DENOM`
101+
update_test_genesis '.app_state["feemarket"]["params"]["no_base_fee"]=false'
102+
update_test_genesis '.app_state["feemarket"]["params"]["base_fee"]="1000000000.000000000000000000"'
103+
update_test_genesis '.app_state["feemarket"]["params"]["min_gas_price"]="1000000000.000000000000000000"'
104+
105+
# staking
106+
update_test_genesis `printf '.app_state["staking"]["params"]["bond_denom"]="%s"' $DENOM`
107+
update_test_genesis '.app_state["staking"]["params"]["min_commission_rate"]="0.050000000000000000"'
108+
109+
# mint
110+
update_test_genesis `printf '.app_state["mint"]["params"]["mint_denom"]="%s"' $DENOM`
111+
112+
# crisis
113+
update_test_genesis `printf '.app_state["crisis"]["constant_fee"]={"denom":"%s","amount":"1000"}' $DENOM`
114+
115+
## abci
116+
update_test_genesis '.consensus["params"]["abci"]["vote_extensions_enable_height"]="1"'
117+
118+
# === CUSTOM MODULES ===
119+
# tokenfactory
120+
update_test_genesis '.app_state["tokenfactory"]["params"]["denom_creation_fee"]=[]'
121+
update_test_genesis '.app_state["tokenfactory"]["params"]["denom_creation_gas_consume"]=100000'
122+
123+
# Allocate genesis accounts
124+
# Total: 10 000000000 . 000000000 000000000
125+
BINARY genesis add-genesis-account $KEY1 5000000000000000000000000000$DENOM,100000000test --keyring-backend $KEYRING --append
126+
BINARY genesis add-genesis-account $KEY2 3000000000000000000000000000$DENOM,90000000test --keyring-backend $KEYRING --append
127+
BINARY genesis add-genesis-account $KEY3 2000000000000000000000000000$DENOM,90000000test --keyring-backend $KEYRING --append
128+
129+
# Sign genesis transaction
130+
# 10 000 . 000000000 000000000
131+
BINARY genesis gentx $KEY1 10000000000000000000000$DENOM --gas-prices 1000000000${DENOM} --keyring-backend $KEYRING --chain-id $CHAIN_ID
132+
133+
BINARY genesis collect-gentxs
134+
135+
BINARY genesis validate-genesis
136+
err=$?
137+
if [ $err -ne 0 ]; then
138+
echo "Failed to validate genesis"
139+
return
140+
fi
141+
}
142+
143+
# check if CLEAN is not set to false
144+
if [ "$CLEAN" != "false" ]; then
145+
echo "Starting from a clean state"
146+
from_scratch
147+
fi
148+
149+
echo "Starting node..."
150+
151+
# Opens the RPC endpoint to outside connections
152+
sed -i -e 's/laddr = "tcp:\/\/127.0.0.1:26657"/c\laddr = "tcp:\/\/0.0.0.0:'$RPC'"/g' $HOME_DIR/config/config.toml
153+
sed -i -e 's/cors_allowed_origins = \[\]/cors_allowed_origins = \["\*"\]/g' $HOME_DIR/config/config.toml
154+
155+
# REST endpoint
156+
sed -i -e 's/address = "tcp:\/\/localhost:1317"/address = "tcp:\/\/0.0.0.0:'$REST'"/g' $HOME_DIR/config/app.toml
157+
sed -i -e 's/enable = false/enable = true/g' $HOME_DIR/config/app.toml
158+
sed -i -e 's/enabled-unsafe-cors = false/enabled-unsafe-cors = true/g' $HOME_DIR/config/app.toml
159+
160+
# peer exchange
161+
sed -i -e 's/pprof_laddr = "localhost:6060"/pprof_laddr = "localhost:'$PROFF'"/g' $HOME_DIR/config/config.toml
162+
sed -i -e 's/laddr = "tcp:\/\/0.0.0.0:26656"/laddr = "tcp:\/\/0.0.0.0:'$P2P'"/g' $HOME_DIR/config/config.toml
163+
164+
# GRPC
165+
sed -i -e 's/address = "localhost:9090"/address = "0.0.0.0:'$GRPC'"/g' $HOME_DIR/config/app.toml
166+
sed -i -e 's/address = "localhost:9091"/address = "0.0.0.0:'$GRPC_WEB'"/g' $HOME_DIR/config/app.toml
167+
168+
# Rosetta Api
169+
sed -i -e 's/address = ":8080"/address = "0.0.0.0:'$ROSETTA'"/g' $HOME_DIR/config/app.toml
170+
171+
# Faster blocks
172+
sed -i -e 's/timeout_commit = "5s"/timeout_commit = "'$BLOCK_TIME'"/g' $HOME_DIR/config/config.toml
173+
174+
sed -i -e 's/address = "127.0.0.1:8545"/address = "0.0.0.0:8545"/g' $HOME_DIR/config/app.toml
175+
176+
BINARY start --pruning=nothing --minimum-gas-prices=1000000000$DENOM --rpc.laddr="tcp://0.0.0.0:$RPC" --json-rpc.address="0.0.0.0:8545" --json-rpc.api=eth,txpool,personal,net,debug,web3 --chain-id="$CHAIN_ID"

0 commit comments

Comments
 (0)