Technical description of the platform

Generators

Generators is a set of utilities included in the supply package of the Waves Enterprise blockchain platform. Generators are supplied as a package file generator-x.x.x.jar, where x.x.x is the blockchain platform release version.

Generators for each version of the blockchain platform are available in the Waves Enterprise official GitHub repository.

In order to work with the generators, you have to install the Java Runtime Environment for your operating system. All components of the generator set are operated in the terminal or command line.

The generator set includes following utilities:

  • AccountsGeneratorApp – node account generator;

  • GenesisBlockGenerator – genesis block signer;

  • ApiKeyHash – a generator for hash coding of an API key string required for node API authorization;

AccountsGeneratorApp

The AccountsGeneratorApp is used for configuration of a node account in a private network – a set of data about a blockchain network participant. To generate an account, you have to set up the accounts.conf file in the node directory.

accounts.conf configuration file example:
accounts-generator {
  crypto {
    type = WAVES
  }
  chain-id = T
  amount = 5
  wallet = ${user.home}"/node/wallet/wallet1.dat"
  wallet-password = "some string as password"
  reload-node-wallet {
    enabled = false
    url = "http://localhost:6869/utils/reload-wallet"
  }
}

Running of the AccountsGeneratorApp:

java -jar generator-x.x.x.jar AccountsGeneratorApp YourNode/accounts.conf

The generator creates a node public key (account) and stores it in the keystore.dat file in the directory of your node. If necessary, you can set a keypair password.

Hint

If you have set the password for your keypair, you have to state it in the password field while creating queries and transactions.

Learn more about node account generation in the Creation of a node account section.

GenesisBlockGenerator

The GenesisBlockGenerator is used for signing of a private network genesis block – the first block of a new network which contains transactions that define initial balances and permissions. To sign a genesis block, the generator uses the blockchain.genesis block of the node.conf node configuration file.

Running of the GenesisBlockGenerator:

java -jar generator-x.x.x.jar GenesisBlockGenerator YourNode/node.conf

The generator fills the fields genesis-public-key-base-58 (a public key of a genesis block) and signature (genesis block signature) of a node configuration file.

Learn more about genesis block signing in the section Genesis block signing.

ApiKeyHash

The ApiKeyHash utility is used for authorization of the node API methods (gRPC and REST API interfaces for data exchange). For generation of a JWT token (in case of oAuth authorization) or a token based on an api-key string, the generator uses the api-key-hash.conf configuration file in the node directory.

Running of the ApiKeyHash:

java -jar generator-x.x.x.jar ApiKeyHash YourNode/api-key-hash.conf

The utility generates a JWT token or a hash of an entered api-key string, which are stated in the auth section of the node configuration file.

api-key-hash.conf example:

apikeyhash-generator {
  crypto {
    type = WAVES
  }
  api-key = "some string for api-key"
}

Learn more about gRPC and REST API authorization in the section Precise platform configuration: gRPC and REST API authorization.

See also