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.1.2.1 Directory and Package Structure
  • 6.1.2.2 Shell scripts
  • 6.1.2.3 Deployment Process Overview
  • 6.1.2.4 Deployment Scenarios
  • 6.1.2.5 System Accessibility
  • 6.1.2.6 Pre-built Configurations
  1. 6. ADMINISTRATOR GUIDE
  2. 6.1 Introduction

6.1.2 Platform sourcing

Previous6.1.1 Administrator RoleNext6.1.3 DGT Virtualization

Last updated 1 year ago

The DGT platform is designed to bolster its network, comprising individual nodes. Each node operates as a full-fledged server solution, replete with numerous services and software components. Even a standalone node presents a complete solution, capable of supporting application solutions and deployable by a single organization. Although the DGT framework can be implemented across various environments compatible with its technology stack, this section simplifies the deployment process by focusing on Ubuntu OS within a Docker virtualization context.

6.1.2.1 Directory and Package Structure

DGTs are software that is distributed as source files. Единственная точка распространения представляет собой репозиторий GitHub. Inside the repository, you have to choose the right version for your needs. The versions have individual designations, now the most recent versions are (stable) and Athabasca. In the case of building from source code using Docker Compose, the installation of the platform version is carried out by cloning to the home (or other selected) directory:

git clone https://github.com/DGT-Network/DGT-Matagami

Within the directory of the corresponding version, you can find subdirectories corresponding to the individual packages of the system:

#

Folder

Sub Folder

Description

1

CORE

..

A subversion distributed under the APACHE 2.0 license and implying basic functionality. In fact, it is an improved version of Sawtooth

1.1

bin

Top-level classes and packages that make the system work as a whole.

1.2

clusters

Network configuration files and topology files.

1.3

consensus

The code behind the consensus mechanism

…

…

1.7

families

Code That Implements a Transaction Processor.

…

…

1.10

rest-api

Code that implements the Node API.

1.11

validator

The code that keeps the validator running.

2

GARANASKA_BETA

..

A subversion distributed under the LGPL 3.0 license, containing the Garanaska financial subsystem (tokenization) and other advanced features

2.1

bin

Top-level classes and packages that make the system work as a whole.

2.2

cli

Support for Console Version Commands

2.3

clusters

Network configuration files and topology files.

2.4

docker

Docker Configuration

2.5

notaries

Code that supports the work of notary nodes

…

2.14

sdk

Library modules that support basic cryptography and networking functions

2.15

validator

The code that keeps the validator running

2.16

Seth

Smart Contract Processor.

3

CLIENTS

..

Example of client-side code that works with remote hosts.

4

DOCS

..

System Documentation.

Thus, the version is represented by two basic branches (packages), which differ in functionality: Garanaska, in addition to the basic functionality of CORE to support general transactions and the test family of transactions bgt, is equipped with additional functionality that works with financial transactions, notary nodes, and support for virtual machines for smart contracts.

6.1.2.2 Shell scripts

Since DGT comes as source code, to run and manage the platform, you will need to run a few additional commands that support building, configuring parameters, and running server components. Within the Linux system, you can use the standard Bash shell for standard node manipulations.

The deployed version of the source code comes with standard Bash scripts responsible for preparing, building, and running the nodes, as well as accessing their commands. There are two versions of such files: single scripts (separate script files, each of which is responsible for one command), and macro (an interpreter of sub-commands), which is responsible for executing different commands.

In the next steps to deploy the nodes and configure them, we'll use commands based on Bash command scripts.

Single Scripts are scripts that are responsible for configuring and using the main functionality, they can be run from the main directory where the DGT code is located (obtained, for example, using the git clone command). The main command scripts are shown in the table below.

#

Command/Script File

Propose

1

control.sh

A super-script designed to run internal commands that control platform components replaces and complements the individual scripts listed below. The parameters for this script are below

2

upDecCluster.sh

A generic script that is responsible for building, running a single node, cluster, or entire network. Accepts cluster number and node number as parameters

3

upDgtDashboard.sh

Script responsible for launching DGT Dashboard (web-client)

4

upDgtGrafana.sh

The script responsible for starting the Grafana server, the component that is responsible for collecting statistics inside the solution

5

upDgtNotary.sh

A script that is responsible for running notary nodes (performing off-chain calculations)

6

downDGTCluster.sh

A script that stops a node or cluster takes the coordinates of a node as input

7

downDgtDashboard.sh

Script that stops Dashboard

8

downDgtGrafana.sh

A script that stops the Grafana server

9

downDgtNotary.sh

Script that stops the Notary's node

All scripts are designed to run in a Linux environment and only apply to nodes running within the home operating system (internal or virtual hosts): many virtual nodes and even clusters can be running on one physical host platform.

The superscript in the table above does control.sh accept the commands listed below.

#

Sub command

Description

Example

1

show

Show peer param

bash control.sh c1_2 show

2

run

Call run command inside of Node Environment

bash control.sh c1_1 run bgt list

3

up

Create and start DGT containers

bash control.sh c1_1 up [-d]

4

mode

Change peer mode

bash control.sh c1_1 <mode name>

5

ps

List all run containers

bash control.sh c1_1 ps [-q/--services]

6

restart

Restarting DGT services

bash control.sh c1_1 restart

7

build

Build or rebuild services

bash control.sh c1_1 build validator-dgt

8

copy

Make peer copy

bash control.sh c1_1 copy <new peer name>

9

list

Print DGT peer's params

bash control.sh dgt list [-v]

10

stop

Stop DGT services

bash control.sh c1_1 stop

11

del

Drop peer declaration

bash control.sh c4_1 del

12

shell

Enter into peer shell

bash control.sh c1_1 shell

13

edit

Edit DGT peer params

bash control.sh c1_1 edit [<param name>]

14

down

Stop and remove DGT containers, networks, images, and volumes

bash control.sh c1_1 down

15

dec

Run dec commands

bash control.sh c1_1 dec list

16

start

Start DGT services

bash control.sh c1_1 start

17

token

Generate API access token

bash control.sh c1_1 token

18

add

Add new DGT peer

bash control.sh c4_1 add

If you use scripts frequently, you can make their invocation smoother (without prefixes and extensions), for example, by configuring the environment through the following steps:

  • Make the file executable. You have to make sure that the file has execute permissions. This can be done with the chmod command: chmod +x control.sh

  • Remove the .sh extension (if you want to call it without specifying an extension). Simply rename the file: mv control.sh control

  • Add the directory path to the PATH environment variable (if this directory is not already part of the PATH). Let's say your script is in the /home/username/scripts directory.

    o Then add this directory to the PATH by editing the «.bashrc» or «.profile» file in your home directory. Open the «.bashrc file» in a text editor: nano ~/.bashrc.

    o Add the following line to the end of the file: export PATH=$PATH:/home/username/scripts.

    o Save the file and close the editor. For the changes to take effect, run the following steps: source ~/.bashrc.

  • Specify the interpreter at the beginning of the script. Make sure the first line of your script points to the interpreter, for example: source ~/.bashrc.

Using the scripts described, the following are the step-by-step procedures for configuring and starting DGT nodes.

Using Docker to launch virtual nodes leads to the creation of "servers within a server," or containers, which have their own execution environment. Most node commands will be applied inside such a container. To enter the console within a node, a special command is used. For example, for node c1-1, the command is:

docker exec -it shell-dgt-c1-1 bash

This command temporarily moves the user into the node's execution shell (the guest system). Exiting this shell and returning to the host system is done with the exit command.

6.1.2.3 Deployment Process Overview

The deployment involves several key steps:

  • Acquisition: Obtain the relevant version of the DGT repository.

  • Configuration: Adjust the node’s basic settings.

  • Containerization: Utilize Docker Compose to build a container.

  • Connection: Link the node to the network.

  • Health Check: Run basic commands that allow you to perform a basic check of the functionality of a node or network segment.

Below is a schematic diagram of the process:

6.1.2.4 Deployment Scenarios

The deployment scenarios are broken down into individual nodes, virtual networks, and physical networks. Key preliminary notes include:

  • Integration and Connection: The deployment and network integration are managed through the "magical" command up.DgtCluster.sh. The DGT Network is segmented into node groups (clusters), with each node fulfilling a specific role.

  • Parameter Configuration: Basic parameters, like certificate settings and transaction processing times, are derived from a standard configuration (found in the "DGT-Matagami\CORE\etc." directory) for each node image. Post-creation and connection, a node’s main parameters are stored in the “DGT-Matagami\dgt_clust” directory.

  • Service Ports: Nodes consist of multiple services, each requiring configured network access parameters.

  • Cryptographic System: The entire network adheres to a unified cryptographic framework, detailing signature methods, address systems, and transaction encryption.

  • Transaction Families: The DGT network accommodates various transaction types, known as "transaction families." Basic network configuration includes:

o dgt-set: Essential for network operation, managing settings, and topology.

o xcert: Necessary for deploying closed/private segments, managing certificates.

o bgt: A test family for token management transactions, testing network functionality.

6.1.2.5 System Accessibility

The functionality can be accessed through multiple avenues:

  • CLI console/command line. In this case, you log in to the console of the running container and execute the commands directly.

  • Dashboard component/service (initiated from a client computer browser). In this case, commands are submitted using a web client (chain explorer).

  • API (detailed in Developer Guide section). To check this way, you must use tools such as Postman or curl. Almost all commands in DGT have their counterpart as Rest API endpoints.

These methods facilitate functional assessments.

6.1.2.6 Pre-built Configurations

Depending on solution requirements, you can deploy one of the predefined configurations or devise a custom setup:

  • SMALL: Features one DGT network node for basic core function verification under hardware constraints, alongside two notary nodes (key keeper and regular notary).

  • MEDIUM: Comprises 2 DGT clusters (3+2) with two notaries on a single virtual machine, focusing on notary functions and node interactions.

  • HIGH: Involves the deployment of at least 16 DGT nodes across various cluster configurations, along with 2-4 notaries, primarily utilizing minting functionality.

, short for Bourne Again SHell, is a Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell. It has been widely adopted as the default command-line interpreter on most Linux distributions, as well as on macOS until Catalina version, and it's available for use on various other operating systems. As a shell, Bash is both a command language and a scripting language. It provides an interface for users to interact with the operating system by typing commands into a console or terminal window. Users can launch programs, manage files and directories, and perform other system tasks by entering commands that Bash executes.

Additionally, the basic configuration () offers essential commands and a test transaction family, while the extended system () facilitates financial transactions with DEC, notary and certificate management (decentralized identification), arbitrary smart contracts, and Ethereum network interactions.

Matagami
Bash
DGT CORE
GARANASKA
Figure 110 General Steps for Deployment with Docker