https://github.com/skalenetwork/validator-cli
A command line tool for validators and delegators. Written in Python.
https://github.com/skalenetwork/validator-cli
cli click python skale-network web3py
Last synced: about 1 year ago
JSON representation
A command line tool for validators and delegators. Written in Python.
- Host: GitHub
- URL: https://github.com/skalenetwork/validator-cli
- Owner: skalenetwork
- License: agpl-3.0
- Created: 2020-01-20T14:14:10.000Z (over 6 years ago)
- Default Branch: develop
- Last Pushed: 2024-03-07T15:49:20.000Z (over 2 years ago)
- Last Synced: 2025-01-01T04:32:39.342Z (over 1 year ago)
- Topics: cli, click, python, skale-network, web3py
- Language: Python
- Homepage: https://skale.network
- Size: 908 KB
- Stars: 10
- Watchers: 7
- Forks: 4
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SKALE Validator CLI


[](https://discord.gg/vvUtWJB)
## Table of Contents
1. [Installation](#installation)
2. [CLI usage](#cli-usage)
2.1 [Init](#init)
2.2 [Validator commands](#validator-commands)
2.3 [Holder commands](#holder-commands)
2.4 [Metrics commands](#metrics-commands)
2.5 [Wallet commands](#wallet-commands)
2.6 [Self-recharging wallet commands](#self-recharging-wallet-commands)
3. [Exit codes](#exit-codes)
4. [Development](#development)
## Installation
### Requirements
- Linux x86_64 machine
- Download executable
```bash
VERSION_NUM={put the version number here} && sudo -E bash -c "curl -L https://github.com/skalenetwork/validator-cli/releases/download/$VERSION_NUM/sk-val-$VERSION_NUM-`uname -s`-`uname -m` > /usr/local/bin/sk-val"
```
- Apply executable permissions to the binary:
```bash
sudo chmod +x /usr/local/bin/sk-val
```
### Where to find out the latest version?
All validator-cli version numbers are available here: https://github.com/skalenetwork/validator-cli/releases
## CLI Usage
### Init
Download SKALE Manager contracts info and set the endpoint.
```bash
sk-val init
```
Required arguments:
- `--endpoint/-e` - RPC endpoint of the node in the network where SKALE manager is deployed (`http` or `https`)
- `--contracts-url/-c` - - URL to SKALE Manager contracts ABI and addresses
- `-w/--wallet` - Type of the wallet that will be used for signing transactions (software, sgx or hardware)
If you want to use sgx wallet you need to initialize it first (see **SGX commands**)
Usage example:
```bash
sk-val init -e ws://geth.test.com:8546 -c https://test.com/manager.json --wallet software
```
### SGX commands
#### Init
Initialize sgx wallet
```bash
sk-val sgx init [SGX_SERVER_URL]
```
Optional arguments:
- `--force/-f` - Rewrite current sgx wallet data
- `--ssl-port` - Port that is used by sgx server to establish tls connection
#### Info
Print sgx wallet information
```bash
sk-val sgx info
```
Optional arguments:
- `--raw` - Print info in plain json
### Validator commands
#### Register
Register as a new SKALE validator
```bash
sk-val validator register
```
Required arguments:
- `--name/-n` - Validator name
- `--description/-d` - Validator description
- `--commission-rate/-c` - Commission rate (percentage)
- `--min-delegation` - Validator minimum delegation amount
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
- `--yes` - Confirmation flag
Usage example:
```bash
sk-val validator register -n test -d "test description" -c 20 --min-delegation 1000 --pk-file ./pk.txt
```
#### List
List of available validators
```bash
sk-val validator ls
```
Options:
- `--wei/-w` - Show tokens amount in wei
#### Delegations
List of delegations for validator ID
```bash
sk-val validator delegations [VALIDATOR_ID]
```
Required params:
1) VALIDATOR_ID - ID of the validator
#### Accept pending delegation
Accept pending delegation request by delegation ID
```bash
sk-val validator accept-delegation --pk-file ./pk.txt
```
Required arguments:
- `--delegation-id` - ID of the delegation request to accept
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
- `--yes` - Confirmation flag
#### Accept all pending delegations
Accept ALL pending delegations request for the address.
List with all pending delegations to be accepted will be shown. After this user should confirm the operation.
```bash
sk-val validator accept-all-delegations --pk-file ./pk.txt
```
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
#### Validator linked addresses
List of the linked addresses for validator address
```bash
sk-val validator linked-addresses [ADDRESS]
```
Required params:
1) Address - Ethereum address of the validator
#### Link address
Link node address to the validator account
```bash
sk-val validator link-address [ADDRESS] [NODE_SIGNATURE] --pk-file ./pk.txt
```
Required params:
1) Address - Ethereum address that will be linked
2) Node signature - Signature of the node that you can get using `skale node signature`
command from skale-node-cli
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
- `--yes` - Confirmation flag
#### Unlink address
Unlink node address from the validator account
```bash
sk-val validator unlink-address [ADDRESS] --pk-file ./pk.txt
```
Required params:
1) Address - Ethereum address that will be unlinked
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
- `--yes` - Confirmation flag
#### Validator info
Info about the validator
```bash
sk-val validator info [VALIDATOR_ID]
```
Required params:
1) Address - Ethereum address of the validator
Output info:
1) Validator ID
2) Name
3) Address
4) Fee rate (percent - %)
5) Minimum delegation amount (SKL)
6) Accepting new delegation requests
#### Withdraw fee
Withdraw earned fee to specified address
```bash
sk-val validator withdraw-fee [RECIPIENT_ADDRESS] --pk-file ./pk.txt
```
Required params:
1) RECIPIENT_ADDRESS - Address to transfer bounty
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
- `--yes` - Confirmation flag
#### Set MDA
Set a new minimum delegation amount for the validator
```bash
sk-val validator set-mda [NEW_MDA] --pk-file ./pk.txt
```
Required params:
1) NEW_MDA - New MDA value
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
- `--yes` - Confirmation flag
#### Request address change
Request address change for the validator
```bash
sk-val validator change-address [ADDRESS] --pk-file ./pk.txt
```
Required params:
1) ADDRESS - New validator address
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
- `--yes` - Confirmation flag
#### Confirm address change
Confirm address change for the validator. Should be executed using new validator key.
```bash
sk-val validator confirm-address [VALIDATOR_ID] --pk-file ./pk.txt
```
Required params:
1) VALIDATOR_ID - ID of the validator
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
- `--yes` - Confirmation flag
#### Earned fees
Get earned fee amount for the validator address
```bash
sk-val validator earned-fees [ADDRESS]
```
Required params:
1) ADDRESS - Validator address
Optional arguments:
- `--wei` - Show amount in wei
### Holder commands
#### Delegate
Delegate tokens to validator
```bash
sk-val holder delegate
```
Required arguments:
- `--validator-id` - ID of the validator to delegate
- `--amount` - Amount of SKALE tokens to delegate
- `--delegation-period` - Delegation period (in months - only `2` avaliable now)
- `--info` - Delegation request info
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
#### Delegations
List of delegations for address
```bash
sk-val holder delegations [ADDRESS]
```
Required arguments:
1) ADDRESS - Ethereum address of the token holder
Options:
- `--wei/-w` - Show tokens amount in wei
#### Cancel pending delegation
Cancel pending delegation request
```bash
sk-val holder cancel-delegation [DELEGATION_ID]
```
Required params:
1) Delegation ID - ID of the delegation to cancel
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
#### Request undelegation
Request undelegation in the end of delegation period
```bash
sk-val holder undelegate [DELEGATION_ID]
```
Required params:
1) Delegation ID - ID of the delegation
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
#### Withdraw bounty
Withdraw earned bounty to specified address
```bash
sk-val holder withdraw-bounty [VALIDATOR_ID] [RECIPIENT_ADDRESS] --pk-file ./pk.txt
```
Required params:
1) VALIDATOR_ID - ID of the validator
2) RECIPIENT_ADDRESS - Address to transfer bounty
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
- `--yes` - Confirmation flag
#### Locked
Show amount of locked tokens for address
```bash
sk-val holder locked [ADDRESS]
```
Required arguments:
1) ADDRESS - Ethereum address of the token holder
Options:
- `--wei/-w` - Show tokens amount in wei
#### Earned bounties
Get earned bounties amount by token holder for the validator ID
```bash
sk-val holder earned-bounties [VALIDATOR_ID] [ADDRESS]
```
Required params:
1) VALIDATOR_ID - ID of the validator
1) ADDRESS - Token holder address
Optional arguments:
- `--wei` - Show amount in wei
### Wallet commands
#### Setup Ledger
This command works only if you're using the Ledger wallet
```bash
sk-val wallet setup-ledger
```
Required params:
- `--address-index` - Index of the address to use (starting from `0`)
- `--keys-type` - Type of the Ledger keys (live or legacy)
#### Send ETH tokens
Send ETH tokens to specific address
```bash
sk-val wallet send-eth [ADDRESS] [AMOUNT]
```
Required arguments:
1) ADDRESS - Ethereum receiver address
2) AMOUNT - Amount of ETH tokens to send
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--yes` - Confirmation flag
Usage example:
```bash
sk-val wallet send-eth 0x01C19c5d3Ad1C3014145fC82263Fbae09e23924A 0.01 --pk-file ./pk.txt --yes
```
#### Send SKL tokens
Send SKL tokens to specific address
```bash
sk-val wallet send-skl [ADDRESS] [AMOUNT]
```
Required arguments:
1) ADDRESS - Ethereum receiver address
2) AMOUNT - Amount of SKL tokens to send
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--yes` - Confirmation flag
Usage example:
```bash
sk-val wallet send-skl 0x01C19c5d3Ad1C3014145fC82263Fbae09e23924A 0.01 --pk-file ./pk.txt --yes
```
### Self-recharging wallet commands
#### Balance
Show balance of the validator self-recharging wallet
```bash
sk-val srw balance [VALIDATOR_ID]
```
Required arguments:
1) VALIDATOR_ID - ID if the validator
Optional arguments:
- `--wei/-w` - Show amount in wei
Usage example:
```bash
sk-val srw balance 1 --wei
```
#### Recharge
Recharge validator SRW wallet (amount in ETH)
```bash
sk-val srw recharge [AMOUNT]
```
Required arguments:
1) AMOUNT - Amount of ETH to recharge
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
Usage example:
```bash
sk-val srw recharge 0.1 --pk-file ./tests/test-pk.txt
```
#### Withdraw
Withdraw ETH from validator SRW wallet (amount in ETH)
```bash
sk-val srw withdraw [AMOUNT]
```
Required arguments:
1) AMOUNT - Amount of ETH to withdraw
Optional arguments:
- `--pk-file` - Path to file with private key (only for `software` wallet type)
- `--gas-price` - Gas price value in Gwei for transaction (if not specified doubled average network value will be used)
Usage example:
```bash
sk-val srw withdraw 0.1 --pk-file ./tests/test-pk.txt
```
## Exit codes
Exit codes conventions for SKALE CLI tools
- `0` - Everything is OK
- `1` - General error exit code
- `3` - Bad API response
- `4` - Script execution error
- `5` - Transaction error
- `6` - Revert error
## Development
### Setup repo
#### Install development dependencies
```bash
pip install -e .[dev]
```
##### Add flake8 git hook
In file `.git/hooks/pre-commit` add:
```bash
#!/bin/sh
flake8 .
```
### Debugging
Run commands in dev mode:
```bash
python main.py YOUR_COMMAND
```
### Setting up Travis
Required environment variables:
- `ACCESS_KEY_ID` - DO Spaces/AWS S3 API Key ID
- `SECRET_ACCESS_KEY` - DO Spaces/AWS S3 Secret access key
- `GITHUB_EMAIL` - Email of GitHub user
- `GITHUB_OAUTH_TOKEN` - GitHub auth token
- `ETH_PRIVATE_KEY` - Ethereum private key for tests (without `0x` prefix)
- `MANAGER_BRANCH` - Branch of the `skale-manager` to pull from DockerHub (`$MANAGER_BRANCH-latest` tag will be used)
### License

All contributions are made under the [GNU Affero General Public License v3](https://www.gnu.org/licenses/agpl-3.0.en.html). See [LICENSE](LICENSE).