Skip to content

Commit

Permalink
base config match
Browse files Browse the repository at this point in the history
  • Loading branch information
igorls committed May 21, 2018
1 parent 67f5491 commit 5f0b928
Show file tree
Hide file tree
Showing 5 changed files with 238 additions and 160 deletions.
20 changes: 11 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,16 +72,9 @@ curl -sL https://raw.githubusercontent.com/HKEOS/Ghostbusters-Testnet/master/set
- Publish and update peers
```console
nano my-peer-info
# Fill in your information
## Fill in your information

./publishPeerInfo.sh my-peer-info

./updatePeers.sh

# If you want to cleanup dead peers, run:
./peerCleanup.sh remove strict # removes all even if just wg is down
./peerCleanup.sh remove # removes just completely offline host
./peerCleanup.sh # debug mode, don't remove
```
You can run updatePeers.sh again to update Wireguard config any time a new peer joins and publishes their peer info.

Expand Down Expand Up @@ -114,6 +107,13 @@ Input your information for the highlighted fields shown below:

```console
./installGhostbusters.sh

./updatePeers.sh

## If you want to cleanup dead peers, run:
./peerCleanup.sh remove strict # removes all even if just wg is down
./peerCleanup.sh remove # removes just completely offline host
./peerCleanup.sh # debug mode, don't remove
```

### 5. Publishing BP info on Keybase
Expand All @@ -129,7 +129,9 @@ Input your information for the highlighted fields shown below:

- Check that file is up on `https://<username>.keybase.pub/bp_info.json`

You can verify that bp_info.json correctly follows the schema using command line.
#### 5.1 BP Info verification (optional)

You can verify that bp_info.json correctly follows the schema using command line. We recommend ajv-cli for the job.

If npm is not installed:
```console
Expand Down
178 changes: 94 additions & 84 deletions installGhostbusters.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,18 @@ NODE_HTTP_SRV_ADDR="$NODE_NET_ADDR:$NODE_API_PORT"
NODE_P2P_LST_ENDP="$NODE_NET_ADDR:$NODE_P2P_PORT"
NODE_P2P_SRV_ADDR="$NODE_HOST:$NODE_P2P_PORT"
NODE_HTTPS_SERVER_ADDR="$NODE_HOST:$NODE_SSL_PORT"

if [[ $ISBP == true ]]; then
TESTNET="$TESTNET-$PRODUCER_NAME"
else
TESTNET="$TESTNET-node"
fi

echo "Work directory: $TESTNET";
echo "$TESTNET" > testnet.name;

######################################################################################################################################################
echo -n $'\E[0;32m'
cat << "EOF"
BASE_CONFIG=$GLOBAL_PATH/base_config.ini;

EOF
######################################################################################################################################################
echo -n $'\E[0;37m'
echo "Work directory: $TESTNET";

# Validations

Expand Down Expand Up @@ -110,7 +107,7 @@ signature='#!/bin/bash
## ##
## https://github.com/CryptoLions ##
## https://github.com/eosrio ##
## https://github.com/HKEOS/Ghostbusters-Testnet ##
## https://github.com/HKEOS/Ghostbusters-Testnet ##
## ##
#######################################################\n\n';

Expand Down Expand Up @@ -260,7 +257,15 @@ if [[ $ISBP == true ]]; then
$TESTNET_DIR/cleos.sh wallet import $PRODUCER_PRIV_KEY
fi

echo "### EOS Ghostbusters Testnet Config file. Autogenerated by script." > $TESTNET_DIR/config.ini
if [[ $PEER_PUB_KEY == "" ]]; then
PEER_PUB_KEY="$PRODUCER_PUB_KEY";
fi

if [[ $PEER_PRIV_KEY == "" ]]; then
PEER_PRIV_KEY="$PRODUCER_PRIV_KEY";
fi

echo "### EOS Ghostbusters Testnet Config file. Autogenerated by script." > $BASE_CONFIG
echo '
get-transactions-time-limit = 3
genesis-json = "'$TESTNET_DIR'/genesis.json"
Expand All @@ -270,28 +275,28 @@ http-server-address = '$NODE_HTTP_SRV_ADDR'
p2p-listen-endpoint = '$NODE_P2P_LST_ENDP'
p2p-server-address = '$NODE_P2P_SRV_ADDR'
access-control-allow-origin = *
' >> $TESTNET_DIR/config.ini
' >> $BASE_CONFIG

if [[ $NODE_SSL_PORT != "" ]]; then
echo '
# SSL
# Filename with https private key in PEM format. Required for https (eosio::http_plugin)
https-server-address = '$NODE_HTTPS_SERVER_ADDR'
# Filename with the certificate chain to present on https connections. PEM format. Required for https. (eosio::http_plugin)
https-certificate-chain-file = '$SSL_CERT_FILE'
# Filename with https private key in PEM format. Required for https (eosio::http_plugin)
https-private-key-file = '$SSL_PRIV_KEY'
' >> $TESTNET_DIR/config.ini
# SSL
# Filename with https private key in PEM format. Required for https (eosio::http_plugin)
https-server-address = '$NODE_HTTPS_SERVER_ADDR'
# Filename with the certificate chain to present on https connections. PEM format. Required for https. (eosio::http_plugin)
https-certificate-chain-file = '$SSL_CERT_FILE'
# Filename with https private key in PEM format. Required for https (eosio::http_plugin)
https-private-key-file = '$SSL_PRIV_KEY'
' >> $BASE_CONFIG
else
echo '
# SSL
# Filename with https private key in PEM format. Required for https (eosio::http_plugin)
# https-server-address =
# Filename with the certificate chain to present on https connections. PEM format. Required for https. (eosio::http_plugin)
# https-certificate-chain-file =
# Filename with https private key in PEM format. Required for https (eosio::http_plugin)
# https-private-key-file =
' >> $TESTNET_DIR/config.ini
# SSL
# Filename with https private key in PEM format. Required for https (eosio::http_plugin)
# https-server-address =
# Filename with the certificate chain to present on https connections. PEM format. Required for https. (eosio::http_plugin)
# https-certificate-chain-file =
# Filename with https private key in PEM format. Required for https (eosio::http_plugin)
# https-private-key-file =
' >> $BASE_CONFIG
fi


Expand All @@ -315,50 +320,41 @@ plugin = eosio::history_api_plugin
#plugin = eosio::net_api_plugin
agent-name = '$AGENT_NAME'
' >> $TESTNET_DIR/config.ini
' >> $BASE_CONFIG

echo 'peer-private-key = ["'$PEER_PUB_KEY'","'$PEER_PRIV_KEY'"]' >> $BASE_CONFIG;

if [[ $ISBP == true ]]; then
echo '
plugin = eosio::producer_plugin
private-key = ["'$PRODUCER_PUB_KEY'","'$PRODUCER_PRIV_KEY'"]
producer-name = '$PRODUCER_NAME'
peer-private-key = ["'$PRODUCER_PUB_KEY'","'$PRODUCER_PRIV_KEY'"]
' >> $TESTNET_DIR/config.ini
echo 'plugin = eosio::producer_plugin' >> $BASE_CONFIG;
echo 'private-key = ["'$PRODUCER_PUB_KEY'","'$PRODUCER_PRIV_KEY'"]' >> $BASE_CONFIG;
echo 'producer-name = $PRODUCER_NAME' >> $BASE_CONFIG;
else
echo '
#plugin = eosio::producer_plugin
#private-key = ["'$PRODUCER_PUB_KEY'","'$PRODUCER_PRIV_KEY'"]
#peer-private-key = ["'$PRODUCER_PUB_KEY'","'$PRODUCER_PRIV_KEY'"]
#producer-name = '$PRODUCER_NAME'
' >> $TESTNET_DIR/config.ini
echo '# plugin = eosio::producer_plugin' >> $BASE_CONFIG;
echo '# private-key = ["'$PRODUCER_PUB_KEY'","'$PRODUCER_PRIV_KEY'"]' >> $BASE_CONFIG;
echo '# producer-name = $PRODUCER_NAME' >> $BASE_CONFIG;
fi
echo "$PEER_LIST" >> $TESTNET_DIR/config.ini
echo "$PEER_KEYS" >> $TESTNET_DIR/config.ini
echo "$PEER_LIST" >> $BASE_CONFIG
echo "$PEER_KEYS" >> $BASE_CONFIG
fi

###############################
########### NODE SCRIPTS #################
# Register Producer

echo '..:: Creating your registerProducer.sh ::..'

echo -ne "$signature" > $TESTNET_DIR/bp01_registerProducer.sh
echo "./cleos.sh system regproducer $PRODUCER_NAME $PRODUCER_PUB_KEY \"$PRODUCER_URL\" -p $PRODUCER_NAME" >> $TESTNET_DIR/bp01_registerProducer.sh
chmod u+x $TESTNET_DIR/bp01_registerProducer.sh

# UnRegister Producer

echo '..:: Creating your unRegisterProducer.sh ::..'

echo -ne "$signature" > $TESTNET_DIR/bp06_unRegisterProducer.sh
echo "./cleos.sh system unregprod $PRODUCER_NAME -p $PRODUCER_NAME" >> $TESTNET_DIR/bp06_unRegisterProducer.sh
chmod u+x $TESTNET_DIR/bp06_unRegisterProducer.sh


# Stake EOS Tokens
echo '..:: Creating Stake script stakeTokens.sh ::..'

echo -ne "$signature" > $TESTNET_DIR/bp02_stakeTokens.sh
echo "#./cleos.sh system delegatebw $PRODUCER_NAME $PRODUCER_NAME \"1000.0000 EOS\" \"1000.0000 EOS\" -p $PRODUCER_NAME" >> $TESTNET_DIR/bp02_stakeTokens.sh
echo "./cleos.sh push action eosio delegatebw '{\"from\":\"$PRODUCER_NAME\", \"receiver\":\"$PRODUCER_NAME\", \"stake_net_quantity\": \"1000.0000 EOS\", \"stake_cpu_quantity\": \"1000.0000 EOS\", \"transfer\": true}' -p $PRODUCER_NAME" >> $TESTNET_DIR/bp02_stakeTokens.sh
Expand All @@ -367,66 +363,80 @@ chmod u+x $TESTNET_DIR/bp02_stakeTokens.sh

# Unstake EOS Tokens
echo '..:: Creating Unstake script unStakeTokens.sh ::..'

echo -ne "$signature" > $TESTNET_DIR/bp05_unStakeTokens.sh
echo "./cleos.sh system undelegatebw $PRODUCER_NAME $PRODUCER_NAME \"1000.0000 EOS\" \"1000.0000 EOS\" -p $PRODUCER_NAME" >> $TESTNET_DIR/bp05_unStakeTokens.sh
chmod u+x $TESTNET_DIR/bp05_unStakeTokens.sh


# Vote Producer
echo '..:: Creating Vote script voteProducer.sh ::..'

echo -ne "$signature" > $TESTNET_DIR/bp03_voteProducer.sh
echo "./cleos.sh system voteproducer prods $PRODUCER_NAME $PRODUCER_NAME -p $PRODUCER_NAME" >> $TESTNET_DIR/bp03_voteProducer.sh
echo "#./cleos.sh system voteproducer prods $PRODUCER_NAME $PRODUCER_NAME tiger lion -p $PRODUCER_NAME" >> $TESTNET_DIR/bp03_voteProducer.sh
chmod u+x $TESTNET_DIR/bp03_voteProducer.sh

# Claim rewards
echo '..:: Creating ClaimReward script claimReward.sh ::..'

echo -ne "$signature" > $TESTNET_DIR/bp04_claimReward.sh
echo "./cleos.sh system claimrewards $PRODUCER_NAME -p $PRODUCER_NAME" >> $TESTNET_DIR/bp04_claimReward.sh
chmod u+x $TESTNET_DIR/bp04_claimReward.sh

# FINISH

FINISHTEXT="\n.=================================================================================.\n"
FINISHTEXT+="|=================================================================================|\n"
FINISHTEXT+="|˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙...::: INSTALLATION COMPLETED :::...˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙|\n"
FINISHTEXT+="|˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙|\n"
FINISHTEXT+="|˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙- Ghostbusters Testnet Node Info -˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙|\n"
FINISHTEXT+="| ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙|\n"
FINISHTEXT+="\_-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-_/\n"
FINISHTEXT+="\n"
# FINISH MESSAGE
FINISHTEXT="\n .====================================================================.\n"
FINISHTEXT+=" |====================================================================|\n"
FINISHTEXT+=" |˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙...::: INSTALLATION COMPLETED :::...˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙|\n"
FINISHTEXT+=" |˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙|\n"
FINISHTEXT+=" |˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙- Ghostbusters Testnet Node Info -˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙|\n"
FINISHTEXT+=" | ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙|\n"
FINISHTEXT+=" \_-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-_/\n"
FINISHTEXT+="\n"
FINISHTEXT+="Your wallet password was stored in the file wallet_pass.txt. Please use it to unlock your wallet:\n"
FINISHTEXT+="./cleos.sh wallet unlock\n"
FINISHTEXT+="\n"
FINISHTEXT+="All scripts to manage your node are located in $TESTNET_DIR folder:\n"
FINISHTEXT+=" start.sh - start your node. If you inserted your private key, then everything is ready. So start and please wait until synced.\n"
FINISHTEXT+=" stop.sh - stop your node\n"
FINISHTEXT+=" bp01_registerProducer.sh - register producer. Use it to register in the system contract.\n"
FINISHTEXT+=" bp02_stakeTokens.sh - stake tokens. Use it to stake tokens before voting.\n"
FINISHTEXT+=" bp03_voteProducer.sh - vote example. This example will vote only in yourself. You can add other producers manually in script.\n"
FINISHTEXT+=" bp04_claimReward.sh - claim producer rewards.\n"
FINISHTEXT+=" bp05_unStakeTokens.sh - unstake tokens.\n"
FINISHTEXT+=" bp06_unRegisterProducer.sh - unregister producer.\n"
FINISHTEXT+=" stderr.txt - node logs file\n"
FINISHTEXT+="\n"
FINISHTEXT+="\n"
FINISHTEXT+="To start/stop wallet use start.sh/stop.sh scripts in wallet folder. This installation script will start wallet by default.\n"
FINISHTEXT+="\n"
FINISHTEXT+="Installation script was disabled. To run again please chmod:\n"
FINISHTEXT+="chmod u+x $0\n"
FINISHTEXT+="\n"
FINISHTEXT+=". - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"

echo -n $'\E[0;32m'
FINISHTEXT+=" Your wallet password was stored in the file wallet_pass.txt\n"
FINISHTEXT+=" Please use it to unlock your wallet: ./cleos.sh wallet unlock\n"
FINISHTEXT+="\n _____________________________________________________________________\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | All scripts to manage your node are\n"
FINISHTEXT+=" | located in $TESTNET_DIR folder:\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | start.sh.....................start your node\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | stop.sh......................stop your node\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | bp01_registerProducer.sh.....register producer\n"
FINISHTEXT+=" | .............................Use it to register in\n"
FINISHTEXT+=" | .............................the system contract\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | bp02_stakeTokens.sh..........stake tokens\n"
FINISHTEXT+=" | .............................Use it to stake tokens before voting\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | bp03_voteProducer.sh.........vote example\n"
FINISHTEXT+=" | .............................It will vote only in yourself.\n"
FINISHTEXT+=" | .............................You can add other producers\n"
FINISHTEXT+=" | .............................manually editing the script\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | bp04_claimReward.sh..........claim producer rewards.\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | bp05_unStakeTokens.sh........unstake tokens.\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | bp06_unRegisterProducer.sh...unregister producer.\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | If you inserted your private key, then everything is ready.\n"
FINISHTEXT+=" | So start and please wait until synced.\n"
FINISHTEXT+=" | Logs are located on stderr.txt (tail -f stderr.txt)\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" | To start/stop wallet use start.sh/stop.sh scripts in wallet folder.\n"
FINISHTEXT+=" | This installation script will start wallet by default.\n"
FINISHTEXT+=" | \n"
FINISHTEXT+=" | Installation script was disabled. To run again please chmod:\n"
FINISHTEXT+=" | chmod u+x $0\n"
FINISHTEXT+=" |\n"
FINISHTEXT+=" ._____________________________________________________________________\n\n"
echo -ne $FINISHTEXT
echo -ne $FINISHTEXT > ghostbusters.txt

echo ""
echo
echo "This info was saved to ghostbusters.txt file"
echo ""
echo
read -n 1 -s -r -p "Press any key to continue"
chmod 644 $0
52 changes: 52 additions & 0 deletions lxd-setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@

```
cd /opt/eos
git pull
git checkout dawn-v4.1.0
git submodule update --recursive
# Change token name
ex -sc '16i|set( CORE_SYMBOL_NAME "EOS" )' -cx CMakeLists.txt
./eosio_build.sh
build/programs/nodeos/nodeos --version
# should output 3449264167
# initialize LXD
sudo lxd init
# launch a ubuntu 18.04 container
lxc launch ubuntu:18.04 eos-node
# enter bash
lxc exec eos-node -- /bin/bash
apt update
apt upgrade
# create a user for eos
sudo adduser eos
# complete interactive instructions
sudo usermod -aG sudo eos
mkdir -p /opt/eos
chown eos:eos /opt/eos
# exit the lxd container
exit
# copy nodeos binary
lxc file push /home/entropia/eos/build/programs/nodeos/nodeos eos-node/opt/eos/nodeos
# test execution on container
lxc exec eos-node -- /opt/eos/nodeos --version
# login on the container
lxc exec eos-node -- su - eos
lxc stop eos-node
wget https://igorls.keybase.pub/lxd-eos-node-d4.1.0.tar.gz
lxc image import lxd-eos-node-d4.1.0.tar.gz
#eos user password: lxceos123
4 changes: 4 additions & 0 deletions params.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ SSL_CERT_FILE="/path/to/certificate-chain"
### Node Agent Name
AGENT_NAME="<agent-name>"

### Peer Credentials (if blank will be equal to the produecer keys)
PEER_PUB_KEY=""
PEER_PRIV_KEY=""

### IS A BLOCK PRODUCER ? ###
ISBP=true

Expand Down
Loading

0 comments on commit 5f0b928

Please sign in to comment.