-
CARDCHAIN
Crowd Control is not a company, but a Decentralized Autonomous Organization (DAO). This is realized with a blockchain built on Cosmos technology.
Chain Explorer:
Nodeist Explorer
Cosmos explorer based on Ping Pub supported by Nodeist - is the best solution!exp.nodeist.net
Public Endpoints:
Bash:# API ENDPOINT https://api-cardchain.nodeist.net # RPC ENDPOINT https://rpc-cardchain.nodeist.net # GRPC ENDPOINT https://grpc-cardchain.nodeist.net
Peering:
addrbook:
Bash:curl -Ls https://ss.nodeist.net/t/cardchain/addrbook.json > $HOME/.Cardchain/config/addrbook.json
live-peers:
Bash:peers="[email protected]:27656,[email protected]:26656,[email protected]:31656,[email protected]:18656" sed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$peers\"|" $HOME/.Cardchain/config/config.toml
-
Manual Installation
This section contains a list of commands to install the node in manual mode.
Server Preparation
Bash:apt update && apt upgrade -y apt install curl iptables build-essential git wget jq make gcc nano tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y
Install GO
Bash:ver="1.20.3" wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" rm "go$ver.linux-amd64.tar.gz" echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile source $HOME/.bash_profile go version
Node Installation
ReplaceNodeist_Guide
in the first line with your moniker name.
Bash:NODE_MONIKER="Nodeist_Guide" cd $HOME curl -L https://github.com/DecentralCardGame/Cardchain/releases/download/v0.81/Cardchain_latest_linux_amd64.tar.gz > Cardchain_latest_linux_amd64.tar.gz tar -xvzf Cardchain_latest_linux_amd64.tar.gz chmod +x Cardchaind mkdir -p $HOME/go/bin mv Cardchaind $HOME/go/bin rm Cardchain_latest_linux_amd64.tar.gz Cardchaind config chain-id testnet3 Cardchaind init "$NODE_MONIKER" --chain-id testnet3 curl -s https://ss.nodeist.net/t/cardchain/genesis.json > $HOME/.Cardchain/config/genesis.json curl -s https://ss.nodeist.net/t/cardchain/addrbook.json > $HOME/.Cardchain/config/addrbook.json SEEDS="" PEERS="" sed -i 's|^seeds *=.*|seeds = "'$SEEDS'"|; s|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.Cardchain/config/config.toml sed -i 's|^pruning *=.*|pruning = "custom"|g' $HOME/.Cardchain/config/app.toml sed -i 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|g' $HOME/.Cardchain/config/app.toml sed -i 's|^pruning-interval *=.*|pruning-interval = "10"|g' $HOME/.Cardchain/config/app.toml sed -i 's|^snapshot-interval *=.*|snapshot-interval = 0|g' $HOME/.Cardchain/config/app.toml sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.025ubpf"|g' $HOME/.Cardchain/config/app.toml sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.Cardchain/config/config.toml sudo tee /etc/systemd/system/Cardchaind.service > /dev/null << EOF [Unit] Description=Cardchain Node After=network-online.target [Service] User=$USER ExecStart=$(which Cardchaind) start Restart=on-failure RestartSec=10 LimitNOFILE=10000 [Install] WantedBy=multi-user.target EOF Cardchaind tendermint unsafe-reset-all --home $HOME/.Cardchain --keep-addr-book curl -L https://ss.nodeist.net/t/cardchain/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.Cardchain --strip-components 2 sudo systemctl daemon-reload sudo systemctl enable Cardchaind sudo systemctl start Cardchaind sudo journalctl -fu Cardchaind -o cat
-
HEIGHT SIZE TIMESTAMP DOWNLOAD
Instructions
Stop the service and reset the data
Bash:sudo systemctl stop Cardchaind cp $HOME/.Cardchain/data/priv_validator_state.json $HOME/.Cardchain/priv_validator_state.json.backup rm -rf $HOME/.Cardchain/data
Download latest snapshot
Bash:curl -L https://ss.nodeist.net/t/cardchain/snapshot_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.Cardchain --strip-components 2 mv $HOME/.Cardchain/priv_validator_state.json.backup $HOME/.Cardchain/data/priv_validator_state.json
Restart the service and check the log
Bash:sudo systemctl restart Cardchaind && sudo journalctl -fu Cardchaind -o cat
-
Instructions
Stop the service and reset the data
Bash:sudo systemctl stop Cardchaind cp $HOME/.Cardchain/data/priv_validator_state.json $HOME/.Cardchain/priv_validator_state.json.backup Cardchaind tendermint unsafe-reset-all --home $HOME/.Cardchain
Get and configure the state sync information
Bash:SNAP_RPC="https://rpc-cardchain.nodeist.net:443" LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \ BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \ TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \ s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \ s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \ s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.Cardchain/config/config.toml mv $HOME/.Cardchain/priv_validator_state.json.backup $HOME/.Cardchain/data/priv_validator_state.json
Restart the service and check the log
Bash:sudo systemctl restart Cardchaind && sudo journalctl -fu Cardchaind -o cat
-
🔑 Key management
Add new key
Bash:Cardchaind keys add wallet
Recover existing key
Bash:Cardchaind keys add wallet --recover
List all keys
Bash:Cardchaind keys list
Delete key
Bash:Cardchaind keys delete wallet
Export key to the file
Bash:Cardchaind keys export wallet
Import key from the file
Bash:Cardchaind keys import wallet wallet.backup
Query wallet balance
Bash:Cardchaind q bank balances $(Cardchaind keys show wallet -a)
👷 Validator management
- Please make sure you have adjusted moniker, identity, details and website to match your values.
Create new validator
Bash:Cardchaind tx staking create-validator \ --amount 1000000ubpf \ --pubkey $(Cardchaind tendermint show-validator) \ --moniker "YOUR_MONIKER_NAME" \ --identity "YOUR_KEYBASE_ID" \ --details "YOUR_DETAILS" \ --website "YOUR_WEBSITE_URL" \ --chain-id testnet3 \ --commission-rate 0.05 \ --commission-max-rate 0.20 \ --commission-max-change-rate 0.01 \ --min-self-delegation 1 \ --from wallet \ --gas-adjustment 1.4 \ --gas auto \ --gas-prices 0.025ubpf \ -y
Edit existing validator
Bash:Cardchaind tx staking edit-validator \ --new-moniker "YOUR_MONIKER_NAME" \ --identity "YOUR_KEYBASE_ID" \ --details "YOUR_DETAILS" \ --website "YOUR_WEBSITE_URL" \ --chain-id testnet3 \ --commission-rate 0.05 \ --from wallet \ --gas-adjustment 1.4 \ --gas auto \ --gas-prices 0.025ubpf \ -y
Unjail validator
Bash:Cardchaind tx slashing unjail --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
Jail reason
Bash:Cardchaind query slashing signing-info $(Cardchaind tendermint show-validator)
List all active validators
Bash:Cardchaind q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl
List all inactive validators
Bash:Cardchaind q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl
View validator details
Bash:Cardchaind q staking validator $(Cardchaind keys show wallet --bech val -a)
💲 Token management
Withdraw rewards from all validators
Bash:Cardchaind tx distribution withdraw-all-rewards --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
Withdraw commission and rewards from your validator
Bash:Cardchaind tx distribution withdraw-rewards $(Cardchaind keys show wallet --bech val -a) --commission --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
Delegate tokens to yourself
Bash:Cardchaind tx staking delegate $(Cardchaind keys show wallet --bech val -a) 1000000ubpf --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
Delegate tokens to validator
Bash:Cardchaind tx staking delegate <TO_VALOPER_ADDRESS> 1000000ubpf --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
Redelegate tokens to another validator
Bash:Cardchaind tx staking redelegate $(Cardchaind keys show wallet --bech val -a) <TO_VALOPER_ADDRESS> 1000000ubpf --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
Unbond tokens from your validator
Bash:Cardchaind tx staking unbond $(Cardchaind keys show wallet --bech val -a) 1000000ubpf --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
Send tokens to the wallet
Bash:Cardchaind tx bank send wallet <TO_WALLET_ADDRESS> 1000000ubpf --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
🗳 Governance
List all proposals
Bash:Cardchaind query gov proposals
View proposal by id
Bash:Cardchaind query gov proposal 1
Vote 'Yes'
Bash:Cardchaind tx gov vote 1 yes --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
Vote 'No'
Bash:Cardchaind tx gov vote 1 no --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
Vote 'Abstain'
Bash:Cardchaind tx gov vote 1 abstain --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
Vote 'NoWithVeto'
Bash:Cardchaind tx gov vote 1 NoWithVeto --from wallet --chain-id testnet3 --gas-adjustment 1.4 --gas auto --gas-prices 0.025ubpf -y
⚡️ Utility
Update Indexer
Bash:sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.Cardchain/config/config.toml
Update pruning
Bash:sed -i \ -e 's|^pruning *=.*|pruning = "custom"|' \ -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \ -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \ -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \ $HOME/.Cardchain/config/app.toml
🚨 Maintenance
Get validator info
Bash:Cardchaind status 2>&1 | jq .ValidatorInfo
Get sync info
Bash:Cardchaind status 2>&1 | jq .SyncInfo
Get node peer
Bash:echo $(Cardchaind tendermint show-node-id)'@'$(curl -s ifconfig.me)':'$(cat $HOME/.Cardchain/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')
Check if validator key is correct
Bash:[[ $(Cardchaind q staking validator $(Cardchaind keys show wallet --bech val -a) -oj | jq -r .consensus_pubkey.key) = $(Cardchaind status | jq -r .ValidatorInfo.PubKey.value) ]] && echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
Get live peers
Bash:curl -sS http://localhost:27657/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}'
Set minimum gas price
Bash:sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025ubpf\"/" $HOME/.Cardchain/config/app.toml
Enable prometheus
Bash:sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.Cardchain/config/config.toml
Reset chain data
Bash:Cardchaind tendermint unsafe-reset-all --home $HOME/.Cardchain --keep-addr-book
Remove node
- Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your priv_validator_key.json!
Bash:cd $HOME sudo systemctl stop Cardchaind sudo systemctl disable Cardchaind sudo rm /etc/systemd/system/Cardchaind.service sudo systemctl daemon-reload rm -f $(which Cardchaind) rm -rf $HOME/.Cardchain rm -rf $HOME/Cardchaind
⚙️ Service Management
Reload service configuration
Bash:sudo systemctl daemon-reload
Enable service
Bash:sudo systemctl enable Cardchaind
Disable service
Bash:sudo systemctl disable Cardchaind
Start service
Bash:sudo systemctl start Cardchaind
Stop service
Bash:sudo systemctl stop Cardchaind
Restart service
Bash:sudo systemctl restart Cardchaind
Check service status
Bash:sudo systemctl status Cardchaind
Check service logs
Bash:sudo journalctl -u Cardchaind -f --no-hostname -o cat
Last edited: