GithubHelp home page GithubHelp logo

aut's Introduction


Main client software for Autonity networks

codecov Go Report Card License License GitHub issues GitHub forks GitHub stars


Documentation @ https://docs.autonity.org

What is Autonity?

Autonity is an EVM-based Layer 1 blockchain protocol for peer-to-peer networks hosting decentralised risk markets. Autonity networks are permissionless: access is open to all and anyone can operate a network node.

Autonity networks are Byzantine fault-tolerant and secured by delegated Proof of Stake using Tendermint consensus. Autonity has native protocol coins and implements a liquid staking model. Native coins are the Auton utility coin used in the transaction fee mechanism and Newton for staking the network. Liquid Newton is minted and burned as stake is bonded and redeemed.

Key features of the Autonity Protocol are:

  • immediate and deterministic transaction finality in a public environment where participant nodes can join the network dynamically without permission
  • delegated Proof of Stake consensus for committee selection and blockchain management, using the deterministic Tendermint BFT consensus algorithm
  • dual coin tokenomics, with native coins Auton and Newton for utility and staking
  • liquid staking for capital efficiency, staked newton yielding transferrable Liquid Newton redeemed for Newton on unbonding stake
  • epoch-based staking reward distribution

Core technology is the Autonity Go Client (AGC). AGC is the reference implementation of the Autonity Protocol and provides the main client software run by participant peer nodes in an Autonity network system. The client is a fork of Go Ethereum.

For more information about Autonity networks and risk markets visit the Project website @ http://autonity.org.

Installation

The minimum recommended device specifications for an Autonity node are:

Requirement Minimum Recommended
OS Ubuntu 20.04 LTS Ubuntu 20.04 LTS
CPU 3.10 GHz with 8 CPU's 3.10 GHz with 16 CPU's
RAM 8GB 16GB
Storage 1024GB free storage for full nodes and Validators 1024 GB free storage for full nodes and validators
Network interface 200 Mbit/s 200 Mbit/s

Linux Binaries

Download pre-built binaries of the Autonity client and NodeJS Console CLI for Linux from the Release Archive.

Build from source

Prerequisites

To build you will need :

Get the source code

Clone the Autonity Go Client repository:

git clone [email protected]:autonity/autonity.git
cd autonity

Build

To build the Autonity Go Client (AGC) run:

make autonity

This generates the Autonity binary in the /build/bin/ directory. Run ./build/bin/autonity to start the client, CTRL+C to stop. To view the client's command-line options run autonity --help.

To build the Autonity Go Client (AGC) and Tools in the cmd subdirectory, run:

make all

To build the Docker image run:

make build-docker-image

This generates the Autonity Go Client Docker image and manifest.

Run a node

Quick-start connecting to an Autonity testnet by using a testnet flag in the command line to set the genesis config for that network when starting the client. For example, to connect to the Piccadilly Testnet:

./build/bin/autonity --piccadilly

For full docs on how to run the client and connect to a public Autonity network see Networks and Run Autonity.

Connect to a node using Autonity Utility Tool aut

The recommended way of interacting with an Autonity node is via aut, which provides a command-line interface to Autonity-specific queries and operations, as well as much of the base Ethereum functionality.

For source code, installation, and usage see the aut repository.

See the docs how to Setup the Autonity Utility Tool (aut) for how to make calls and submit transactions.

Networks

Testnets

For details of public Autonity networks, see docs.autonity.org/networks.

Development

To run the tests, you will need the following prerequisites installed:

License

The library (i.e. all code outside of the cmd directory) is licensed under the GNU Lesser General Public License v3.0, also included in the repository in the COPYING.LESSER file.

The binaries (i.e. all code inside of the cmd directory) is licensed under the GNU General Public License v3.0, also included in the repository in the COPYING file.

aut's People

Contributors

97mik avatar aiman avatar cmjc avatar col4c avatar dtebbs avatar noandrea avatar rmsams avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aut's Issues

Cache validator information

Locally cache the treasury addr, LNTN contract addresses, and anything else that's useful. Saves having to query the node for this information.

Determine subcommand grammar

  • How should the command groups be divided up?
  • Do we want many small groups or a larger flatter structure?
  • Other interface questions (e.g. parameter conventions, etc)

Review comments on `aut get` OPTIONS

Review comments on aut get OPTIONS:

  • aut get stats and eth_coinbase. Calling stats returns stats on the connected node that includes the "eth_coinbase" field. This is legacy from PoW consensus, where it used as the miner's coinbase address where its block rewards and collected TX fees will go to. It is not used in Autonity PoS anymore. The treasury account receives staking rewards. The eth_coinbase is given the validator node key's corresponding ethereum account address. In other words, it is assigned the validator identifier address. I've created an issue to clarify this in the docs - https://github.com/autonity/docs.autonity.org/issues/269. Question:
    • Should we change the field name from eth_coinbase to validator_identifier?
    • If clarified in the docs, we probably don't need to change here for consistent use of eth_ prefixing.
  • aut get block --help Usage: aut get block [OPTIONS] [IDENTIFIER]. Clarify that IDENTIFIER is optional and it returns the latest block if unspecified?

Optimize startup performance

Launching the aut --help command takes 523ms (best of 5) on my machine, and this feels a little sluggish for what is being queried. On the same hardware, a do-nothing Python script takes 50ms to run through, and a script that simply parses arguments through argparse.parse_args() takes 60ms. There may be some opportunities to speed up responsiveness.

unexpected behaviour of `aut node info` while node is syncing

aut node info works fine if the node is already synced. However if called while syncing up a node it produces this output:

$ aut node info --rpc-endpoint="http://localhost:8560"
TypeError: Object of type AttributeDict is not JSON serializable

I suspect it is because eth_syncing returns the result in a different format based on whether the node is syncing or not.

if the node is syncing:

$ curl --silent --location --request GET 'localhost:8560' --header 'Content-Type: application/json' --data-raw '{
		"jsonrpc":"2.0",
		"method":"eth_syncing", "params":[],
		"id":1}' | jq
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "currentBlock": "0x18000",
    "healedBytecodeBytes": "0x0",
    "healedBytecodes": "0x0",
    "healedTrienodeBytes": "0x800",
    "healedTrienodes": "0xa",
    "healingBytecode": "0x0",
    "healingTrienodes": "0x0",
    "highestBlock": "0xbe253",
    "startingBlock": "0x0",
    "syncedAccountBytes": "0x1227",
    "syncedAccounts": "0x11",
    "syncedBytecodeBytes": "0x0",
    "syncedBytecodes": "0x0",
    "syncedStorage": "0xa3",
    "syncedStorageBytes": "0x9514"
  }
}

If the node is not syncing:

$ curl --silent --location --request GET 'localhost:8560' --header 'Content-Type: application/json' --data-raw '{
		"jsonrpc":"2.0",
		"method":"eth_syncing", "params":[],
		"id":1}' | jq
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": false
}

Return `eth.getChainId`

I can get networkId - returned as net_version from aut node info.

I can't currently call eth.getChainId from autcli to get the chain ID, and it's not returned by aut protocol config.

To be able to return the chain ID as well so you can call to confirm the chain and version identifiers of the network your node is connected to seems a good idea.

README edit suggestions

Extend `aut validator info` to also work with eNode

Currently there seems to be no quick/easy way to find a validator ID/address; aut validator info only works with providing the ID in the first place; it would be useful if it could also just work with an eNode (and in fact could automatically distinguish whether what it's been given for the --validator argument is an ID/address, or an enode, based on their length.

'aut token balance-of' returning incorrect balance - decimal position wrong for token contract but NTN OK

If I query balance of a liquid newton account, I find my liquid supply is 10000 but balance-of returns 0.000000000000010000.

ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut validator info --validator 0xA9F070101236476fe077F4A058C0C22E81b8A6C9
{
  "treasury": "0x11A87b260Dd85ff7189d848Fd44b28Cc8505fa9C",
  "addr": "0xA9F070101236476fe077F4A058C0C22E81b8A6C9",
  "enode": "enode://11e025123dc489f30c26f2f46cef177de2c72d07c3b0f6aa948a2575e2b4be362b8098c14ec4720e4e46daceb390caeb1ad273f3adbfca8c4150e58c0c71f24b@51.89.151.55:30303",
  "commission_rate": 1000,
  "bonded_stake": 10000,
  "total_slashed": 0,
  "liquid_contract": "0xf4D9599aFd90B5038b18e3B551Bc21a97ed21c37",
  "liquid_supply": 10000,
  "registration_block": 0,
  "state": 0
}
ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut token balance-of --token 0xf4D9599aFd90B5038b18e3B551Bc21a97ed21c37 0x11a87b260dd85ff7189d848fd44b28cc8505fa9c
0.000000000000010000
ubuntu@vps-c7c3e8c7:~/TEST/autcli$ 

If I query for Newton balance it works correctly:

ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut protocol mint 1 0xbf2f718f948de541123f3e0a06a9100ee1df128c | aut tx sign - | aut tx send -
(consider using 'KEYFILEPWD' env var).
Enter passphrase (or CTRL-d to exit): 
0x4a2c8f8e7f3c8dfb3df2e2e77864686851e77956237a0cfdf0596ad9712b5485
ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut token balance-of --ntn 0xbf2f718f948de541123f3e0a06a9100ee1df128c
1.000000000000000000

Contract commands

Support a very generic interface for contract calls

# Contract call (query node - no tx broadcast)
$ aut contract call --abi my_contract.abi --address 0x.... --method my_method param1 2 "0xaabbccdd"
45

# Create tx which calls a contract, optionally passing value
$ aut contract maketx --value 0.5aut --abi my_contract.abi --address 0x.... --method my_method param1 2 "0xaabbccdd"
{"from": "...", "to": "...", "data": "...", "value": "..."}

Support import and export of account key in encrypted form using Web3 Secret Storage Definition

Context

aut CLI's import account imports an unencrypted private key file. Autonity is better practice to have a private key in the ethereum encryted format ((https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage/))

  • Should a command or option be added to import an ethereum encrypted keystore file?
  • Should as mirror, a command be added to export an account private key as an ethereum encrypted keystore file?

Tuple Index Error on `aut protocol burn`

Encountering an error on burn: burning, viewing help:

IndexError: tuple index out of range

ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut protocol burn 1 0xd4eddde5d1d0d7129a7f9c35ec55254f43b8e6d4 | aut tx sign - | aut tx send -
IndexError: tuple index out of range

autcli version:

pipx install --force --python $(which python3.9) git+ssh://[email protected]/autonity/autcli.git@contract-updates


Update function `registerValidator` to add `proof` parameter

PR https://github.com/clearmatics/autonity-internal/pull/180 in the development repo is modifying the existing functionality for validator registration to verify the submitter is the validator operator by generating a proof using the validator's private node key:

  • modifying the registerValidator function to add a proof parameter

  • adding a new command in the autonity binary to generate the proof:

     ./autonity genEnodeProof --nodekey <nodekeyFile> <treasuryAddress>

This will require update to the existing autcli function register in the aut validator function grouping.

Tasks:

  • update aut validator register to:
    • add proof parameter.
    • call genEnodeProof to generate proof with necessary params.

Support for Python >3.9

Potenitally more versions of python could be supported. Compatibility issues seen on <=3.7, and installation framework issues with python >=3.10, so locking down to 3.9 for now, for simplicity. Should review this in the near term.

Prettify output from `validator info`

aut validator info dumps the raw descriptor returned from the contract. Consider formatting the amounts (e.g. total_staked etc) to look like balances etc.

Review comments on `aut account` OPTIONS

Review comments having tried all options in the group including assembling pipes of commands:

  • aut account list Would be useful if the output included the index and you were able to specify which account to use by index?
  • aut account balance. Doesn't clarify what returned values are:
  • aut account new: an abbreviated option -k for --key-file but not for --extra-entropy or --show-password?
  • aut account list - "FileNotFoundError: [Errno 2] No such file or directory: '~/.autonity/keystore'" returns trace before this error message. Could we only print trace if running autcli in a verbose mode?
  • aut account info Would be useful to also return liquid newton balance?
  • aut account info "ValueError: when sending a str, it must be a hex string. Got: ‘-’" This was user error as my pipe missed the --stdin: % aut account list --keystore keystore | aut account info --stdin -. However, could the error message hint "Use--stdin in command if piping the values in from stdout. See aut [OPTIONS] --help?
  • aut account info --help. Option -r, --rpc-endpoint URL RPC endpoint (defaults to WEB3_ENDPOINT env var. Clarify that that default is set or found?
  • aut account balance. Doesn't have a --stdin to allow piping.
  • aut account balance: an abbreviated option for --token? -ntn is brief enough without needing an abbreviation?
(venv) jay@Jays-MacBook-Pro autcli % aut account balance 0x55Ebbf8E3d00130eDE244Cbe0EF34A57eB01dc98
0
  • aut account balance. Error in error message - says --new and should be --ntn:
`(venv) jay@Jays-MacBook-Pro autcli % aut account balance 0xf219ce663b7d47bF28eECd180719d91bF39cdc5f --token 0x9B405183F51739Af5Da049Ed0a76c9BCdFF7792B --ntn
Error: cannot use --new and --token <addr> arguments together

Incompatibility with Python 3.11

Reports of errors when using 3.11:

ImportError: cannot import name 'getargspec' from 'inspect' (/opt/homebrew/Cellar/[email protected]/3.11.1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/inspect.py)

Worth investigating whether we can just upgrade some packages to add support. Otherwise, we should make the python version range stricter in the package config.

Which is preferred method for transferring LNTN? `aut tx make` or `aut token transfer`?

There are 2 ways to transfer LNTN:

  • is one preferred so I should use that as the primary example in the docs? e.g. the most compact syntax?

I will document both ways equally for now.

Examples

I can use aut tx make command:

  • aut tx make --to <RECIPIENT_ACCOUNT_ADDRESS> --token <LIQUID_CONTRACT> --value <AMOUNT> | aut tx sign - | aut tx send -

I can also use the ERC20 transfer command, specifying the liquid contract address as the -t | --token TOKEN-ADDR argument:

  • aut token transfer --token <TOKEN-ADDR> <RECIPIENT_ACCOUNT_ADDRESS> <AMOUNT> | aut tx sign - | aut tx send -

Commands `aut validator --help`: typo 'unbondign' and `commission-rate-precision`

Calling the protocol commands 2 notes:

  • typos "unbondign" in:
  head-unbonding-id          Head ID of unbondign queue
  tail-unbonding-id          Tail ID of unbondign queue
  • command commission-rate-precision Precision of validator commission rate values

I don't think this should be exposed. It's an internal validation check.

To reproduce:

Run aut protocol --help to view the options.

Usage: aut protocol [OPTIONS] COMMAND [ARGS]...

  Commands related to Autonity-specific protocol operations.  See the Autonity
  contract reference for details.

Options:
  --help  Show this message and exit.

Commands:
  commission-rate-precision  Precision of validator commission rate values
  config                     Print the Autonity contract config
  deployer                   Contract deployer
  epoch-id                   ID of current epoch
  epoch-reward               Reward for this epoch
  epoch-total-bonded-stake   Total stake bonded this epoch
  get-bonding-req            Get queued bonding information between start...
  get-committee              Get current committee"
  get-committee-enodes       Enodes in current committee
  get-last-epoch-block       Block of last epoch
  get-max-committee-size     Maximum committee size
  get-minimum-base-fee       Minimum base fee
  get-operator               Contract operator
  get-proposer               Proposer at the given height and round
  get-unbonding-req          Get queued unbonding information between...
  get-validators             Get current validators
  get-version                Contract version
  head-bonding-id            Head ID of bonding queue
  head-unbonding-id          Head ID of unbondign queue
  last-epoch-block           Block number of the last epoch
  tail-bonding-id            Tail ID of bonding queue
  tail-unbonding-id          Tail ID of unbondign queue
  total-redistributed        Total fees redistributed

Add `enode` url to result returned by `aut node info`

To register a validator, the enode url is required. This is currently gotten calling web3 admin.nodeInfo()

To facilitate registration using autcli, it would be useful if aut validator info could also return the enode url.

(At present I'm returning the enode using an RPC call & jq:

```json
$ curl -X GET 'http://localhost:8545'  --header 'Content-Type: application/json' --data '{"jsonrpc":"2.0", "method":"admin_nodeInfo", "params":[], "id":1}' | jq -r '.result | [.enode]'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
100  164k    0  164k  100    65   702k    278 --:--:-- --:--:-- --:--:--  704k
[
"enode://11e025123dc489f30c26f2f46cef177de2c72d07c3b0f6aa948a2575e2b4be362b8098c14ec4720e4e46daceb390caeb1ad273f3adbfca8c4150e58c0c71f24b@51.89.151.55:30303"
]  
```

)

Liquid Newton support

$ aut account balance --lntn <validator_address>

as a short-cut for:

$ aut account balance --token <liquid_newton_contract_address>

Add `--keystore` option to `aut account new` and `aut account import-private-key`?

The two aut account commands for creating a new keyfile from an existing private key (import-private-key) or a newly generated private key (new) both currently mandate that user defines the keyfile name with the --key-file option. To me, this seems like it should be a non-default, special case where user for some reason wants to specify the keyfile filename. The default case should be like it is with clef newaccount, where user only specifies the keystore directory (optionally, if keystore is defined in user's .autrc config) and the keyfile name is autogenerated using a timestamp and the ethereum account (all lowercase, not checksum) of the key saved in the file, e.g.,

UTC--2022-02-07T17-19-56.517538000Z--ca57f3b40b42fcce3c37b8d18adbca5260ca72ec

This is a safer practice, always having the account in the filename. When user comes to use one of these keyfiles, custom names introduce an abstraction that can easily lead to error unless user cat's the keyfile to confirm that her assumption about the account being used is correct.

It's also better to keep the keyfile creation practice consistent with geth, as user may be using both clef and autcli. Consistency across tools writing to the same directory should be the default unless there's a good reason to deviate.

Finally, this avoids user having to deal with one of the hardest problems in computer science! ;)

There are only two hard things in Computer Science: cache invalidation and naming things.
— Phil Karlton

Proposal: in both of these commands, add an option --keystore which accepts a path to user's keystore. When this option is used, keyfile filename is autogenerated per above convention. When --key-file is used, behaviour is as currently implemented (if --keystore is also present, it's ignored and command echo's a warning message saying so). If neither option is used, assume the first case and search .autrc for the keystore value and throw an error if not found.

Consistent denomination of XTN value output

Output in units fo Auton, Newton and Token by default.

$ aut account balance
100.1

instead of

$ aut account balance
100100000000000000000

Similarly for all denominations supported by input value.

`aut protocol get-unbonding-req` result - doffers from json-rpc call result

If I call this function from rpc and autcli I get different results with the same start and end IDs: I am passing in 0 and 2.

curl to JSON-RPC:

jay@Jays-MacBook-Pro docs.autonity.org-legacy % curl -X GET 'https://rpc1.piccadilly.autonity.org:8545/'  --header 'Content-Type: application/json' --data '{"jsonrpc":"2.0", "method":"aut_getBondingReq", "params":[0,2], "id":1}'
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": [
    {
      "delegator": "0x75474ac55768fab6fe092191eea8016b955072f5",
      "delegatee": "0x32f3493ef14c28419a98ff20de8a033cf9e6ab97",
      "amount": 10000,
      "startBlock": 0
    },
    {
      "delegator": "0x821bc352e77d885906b47001863f75e15c114f70",
      "delegatee": "0x31870f96212787d181b3b2771f58af2bed0019aa",
      "amount": 10000,
      "startBlock": 0
    }
  ]
}

autcli:

ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut protocol get-unbonding-req -r https://rpc1.piccadilly.autonity.org:8545 0 2
[
  {
    "delegator": "0xB17b5DD3fD63c736e538172A640ab0510E608a80",
    "delegatee": "0x32F3493Ef14c28419a98Ff20dE8A033cf9e6aB97",
    "amount": 11,
    "start_block": 486499
  },
  {
    "delegator": "0xB17b5DD3fD63c736e538172A640ab0510E608a80",
    "delegatee": "0x31870f96212787D181B3B2771F58AF2BeD0019Aa",
    "amount": 11,
    "start_block": 486499
  }
]

Check for presence of venv when running pipx

It appears that pipx can install the autonity.py dependency (and its dependencies) as editable (i.e. just install a ref back to the local repositoty) if the virtual env is active when pipx is run. make install should check for the presence of a venv and refuse to run pipx.

Can a keyfile specified in a command option override a keyfile specified in `.autrc` or should it error?

Description

In autcli I can specify my signing key in 2 places:

  • in .autrc, which is then used by default and it doesn't need to be specified in the command options.
  • as a command option using -k or --keyfile.

I thought that if I had a key specified in .autrc and I then specified a key in the command using the key file command, then the key file specified in the command would be used and the one specified in .autrc be ignored.

However if the key file set in .autrc differs to that in a specified -k/--keyfile option it errors: ValueError: MAC mismatch.

Is this correct, or should a key specified as a command option override one set in .autrc?

// .autrc specifies alice.key. Specify bob.key in command to override. MAC mismatch error.

ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut validator bond --validator 0xA9F070101236476fe077F4A058C0C22E81b8A6C9 -k ./keystore/bob.key 1 | aut tx sign - | aut tx send -
(consider using 'KEYFILEPWD' env var).
Enter passphrase (or CTRL-d to exit): 
ValueError: MAC mismatch
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

// .autrc edited to specify bob.key. Specify bob.key in command to override. OK.

ubuntu@vps-c7c3e8c7:~/TEST/autcli$ nano .autrc
ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut validator bond --validator 0xA9F070101236476fe077F4A058C0C22E81b8A6C9 -k ./keystore/bob.key 1 | aut tx sign - | aut tx send -
(consider using 'KEYFILEPWD' env var).
Enter passphrase (or CTRL-d to exit): 
0x06cf3051aa8792b8a2a39ce7579ebf36657e3e6d809ea3cf18805718c8fa9e99


// .autrc edited to specify bob.key. Remove bob.key in command. OK.

ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut validator bond --validator 0xA9F070101236476fe077F4A058C0C22E81b8A6C9  1 | aut tx sign - | aut tx send -
(consider using 'KEYFILEPWD' env var).
Enter passphrase (or CTRL-d to exit): 
0xd927fa405c5f5da86e1f9279417f6f7675b22a291f3477566bdcda4927e53cff

`commission-rate-change` : value entry differs from RPC: as value `0-1`

The autcli applies the logic beneath, requiring the commission rate to be entered as a decimal value betwen 0-1 (the RATE option is actually a float datatype . The calculation logic is:

https://github.com/autonity/autcli/blob/9fca88fbad18e74288df660166d4e3e69ce3bd9e/autcli/commands/validator.py#L370-L371

The problem is, in the Autonity Contract the RPC call is entered as an integer value in the range 0-10000 (10000 = 100%).

So,

  • if I do a direct RPC call, or use NodeJS Console, then I would use a value of 780 to set a new rate of 780 bps (7.8%)
  • if I use autclil, I would use a value of 0.078 to set a new rate of 780 bps (7.8%)

So, it could be confusing for users/developers.

`~` handling

Caught by @lorenzo-dev1.
~ not expanded in default keystore path. Also not exanded for config file or command line entries.

`aut validator bond` increments in wei not in auton

If I bond 1 then my NTN balance decrements in wei not whole Auton:

ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut validator bond --validator 0xA9F070101236476fe077F4A058C0C22E81b8A6C9 1 | aut tx sign - | aut tx send -
(consider using 'KEYFILEPWD' env var).
Enter passphrase (or CTRL-d to exit): 
0xa7a4575447383978e5e1d8e5a0bdb14fcedc0eec5d2d2648a03fe13de5c1e815
ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut token balance-of --ntn 0xd4eddde5d1d0d7129a7f9c35ec55254f43b8e6d4
5.000000000000010009
ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut validator bond --validator 0xA9F070101236476fe077F4A058C0C22E81b8A6C9 1 | aut tx sign - | aut tx send -
(consider using 'KEYFILEPWD' env var).
Enter passphrase (or CTRL-d to exit): 
0x736038db422ec948f822930b5855a1fbbf74f0d2e70b53effb26e834a32a2863
ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut token balance-of --ntn 0xd4eddde5d1d0d7129a7f9c35ec55254f43b8e6d4
5.000000000000010008
ubuntu@vps-c7c3e8c7:~/TEST/autcli$ aut validator info --validator 0xA9F070101236476fe077F4A058C0C22E81b8A6C9                 

{
  "treasury": "0x11A87b260Dd85ff7189d848Fd44b28Cc8505fa9C",
  "addr": "0xA9F070101236476fe077F4A058C0C22E81b8A6C9",
  "enode": "enode://11e025123dc489f30c26f2f46cef177de2c72d07c3b0f6aa948a2575e2b4be362b8098c14ec4720e4e46daceb390caeb1ad273f3adbfca8c4150e58c0c71f24b@51.89.151.55:30303",
  "commission_rate": 1000,
  "bonded_stake": 10000,
  "total_slashed": 0,
  "liquid_contract": "0xf4D9599aFd90B5038b18e3B551Bc21a97ed21c37",
  "liquid_supply": 10000,
  "registration_block": 0,
  "state": 0
}
ubuntu@vps-c7c3e8c7:~/TEST/autcli$ 

The validator info only shows the amount in whole auton, so the dust amount of .000000000000010002 is not showing in either the liquid_supply or the bonded_stake amount, either.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.