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 as a whole, serving as a global arbiter and a reference chain, and a number of custom, separated sidechains that can be easily tuned according to a specific business task. The implementation of such construction principle allows to achieve optimization for higher speeds or large volumes of calculations, consistency and availability of data, as well as resistance to malicious changes in information.

Anchoring mechanism uses strengths of both consensus algorithms for creating a net configuration. The main blockchain Waves Enterprise is based on the Proof-of-Stake consensus algorithm, since it is supported by independent participants. At the same time, enterprise sidechains do not need to stimulate miners by means of transaction fees and can use the Proof-of-Authority algorithm. Sidechains are embedded in the main blockchain using the anchoring mechanism (by 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

Only the node component is mandatory, since it ensures the functioning and interaction within the blockchain network. Other components serve auxiliary purposes, but significantly simplify user interaction with the blockchain platform. The Waves Enterprise 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 is set for work with the blockchain according with any scenario.

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

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

  • Data service – the service aggregates data from the blockchain in RDBMS (PostrgreSQL) storage and provides full-text search on any information containing in blockchian via RESTfull webservice.

  • Private store - DB PostgreSQL provides private information processing and storing mechanisms, along with encrypted p2p communication service.

Additional services include:

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

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

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

  • Custom microservice plugins - a set of plugins for processing and customization of the data transferred and accepted from external systems.

  • Monitoring Service – an external monitoring service that uses a database (InfluxDB) for storing time rows with application data and metrics. The InfluxDB database is an open source software and 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 – interface of the REST API node which allows receiving the data from the blockchain, sign and send transactions, sending private data, creating and calling smart contracts, and so on.

  • 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 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 the agreement between nodes and cryptographic algorithms.

  • Key store - a component used to store key pairs for node itself and node users (optional), all keys are secured by passwords.

  • Miner – a component responsible for the creating of transaction blocks for the recording in the blockchain. Also miner component is in charge for 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 – node configuration parameters specified in the node-name.conf file.

  • Monitoring Service – an external monitoring service that uses a database (InfluxDB) for storing time rows with application data and metrics. The InfluxDB database is an open source software and is installed by the client separately.