Methods of payment Abuse

Jackal Labs. Installing the node

16.09.2024, 18:52

Jackal Labs is an innovative platform specialized in developing solutions in blockchain technology and decentralized applications. The company aims to provide tools and resources for creating and managing decentralized networks, and offers solutions to improve scalability, security and efficiency of blockchain projects.

Minimum equipment requirements

Node type

CPU

RAM

Storage

Testnet

4

8GB

150GB

Node installation

Auto-setup script

wget -O jkltest https://raw.githubusercontent.com/111STAVR111/props/main/Jackal/Testnet/jkltest && chmod +x jkltest && ./jkltest

Manual installation

Server preparation

sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y

Installing Go 1.21.6

ver="1.21.6"
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
Jackal build
cd $HOME && mkdir $HOME/go/bin/
git clone https://github.com/JackalLabs/canine-chain && cd canine-chain
git checkout v4.0.0-beta.5
make install
canined version --long | head
Версия: 4.0.0-beta.5
Коммит: 05785bccff802e963d0c964434d38fc77833d4c3

Node initialization

canined init STAVR_guide --chain-id=lupulella-2
canined config chain-id lupulella-2

Add/Recover Wallet

canined keys add <walletname>
# или
canined keys add <walletname> --recover

Genesis Download

curl -s  "https://raw.githubusercontent.com/111STAVR111/props/main/Jackal/Testnet/genesis.json" > ~/.canine/config/genesis.json
sha256sum $HOME/.canine/config/genesis.json
SHA256: 9701001c2188abf7c117f7192030bcbab358ac1d5b1a61594f443d3b206ab5a2

Setting the minimum price of gas and peering

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0ujkl\"/;" ~/.canine/config/app.toml
sed -i -e "s/^filter_peers *=.*/filter_peers = \"true\"/" $HOME/.canine/config/config.toml
external_address=$(wget -qO- eth0.me) 
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:26656\"/" $HOME/.canine/config/config.toml
peers=""
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.canine/config/config.toml
seeds=""
sed -i.bak -e "s/^seeds =.*/seeds = \"$seeds\"/" $HOME/.canine/config/config.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 50/g' $HOME/.canine/config/config.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 50/g' $HOME/.canine/config/config.toml

Обрезка данных (необязательно)

pruning="custom"
pruning_keep_recent="1000"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.canine/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.canine/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.canine/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.canine/config/app.toml

Indexer (optional)

indexer="null" &&
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.canine/config/config.toml

Download addrbook

wget -O $HOME/.canine/config/addrbook.json "https://raw.githubusercontent.com/111STAVR111/props/main/Jackal/Testnet/addrbook.json"

Creating a service file

sudo tee /etc/systemd/system/canined.service > /dev/null <<EOF
[Unit]
Description=canined Testnet
After=network-online.target
 
[Service]
User=$USER
ExecStart=$(which canined) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
 
[Install]
WantedBy=multi-user.target
EOF

StateSync Jackal Testnet

SNAP_RPC=https://jkl.rpc.t.stavr.tech:443
peers="80613772b20df144945801b42f327d0945a24374@jkltest.peer.stavr.tech:19126"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.canine/config/config.toml
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 100)); \
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
 
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_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\"| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME/.canine/config/config.toml
canined tendermint unsafe-reset-all --home /root/.canine
wget -O $HOME/.canine/config/addrbook.json "https://raw.githubusercontent.com/111STAVR111/props/main/Jackal/Testnet/addrbook.json"
systemctl restart canined && journalctl -u canined -f -o cat
SnapShot Mainnet is updated every 5 hours
cd $HOME
apt install lz4
sudo systemctl stop canined
cp $HOME/.canine/data/priv_validator_state.json $HOME/.canine/priv_validator_state.json.backup
rm -rf $HOME/.canine/data
curl -o - -L https://jkltest.snapshot.stavr.tech/jackalt-snap.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.canine --strip-components 2
mv $HOME/.canine/priv_validator_state.json.backup $HOME/.canine/data/priv_validator_state.json
wget -O $HOME/.canine/config/addrbook.json "https://raw.githubusercontent.com/111STAVR111/props/main/Jackal/Testnet/addrbook.json"
sudo systemctl restart canined && journalctl -u canined -f -o cat
Launch
sudo systemctl daemon-reload
sudo systemctl enable canined 
sudo systemctl restart canined && sudo journalctl -u canined -f -o cat
Creating a validator
canined tx staking create-validator \
  --amount 1000000ujkl \
  --from <walletName> \
  --commission-max-change-rate "0.1" \
  --commission-max-rate "0.2" \
  --commission-rate "0.1" \
  --min-self-delegation "1" \
  --pubkey  $(canined tendermint show-validator) \
  --moniker STAVR_guide \
  --chain-id lupulella-2 \
  --identity="" \
  --details="" \
  --website="" -y
Delete the Node
sudo systemctl stop canined
sudo systemctl disable canined
rm /etc/systemd/system/canined.service
sudo systemctl daemon-reload
cd $HOME
rm -rf canine-chain
rm -rf .canine
rm -rf $(which canined)

Useful commands for managing the Jackal node

Service commands

Node Information:

canined status 2>&1 | jq .NodeInfo
canined status 2>&1 | jq .SyncInfo
canined status 2>&1 | jq .ValidatorInfo

View node logs:

sudo journalctl -fu canined -o cat

Check the status of the service:

sudo systemctl status canined

Service restart:

sudo systemctl restart canined

Stop the service:

sudo systemctl stop canined

Start the service:

sudo systemctl start canined

Reload/disable/enable the service:

sudo systemctl daemon-reload
sudo systemctl disable canined
sudo systemctl enable canined

Your peer:

echo $(canined tendermint show-node-id)'@'$(wget -qO- eth0.me)':'$(cat $HOME/.canine/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')

Key Management:

Create or recover a key:

canined keys add Wallet_Name
# Or recover
canined keys add Wallet_Name --recover

Check all the keys:

canined keys list

Check the balance:

canined query bank balances адрес_jkl…

Delete key:

canined keys delete Wallet_Name

Export Key:

canined keys export wallet

Import key:

canined keys import wallet wallet.backup

Validator control

Edit Validator:

canined tx staking edit-validator \
--new-moniker "Your_Moniker" \
--identity "Keybase_ID" \
--details "Your_Description" \
--website "Your_Website" \
--security-contact "Your_Email" \
--chain-id jackal-1 \
--commission-rate 0.05 \
--from Wallet_Name \
--gas 350000 -y

The address of your validator:

canined keys show Wallet_Name --bech val

The address of your valcons:

canined tendermint show-address

Validator information:

canined query staking validator valoper_address…

Information about Jail:

canined query slashing signing-info $(canined tendermint show-validator)

Unjail:

canined tx slashing unjail --from Wallet_Name --chain-id jackal-1 --gas 350000 -y

List of active validators:

canined 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 of inactive validators:

canined 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

Check the validator key:

VALOPER=Ваш_valoper
[[ $(canined q staking validator $VALOPER -oj | jq -r .consensus_pubkey.key) = $(canined status | jq -r .ValidatorInfo.PubKey.value) ]] && echo -e "\nYou win\n" || echo -e "\nYou lose\n"

The output of all rewards:

canined tx distribution withdraw-all-rewards --from Wallet_Name --chain-id jackal-1 --gas 350000 -y

Validator commission output:

canined tx distribution withdraw-rewards valoper1... --from Wallet_Name --gas 350000 --chain-id=jackal-1 --commission -y

Delegation of tokens:

canined tx staking delegate Your_valoper "100000000"ujkl --from Wallet_Name --gas 350000 --chain-id=jackal-1 -y

Redelegation of tokens:

canined tx staking redelegate Your_valoper valoper_другого_валидатора "100000000"ujkl --from Wallet_Name --gas 350000 --chain-id=jackal-1 -y

Token unbundling:

canined tx staking unbond Your_valoper "100000000"ujkl --from Wallet_Name --gas 350000 --chain-id=jackal-1 -y

Voting (Governance):

View all offers:

canined query gov proposals

View a specific proposal:

canined query gov proposal 1

Voting "yes":

canined tx gov vote 1 yes --from Wallet_Name --gas 350000 --chain-id jackal-1 -y

Voting "no":

canined tx gov vote 1 no --from Wallet_Name --gas 350000 --chain-id jackal-1 -y

Abstain:

canined tx gov vote 1 abstain --from Wallet_Name --gas 350000 --chain-id jackal-1 -y

Voting no with a veto:

canined tx gov vote 1 no_with_veto --from Wallet_Name --gas 350000 --chain-id jackal-1 -y

IBC Transfer

Example of translation from Jackal to Osmosis:

canined tx ibc-transfer transfer transfer channel-2 Your_OSMOaddress "100000"ujkl --from Your_Jackal_Wallet_Name --gas 350000 --chain-id=jackal-1 -y