DGT DOCS
  • 1. INTRODUCTION
    • 1.1 Executive Summary
    • 1.2 Why DGT
    • 1.3 Distributed Ledgers Technology
      • 1.3.1 Decentralization approach
      • 1.3.2 Consensus Mechanism
      • 1.3.3 Transactions
      • 1.3.4 Layered Blockchain Architecture
      • 1.3.5 Tokenomics
      • 1.3.6 Web 3 Paradigm
      • 1.3.7 Common Myths about Blockchain
    • 1.4 The DGT Overview
      • 1.4.1 Platform Approach
      • 1.4.2 DGT Functional Architecture
      • 1.4.3 Technology Roadmap
    • 1.5 How to create a Solution with DGT Networks
    • 1.6 Acknowledgments
  • 2. REAL WORLD APPLICATIONS
    • 2.1 Case-Based Approach
      • 2.1.1 DGT Mission
      • 2.1.2 The Methodology
      • 2.1.3 Case Selection
    • 2.2 Supply Chain and Vertical Integration
      • 2.2.1 Logistics Solution for Spare Parts Delivery
      • 2.2.2 DGT Based Solution for Coffee Chain Products
    • 2.3 Innovative Financial Services
      • 2.3.1 Crowdfunding Platform
      • 2.3.2 Real World Assets Tokenization
      • 2.3.3 Virtual Neobank over DGT Network
      • 2.3.4 DGT based NFT Marketplace
    • 2.4 Decentralized Green Energy Market
      • 2.4.1 Peer To Peer Energy Trading
      • 2.4.2 DGT based Carbon Offset Trading
    • 2.5 B2B2C Ecosystems and Horizontal Integration
      • 2.5.1 KYC and User Scoring
      • 2.5.2 Decentralized Marketing Attribution
      • 2.5.3 Case Decentralized Publishing Platform
      • 2.5.4 Value Ecosystem
    • 2.6 More Cases
  • 3. DGT ARCHITECTURE
    • 3.1 Scalable Architecture Design
      • 3.1.1 High Level Architecture
      • 3.1.2 DGT Approach
      • 3.1.3 Unique contribution
      • 3.1.4 Component Based Architecture
    • 3.2 Performance Metrics
    • 3.3 Network Architecture
      • 3.3.1 Nework Architecture in General
      • 3.3.2 Network Identification
      • 3.3.3 H-Net Architecture
      • 3.3.4 Transport Level
      • 3.3.5 Segments
      • 3.3.6 Static and Dynamic Topologies
      • 3.3.7 Cluster Formation
      • 3.3.8 Node Networking
      • 3.3.9 Permalinks Control Protocol
    • 3.4 Fault-Tolerant Architecture
      • 3.4.1 Introduction to Fault Tolerance
      • 3.4.2 F-BFT: The Hierarchical Consensus Mechanism
      • 3.4.3 Cluster Based Algorithms
      • 3.4.4 Arbitrator Security Scheme
      • 3.4.5 Heartbeat Protocol
      • 3.4.6 Oracles and Notaries
      • 3.4.7 DID & KYC
    • 3.5 Transactions and Performance
      • 3.5.1 Transaction Basics
      • 3.5.2 Transaction Processing
      • 3.5.3 Transaction and block signing
      • 3.5.4 Transaction Families
      • 3.5.5 Transaction Receipts
      • 3.5.6 Smart Transactions
      • 3.5.7 Private Transactions
      • 3.5.8 Multi signature
    • 3.6 Data-Centric Model
      • 3.6.1 Data layer overview
      • 3.6.2 Global State
      • 3.6.3 Genesis Record
      • 3.6.4 Sharding
      • 3.6.5 DAG Synchronization
    • 3.7 Cryptography and Security
      • 3.7.1 Security Architecture Approach
      • 3.7.2 Base Cryptography
      • 3.7.3 Permission Design
      • 3.7.4 Key Management
      • 3.7.5 Encryption and Decryption
      • 3.7.6 Secure Multi Party Computation
      • 3.7.7 Cryptographic Agility
      • DGTTECH_3.8.4 Gateway Nodes
    • 3.8 Interoperability
      • 3.8.1 Interoperability Approach
      • 3.8.2 Relay Chain Pattern
      • 3.8.3 Virtual Machine Compatibility
      • 3.8.4 Gateway Nodes
      • 3.8.5 Token Bridge
    • 3.9 DGT API and Consumer Apps
      • 3.9.1 Presentation Layer
      • 3.9.2 Application Architecture
    • 3.10 Technology Stack
    • REFERENCES
  • 4. TOKENIZATION AND PROCESSING
    • 4.1 Introduction to Tokenization
      • 4.1.1 DGT Universe
      • 4.1.2 Driving Digital Transformation with Tokens
      • 4.1.3 Real-World Tokenization
      • 4.1.4 Key Concepts and Definitions
    • 4.2 Foundations of Tokenization
      • 4.2.1 Definition and Evolution of Tokenization
      • 4.2.2 Tokenization in the Blockchain/DLT Space
      • 4.2.3 The Tokenization Process
      • 4.2.4 Tokenization on the DGT Platform
      • 4.2.5 Regulatory and Legal Aspects of Tokenization
      • 4.2.6 Typical Blockchain-Based Business Models
    • 4.3 The DEC Transaction Family
      • 4.3.1 DEC Transaction Family Overview
      • 4.3.2 DEC Token Features
      • 4.3.3 DEC Token Protocol
      • 4.3.4 DEC Account Design
      • 4.3.5 DEC Transaction Family Flow
      • 4.3.6 DEC Commands
      • 4.3.7 DEC Processing
      • 4.3.8 Payment Gateways
    • 4.4 Understanding Secondary Tokens
      • 4.4.1 The different types of tokens supported by DGT
      • 4.4.2 How secondary tokens are produced
  • 5. EXPLORING TOKENOMICS
    • 5.1 Introduction
      • 5.1.1 What does tokenomics mean?
      • 5.1.2 Goals of Building the Model for DGT Network
      • 5.1.3 Tokens vs Digital Money
      • 5.1.4 The Phenomenon of Cryptocurrency
      • 5.1.5 Basic Principles of Tokenomics
      • 5.1.6 AB2023 Model
    • 5.2 Node & User Growth
      • 5.2.1 Node Ecosystem
      • 5.2.2 User Growth and Retention Modeling
    • 5.3 Transactions
      • 5.3.1 Transaction Amount Components
      • 5.3.2 Shaping the Transaction Profile: A Three-pronged Approach
      • 5.3.3 Calculation of Transaction Number
    • 5.4 Network Performance Simulation
      • 5.4.1 Endogenous Model
      • 5.4.2 Network Entropy
      • 5.4.3 Network Utility
    • 5.5 Token Supply Model
      • 5.5.1 Introduction to Supply and Demand Dynamics
      • 5.5.2 Token distribution
      • 5.5.3 Supply Protocol
      • 5.5.4 Token Balance and Cumulative Supply
    • 5.6 Token Demand Model
      • 5.6.1 Node-Base Demand
      • 5.6.2 Transaction-Based Token Demand
      • 5.6.3 Staking Part Modeling
      • 5.6.4 Total Demand
    • 5.7 Token Price Simulation
      • 5.7.1 Nelson-Siegel-Svensson model
      • 5.7.2 The Price Model
    • 5.8 Decentralization Measurement
      • 5.8.1 Active Node Index
      • 5.8.2 Node Diversity in Hybrid Networks
      • 5.8.3 Token distribution
      • 5.8.4 Integral Calculation of Decentralization Metric
    • 5.9 Aggregated Metrics
      • 5.9.1 Transaction Throughput: Evaluating Network Performance and Scalability
      • 5.9.2 Market Capitalization: A Dimension of Valuation in Cryptocurrency
      • 5.9.3 Total Value Locked (TVL): A Spotlight on Network Engagement and Trust
  • 6. ADMINISTRATOR GUIDE
    • 6.1 Introduction
      • 6.1.1 Administrator Role
      • 6.1.2 Platform sourcing
      • 6.1.3 DGT Virtualization
      • 6.1.4 Using Pre-Built Virtual Machine Images
      • 6.1.5 Server Preparation
      • 6.1.6 OS Setup and initialization
    • 6.2 DGT CORE: Single Node Setup
      • 6.2.1 Launch the First DGT Node
      • 6.2.2 Dashboard setup
      • 6.2.3 Nodes Port Configuration
      • 6.2.4 Single Node Check
    • 6.3 DGT CORE: Setup Private/Public Network
      • 6.3.1 Network launch preparation
      • 6.3.2 A Virtual Cluster
      • 6.3.3 A Physical Network
      • 6.3.4 Attach node to Existing Network
    • 6.4 DGT Dashboard
    • 6.5 DGT CLI and base transaction families
    • 6.6 GARANASKA: Financial Processing
      • 6.6.1 Overview of DGT’s financial subsystem
      • 6.6.2 DEC emission
      • 6.6.3 Consortium account
      • 6.6.4 User accounts
      • 6.6.5 Payments
    • 6.7 Adjust DGT settings
      • 6.7.1 DGT Topology
      • 6.7.2 Manage local settings
    • 6.8 DGT Maintenance
      • 6.8.1 Stopping and Restarting the Platform
      • 6.8.2 Backing up Databases
      • 6.8.3 Network Performance
      • 6.8.4 Log & Monitoring
Powered by GitBook
On this page
  • 6.7.1.1 DGT Topology Settings
  • 6.7.1.2 Port Configuration
  1. 6. ADMINISTRATOR GUIDE
  2. 6.7 Adjust DGT settings

6.7.1 DGT Topology

Previous6.7 Adjust DGT settingsNext6.7.2 Manage local settings

Last updated 1 year ago

dealt with the installation of a single node. Each node is a set of services that interact with each other and are responsible for organizing the network, storing data, and processing transactions. Even a single node provides a significant service that supports client applications via an API (see ). At the same time, several the platform’s network capabilities can only be used if there are several nodes. A detailed overview of DGT networking features is provided in , while below is a description of the practical setup of the DGT network. Basic concepts of topology include:

  • Node: an independent unit of the network, a set of services that support the functionality of the platform.

  • Cluster: a group of nodes that jointly process transactions. In the DGT network, all nodes are included in a certain cluster. One node cannot belong to two clusters simultaneously.

  • Node role: each cluster is supported by a variable leader (Leader role) that changes according to a certain rule. The nodes in the cluster perform the transaction validation (the roles of Peer, Validator). Outside the cluster, transactions are additionally checked by nodes of a special time – an Arbitrator. There are also other roles (see ).

  • The initial joining of a node to the network is done through a special node-gateway that performs the initial touring of messages.

  • The DGT network may contain additional divisions in terms of access. Such a division is organized into network segments, which may have limited access (closed or private segments) and free access (open, public segment). Only one public segment is allowed within the DGT network. Each cluster belongs to one and only one segment. The different between closed and open segments is in different access method: a closed segment requires certificate verification and an access point (cell), while the open segment uses a dynamic topology with random access to clusters.

  • To manage the level of trust, there are various mechanisms for monitoring the integrity of the network: signatures for topological transactions (verifies the public-private key pair), X.509 certificate mechanism, or the formation of a trusted seed-network. Seed-network is an initial set of nodes which can interact without the use of certificates. It is assumed that this initial configuration is provided by a trust contour (see )

  • Expanding the network beyond the seed-network is carried out by connecting nodes to cells – reserved topological coordinates (cluster number / node number). Such cells are described in the preliminary system settings (see ).

The DGT network configuration is described through one of the two notations:

  • System notation (node coordinates, metric notation): cluster number and node number. For example, the 1st node represented in the 1st cluster gets the name c1-1. Such a system does not take access segments into account, but has simple node addressing and is convenient for use in assembly commands.

  • Extended notation (mnemonic notation), which uses the following rules:

    • Network segments are denoted by capital letters: A (seed-network), B, C, D… Only one of these segments may be public.

    • Clusters are denoted by two small Latin letters, the first of which corresponds to the segment, the second to the cluster number, for example: aa, ab, …, bc, bd, be, …, da, db, …

    • Nodes are identified by name of the cluster with an additional numerical index, for example aa1, aa2, ab2, ab2

  • Network objects accept types: NODE, CLUSTER, SEGMENT, MAP

  • Objects form a single hierarchy (tree), which describes each of the objects with its own attributes. The CLUSTER object contains a list of nodes located in the children list. The top-level object “genesis” is an abstract object that contains other objects. Clusters are attached to certain nodes that are the gateways into the network.

  • CLUSTER object attributes include:

    o name (reference to gateway system name, for example, Dgt4),

    o type (cluster),

    o segment (cluster name in mnemonic notation, for example, AE),

    o children (a set of node objects, each of which has a name in notation ae1, ae2, …),

    o maxpeer (optional attribute that limits the number of nodes in the cluster)

    o public (optional attribute. If present and set to true, the cluster supports the dynamic topology that is typical for open/public segments).

  • NODE object attributes include:

    o name (node name, usually related to system notation, e.g. 11)

    o type (peer): selects objects of type node

    o role (the role of the node, in the current version it can take the values of leader that coordinates the cluster and plink which is the validator)

    o genesis (optional attribute, present only for the first node in the network and taking the value of true)

    o delegate (optional attribute, a market for the node that acts as an arbitrator)

  • SEGMENT attributes include:

    o NETWORK_WIDTH – the number of clusters in the segment allowed at any one level

    o NETWORK_HEIGHT – the number of clusters allowed in any one segment in depth

    o NETWORK_ROLES – allowed roles

    o NETWORK_CA – requirement for valid certificates to join the segment (mode=true).

  • Attributes of the MAP object (not used, the map is moved to a separate specification of dgt.net.map type)

• Segment A:

o AA [# ] {aa1 [G L A],aa2,aa3,aa4,aa5,aa6}

o AB [#aa1 P M8] {ab1 [L A], ab2,ab3, ab4,ab5,ab6}

o AC [#ab1] {ac1 [L A], ac2,ac3, ac4,ac5,ac6}

o AD [#aa3] {ad1 [L A], ad2, ad3, ad4, ad5, ad6}

o AE [#aa2] {ae1 [L A], ae2,ae3, ae4,ae5,ae6}

• Segment B:

o BA [#aa4] {ba1 [L A], ba2, ba3, ba4,ba5, ba6}

TOTAL: 36 Nodes, 6 Clusters, 2 Segments

SEED: {aa1 (c1-1), aa2 (c1-2), aa3 (c1-3), ab1 (c2-1)}

Here:

- Segments are listed in the header before the list of clusters

- Round brackets list the nodes. If a node has non-standard attributes, they are placed in square brackets: G is a genesis flag available only for the first node, L is for leader, A is for arbitrator (delegate=true)

- TOTAL states the number of nodes and segments

- SEED lists the nodes for a static core (the seed-network)

6.7.1.1 DGT Topology Settings

Topological settings are set in the following files located in the “etc” working directory of the current version of DGT (ex. DGT-Matagami/CORE/etc): «dgt.net.static», «dgt.net.dyn» and «dgt.net.map». When deploying a node or cluster, the corresponding container copies the data files for cluster n and node m to the directory «dgt_clust/c_n/dgt_m» (ex. DGT-Matagami/dgt_clust/c1/dgt1).

  • The «dgt.net.static» file contains a description of the topology (reserved cells of private segments in JSON format – a hierarchy of network objects):

#

Network Objects

Attributes

Sample

1

SEGMENT

NAME – segment name in mnemonic notation

NETWORK_WIDTH – (maximum) allowed width of cluster expressed in number of nodes

NETWORK_HEIGHT – (maximum) allowed depth of cluster expressed in number of nodes

NETWORK_ROLES – allowed roles in the cluster (optional)

NETWORK_CA – certificate requirements

2

CLUSTER

NAME – cluster name

PUBLIC – public if true

MAXPEER – maximum number of nodes in a cluster

TYPE – object type (default: cluster)

CHILDREN – component nodes

SEGMENT – parent segment

3

NODE

NAME – name in coordinate notation and in mnemonic notation

ROLE – node role, e.g. leader, plink (validator)

Type: peer (by default)

DELEGATE

  • The «dgt.net.map» file contains the rules for matching the coordinates of the node and the selected notation (for example, mnemonic), as well as a description of the seed-network:

    - Description of clusters in different notations, for example: «c2:{“dgt1”:”AB.ab1”,”dgt2”:AB.ab2}»;

    - Parameter «static_map» representing dedicated seed-network nodes (static core):

  • The «dgt.net.dyn» file defines the typical dynamic topology for nodes joining public segments. Attributes similar to «dgt.net.static» are used.

  • A typical configuration can be replaced with pre-made templates:

#

Configuration

Topology

How to use

1

dgt.net.static

dgt.net.map

• Segment A:

o AA [# ] {aa1 [G L A],aa2,aa3,aa4,aa5,aa6}

o AB [#aa1 P M8] {ab1 [L A], ab2,ab3, ab4,ab5,ab6}

o AC [#ab1] {ac1 [L A], ac2,ac3, ac4,ac5,ac6}

o AD [#aa3] {ad1 [L A], ad2, ad3, ad4, ad5, ad6}

o AE [#aa2] {ae1 [L A], ae2,ae3, ae4,ae5,ae6}

• Segment B:

o BA [#aa4] {ba1 [L A], ba2, ba3, ba4,ba5, ba6}

TOTAL: 36 Nodes, 6 Clusters, 2 Segments

SEED: {aa1 (c1-1), aa2 (c1-2), aa3 (c1-3), ab1 (c2-1)}

Set by default. Change if necessary:

• Edit before launch («nano dgt.net.static»)

• Replace with examples example12 and example36 – see below

2

dgt.net.static.example12

dgt.net.map.example12

• Segment A:

o AA [#] {aa1 [G L A],aa2,aa3,aa4

o AB [#aa1 P M8] {ab1 [L A], ab2,ab3, ab4 }

o AC [#ab1] {ac1 [L A], ac2,ac3, ac4}

TOTAL: 12 Nodes, 3 Clusters, 1 Segments

SEED: {aa1(c1-1), aa2(c1-2), aa3(c1-3), aa4(c1-4), ab1(c2-1), ac1(c3-1)}

Execute commands:

• cp -i dgt.net.static dgt.net.static.back

• cp -i dgt.net.map dgt.net.map.back

• cp -i dgt.net.static.example12 dgt.net.static

• cp -i dgt.net.map.example12 dgt.net.map

3

dgt.net.static.example36

dgt.net.map.example36

• Segment A:

o AA [# ] {aa1 [G L A],aa2,aa3,aa4,aa5,aa6}

o AB [#aa1 P M8] {ab1 [L A], ab2,ab3, ab4,ab5,ab6}

o AC [#ab1] {ac1 [L A], ac2,ac3, ac4,ac5,ac6}

o AD [#aa3] {ad1 [L A], ad2, ad3, ad4, ad5, ad6}

o AE [#aa2] {ae1 [L A], ae2,ae3, ae4,ae5,ae6}

• Segment B:

o BA [#aa4] {ba1 [L A], ba2, ba3, ba4,ba5, ba6}

TOTAL: 36 Nodes, 6 Clusters, 2 Segments

SEED: {aa1 (c1-1), aa2 (c1-2), aa3 (c1-3), ab1 (c2-1)}

Represents a copy of option #1, use if you need to replace a modified option #1 to return to the default option. Run commands:

• cp -i dgt.net.static dgt.net.static.back

• cp -i dgt.net.map dgt.net.map.back

• cp -i dgt.net.static.example36 dgt.net.static

• cp -i dgt.net.map.example36 dgt.net.map

  • If you need to change the topology, follow this algorithm:

    - Changing the topology requires a network restart (hard fork). Change the configuration prior to commercial exploitation of the network.

    - Save a backup copy of the dgt configuration files: dgt.net.static and dgt.net.map (copy with the .back extension).

    - Select the main network parameters: number of nodes, number of clusters, clusters with limits on the number of nodes, gateways for each of the clusters (connection points), initial leaders in each cluster, the number of arbitrators, clusters with public access.

    - Prepare a draft specification in mnemonic notation.

    - Open the dgt.net.map specification and enter the rules for correlating the mnemonic notation and system coordinates; describe the nodes included into the static core of the network (seed-network) and save under a new name.

    - Copy into the «DGT-Matagami/CORE/etc» directory and replace using the «cp» operation.

6.7.1.2 Port Configuration

#

VIRTUAL SERVICE

DESCRIPTION

DEFAULT PORT

1

NET

Support for low-level communication between nodes. This service supports direct work with ZMQ. The port must be open for the node to communicate with the network.

8800

2

CONS

Consensus support service. Has an inner meaning (Inner-Net)

5005

3

COMP

The REST-API transaction processor support service (from internal network), has an internal meaning (Inner-Net)

4004

4

API

Represents the node’s API accessed by other components, such as CLI, DASHBOARD, external applications. The port must be open when there are external applications.

8008

These ports can be overridden for a given node (such that each port works with its own set of ports). This port redefinition is necessary when launching a virtual cluster, the nodes share a single IP and the corresponding ports should not conflict. The bash batch file «upDgtUpCluster.sh» sets default ports according to cluster number and node number:

#

Cluster

Node

NET

CONS

COMP

API

Description

1

1

1

8101

5051

4104

8108

Part of the seed-network by default

2

1

2

8102

5052

4106

8109

3

1

3

8103

5053

4107

8110

4

1

4

8104

5054

4108

8111

5

1

5

8105

5055

4109

8112

6

1

6

8106

5056

4110

8113

7

2

1

8201

5251

4204

8208

Part of the seed-network by default

8

2

2

8202

5252

4206

8209

9

2

3

8203

5253

4207

8210

10

3

1

8301

5351

4304

8308

11

3

2

8302

5352

4306

8309

12

3

3

8303

5353

4307

8310

13

4

1

8401

5451

4404

8408

14

4

2

8402

5452

4406

8409

15

4

3

8403

5453

4407

8410

16

5

1

8501

5551

4504

8508

17

5

2

8502

5552

4506

8509

18

5

3

8503

5553

4507

8510

19

6

1

8601

5651

4604

8608

20

6

2

8602

5652

4606

8609

21

6

3

8603

5653

4607

8610

Notes:

System notation is convenient when working with small or quasi-homogeneous networks. Large public access networks may accept mnemonic notation. Within the system, it is described by the JSON-specification «etc/dgt.net.static» The notation mapping is set in the «etc/dgt.net.map» JSON configuration file, see Basic rules for describing network objects include:

The platform works with topology descriptions in JSON format, which can be parsed in any suitable editor (we recommend using for viewing):

Designing the network topology is a time-consuming process that requires significant efforts in defining parameters and dependencies between network objects. In most cases, you can use ready-made network templates (see ). For a short form text description, the following format can be used:

- Clusters are described in mnemonic notation (AA,…) and the square brackets contain their attributes: #aa1 is a gateway for connecting the cluster, P is a cluster publicity flag, M8 is the maxpeers parameter, which overrides the default settings for the number of nodes in the cluster (see )

- Open the previously saved dgt.net.static.back specification (for example, in Notepad++, Visual Studio Code or the online ), edit it and save it with the desired name.

describes ports for a single node. Each DGT node is represented by a set of services that support the operation of the node:

- Real ports are used only for a static kernel, for example, to run a virtual cluster (see );

- When launching an external node, the NET service port can be overridden with the -P key (see )

MiTec Json Viewer
jsoneditoronle
Section 6.2.3
6.3.2
6.7.1.1.
6.7.1.1
6.7.1.1
Section 6.2
section 3.9
section 1.4
section 3.4
6.7.1.1.
6.7.1.1
6.3.3.2
Figure 151 Mnemonic Topology Notation
Figure 152 dgt.net.static in JSON Viewer
Figure 153 "dgt.net.map" sample
Figure 154 "dgt.net.dyn" - sample