Architecture

The Waves Enterprise platform is based on distributed ledger technology and represents a fractal network consisting of:

  • A master blockchain, Waves Enterprise Mainnet, which secures the operation of the network, serving as a global arbiter and a reference chain, and

  • A number of custom, separated sidechains that can be tuned easily according to specific business needs.

This construction principle optimizes the platform for higher speeds, large volumes of calculations, consistency and availability of data, and resistance to malicious changes in information.

The Anchoring mechanism uses the strengths of both consensus algorithms to create a net configuration. The main Waves Enterprise blockchain is based on the Proof-of-Stake consensus algorithm, which is supported by independent participants. At the same time, enterprise sidechains do not need to interact with miners and can use the Proof-of-Authority algorithm. Sidechains are embedded in the main blockchain using the anchoring mechanism, placing cryptographic proof of transactions in the main blockchain network.

Топология сети, включающая Waves Enterprise Mainnet и сайдчейны

Network topology including Waves Enterprise and sidechains

Node architecture and additional services

The node component is mandatory, since it ensures the functioning of and interaction within the blockchain network. Other components serve auxiliary purposes that significantly simplify user interaction with the blockchain platform. The Waves Enterprise Blockchain Platform instance consists of five basic modules and several additional microservices. The main modules include:

  • Node - The main software, which is installed on the computer and works directly with the blockchain.

  • Waves Enterprise corporate client – A web-application that provides contemporary and multifunctional user interface for the blockchain platform.

  • Smart-contracts module – An environment for deploying and executing of Turing-complete Docker smart-contracts. Docker containers with smart-contracts are deployed on remote virtual machine for additional security.

  • Data service – A service that aggregates data from the blockchain in RDBMS (PostrgreSQL) storage and provides full-text search on any information within the blockchain via the RESTfull web service.

  • Private store - A PostgreSQL database provides private information processing and storing mechanisms, along with an encrypted peer-to-peer communication service.

Additional services include:

  • Authorization service – A single authorization service for system components.

  • Data crawler - A service that extracts data from blockchain node and loads it into data-service component.

  • Generator - A service that generates key pairs for new accounts and creates api-key-hash.

  • Custom microservice plugins - A set of plugins for processing and customizing data transferred to and from external systems.

  • Monitoring Service – An external monitoring service that uses an open-source database (InfluxDB) to store time rows with application data and metrics. The database is installed by the client separately.

Подробная схема архитектуры ноды и дополнительных микросервисов

A detailed diagram of the node architecture and additional microservices

Node components

The node includes the following internal components:

  • Node API – A REST API node interface which can receive data from the blockchain, sign and send transactions, send private data, and create and call smart contracts.

  • Node storage – A system component that provides key-value storage (based on LevelDB) for a full set of validated and confirmed transactions and blocks, same as the current state of objects.

  • Unconfirmed transaction pool – A component that provides a temporary storage and queue service for validated transactions until they are included into a block.

  • Consensus and cryptolibraries – Configurable and customizable logical components responsible for achieving agreement between nodes and cryptographic algorithms.

  • Key store - A component used to store key pairs for the node itself and node users (optional). All keys are secured by passwords.

  • Miner – A component responsible for creating transaction blocks that are recorded in the blockchain. The miner component is in charge of interaction with Docker-smart contracts.

  • Network layer – A logic layer that provides interaction between nodes on the application level via network protocol over the TCP.

  • Validation logic – A logic layer containing such transaction verification rules as basic sign verification and advanced scripted verification.

  • Config – A set of node configuration parameters specified in the node-name.conf file.

  • Monitoring Service – An external monitoring service that uses an open-source database (InfluxDB) to store time rows with application data and metrics. The InfluxDB database is installed by the client separately.