Installation and usage of the platform

# Deployment of the platform in a private network¶

If your project or solution requires an independent blockchain, you can deploy your own blockchain network based on the Waves Enterprise platform. Our experts will help you configure the delivery of the platform to meet the needs of your project.

However, if you need to change any settings or configure the platform by yourself, this section provides a step-by-step guide for deploying and manual configuring the platform for a private network.

## Obtaining a private network license and associated files¶

To deploy the platform on a private network, you need to get the kind of license that suits your purposes: trial, commercial or non-commercial.

To discuss the details of your license, contact Waves Enterprise Sales at sales@wavesenterprise.com.

After that, you will be sent the YAML file for Kubernetes needed for the initial deployment of the platform and instructions on how to deploy and run the platform for your hardware configuration.

Before deployment, familiarize yourself with the blockchain platform system requirements.

## Creation of a node account¶

After obtaining the license and initial deployment of the platform, you will need to create accounts for each node of your future network.

The generation of keys is performed with the AccountsGeneratorApp utility, which is included in the package generators. You can download this package from the official repository of Waves Enterprise on GitHub by selecting the platform version you use.

A node account includes an address and a key pair: public and private keys. The address and the public key will be shown on the command line during account creation using the generators utility. Node’s private key is written to the key storage file keystore.dat, which is placed in the directory of the node.

To create an account, the configuration file accounts.conf is used, which contains the parameters of account generation. This file is located in the directory of each node.

To create a node account, go to its directory and place in it the downloaded file generators.jar. Then run it by entering the file accounts.conf as an argument:

java -jar generators-x.x.x.jar AccountsGeneratorApp accounts.conf


When you create a key pair, you can make up your own password to protect the node’s key pair. Later on, you can use it manually every time you start your node, or you can set global variables to ask for the password at system startup. See the description of the account generator for more information on how to use the password for a node key pair.

If you do not want to use a password to protect the key pair, press the Enter key, leaving the field blank.

The following messages will be displayed as a result of the utility operation:

2021-02-09 16:03:18,940 INFO  [main] c.w.g.AccountsGeneratorApp$- 1 Address: 3Nu7MwQ1eSmDVwBzrN1nyzR8wqb2yzdUcyN; public key: F4ytnnS6H72ypCEpgNKYftGotpdX83ZxtWRX2dyGzDiA 2021-02-09 16:03:18,942 INFO [main] c.w.g.AccountsGeneratorApp$ - Generator done


A keystore.dat file will be created in the directory of the node, which contains the account’s public key.

## Platform configuration for operation in a private network¶

Following files are used for configuration of the platform:

• The node.conf is the main configuration file of a node, which defines its operating principles and a set of options.

• The api-key-hash.conf is a configuration file for generating api-key-hash and privacy-api-key-hash field values; it is used to configure node authorization when choosing authorization method by api-key hash. The principles of working with this configuration file will be discussed when configuring the authorization method of the node.

Below is a step-by-step guide on how to manually configure a single node to work on a private network. If you have multiple nodes deployed on your network, you will need to perform similar configuration steps for each of them.

Step 1. General configuration of the platform

This step configures consensus, Docker smart contract execution and mining. All the parameters required for this are located in the node.conf file.

Step 2. Precise platform configuration

This step configures the node’s gRPC and REST API tools, their authorization, TLS, and confidential data access groups. You may need these settings if you change the pre-set settings for your hardware or software configuration.

All necessary parameters are also located in the node.conf node configuration file. The api-key-hash.conf file is also used to configure authorization, which is necessary when selecting the authorization method by a given api-key string hash.

You will also need the keytool utility included in the Java SDK or JRE to configure TLS.

Full examples of configuration files to configure each node are given by here.

## Genesis block signing and starting the network¶

After configuring your network’s nodes, you must create a genesis block, the first private blockchain block which contains the transactions that determine a node’s initial balance and permissions.

A genesis block is signed by the GenesisBlockGenerator utility included in the generators package. It uses the node configuration file node.conf that you set up as an argument:

java -jar generators-x.x.x.jar GenesisBlockGenerator node.conf


As a result of the utility’s work, the fields genesis-public-key-base-58 and signature located in the genesis block of the blockchain section of the node configuration file will be filled with the generated values of the public key and signature of the genesis block.

Example:

genesis-public-key-base-58: "4ozcAj...penxrm"
signature: "5QNVGF...7Bj4Pc"


After signing the genesis block, the platform is fully configured and ready to run the network. You can launch it according to the instructions received from Waves Enterprise specialists.

## Attachment of the client application to the private network¶

Once the network is up and running, attach a Waves Enterprise client application to it: with this, network users can send transactions to the blockchain, as well as broadcast and call smart contracts.

2. Register to the web client using any valid email address and log in to the web client.

5. Fill in the fields below. The required values are given in the credentials.txt file for the first node in the working directory.

• Address name - specify the name of the node;

• Node URL - specify the value http://<computer network address>/<node address>;

• Type of authorization on the node - select the type of authorization you configured earlier: by JWT-token or by api-key;

• Key pair password - specify a password from the node key pair if you have set it up while generating the account.

Client description is provided in the article Client.