├── Bonus-Block ├── README.md └── bonus.sh ├── Elixir └── README.md ├── EthX_cover.jpeg ├── Inery ├── README.md ├── Task1 │ └── README.md ├── Task2 │ └── README.md ├── Task3 │ └── README.md ├── Task4 │ └── README.md └── Task5 │ └── README.md ├── MOI └── README.md ├── Muon └── README.md ├── Nibiru └── README.md ├── Nolus ├── README.md └── nolus.sh ├── Q Blockchain └── README.md ├── README.md ├── Shardeum └── README.md ├── Stader Node ETHx Rolling beta └── Wormholes ├── README.md ├── monitor.sh └── wormholes.sh /Bonus-Block/README.md: -------------------------------------------------------------------------------- 1 | 2 |

3 | 4 |

5 | 6 | ### Spesifikasi Hardware : 7 | NODE | CPU | RAM | SSD | 8 | | ------------- | ------------- | ------------- | -------- | 9 | | Testnet | 4 | 8 | 120 | 10 | 11 | > [Docs](https://bblocklabs.github.io/BonusBlock-docs/docs/running-a-node/prerequisites/) 12 | > 13 | > [Exploler](https://explorer.dwentz.xyz/bonus-block/staking/bonusvaloper19stcam0kspuzkrze0yyuagvxyh5sqaxe632dcv) 14 | > 15 | > [Faucet](https://faucet.bonusblock.io/) 16 | > 17 | > [Crew3](https://crew3.xyz/c/bonusblock/invite/bAjTZmTXi-k-hgadeNCUE/) 18 | > 19 | > [Twitter](https://twitter.com/bonus_block/) 20 | > 21 | > [Telegram](https://t.me/bonusblock/) 22 | 23 | 24 | ### Install otomatis 25 | ``` 26 | wget -O bonus.sh https://raw.githubusercontent.com/xcodenode/NODE-TESTNET/main/Bonus-Block/bonus.sh && chmod +x bonus.sh && ./bonus.sh 27 | ``` 28 | ### Load variable ke system 29 | ``` 30 | source $HOME/.bash_profile 31 | ``` 32 | ### Statesync 33 | ``` 34 | N/A 35 | ``` 36 | ### Informasi node 37 | 38 | * cek sync node 39 | ``` 40 | bonus-blockd status 2>&1 | jq .SyncInfo 41 | ``` 42 | * cek log node 43 | ``` 44 | journalctl -fu bonus-blockd -o cat 45 | ``` 46 | * cek node info 47 | ``` 48 | bonus-blockd status 2>&1 | jq .NodeInfo 49 | ``` 50 | * cek validator info 51 | ``` 52 | bonus-blockd status 2>&1 | jq .ValidatorInfo 53 | ``` 54 | * cek node id 55 | ``` 56 | bonus-blockd tendermint show-node-id 57 | ``` 58 | ### Membuat wallet 59 | * wallet baru 60 | ``` 61 | bonus-blockd keys add $WALLET 62 | ``` 63 | * recover wallet 64 | ``` 65 | bonus-blockd keys add $WALLET --recover 66 | ``` 67 | * list wallet 68 | ``` 69 | bonus-blockd keys list 70 | ``` 71 | * hapus wallet 72 | ``` 73 | bonus-blockd keys delete $WALLET 74 | ``` 75 | ### Simpan informasi wallet 76 | ``` 77 | BONUS_WALLET_ADDRESS=$(bonus-blockd keys show $WALLET -a) 78 | BONUS_VALOPER_ADDRESS=$(bonus-blockd keys show $WALLET --bech val -a) 79 | echo 'export BONUS_WALLET_ADDRESS='${BONUS_WALLET_ADDRESS} >> $HOME/.bash_profile 80 | echo 'export BONUS_VALOPER_ADDRESS='${BONUS_VALOPER_ADDRESS} >> $HOME/.bash_profile 81 | source $HOME/.bash_profile 82 | ``` 83 | 84 | ### Membuat validator 85 | * cek balance 86 | ``` 87 | bonus-blockd query bank balances $BONUS_WALLET_ADDRESS 88 | ``` 89 | 90 | * Faucet bonus19stcaxxxxxxxxxxxxxxxx 91 | > [Faucet](https://faucet.bonusblock.io/) 92 | 93 | * membuat validator 94 | ``` 95 | bonus-blockd tx staking create-validator \ 96 | --amount 100000ubonus \ 97 | --from $WALLET \ 98 | --commission-max-change-rate "0.01" \ 99 | --commission-max-rate "0.2" \ 100 | --identity "xxxxxxx" \ 101 | --website https://xcodenode.xyz \ 102 | --commission-rate "0.07" \ 103 | --min-self-delegation "1" \ 104 | --pubkey $(bonus-blockd tendermint show-validator) \ 105 | --moniker $NODENAME \ 106 | --gas=auto \ 107 | --gas-adjustment=1.2 \ 108 | --gas-prices=0.025ubonus \ 109 | --chain-id $BONUS_CHAIN_ID 110 | ``` 111 | * edit validator 112 | ``` 113 | bonus-blockd tx staking edit-validator \ 114 | --new-moniker=xcodenode \ 115 | --identity="xxxxx" \ 116 | --website=https://xcodenode.xyz \ 117 | --chain-id=$BONUS_CHAIN_ID \ 118 | --from=$WALLET \ 119 | --fees=26000000ubonus 120 | ``` 121 | * unjail validator 122 | ``` 123 | bonus-blockd tx slashing unjail \ 124 | --broadcast-mode=block \ 125 | --from=$WALLET \ 126 | --chain-id=$BONUS_CHAIN_ID \ 127 | --fees=200000000ubonus \ 128 | --gas-adjustment=1.2 \ 129 | --gas=auto 130 | ``` 131 | ### Voting 132 | ``` 133 | bonus-blockd tx gov vote 1 yes --from $WALLET --chain-id=$BONUS_CHAIN_ID --gas=auto --fees=2500000ubonus 134 | ``` 135 | ### Delegasi dan Rewards 136 | * delegasi 137 | ``` 138 | bonus-blockd tx staking delegate $BONUS_VALOPER_ADDRESS 1000000000000ubonus --from=$WALLET --chain-id=$BONUS_CHAIN_ID --gas=auto --fees=250000ubonus 139 | ``` 140 | * withdraw reward 141 | ``` 142 | bonus-blockd tx distribution withdraw-all-rewards --from=$WALLET --chain-id=$BONUS_CHAIN_ID --gas=auto --fees=2500000ubonus 143 | ``` 144 | * withdraw reward beserta komisi 145 | ``` 146 | bonus-blockd tx distribution withdraw-rewards $BONUS_VALOPER_ADDRESS --from=$WALLET --commission --chain-id=$BONUS_CHAIN_ID --gas=auto --fees=2500000ubonus 147 | ``` 148 | 149 | ### Hapus node 150 | ``` 151 | sudo systemctl stop bonus-blockd && \ 152 | sudo systemctl disable bonus-blockd && \ 153 | rm -rf /etc/systemd/system/bonus-blockd.service && \ 154 | sudo systemctl daemon-reload && \ 155 | cd $HOME && \ 156 | rm -rf BonusBlock-chain && \ 157 | rm -rf bonus.sh && \ 158 | rm -rf .bonusblock && \ 159 | rm -rf $(which bonus-blockd) 160 | ``` 161 | -------------------------------------------------------------------------------- /Bonus-Block/bonus.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sleep 2 4 | 5 | # set vars 6 | if [ ! $NODENAME ]; then 7 | read -p "Enter node name: " NODENAME 8 | echo 'export NODENAME='$NODENAME >> $HOME/.bash_profile 9 | fi 10 | 11 | if [ ! $WALLET ]; then 12 | echo "export WALLET=wallet" >> $HOME/.bash_profile 13 | fi 14 | echo "export BONUS_CHAIN_ID=blocktopia-01" >> $HOME/.bash_profile 15 | source $HOME/.bash_profile 16 | 17 | echo '==================ARSYANODE======================' 18 | echo -e "moniker : \e[1m\e[32m$NODENAME\e[0m" 19 | echo -e "wallet : \e[1m\e[32m$WALLET\e[0m" 20 | echo -e "chain-id: \e[1m\e[32m$BONUS_CHAIN_ID\e[0m" 21 | echo '=================================================' 22 | sleep 2 23 | 24 | echo -e "\e[1m\e[32m1. Updating packages... \e[0m" && sleep 1 25 | # update 26 | sudo apt update && sudo apt list --upgradable && sudo apt upgrade -y 27 | 28 | echo -e "\e[1m\e[32m2. Installing dependencies... \e[0m" && sleep 1 29 | # packages 30 | sudo apt install curl build-essential git wget jq make gcc tmux chrony -y 31 | 32 | # install go 33 | ver="1.19.5" && \ 34 | wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \ 35 | sudo rm -rf /usr/local/go && \ 36 | sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \ 37 | rm "go$ver.linux-amd64.tar.gz" && \ 38 | echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \ 39 | source $HOME/.bash_profile && \ 40 | go version 41 | 42 | echo -e "\e[1m\e[32m3. Downloading and building binaries... \e[0m" && sleep 1 43 | # download binary 44 | cd $HOME 45 | git clone https://github.com/BBlockLabs/BonusBlock-chain 46 | cd BonusBlock-chain 47 | make build 48 | 49 | # config 50 | bonus-blockd config chain-id=blocktopia-01 51 | bonus-blockd config keyring-backend test 52 | 53 | # init 54 | bonus-blockd init $NODENAME --chain-id=blocktopia-01 55 | 56 | # download genesis and addrbook 57 | rm ~/.bonusblock/config/genesis.json 58 | curl https://bonusblock-testnet.alter.network/genesis? | jq '.result.genesis' > ~/.bonusblock/config/genesis.json 59 | 60 | # set peers and seeds 61 | PEERS=e5e04918240cfe63e20059a8abcbe62f7eb05036@bonusblock-testnet-p2p.alter.network:26656 62 | sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.bonusblock/config/config.toml 63 | 64 | 65 | # config pruning 66 | pruning="custom" 67 | pruning_keep_recent="100" 68 | pruning_keep_every="0" 69 | pruning_interval="50" 70 | sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.bonusblock/config/app.toml 71 | sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.bonusblock/config/app.toml 72 | sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.bonusblock/config/app.toml 73 | sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.bonusblock/config/app.toml 74 | 75 | # set minimum gas price and timeout commit 76 | sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0025ubonus\"/" $HOME/.bonusblock/config/app.toml 77 | 78 | # enable prometheus 79 | sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.bonusblock/config/config.toml 80 | 81 | # reset 82 | 83 | 84 | echo -e "\e[1m\e[32m4. Starting service... \e[0m" && sleep 1 85 | # create service 86 | sudo tee /etc/systemd/system/bonus-blockd.service > /dev/null < /dev/null 34 | sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y 2 | 3 |

4 | 5 | 6 | > [Docs](https://docs.inery.io/docs) 7 | 8 | > [Portal](https://testnet.inery.io/) 9 | 10 | > [Explorer Inary](https://explorer.inery.io/ "Explorer Inary") 11 | 12 | If you haven't registered, please register [here](https://testnet.inery.io/) 13 | 14 | # Install Become a Master Node 15 | 16 | ## Minimum Spec Hardware : 17 | NODE | CPU | RAM | SSD | OS | 18 | | ------------- | ------------- | ------------- | -------- | -------- | 19 | | Inery | 4 | 8 | 250 | Ubuntu 20.04 LTS | 20 | 21 | 22 | ## Update Inery-node 23 | * If you haven't run node inery before skip to step Download Inery node 24 | * Stop Node 25 | ```console 26 | cd $HOME/inery-node/inery.setup/master.node 27 | ./stop.sh 28 | ``` 29 | Check 30 | ```console 31 | pidof nodine 32 | ``` 33 | Execute Stop 34 | ```console 35 | pidof -9 36 | ``` 37 | 38 | * Delete Folder Inery node 39 | ```console 40 | cd $HOME 41 | rm -rf inery-node 42 | ``` 43 | 44 | * Download Inery node 45 | ```console 46 | git clone https://github.com/inery-blockchain/inery-node 47 | ``` 48 | 49 | * Goto Folder `inery.setup` 50 | ```console 51 | cd inery-node/inery.setup 52 | ``` 53 | 54 | * executable `ine.py` 55 | ```console 56 | chmod +x ine.py 57 | ``` 58 | 59 | * Export path 60 | ```console 61 | ./ine.py --export 62 | ``` 63 | 64 | * Load path 65 | ```console 66 | source $HOME/.bashrc 67 | ``` 68 | 69 | * Config Edit 70 | ```console 71 | nano tools/config.json 72 | ``` 73 | Cari `MASTER_ACCOUNT` lalu ubah value seperti berikut 74 | | Variable | Data | 75 | |-----------|------------| 76 | |NAME|Inery Account| 77 | |PUBLIC_KEY|Public Account| 78 | |PRIVATE_KEY|Privaet Account| 79 | |PEER_ADDRESS|127.0.0.1:9010| 80 | 81 | Save CTRL+x+y 82 | 83 | * Run node 84 | ```console 85 | ./ine.py --master 86 | ``` 87 | 88 | * Check log node 89 | ```console 90 | tail -f master.node/blockchain/nodine.log 91 | ``` 92 | 93 | * If it's syncron run`start.sh` 94 | ```console 95 | ./master.node/start.sh 96 | ``` 97 | 98 | * Request Faucet in [Dashboard](https://testnet.inery.io/dashboard/) 99 | 100 | * Register to produser 101 | ```console 102 | cline master bind :9010 103 | ``` 104 | Delete `<>` 105 | 106 | If Message Error : `wallet not unlocked` 107 | 108 | ```console 109 | cline wallet unlock -n -p 110 | ``` 111 | 112 | * Allow to be producer 113 | ```console 114 | cline master approve 115 | ``` 116 | 117 | If Message Error : `unable to find key` required to request a faucet again on the dashboard 118 | 119 | * Check if the account has produced a block 120 | ```console 121 | cline get account 122 | ``` 123 | 124 | Goto [TASK1](https://github.com/an-node/NODE-TESTNET/tree/main/Inery/Task1) 125 | 126 | ## Troubleshoot 127 | 128 | ### Error : FileNotFoundError:[Errno] No such file or directory:./blockchain/config/config.ini 129 | 130 | Indication : `libssl 1.1` not installed properly 131 | 132 | Solution : 133 | ``` 134 | wget http://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb 135 | sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb 136 | ``` 137 | 138 | ### Erorr : net_plugin::plugin_startup failed to bind to port 9010 139 | 140 | Indication : noding keeps running in the background 141 | 142 | Solution : 143 | ``` 144 | pidof nodine 145 | 146 | pidkill -9 147 | ``` 148 | 149 | Check Again 150 | 151 | ``` 152 | pidof nodine 153 | ``` 154 | 155 | Run Again 156 | 157 | ## Delete Node 158 | ```console 159 | cd $HOME/inery-node/inery.setup/master.node 160 | ./stop.sh 161 | pidof nodine 162 | cd $HOME 163 | rm -rf inery-node 164 | ``` 165 | -------------------------------------------------------------------------------- /Inery/Task1/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Task 1 3 | 4 | ## Task : Master Approval 5 | 6 | ## Reward : 800 INR 7 | 8 | #### Login to [Dashboard](https://testnet.inery.io/dashboard) 9 | 10 | * Select Task1 11 | 12 | * Readmodre 13 | 14 | * Finish Task 15 | 16 | * Wait for Review 17 | 18 | * Done 19 | -------------------------------------------------------------------------------- /Inery/Task2/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Task 2 3 | 4 | -------------------------------------------------------------------------------- /Inery/Task3/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Task 3 3 | 4 | -------------------------------------------------------------------------------- /Inery/Task4/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Task 4 3 | 4 | -------------------------------------------------------------------------------- /Inery/Task5/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Task 5 3 | SOON 4 | 5 | -------------------------------------------------------------------------------- /MOI/README.md: -------------------------------------------------------------------------------- 1 | 2 | ![eO27Z4sz_400x400](https://user-images.githubusercontent.com/96678356/219349691-54368761-fb33-4641-ae81-1cf16459abb2.jpg) 3 | 4 | > [Docs](https://validator.moi.technology/docs?activeTab=CLI) 5 | 6 | > [Portal](https://moi.technology/indus/) 7 | 8 | > [Discord](https://discord.gg/eKN2gXcS) 9 | 10 | 11 | * [Register](https://iome.ai/signup) 12 | 13 | * KYC : Submit Front ID & Selfie, wait 2 Minute - 24 Hours 14 | 15 | # Install Become a Node MOI 16 | 17 | ## Minimum Spec Hardware : 18 | NODE | CPU | RAM | SSD | OS | 19 | | ------------- | ------------- | ------------- | -------- | -------- | 20 | | MOI | 4 | 8 | 250 | Ubuntu 20.04 LTS | 21 | 22 | ## 1. Auto Install 23 | ```console 24 | wget -O setup_moipod_indus.sh https://run-indus.moi.technology && chmod +x setup_moipod_indus.sh && bash setup_moipod_indus.sh 25 | ``` 26 | * Input Username (Username Register in iome.ai) 27 | * Input Password (Passowrd Register in iome.ai) 28 | * Change Password 29 | * Wait for it to finish 30 | 31 | ## 2. Manual Install 32 | ```console 33 | sudo curl -o moipod https://validator.moi.technology/moipod/v0.5.1/moipod.linux && sudo chmod +x moipod 34 | ``` 35 | ### Setup Node 36 | * Step 1: Install NodeJS 37 | 38 | ```console 39 | apt update 40 | ``` 41 | ```console 42 | apt install Node.js 43 | ``` 44 | ```console 45 | apt install npm 46 | ``` 47 | * Step 2: Install Node ZKP Library 48 | ```console 49 | sudo npm i @nuid/zk@0.0.12 -g 50 | ``` 51 | * Step 3: Start/Restart MOI Pod 52 | Node password = create Begining Instalation 53 | ```console 54 | ./moipod --username --password --nodepass 55 | ``` 56 | * Step 4: Import Node 57 | ```console 58 | ./moipod --username --password --nodepass --kramaID 59 | ``` 60 | * Step 5: Deregister Node from Machine 61 | ```console 62 | ./moipod --username --password --nodepass --deregister 63 | ``` 64 | ## Check Validator 65 | 66 | [Check](https://iome.ai/validators) 67 | 68 | Incentive will be visible after 24 hours indashboard 69 | -------------------------------------------------------------------------------- /Muon/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Intsallation Node Validator Muon 3 | 4 | ![muon](https://user-images.githubusercontent.com/96678356/217448905-77527234-2e7f-4229-be93-6806c058aa80.png) 5 | 6 | ## Referensi 7 | * [DOC](https://docs.muon.net/muon-network/muon-nodes/joining-the-testnet-alice/faq-for-alice#when-i-check-the-status-of-my-node-on-the-dashboard-why-do-i-see-loading-or-offline) 8 | 9 | * [DISCORD](https://discord.gg/muon) 10 | 11 | ## Minimum Requirements 12 | 13 | - 2vCPU 14 | - 4GB RAM 15 | - 20GB SSD 16 | - Port 8000 17 | 18 | ## Update Package 19 | 20 | ```bash 21 | sudo apt update && sudo apt upgrade -y 22 | sudo apt install curl tar wget tmux htop net-tools clang pkg-config libssl-dev jq build-essential git make ncdu docker-compose -y 23 | ``` 24 | 25 | ## Open Port 26 | 27 | ```bash 28 | ufw allow 8000 29 | ufw enable 30 | ``` 31 | 32 | ## Install Docker 33 | ```bash 34 | rm /usr/bin/docker-compose /usr/local/bin/docker-compose 35 | ``` 36 | ```bash 37 | curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh 38 | ``` 39 | ```bash 40 | systemctl restart docker 41 | ``` 42 | ```bash 43 | curl -SL https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose 44 | ``` 45 | ```bash 46 | chmod +x /usr/local/bin/docker-compose 47 | ``` 48 | ```bash 49 | ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 50 | ``` 51 | ```bash 52 | docker --version 53 | ``` 54 | 55 | ## Clone Muon 56 | 57 | ```bash 58 | git clone https://github.com/muon-protocol/muon-node-js.git --recurse-submodules --branch testnet 59 | ``` 60 | 61 | ## Build Muon 62 | 63 | ```bash 64 | cd muon-node-js 65 | docker-compose build 66 | docker-compose up -d 67 | ``` 68 | 69 | ## Paste In Browser 70 | ```bash 71 | http://:8000/status 72 | ``` 73 | Create New wallet & Request Faucet BSC Testnet 74 | ```bash 75 | https://testnet.bnbchain.org/faucet-smart 76 | ``` 77 | Result 78 | ```bash 79 | {"address":"0xDE53563cf21D5E6257BE1Ec67eCCA63dEBXXXXXXX","peerId":"QmbtJLXPQUGiJfSnbAxJXW6HPQ4bhTCRBKufSFHaexxxxx","managerContract":{"network":"bsctest","address":"0x2efB53c11FC935f6114B3fC37AaFa6a76B263a4E"},"shield":{"enable":false,"apps":[]},"addedToNetwork":false} 80 | ``` 81 | 82 | Visit -> https://alice.muon.net/join 83 | ### Connect Wallet 84 | 85 | ![muon](https://user-images.githubusercontent.com/65535542/213710107-ee12c47a-692f-4131-a782-8ad295dd87dd.png) 86 | 87 | ### Mint Faucet Muon 88 | 89 | ![muon1](https://user-images.githubusercontent.com/65535542/213710401-cb58f64d-5c07-4edf-986e-bef31a6d21d1.png) 90 | 91 | 92 | ### Register add Node 93 | 94 | Go to -> http://:8000/status 95 | 96 | Save output 97 | 98 | example 99 | ```bash 100 | 101 | {"address":"0xDE53563cf21D5E6257BE1Ec67eCCA63dEBXXXXXXX","peerId":"QmbtJLXPQUGiJfSnbAxJXW6HPQ4bhTCRBKufSFHaexxxxx","managerContract":{"network":"bsctest","address":"0x2efB53c11FC935f6114B3fC37AaFa6a76B263a4E"},"shield":{"enable":false,"apps":[]},"addedToNetwork":false} 102 | ``` 103 | 104 | ![muon3](https://user-images.githubusercontent.com/65535542/213770172-54cd5744-506a-4eb8-a666-47e8f74dac3d.png) 105 | 106 | Input Node Address and peerID, and then Add Node 107 | ```bash 108 | Node Adress : 0xDE53563cf21D5E6257BE1Ec67eCCA63dEBXXXXXXX 109 | Peer ID : QmbtJLXPQUGiJfSnbAxJXW6HPQ4bhTCRBKufSFHaexxxxx 110 | ``` 111 | 112 | Please Wait...... 113 | ```bash 114 | http://:8000/v1/?app=tss&method=test 115 | ``` 116 | 117 | If it is added correctly, you should receive a json response whose `success` is `true` 118 | ```bash 119 | {"success":true,"result":{"confirmed":true, ... }} 120 | ``` 121 | Restart 122 | ```bash 123 | docker-compose restart 124 | ``` 125 | ![1](https://user-images.githubusercontent.com/96678356/217445890-3248d4d3-0874-463d-b88b-9d41824cfa93.PNG) 126 | 127 | ## Backup 128 | ```bash 129 | docker cp muon-node:/usr/src/muon-node-js/.env ./backup.env 130 | ``` 131 | ## Restore 132 | ```bash 133 | docker cp backup.env muon-node:/usr/src/muon-node-js/.env 134 | docker-compose restart 135 | ``` 136 | ## Remove Docker Muon 137 | ```bash 138 | docker ps 139 | sudo docker kill 140 | sudo docker rm kill 141 | ``` 142 | -------------------------------------------------------------------------------- /Nibiru/README.md: -------------------------------------------------------------------------------- 1 | ![nibi](https://user-images.githubusercontent.com/96678356/222181438-7a415e6a-8d57-40cb-9dd7-6bc7a8f37302.jpg) 2 | 3 | # LINKS 4 | ```WEBSITE``` - https://nibiru.fi/
5 | ```TWITTER``` - https://twitter.com/NibiruChain/
6 | ```DISCORD``` - https://discord.gg/nibiru/
7 | ```GITHUB``` - https://github.com/NibiruChain/
8 | ```GITBOOK``` - https://docs.nibiru.fi/
9 | ```MEDIUM``` - https://blog.nibiru.fi/
10 | ```LINKEDIN``` - https://www.linkedin.com/company/nibiruchain/ 11 | # EXPLORERS 12 | ```NIBIRU.FI``` - https://testnet-2.nibiru.fi/ 13 | # SOFTWARE REQUIREMENTS 14 | ``` 15 | sudo add-apt-repository ppa:longsleep/golang-backports 16 | sudo apt-get update 17 | sudo apt-get install golang-go 18 | go version 19 | sudo apt-get install git 20 | git --version 21 | ``` 22 | # INSTALL LAST BINARY 23 | ``` 24 | git clone https://github.com/NibiruChain/nibiru 25 | cd nibiru 26 | git checkout v0.19.2 27 | go mod tidy 28 | make install 29 | ``` 30 | # INIT THE CONFIG FILES 31 | ``` 32 | nibid init --chain-id nibiru-itn-1 33 | nibid config chain-id nibiru-itn-1 34 | ``` 35 | # CREATE OR RESTORE A WALLET 36 | ``` 37 | nibid keys add 38 | ``` 39 | or 40 | ``` 41 | nibid keys add --recover 42 | ``` 43 | # DOWNLOAD GENESIS 44 | ``` 45 | curl https://anode.team/Nibiru/test/genesis.json > ~/.nibid/config/genesis.json 46 | ``` 47 | # DOWNLOAD ADDRBOOK 48 | ``` 49 | curl https://anode.team/Nibiru/test/addrbook.json > ~/.nibid/config/addrbook.json 50 | ``` 51 | # ADD PEERS AND SEEDS 52 | ``` 53 | SEEDS="" 54 | PEERS="dd58949cab9bf75a42b556d04d3a4b1bbfadd8b5@144.76.97.251:40656" 55 | sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.nibid/config/config.toml 56 | ``` 57 | # ADD MIN GAS 58 | ``` 59 | sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025unibi\"/" $HOME/.nibid/config/app.toml 60 | ``` 61 | # CREATE THE SERVICE FILE 62 | ``` 63 | sudo tee /etc/systemd/system/nibid.service > /dev/null < 104 | ``` 105 | # STATE-SYNC 106 | ``` 107 | SNAP_RPC=65.108.199.120:61757 && \ 108 | LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \ 109 | BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \ 110 | TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) && \ 111 | echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH 112 | ``` 113 | ``` 114 | sudo systemctl stop nibid && nibid tendermint unsafe-reset-all --home $HOME/.nibid --keep-addr-book 115 | ``` 116 | ``` 117 | peers="2479ff4d8c0918b95da280319b179f016b5db814@65.108.199.120:61756" 118 | sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.nibid/config/config.toml 119 | ``` 120 | ``` 121 | sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \ 122 | s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \ 123 | s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \ 124 | s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"| ; \ 125 | s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME/.nibid/config/config.toml 126 | ``` 127 | ``` 128 | curl -o - -L https://anode.team/Nibiru/test/anode.team_nibiru_wasm.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.nibid/data 129 | ``` 130 | ``` 131 | sudo systemctl restart nibid && journalctl -fu nibid -o cat 132 | ``` 133 | # Check VALIDATOR 134 | [Explorer](https://nibiru.explorers.guru/) 135 | -------------------------------------------------------------------------------- /Nolus/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | ### Official 6 | >- [Docs](https://docs-nolus-protocol.notion.site/Nolus-Protocol-Docs-a0ddfe091cc5456183417a68502705f8) 7 | 8 | ### Minimum Hardware : 9 | NODE | CPU | RAM | SSD | OS | 10 | | ------------- | ------------- | ------------- | -------- | -------- | 11 | | NOLUS | 2 | 4 | 120 | Ubuntu 22.00 LTS | 12 | 13 | ### Automatic Installer 14 | ``` 15 | wget -O nolus.sh https://github.com/an-node/NODE-TESTNET/blob/main/Nolus/nolus.sh && chmod +x nolus.sh && ./nolus.sh 16 | ``` 17 | ### Snapshot 18 | ``` 19 | sudo systemctl stop nolusd 20 | cp $HOME/.nolus/data/priv_validator_state.json $HOME/.nolus/data/priv_validator_state.json.backup 21 | rm -rf $HOME/.nolus/data 22 | 23 | curl -L https://snapshots.kjnodes.com/nolus-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.nolus 24 | 25 | mv $HOME/.nolus/data/priv_validator_state.json.backup $HOME/.nolus/data/priv_validator_state.json 26 | 27 | sudo systemctl start nolusd && sudo journalctl -fu nolusd -o cat 28 | ``` 29 | 30 | ### State Sync 31 | ``` 32 | nolusd tendermint unsafe-reset-all --home $HOME/.nolus --keep-addr-book 33 | 34 | SNAP_RPC="https://rpc.nolus.nodexcapital.com:443" 35 | 36 | LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \ 37 | BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \ 38 | TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) 39 | 40 | sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \ 41 | s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \ 42 | s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \ 43 | s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.nolus/config/config.toml 44 | 45 | sudo systemctl start nolusd && sudo journalctl -fu nolusd -o cat 46 | ``` 47 | ### Seed Peers 48 | ``` 49 | sed -i -e "s|^seeds *=.*|seeds = \"3f472746f46493309650e5a033076689996c8881@nolus-testnet.rpc.kjnodes.com:43659\"|" $HOME/.nolus/config/config.toml 50 | ``` 51 | ### Addrbook (Update every hour) 52 | ``` 53 | curl -Ls https://snapshots.kjnodes.com/nolus-testnet/addrbook.json > $HOME/.nolus/config/addrbook.json 54 | ``` 55 | ### Genesis 56 | ``` 57 | curl -Ls hhttps://snapshots.kjnodes.com/nolus-testnet/genesis.json > $HOME/.nolus/config/genesis.json 58 | ``` 59 | -------------------------------------------------------------------------------- /Nolus/nolus.sh: -------------------------------------------------------------------------------- 1 | echo -e "\033[0;35m" 2 | echo " ░█████╗░███╗░░██╗███╗░░██╗  ███╗░░██╗░█████╗░██████╗░███████╗ "; 3 | echo " ██╔══██╗████╗░██║████╗░██║  ████╗░██║██╔══██╗██╔══██╗██╔════╝ "; 4 | echo " ███████║██╔██╗██║██╔██╗██║  ██╔██╗██║██║░░██║██║░░██║█████╗░░ "; 5 | echo " ██╔══██║██║╚████║██║╚████║  ██║╚████║██║░░██║██║░░██║██╔══╝░░ "; 6 | echo " ██║░░██║██║░╚███║██║░╚███║  ██║░╚███║╚█████╔╝██████╔╝███████╗ "; 7 | echo " ╚═╝░░╚═╝╚═╝░░╚══╝╚═╝░░╚══╝  ╚═╝░░╚══╝░╚════╝░╚═════╝░╚══════╝ "; 8 | echo -e "\e[0m" 9 | 10 | sleep 1 11 | 12 | # Variable 13 | SOURCE=nolus-core 14 | WALLET=wallet 15 | BINARY=nolusd 16 | CHAIN=nolus-rila 17 | FOLDER=.nolus 18 | VERSION=v0.1.39 19 | DENOM=unls 20 | COSMOVISOR=cosmovisor 21 | REPO=https://github.com/Nolus-Protocol/nolus-core.git 22 | GENESIS=https://snapshots.kjnodes.com/nolus-testnet/genesis.json 23 | ADDRBOOK=https://snapshots.kjnodes.com/nolus-testnet/addrbook.json 24 | PORT=39 25 | 26 | echo "export SOURCE=${SOURCE}" >> $HOME/.bash_profile 27 | echo "export WALLET=${WALLET}" >> $HOME/.bash_profile 28 | echo "export BINARY=${BINARY}" >> $HOME/.bash_profile 29 | echo "export DENOM=${DENOM}" >> $HOME/.bash_profile 30 | echo "export CHAIN=${CHAIN}" >> $HOME/.bash_profile 31 | echo "export FOLDER=${FOLDER}" >> $HOME/.bash_profile 32 | echo "export VERSION=${VERSION}" >> $HOME/.bash_profile 33 | echo "export COSMOVISOR=${COSMOVISOR}" >> $HOME/.bash_profile 34 | echo "export REPO=${REPO}" >> $HOME/.bash_profile 35 | echo "export GENESIS=${GENESIS}" >> $HOME/.bash_profile 36 | echo "export ADDRBOOK=${ADDRBOOK}" >> $HOME/.bash_profile 37 | echo "export PORT=${PORT}" >> $HOME/.bash_profile 38 | source $HOME/.bash_profile 39 | 40 | # Set Vars 41 | if [ ! $NODENAME ]; then 42 | read -p "hello@nodexcapital:~# [ENTER YOUR NODENAME] > " NODENAME 43 | echo 'export NODENAME='$NODENAME >> $HOME/.bash_profile 44 | fi 45 | echo "" 46 | echo -e "YOUR NODE NAME : \e[1m\e[35m$NODENAME\e[0m" 47 | echo -e "NODE CHAIN ID : \e[1m\e[35m$CHAIN\e[0m" 48 | echo -e "NODE PORT : \e[1m\e[35m$PORT\e[0m" 49 | echo "" 50 | 51 | # Package 52 | sudo apt -q update 53 | sudo apt -qy install curl git jq lz4 build-essential 54 | sudo apt -qy upgrade 55 | 56 | # Install GO 57 | sudo rm -rf /usr/local/go 58 | curl -Ls https://go.dev/dl/go1.19.5.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local 59 | eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh) 60 | eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile) 61 | 62 | # Get testnet version of LAVA 63 | cd $HOME 64 | rm -rf $SOURCE 65 | git clone $REPO 66 | cd $SOURCE 67 | git checkout $VERSION 68 | make build 69 | go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.4.0 70 | 71 | # Prepare binaries for Cosmovisor 72 | mkdir -p $HOME/$FOLDER/$COSMOVISOR/genesis/bin 73 | mv target/release/$BINARY $HOME/$FOLDER/$COSMOVISOR/genesis/bin/ 74 | rm -rf build 75 | 76 | # Create application symlinks 77 | ln -s $HOME/$FOLDER/$COSMOVISOR/genesis $HOME/$FOLDER/$COSMOVISOR/current 78 | sudo ln -s $HOME/$FOLDER/$COSMOVISOR/current/bin/$BINARY /usr/local/bin/$BINARY 79 | 80 | # Init generation 81 | $BINARY config chain-id $CHAIN 82 | $BINARY config keyring-backend test 83 | $BINARY config node tcp://localhost:${PORT}657 84 | $BINARY init $NODENAME --chain-id $CHAIN 85 | 86 | # Set peers and seeds 87 | PEERS= 88 | SEEDS="3f472746f46493309650e5a033076689996c8881@nolus-testnet.rpc.kjnodes.com:43659" 89 | sed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$PEERS\"|" $HOME/$FOLDER/config/config.toml 90 | sed -i -e "s|^seeds *=.*|seeds = \"$SEEDS\"|" $HOME/$FOLDER/config/config.toml 91 | 92 | # Download genesis and addrbook 93 | curl -Ls $GENESIS > $HOME/$FOLDER/config/genesis.json 94 | curl -Ls $ADDRBOOK > $HOME/$FOLDER/config/addrbook.json 95 | 96 | # Set Port 97 | sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${PORT}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${PORT}660\"%" $HOME/$FOLDER/config/config.toml 98 | sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${PORT}317\"%; s%^address = \":8080\"%address = \":${PORT}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${PORT}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${PORT}091\"%" $HOME/$FOLDER/config/app.toml 99 | 100 | # Set Config Pruning 101 | pruning="custom" 102 | pruning_keep_recent="100" 103 | pruning_keep_every="0" 104 | pruning_interval="10" 105 | sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/$FOLDER/config/app.toml 106 | sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/$FOLDER/config/app.toml 107 | sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/$FOLDER/config/app.toml 108 | sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/$FOLDER/config/app.toml 109 | 110 | # Set minimum gas price 111 | sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0025$DENOM\"/" $HOME/$FOLDER/config/app.toml 112 | 113 | # Enable snapshots 114 | sed -i -e "s/^snapshot-interval *=.*/snapshot-interval = \"2000\"/" $HOME/$FOLDER/config/app.toml 115 | $BINARY tendermint unsafe-reset-all --home $HOME/$FOLDER --keep-addr-book 116 | curl -L https://snapshots.kjnodes.com/nolus-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/$FOLDER 117 | 118 | # Create Service 119 | sudo tee /etc/systemd/system/$BINARY.service > /dev/null << EOF 120 | [Unit] 121 | Description=$BINARY 122 | After=network-online.target 123 | 124 | [Service] 125 | User=$USER 126 | ExecStart=$(which cosmovisor) run start 127 | Restart=on-failure 128 | RestartSec=10 129 | LimitNOFILE=65535 130 | Environment="DAEMON_HOME=$HOME/$FOLDER" 131 | Environment="DAEMON_NAME=$BINARY" 132 | Environment="UNSAFE_SKIP_BACKUP=true" 133 | 134 | [Install] 135 | WantedBy=multi-user.target 136 | EOF 137 | 138 | # Register And Start Service 139 | sudo systemctl start $BINARY 140 | sudo systemctl daemon-reload 141 | sudo systemctl enable $BINARY 142 | 143 | echo -e "\e[1m\e[35mSETUP FINISHED\e[0m" 144 | echo "" 145 | echo -e "CHECK STATUS BINARY : \e[1m\e[35msystemctl status $BINARY\e[0m" 146 | echo -e "CHECK RUNNING LOGS : \e[1m\e[35mjournalctl -fu $BINARY -o cat\e[0m" 147 | echo -e "CHECK LOCAL STATUS : \e[1m\e[35mcurl -s localhost:${PORT}657/status | jq .result.sync_info\e[0m" 148 | echo "" 149 | 150 | # End 151 | -------------------------------------------------------------------------------- /Q Blockchain/README.md: -------------------------------------------------------------------------------- 1 | ![9216fc2e-2dea-40eb-a0b4-9a61fe210eec-QLogoDiscordNew](https://user-images.githubusercontent.com/96678356/223128842-45a9002c-1bea-49d4-a2d8-b4d14279c1b5.gif) 2 | 3 | 4 | # Install Q-Blockchain 5 | 6 | [Docs](https://docs.qtestnet.org/how-to-setup-validator/) 7 | 8 | [Faucet](https://faucet.qtestnet.org/) 9 | 10 | [Explorer](https://explorer.qtestnet.org/) 11 | 12 | [Validator](https://stats.qtestnet.org/) 13 | 14 | ## Minimum Spec Hardware : 15 | NODE | CPU | RAM | SSD | OS | 16 | | ------------- | ------------- | ------------- | -------- | -------- | 17 | | Q Block | 4 | 4 | 500 | Ubuntu 20.04 LTS | 18 | 19 | 20 | ### Dependensi 21 | 22 | ``` 23 | apt install git docker docker-compose 24 | ``` 25 | 26 | ### Q-Blockchain 27 | 28 | ``` 29 | git clone https://gitlab.com/q-dev/testnet-public-tools.git 30 | ``` 31 | 32 | ``` 33 | cd testnet-public-tools/testnet-validator 34 | ``` 35 | 36 | ``` 37 | mkdir keystore 38 | ``` 39 | 40 | ``` 41 | nano keystore/pwd.txt 42 | ``` 43 | ``` 44 | cat keystore/pwd.txt 45 | ``` 46 | 47 | ### Create Wallet 48 | ``` 49 | docker run --entrypoint="" --rm -v $PWD:/data -it qblockchain/q-client:testnet geth account new --datadir=/data --password=/data/keystore/pwd.txt 50 | ``` 51 | ``` 52 | Your new key was generated 53 | 54 | Public address of the key: 0xb3FF24F818b0ff6Cc50de951bcB8f86b52287dac 55 | Path of the secret key file: /data/keystore/UTC--2021-01-18T11-36-28.705754426Z--b3ff24f818b0ff6cc50de951bcb8f86b52287dac 56 | 57 | - You can share your public address with anyone. Others need it to interact with you. 58 | - You must NEVER share the secret key with anyone! The key controls access to your funds! 59 | - You must BACKUP your key file! Without the key, it's impossible to access account funds! 60 | - You must REMEMBER your password! Without the password, it's impossible to decrypt the key! 61 | ``` 62 | 63 | ### Claim faucet 64 | 65 | [Claim](https://faucet.qtestnet.org/) 66 | 67 | ### Edit `.env` 68 | 69 | ``` 70 | nano .env 71 | ``` 72 | 73 | ### Edit `config.json` 74 | 75 | ``` 76 | nano config.json 77 | ``` 78 | 79 | Example: 80 | 81 | ```js 82 | { 83 | "address": "Replace your address + Remove 0x ", 84 | "password": "Your Password", 85 | "keystoreDirectory": "/data", 86 | "rpc": "https://rpc.qtestnet.org" 87 | } 88 | 89 | ``` 90 | ### Move stake to validator contract 91 | 92 | ``` 93 | docker run --rm -v $PWD:/data -v $PWD/config.json:/build/config.json qblockchain/js-interface:testnet validators.js 94 | ``` 95 | ### Register Validator 96 | ``` 97 | nano docker-compose.yaml 98 | ``` 99 | Example : 100 | ``` 101 | "--ethstats=NAMA_VALIDATOR:TESTNET_ACCESS_KEY@stats.qtestnet.org", 102 | ``` 103 | ### Run Validator 104 | ``` 105 | docker-compose up -d 106 | ``` 107 | Check Log 108 | ``` 109 | docker-compose logs -f --tail "100" 110 | ``` 111 | [Find Name Validator](https://stats.qtestnet.org/) 112 | 113 | ### Update Q-Client 114 | ``` 115 | cd $HOME/testnet-public-tools/testnet-validator 116 | ``` 117 | ``` 118 | git stash && git pull 119 | ``` 120 | ``` 121 | git stash apply && docker-compose pull 122 | ``` 123 | 124 | ### Restart Docker 125 | ``` 126 | docker-compose up -d 127 | ``` 128 | # New Update 129 | ``` 130 | cd /var/lib/docker/volumes/testnet-validator_testnet-validator-node-data/_data/geth/chaindata/ 131 | ``` 132 | ### Download 133 | ``` 134 | wget -O - https://snapshots.stakecraft.com/q-testnet-latest.tar | tar xf - 135 | ``` 136 | ### Restart Node 137 | ``` 138 | cd $HOME/testnet-public-tools/testnet-validator && docker-compose down && docker-compose up -d 139 | ``` 140 | ### Check logs 141 | ``` 142 | docker-compose logs -f --tail "100" 143 | ``` 144 | ### Check Status Node 145 | 146 | [Connect](https://itn.qdev.li/) With Walet Metamask 147 | 148 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tutorial Stader Node ETHx Rolling beta 2 | 3 | 4 |

5 | 6 |

7 | 8 | ## Referensi 9 | 10 | * [Testnet Announcement](https://blog.staderlabs.com/launching-ethx-rolling-beta-on-goerli-testnet-for-permissionless-node-operators-56cf15d05255) 11 | * [Dokumen resmi](https://staderlabs.notion.site/staderlabs/ETHx-Rolling-beta-Support-Guide-3039a5cbf7c449e3982aa7dbd6c68199) 12 | * [Website](https://www.staderlabs.com/) 13 | * [Server discord](https://discord.gg/staderlabs) 14 | * [Twitter](https://twitter.com/staderlabs) 15 | 16 | ## Spesifikasi Software & Hardware 17 | 18 | ### Persyaratan Hardware 19 | 20 | | Komponen | Spesifikasi minimal | 21 | |----------|---------------------| 22 | |CPU|4 Cores| 23 | |RAM|16 GB DDR4 RAM| 24 | |Penyimpanan|2 TB HDD| 25 | |Koneksi|10Mbit/s port| 26 | 27 | | Komponen | Spesifikasi rekomendasi | 28 | |----------|---------------------| 29 | |CPU|32 Cores| 30 | |RAM|32 GB DDR4 RAM| 31 | |Penyimpanan|2 x 1 TB NVMe SSD| 32 | |Koneksi|1 Gbit/s port| 33 | 34 | ### Persyaratan Software/OS 35 | 36 | | Komponen | Spesifikasi minimal | 37 | |----------|---------------------| 38 | |Sistem Operasi|Ubuntu 16.04| 39 | 40 | | Komponen | Spesifikasi rekomendasi | 41 | |----------|---------------------| 42 | |Sistem Operasi|Ubuntu 22.04| 43 | 44 | ## Setup Node 45 | 46 | ### Install docker 47 | 48 | Jika kalian kalian pernah ikut Q-Blockchain dan testnet node lainnya kemungkinan kalian sudah pernah install docker, jadi bisa skip langkah ini. 49 | 50 | 1. Update `apt-get` dan install paket yang diperlukan 51 | ```console 52 | sudo apt-get update 53 | sudo apt-get install \ 54 | ca-certificates \ 55 | curl \ 56 | gnupg \ 57 | lsb-release 58 | ``` 59 | 2. Tambahkan kunci GPG docker 60 | ```console 61 | sudo mkdir -p /etc/apt/keyrings 62 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 63 | ``` 64 | 3. Setup repositori 65 | ```console 66 | echo \ 67 | "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ 68 | $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 69 | ``` 70 | 4. Install docker 71 | ```console 72 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin 73 | ``` 74 | 5. Cek apakah docker sudah terinstall dengan benar 75 | ```console 76 | sudo docker run hello-world 77 | ``` 78 | 79 | ### Install Node 80 | 1. Download Node 81 | ```console 82 | wget https://dub.sh/linuxamd64 -O ~/bin/stader-cli 83 | ``` 84 | 2. Masuk ke direktori bin 85 | ```console 86 | cd $HOME/bin 87 | ``` 88 | 3. Ubah file menjadi executable 89 | ```console 90 | chmod +x ~/bin/stader-cli 91 | ``` 92 | 4. Restart terminal 93 | ```console 94 | bash 95 | ``` 96 | 5. Install service 97 | ```console 98 | ~/bin/stader-cli --allow-root service install 99 | ``` 100 | 6. Jalankan Node wizard 101 | ```console 102 | ~/bin/stader-cli --allow-root service config 103 | ``` 104 | Nanti akan muncul menu GUI, kalian ikuti aja step-stepnya, pake arrow keys di keyboard buat navigasi & enter buat pilih jawaban 105 | 106 | 1. Goerli Network 107 | 2. Locally managed 108 | 3. System-recommended 109 | 4. System-recommended 110 | 5. Isi moniker/graffiti/usernamemu (bebas) 111 | 6. https://beaconstate-goerli.chainsafe.io/ 112 | 7. Yes 113 | 8. No 114 | 9. Yes 115 | 10. Locally managed 116 | 11. Pilih regulated terus next 117 | 12. Save and exit 118 | 13. y 119 | 14. y 120 | 121 | Tunggu sampe sync (1-3 hari) 122 | 123 | ### Daftarkan validator 124 | 1. Pastikan Node kalian sudah sync 125 | ```console 126 | ~/bin/stader-cli --allow-root node sync 127 | ``` 128 | 129 | Kalo outputnya gini berarti node kalian sudah sync 130 | ```console 131 | Your primary execution client is fully synced. 132 | Your primary consensus client is fully synced. 133 | ``` 134 | 2. Buat dompet 135 | ```console 136 | stader-cli --allow-root wallet init 137 | ``` 138 | 139 | 1. Pilih Y 140 | 2. Masukan password (bebas 12 character) 141 | 3. Salin mnemonic 142 | 4. Masukin 24 143 | 5. Paste mnemonic tadi sesuai urutan (per kata) 144 | 6. Salin node key 145 | 146 | 3. Claim faucet 147 | 1. Join server [discord](https://discord.gg/staderlabs) 148 | 2. Masuk ke channel [#ethxclusives-permisionless-node-operators](https://discord.com/channels/839544036984750120/1079816702017155072) 149 | 3. Send chat `!interested` 150 | 4. Tunggu sampe kalian diapprove jadi beta tester 151 | 5. Masuk ke channel [#ethx-rolling-beta-test](https://discord.com/channels/839544036984750120/1089835916274708490) 152 | 6. Paste Node key kalian (Jangan spam, cukup sekali aja), contoh 153 | ```console 154 | Your Stader Node is currently using the Goerli Test Network. 155 | 156 | The node wallet is initialized. 157 | Node account: 0x0000000000000000000000000000000000000000 158 | ``` 159 | 4. Daftar validator 160 | ```console 161 | ~/bin/stader-cli --allow-root node register --on 162 | ``` 163 | 164 | Ganti moniker terserah kalian, contoh: 165 | 166 | ```console 167 | ~/bin/stader-cli --allow-root node register --on node123 168 | ``` 169 | 5. Deposit SD 170 | ```console 171 | ~/bin/stader-cli --allow-root node deposit-sd --amount 640 172 | ``` 173 | 6. Deposit 4 ETH 174 | ```console 175 | ~/bin/stader-cli --allow-root node deposit --num-validators 1 176 | ``` 177 | 7. Cek status 178 | ```console 179 | ~/bin/stader-cli --allow-root node status 180 | ``` 181 | 182 | ## Perintah berguna 183 | 184 | ### Cek service status 185 | ```console 186 | ~/bin/stader-cli --allow-root service status 187 | ``` 188 | 189 | ### Cek service logs 190 | ```console 191 | ~/bin/stader-cli --allow-root service logs 192 | ``` 193 | 194 | ### Cek node status 195 | ```console 196 | ~/bin/stader-cli --allow-root node status 197 | ``` 198 | 199 | ## Troubleshoot 200 | Reserved -------------------------------------------------------------------------------- /Shardeum/README.md: -------------------------------------------------------------------------------- 1 | # SHARDEUM 2 | 3 | ![98940804](https://user-images.githubusercontent.com/96678356/216855731-728a1322-d22a-411e-984a-1e6dd43c16e9.png) 4 | 5 | ## Referensi 6 | * [Website](https://www.shardeum.org/) 7 | * [Document](https://docs.shardeum.org/node/run/validator) 8 | * [RPC](https://docs.shardeum.org/Network/Endpoints#connect-wallet) 9 | * [Faucet](https://docs.shardeum.org/Faucet/Claim#shardeum-faucet-website) 10 | * [Discord](https://discord.com/invite/shardeum) 11 | 12 | 13 | ### Minimum Specification 14 | NODE | CPU | RAM | SSD | 15 | | ------------- | ------------- | ------------- | -------- | 16 | | Testnet | 4 | 8 | 250 | 17 | 18 | 19 | ### Install curl 20 | ``` 21 | sudo apt-get install curl 22 | ``` 23 | ### Update 24 | ``` 25 | sudo apt update 26 | ``` 27 | ### Install docker 28 | ``` 29 | sudo apt install docker.io 30 | ``` 31 | ### Install docker-compose 32 | ``` 33 | sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 34 | ``` 35 | ### Setup permissions for docker-compose 36 | ``` 37 | sudo chmod +x /usr/local/bin/docker-compose 38 | ``` 39 | ### Download and install validator 40 | ``` 41 | curl -O https://gitlab.com/shardeum/validator/dashboard/-/raw/main/installer.sh && chmod +x installer.sh && ./installer.sh 42 | ``` 43 | ### Download and install validator 44 | ``` 45 | curl -O https://gitlab.com/shardeum/validator/dashboard/-/raw/main/installer.sh && chmod +x installer.sh && ./installer.sh 46 | ``` 47 | ``` 48 | Do you want to run the web based Dashboard? (y/n): Y 49 | ``` 50 | ### Set a password for dashboard access: 51 | ``` 52 | Set the password to access the Dashboard: input your password 53 | ``` 54 | ### Add a custom session port for the web based dashboard or hit enter for port 8080: 55 | ``` 56 | Enter the port (1025-65536) to access the web based Dashboard (default 8080): ENTER 57 | ``` 58 | ### Add a custom path or install to root: 59 | ``` 60 | What base directory should the node use (defaults to ~/.shardeum): ENTER 61 | ``` 62 | ### Open validator CLI 63 | ``` 64 | cd 65 | ``` 66 | ``` 67 | cd .shardeum 68 | ``` 69 | ``` 70 | ./shell.sh 71 | ``` 72 | ``` 73 | operator-cli gui start 74 | ``` 75 | ### Stake SHM 76 | Open Browser 77 | ``` 78 | https://localhost:8080/ 79 | ``` 80 | ``` 81 | Input password 82 | ``` 83 | ``` 84 | Select tab 'Maintenance` select `Start Node` 85 | ``` 86 | ``` 87 | Claim [faucet](https://faucet-sphinx.shardeum.org/) (Input New address ERC-20) 88 | ``` 89 | ``` 90 | Select 'validator' in dashboard, Select `Settings` 91 | ``` 92 | ``` 93 | Connect Metamask 94 | ``` 95 | ``` 96 | 'Add stake` Input SHM MInimum 10 SHM for Stake 97 | ``` 98 | ``` 99 | operator-cli start 100 | ``` 101 | ``` 102 | operator-cli stop 103 | ``` 104 | ``` 105 | operator-cli status 106 | ``` 107 | -------------------------------------------------------------------------------- /Stader Node ETHx Rolling beta: -------------------------------------------------------------------------------- 1 | # Tutorial Stader Node ETHx Rolling beta 2 | 3 | 4 |

5 | 6 |

7 | 8 | ## Referensi 9 | 10 | * [Testnet Announcement](https://blog.staderlabs.com/launching-ethx-rolling-beta-on-goerli-testnet-for-permissionless-node-operators-56cf15d05255) 11 | * [Dokumen resmi](https://staderlabs.notion.site/staderlabs/ETHx-Rolling-beta-Support-Guide-3039a5cbf7c449e3982aa7dbd6c68199) 12 | * [Website](https://www.staderlabs.com/) 13 | * [Server discord](https://discord.gg/staderlabs) 14 | * [Twitter](https://twitter.com/staderlabs) 15 | 16 | ## Spesifikasi Software & Hardware 17 | 18 | ### Persyaratan Hardware 19 | 20 | | Komponen | Spesifikasi minimal | 21 | |----------|---------------------| 22 | |CPU|4 Cores| 23 | |RAM|16 GB DDR4 RAM| 24 | |Penyimpanan|2 TB HDD| 25 | |Koneksi|10Mbit/s port| 26 | 27 | | Komponen | Spesifikasi rekomendasi | 28 | |----------|---------------------| 29 | |CPU|32 Cores| 30 | |RAM|32 GB DDR4 RAM| 31 | |Penyimpanan|2 x 1 TB NVMe SSD| 32 | |Koneksi|1 Gbit/s port| 33 | 34 | ### Persyaratan Software/OS 35 | 36 | | Komponen | Spesifikasi minimal | 37 | |----------|---------------------| 38 | |Sistem Operasi|Ubuntu 16.04| 39 | 40 | | Komponen | Spesifikasi rekomendasi | 41 | |----------|---------------------| 42 | |Sistem Operasi|Ubuntu 22.04| 43 | 44 | ## Setup Node 45 | 46 | ### Install docker 47 | 48 | Jika kalian kalian pernah ikut Q-Blockchain dan testnet node lainnya kemungkinan kalian sudah pernah install docker, jadi bisa skip langkah ini. 49 | 50 | 1. Update `apt-get` dan install paket yang diperlukan 51 | ```console 52 | sudo apt-get update 53 | sudo apt-get install \ 54 | ca-certificates \ 55 | curl \ 56 | gnupg \ 57 | lsb-release 58 | ``` 59 | 2. Tambahkan kunci GPG docker 60 | ```console 61 | sudo mkdir -p /etc/apt/keyrings 62 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 63 | ``` 64 | 3. Setup repositori 65 | ```console 66 | echo \ 67 | "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ 68 | $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 69 | ``` 70 | 4. Install docker 71 | ```console 72 | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin 73 | ``` 74 | 5. Cek apakah docker sudah terinstall dengan benar 75 | ```console 76 | sudo docker run hello-world 77 | ``` 78 | 79 | ### Install Node 80 | 1. Download Node 81 | ```console 82 | wget https://dub.sh/linuxamd64 -O ~/bin/stader-cli 83 | ``` 84 | 2. Masuk ke direktori bin 85 | ```console 86 | cd $HOME/bin 87 | ``` 88 | 3. Ubah file menjadi executable 89 | ```console 90 | chmod +x ~/bin/stader-cli 91 | ``` 92 | 4. Restart terminal 93 | ```console 94 | bash 95 | ``` 96 | 5. Install service 97 | ```console 98 | ~/bin/stader-cli --allow-root service install 99 | ``` 100 | 6. Jalankan Node wizard 101 | ```console 102 | ~/bin/stader-cli --allow-root service config 103 | ``` 104 | Nanti akan muncul menu GUI, kalian ikuti aja step-stepnya, pake arrow keys di keyboard buat navigasi & enter buat pilih jawaban 105 | 106 | 1. Goerli Network 107 | 2. Locally managed 108 | 3. System-recommended 109 | 4. System-recommended 110 | 5. Isi moniker/graffiti/usernamemu (bebas) 111 | 6. https://beaconstate-goerli.chainsafe.io/ 112 | 7. Yes 113 | 8. No 114 | 9. Yes 115 | 10. Locally managed 116 | 11. Pilih regulated terus next 117 | 12. Save and exit 118 | 13. y 119 | 14. y 120 | 121 | Tunggu sampe sync (1-3 hari) 122 | 123 | ### Daftarkan validator 124 | 1. Pastikan Node kalian sudah sync 125 | ```console 126 | ~/bin/stader-cli --allow-root node sync 127 | ``` 128 | 129 | Kalo outputnya gini berarti node kalian sudah sync 130 | ```console 131 | Your primary execution client is fully synced. 132 | Your primary consensus client is fully synced. 133 | ``` 134 | 2. Buat dompet 135 | ```console 136 | stader-cli --allow-root wallet init 137 | ``` 138 | 139 | 1. Pilih Y 140 | 2. Masukan password (bebas 12 character) 141 | 3. Salin mnemonic 142 | 4. Masukin 24 143 | 5. Paste mnemonic tadi sesuai urutan (per kata) 144 | 6. Salin node key 145 | 146 | 3. Claim faucet 147 | 1. Join server [discord](https://discord.gg/staderlabs) 148 | 2. Masuk ke channel [#ethxclusives-permisionless-node-operators](https://discord.com/channels/839544036984750120/1079816702017155072) 149 | 3. Send chat `!interested` 150 | 4. Tunggu sampe kalian diapprove jadi beta tester 151 | 5. Masuk ke channel [#ethx-rolling-beta-test](https://discord.com/channels/839544036984750120/1089835916274708490) 152 | 6. Paste Node key kalian (Jangan spam, cukup sekali aja), contoh 153 | ```console 154 | Your Stader Node is currently using the Goerli Test Network. 155 | 156 | The node wallet is initialized. 157 | Node account: 0x0000000000000000000000000000000000000000 158 | ``` 159 | 4. Daftar validator 160 | ```console 161 | ~/bin/stader-cli --allow-root node register --on 162 | ``` 163 | 164 | Ganti moniker terserah kalian, contoh: 165 | 166 | ```console 167 | ~/bin/stader-cli --allow-root node register --on node123 168 | ``` 169 | 5. Deposit SD 170 | ```console 171 | ~/bin/stader-cli --allow-root node deposit-sd --amount 640 172 | ``` 173 | 6. Deposit 4 ETH 174 | ```console 175 | ~/bin/stader-cli --allow-root node deposit --num-validators 1 176 | ``` 177 | 7. Cek status 178 | ```console 179 | ~/bin/stader-cli --allow-root node status 180 | ``` 181 | 182 | ## Perintah berguna 183 | 184 | ### Cek service status 185 | ```console 186 | ~/bin/stader-cli --allow-root service status 187 | ``` 188 | 189 | ### Cek service logs 190 | ```console 191 | ~/bin/stader-cli --allow-root service logs 192 | ``` 193 | 194 | ### Cek node status 195 | ```console 196 | ~/bin/stader-cli --allow-root node status 197 | ``` 198 | 199 | ## Troubleshoot 200 | Reserved 201 | -------------------------------------------------------------------------------- /Wormholes/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | # Update Wormholes v.0.12.0 6 | Especially for new VPS, this method does not apply to updates on previous VPS where there is already a worm node 7 | 8 | [NEW REGISTER](https://twitter.com/WormholesChain/status/1622533966782955520?t=Vr_iyHqOEDsPTeUUiBhkLQ&s=19) 9 | 10 | ### Spesifikasi Hardware : 11 | NODE | CPU | RAM | SSD | 12 | | ------------- | ------------- | ------------- | -------- | 13 | | Testnet | 4 | 8 | 120 | 14 | 15 | ### Stop Docker & Delete 16 | ``` 17 | docker stop wormholes && docker rm wormholes && docker rmi wormholestech/wormholes:v1 18 | ``` 19 | ### Delete worm sh 20 | ``` 21 | rm -rf wormholes_install.sh 22 | ``` 23 | ### Delete Folder 24 | ``` 25 | rm -rf /wm/ 26 | ``` 27 | ### Update Worm 28 | ``` 29 | wget -O wormholes_install.sh https://docker.wormholes.com/wormholes_install.sh && chmod +x wormholes_install.sh && ./wormholes_install.sh 30 | ``` 31 | ### Input Private Key 32 | ``` 33 | input private key 34 | ``` 35 | ### Check Version 36 | ``` 37 | docker exec -it wormholes ./wormholes version|grep "Version"|grep -v go 38 | ``` 39 | ### Result 40 | ``` 41 | wormholes v0.12.0 42 | ``` 43 | ### RUN 44 | ``` 45 | ./monitor.sh 46 | ``` 47 | OR Just Paste on CLI 48 | ``` 49 | #!/bin/bash 50 | function info(){ 51 | cn=0 52 | while true 53 | do 54 | echo "$cn second." 55 | echo "node $1" 56 | rs=`curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","id":64}' https://api.wormholestest.com 2>/dev/null` 57 | blockNumbers=$(parse_json $rs "result") 58 | echo "Block height of the whole network: $((16#${blockNumbers:2}))" 59 | rs1=`curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"net_peerCount","id":64}' 127.0.0.1:$1 2>/dev/null` 60 | count=$(parse_json $rs1 "result") 61 | echo "Number of node connections: $((16#${count:2}))" 62 | rs2=`curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","id":64}' 127.0.0.1:$1 2>/dev/null` 63 | blckNumber=$(parse_json $rs2 "result") 64 | echo "Block height of the current peer: $((16#${blckNumber:2}))" 65 | sleep 5 66 | clear 67 | let cn+=5 68 | done 69 | } 70 | 71 | function parse_json(){ 72 | if [[ $# -gt 1 ]] && [[ $1 =~ $2 ]];then 73 | echo "${1//\"/}"|sed "s/.*$2:\([^,}]*\).*/\1/" 74 | else 75 | echo "0x0" 76 | fi 77 | } 78 | 79 | function main(){ 80 | if [[ $# -eq 0 ]];then 81 | info 8545 82 | else 83 | info $1 84 | fi 85 | } 86 | 87 | main "$@" 88 | ``` 89 | ### Result 90 | 91 | ![Result](https://user-images.githubusercontent.com/96678356/218034065-09a84bf4-64c9-472d-b96c-4e760ca8f48c.PNG) 92 | 93 | ### Stake ERB in [Wallet](https://www.limino.com/#/wallet) 94 | - More Setting 95 | - Select Become Validator 96 | - Stake 70000 ERB 97 | - Monitor Stake in [Explorer](https://www.wormholesscan.com/) 98 | 99 | ### Additional If have 700 ERB Stake SNFT in [Wallet](https://www.limino.com/#/wallet) 100 | - More Setting 101 | - Select Marketplace Management 102 | - Select Staking & Redemtion 103 | - Stake 700 ERB 104 | - Monitor Stake in [Explorer](https://www.wormholesscan.com/) 105 | 106 | ### Delete Node 107 | ``` 108 | systemctl stop wormholesd 109 | systemctl disable wormholesd 110 | rm -rf /usr/local/bin/wormholes 111 | rm -rf wormholes 112 | rm -rf wormholes.sh 113 | rm -rf .wormholes 114 | ``` 115 | -------------------------------------------------------------------------------- /Wormholes/monitor.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | function info(){ 3 | cn=0 4 | while true 5 | do 6 | echo "$cn second." 7 | echo "node $1" 8 | rs=`curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","id":64}' https://api.wormholestest.com 2>/dev/null` 9 | blockNumbers=$(parse_json $rs "result") 10 | echo "Block height of the whole network: $((16#${blockNumbers:2}))" 11 | rs1=`curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"net_peerCount","id":64}' 127.0.0.1:$1 2>/dev/null` 12 | count=$(parse_json $rs1 "result") 13 | echo "Number of node connections: $((16#${count:2}))" 14 | rs2=`curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","id":64}' 127.0.0.1:$1 2>/dev/null` 15 | blckNumber=$(parse_json $rs2 "result") 16 | echo "Block height of the current peer: $((16#${blckNumber:2}))" 17 | sleep 5 18 | clear 19 | let cn+=5 20 | done 21 | } 22 | 23 | function parse_json(){ 24 | if [[ $# -gt 1 ]] && [[ $1 =~ $2 ]];then 25 | echo "${1//\"/}"|sed "s/.*$2:\([^,}]*\).*/\1/" 26 | else 27 | echo "0x0" 28 | fi 29 | } 30 | 31 | function main(){ 32 | if [[ $# -eq 0 ]];then 33 | info 8545 34 | else 35 | info $1 36 | fi 37 | } 38 | 39 | main "$@" -------------------------------------------------------------------------------- /Wormholes/wormholes.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #update package 4 | sudo apt update && sudo apt list --upgradable && sudo apt upgrade -y 5 | 6 | #install library 7 | sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential git make ncdu net-tools -y 8 | 9 | #install go 10 | ver="1.19" && \ 11 | wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \ 12 | sudo rm -rf /usr/local/go && \ 13 | sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \ 14 | rm "go$ver.linux-amd64.tar.gz" && \ 15 | echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \ 16 | source $HOME/.bash_profile && \ 17 | go version 18 | 19 | #install binary 20 | cd $HOME 21 | git clone https://github.com/wormholes-org/wormholes 22 | cd wormholes 23 | make wormholes 24 | mv build/bin/wormholes /usr/local/bin 25 | 26 | #create service 27 | tee /etc/systemd/system/wormholesd.service > /dev/null <