Getting Started¶
In this document we explain how to run a single node and how to use
monetcli
to interact with it. In another section, we will explain how to
join an existing network. For details about any command, please refer to the
specification.
Creating A Single Node Network¶
In short, run the following three commands to start a standalone node:
$ monetd keys new node0
$ monetd config build node0
$ monetd run
The keys new
command will prompt us for a password, and generate a new
encrypted keyfile in the default keystore ~/.monet/keystore
. We identified
our key with the node0
moniker.
The config build
command takes our key, and generates a minimal network
configuration with a single validator node, and a prefunded account. Again, the
configuration is written to ~/.monet
. [1]
Finally, the run
command starts a monetd node, which will default to using
the configuration files in ~/.monet
. [1]
Using monetcli¶
Let’s use monetcli
to query the newly created node. First of all, install
monetcli
with npm install -g monetcli
.
While monetd
is still running, open another terminal and start monetcli
in interactive mode:
$monetcli i
__ __ _ ____ _ ___
| \/ | ___ _ __ ___ | |_ / ___| | | |_ _|
| |\/| | / _ \ | '_ \ / _ \ | __| | | | | | |
| | | | | (_) | | | | | | __/ | |_ | |___ | |___ | |
|_| |_| \___/ |_| |_| \___| \__| \____| |_____| |___|
Mode: Interactive
Data Dir: /home/user/.monet
Config File: /home/user/.monet/monetcli.toml
Keystore: /home/user/.monet/keystore
Change datadir by: $ monetcli --datadir [path] [command]
Commands:
exit Exit Monet CLI
help [command...] Provides help for a given command.
accounts create [options] [moniker] Creates an encrypted keypair locally
accounts get [options] [address] Fetches account details from a connected node
accounts list [options] List all accounts in the local keystore directory
accounts update [options] [moniker] Update passphrase for a local account
accounts import [options] [moniker] Import an encrypted keyfile to the keystore
config set [options] Set values of the configuration inside the data directory
config view [options] Output current configuration file
poa check [options] [address] Check whether an address is on the whitelist
poa nominate [options] [address] Nominate an address to proceed to election
poa nomineelist [options] List nominees for a connected node
poa vote [options] [address] Vote for an nominee currently in election
poa whitelist [options] List whitelist entries for a connected node
transfer [options] Initiate a transfer of token(s) to an address
info [options] Display information about node
version [options] Display current version of cli
block [options] [block] Display details of a block by index
validators [options] [round] Get validators by consensus round
history [options] Show validator history
clear [options] Clear output on screen
Type info
to check the status of the node:
monetcli$ info
monetcli http GET localhost:8080/info
┌────────────────────────┬────────────┐
│ consensus_events │ 0 │
│ consensus_transactions │ 0 │
│ events_per_second │ 0.00 │
│ id │ 2002112846 │
│ last_block_index │ -1 │
│ last_consensus_round │ nil │
│ last_peer_change │ -1 │
│ min_gas_price │ 0 │
│ moniker │ node0 │
│ num_peers │ 1 │
│ round_events │ 0 │
│ rounds_per_second │ 0.00 │
│ state │ Babbling │
│ sync_rate │ 1.00 │
│ transaction_pool │ 0 │
│ type │ babble │
│ undetermined_events │ 0 │
└────────────────────────┴────────────┘
Type accounts list
to get a list of accounts in the keystore, and the
balance associated with them.
monetcli$ accounts list
monetcli info keystore /home/user/.monet/keystore
monetcli info node localhost:8080
┌─────────┬────────────────────────────────────────────┬─────────────┬───────┐
│ Moniker │ Address │ Balance │ Nonce │
├─────────┼────────────────────────────────────────────┼─────────────┼───────┤
│ node0 │ 0xa10aae5609643848fF1Bceb76172652261dB1d6c │ ~1234.5678T │ 0 │
└─────────┴────────────────────────────────────────────┴─────────────┴───────┘
So we have a prefunded account. The same account is used as a validator in
Babble, and as a Tenom-holding account in the ledger. This is the same account,
node0, that we created in the previous steps, with the encrypted private key
residing in ~/.monet/keystore
.
Now, let’s create a new key using monetcli
, and transfer some tokens to it.
monetcli$ accounts create
? Moniker: node1
? Output Path: /home/user/.monet/keystore
? Passphrase: [hidden]
? Re-enter passphrase: [hidden]
monetcli info keystore /home/user/.monet/keystore
{
"version":3,
"id":"89970faf-8754-468e-903c-c9d3248a08cc",
"address":"960c13654c477ac1d2d7f8fc7ae84d93a2225257",
"crypto":{
"ciphertext":"7aac819c1bed442d77897b690e5c2f14416589c7bdd6bdd2b5df5d03584ce0ec",
"cipherparams":{
"iv":"3d15a67d76293c3b7123f2bde76ba120"
},
"cipher":"aes-128-ctr",
"kdf":"scrypt",
"kdfparams":{
"dklen":32,
"salt":"730dd67f175a77c9833a230e334719292cbb735607795b1b84484e3d04783510",
"n":8192,
"r":8,
"p":1
},
"mac":"7535c31c277a698207d278cd1f1df90747463e390b822cfef7d2faf8f1fa1809"
}
}
Like monetd keys new
this command created a new key and wrote the encrypted
keyfile in ~/.monet/keystore. Let’s double check that the key was created:
monetcli$ accounts list
monetcli info keystore /home/user/.monet/keystore
monetcli info node localhost:8080
┌─────────┬────────────────────────────────────────────┬─────────────┬───────┐
│ Moniker │ Address │ Balance │ Nonce │
├─────────┼────────────────────────────────────────────┼─────────────┼───────┤
│ node0 │ 0xa10aae5609643848fF1Bceb76172652261dB1d6c │ ~1234.5678T │ 0 │
├─────────┼────────────────────────────────────────────┼─────────────┼───────┤
│ node1 │ 0x960c13654c477ac1d2d7f8fc7ae84d93a2225257 │ 0T │ 0 │
└─────────┴────────────────────────────────────────────┴─────────────┴───────┘
Now, let’s transfer 100 tokens to it.
monetcli$ transfer
? From: node0 (1,234,567,890,000,000,000,000)
? Enter password: [hidden]
? To 0x960c13654c477ac1d2d7f8fc7ae84d93a2225257
? Value: 100
{
"from": "0xa10aae5609643848fF1Bceb76172652261dB1d6c",
"to": "0x960c13654c477ac1d2d7f8fc7ae84d93a2225257",
"value": "100T",
"gas": 1000000,
"gasPrice": "0T"
}
Transaction fee: 0T
? Submit transaction Yes
Transaction submitted successfully.
Finally, we can check the account balances again to verify the outcome of the transfer:
monetcli$ accounts list --exact
monetcli info keystore /home/user/.monet/keystore
monetcli info node localhost:8080
┌─────────┬────────────────────────────────────────────┬─────────────┬───────┐
│ Moniker │ Address │ Balance │ Nonce │
├─────────┼────────────────────────────────────────────┼─────────────┼───────┤
│ node0 │ 0xa10aae5609643848fF1Bceb76172652261dB1d6c │ 1134.56789T │ 1 │
├─────────┼────────────────────────────────────────────┼─────────────┼───────┤
│ node1 │ 0x960c13654c477ac1d2d7f8fc7ae84d93a2225257 │ 100T │ 0 │
└─────────┴────────────────────────────────────────────┴─────────────┴───────┘
[1] | (1, 2) This location is for Linux instances. Mac and Windows uses a different
path. The path for your instance can be ascertain with this command:
monetd config location |