Random Number Generator (RNG)
Other Documentation
Setting up the chain and using the CLI wallet through downloadable binaries
It is recommended to use Ubuntu 18.04 and 8GB ram to run this witness node.

Downloading the Binaries

The quickest way to get started with the binaries is to look at the GitLab CI/CD pipelines for Beatrice and download the artifacts for the latest build.

Running the Binaries

There are two binaries of interest: witness_node and cli_wallet. These are found in ./artifacts/programs/witness_node and ./artifacts/programs/cli_wallet respectively.

Witness Node

  1. 1.
    Extract the witness_node binary to some location with write permissions.
  2. 2.
    Run the witness node binary: ./witness_node
  3. 3.
    The blockchain will now start to sync with the public TESTNET (Beatrice).
Consider creating a service to run this binary.
By default, running the witness_node binary downloaded from the Beatrice branch build will configure the witness_node_data_dir and start syncing with the Testnet. If configuration changes need to be made (e.g, setting up your own network, specifying custom RPC ports to listen on, etc...), the witness_node_data_dir/config.ini should be modified.
1
### Default config.ini for Beatrice
2
3
# Endpoint for P2P node to listen on
4
# p2p-endpoint =
5
6
# P2P nodes to connect to on startup (may specify multiple times)
7
# seed-node =
8
9
# JSON array of P2P nodes to connect to on startup
10
# seed-nodes =
11
12
# Pairs of [BLOCK_NUM,BLOCK_ID] that should be enforced as checkpoints.
13
# checkpoint =
14
15
# Endpoint for websocket RPC to listen on
16
rpc-endpoint = 127.0.0.1:8090
17
18
# Endpoint for TLS websocket RPC to listen on
19
# rpc-tls-endpoint =
20
21
# The TLS certificate file for this server
22
# server-pem =
23
24
# Password for this certificate
25
# server-pem-password =
26
27
# File to read Genesis State from
28
# genesis-json =
29
30
# Block signing key to use for init witnesses, overrides genesis file
31
# dbg-init-key =
32
33
# JSON file specifying API permissions
34
# api-access =
35
36
# Whether to enable tracking of votes of standby witnesses and committee members. Set it to true to provide accurate data to API clients, set to false for slightly better performance.
37
# enable-standby-votes-tracking =
38
39
# Space-separated list of plugins to activate
40
# plugins =
41
42
# Enable block production, even if the chain is stale.
43
enable-stale-production = false
44
45
# Percent of witnesses (0-99) that must be participating in order to produce blocks
46
required-participation = false
47
48
# ID of witness controlled by this node (e.g. "1.6.5", quotes are required, may specify multiple times)
49
# witness-id =
50
51
# IDs of multiple witnesses controlled by this node (e.g. ["1.6.5", "1.6.6"], quotes are required)
52
# witness-ids =
53
54
# Tuple of [PublicKey, WIF private key] (may specify multiple times)
55
private-key = ["TEST6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"]
56
57
# Account ID to track history for (may specify multiple times)
58
# track-account =
59
60
# Keep only those operations in memory that are related to account history tracking
61
partial-operations = 1
62
63
# Maximum number of operations per account will be kept in memory
64
max-ops-per-account = 100
65
66
# Elastic Search database node url(http://localhost:9200/)
67
# elasticsearch-node-url =
68
69
# Number of bulk documents to index on replay(10000)
70
# elasticsearch-bulk-replay =
71
72
# Number of bulk documents to index on a syncronied chain(100)
73
# elasticsearch-bulk-sync =
74
75
# Use visitor to index additional data(slows down the replay(false))
76
# elasticsearch-visitor =
77
78
# Pass basic auth to elasticsearch database('')
79
# elasticsearch-basic-auth =
80
81
# Add a prefix to the index(peerplays-)
82
# elasticsearch-index-prefix =
83
84
# Save operation as object(false)
85
# elasticsearch-operation-object =
86
87
# Start doing ES job after block(0)
88
# elasticsearch-start-es-after-block =
89
90
# Save operation as string. Needed to serve history api calls(true)
91
# elasticsearch-operation-string =
92
93
# Mode of operation: only_save(0), only_query(1), all(2) - Default: 0
94
# elasticsearch-mode =
95
96
# Elasticsearch node url(http://localhost:9200/)
97
# es-objects-elasticsearch-url =
98
99
# Basic auth username:password('')
100
# es-objects-auth =
101
102
# Number of bulk documents to index on replay(10000)
103
# es-objects-bulk-replay =
104
105
# Number of bulk documents to index on a synchronized chain(100)
106
# es-objects-bulk-sync =
107
108
# Store proposal objects(true)
109
# es-objects-proposals =
110
111
# Store account objects(true)
112
# es-objects-accounts =
113
114
# Store asset objects(true)
115
# es-objects-assets =
116
117
# Store balances objects(true)
118
# es-objects-balances =
119
120
# Store limit order objects(true)
121
# es-objects-limit-orders =
122
123
# Store feed data(true)
124
# es-objects-asset-bitasset =
125
126
# Add a prefix to the index(ppobjects-)
127
# es-objects-index-prefix =
128
129
# Keep only current state of the objects(true)
130
# es-objects-keep-only-current =
131
132
# Start doing ES job after block(0)
133
# es-objects-start-es-after-block =
134
135
# Track market history by grouping orders into buckets of equal size measured in seconds specified as a JSON array of numbers
136
bucket-size = [15,60,300,3600,86400]
137
138
# How far back in time to track history for each bucket size, measured in the number of buckets (default: 1000)
139
history-per-size = 1000
140
141
# Block number after which to do a snapshot
142
# snapshot-at-block =
143
144
# Block time (ISO format) after which to do a snapshot
145
# snapshot-at-time =
146
147
# Pathname of JSON file where to store the snapshot
148
# snapshot-to =
149
150
151
# ==============================================================================
152
# logging options
153
# ==============================================================================
154
#
155
# Logging configuration is loaded from logging.ini by default.
156
# If logging.ini exists, logging configuration added in this file will be ignored.
Copied!

CLI Wallet

Once your local chain instance is in sync with the network, you can start using the CLI wallet on it.
If you want to get started with the CLI Wallet right away, you can specify the server-rpc-endpoint to be that of an active witness node. A great place to find active endpoints is to check out: https://beta.eifos.org/status under Testnet.
  1. 1.
    Extract the cli_wallet binary to some location with write permissions.
  2. 2.
    Run the cli_wallet binary: ./cli_wallet --wallet-file my-wallet.json --chain-id b3f7fe1e5ad0d2deca40a626a4404524f78e65c3a48137551c33ea4e7c365672 --server-rpc-endpoint ws://127.0.0.1:8090 -u '' -p ''
  3. 3.
    You will then be asked to initialize your wallet. Set a password by using: set_password mypassword
  4. 4.
    Unlock the wallet: unlock mypassword
  5. 5.
    You can now execute the various functions of the wallet. Use help to see a list of commands with parameters.
Some Useful commands to start with:
  • Get information about the entire chain: get_global_properties
  • Get information about the core asset (TEST): get_asset 1.3.0
  • List the asset balance of an account: list_account_balances faucet
  • Importing an account into the CLI Wallet that was created with the GUI wallet or faucet with a password:
    • get_private_key_from_password(string account, string role, string password) There are three roles: active, owner, and memo
    • import_key(string account_name_or_id, string wif_key) for each WIF from the different roles obtained from get_private_key_from_password
The chain-ID for Beatrice is: b3f7fe1e5ad0d2deca40a626a4404524f78e65c3a48137551c33ea4e7c365672
To find the chain-ID for your local instance (it will be different if you've set up your own network) run:
sudo curl --data '{"jsonrpc": "2.0", "method": "get_chain_properties", "params": [], "id": 1}' http://127.0.0.1:8090/rpc && echo