Recommended environment: Ubuntu 16.04, 18.04, 20.04
./autogen.sh
./configure
make
make install
name | description |
---|---|
dnetcoind | dnetcoin daemon(non-GUI) |
dnetcoin-qt | dnetcoin client(GUI) |
dnetcoin-cli | dnetcoind CLI(RPC/Rest) |
Stable version download
Linux
dnetcoin-daemon(non-GUI)
md5: 20623cd2c0588bc4293de51e32d25484
link: dnetcoin-daemon.tar.gz
dnetcoin-qt(GUI)
md5: 26515f0c5d5afbc0cbbe422ba678080f
link: dnetcoin-qt.tar.gz
Windows
dnetcoin-daemon(non-GUI)
md5: 11c2ff9459d998e0617e58b227bdc4c9
link: dnetcoin-daemon.zip
dnetcoin-qt(GUI)
md5: fb335035d36348983b98105dfacdbeb1
link: dnetcoin-qt.zip
MacOS
Start the dnetcoin client via daemon or dnetcoin-qt(GUI)
Start using the daemon:
To start in daemon mode, you need to use the dnetcoin-cli tool to send commands to control dnetcoin.
Every command executed by dnetcoin-cli
is to remotely call the JSON-RPC
interface provided by dnetcoind, so before you start the dnetcoin client, you must configure the RPC information.
The easiest way to do this is to create a dnetcoin.conf
file in the dnetcoin data directory
, the content is as follows:
rpcuser=$custom_username
rpcpassword=$custom_password
# default 19332
rpcport=19332
You can specify the data directory
or use the default (recommended to use the default).The following are the default paths for different system environments:
OS | PATH |
---|---|
Linux | $USER/.dnetcoin |
Windows | C:\Users\$USER\AppData\Roaming\DNetcoin |
Mac | $USER/Library/Application Support/DNetcoin |
Complete the dnetcoin.conf
configuration in the data directory
to start dnetcoin:
# "datadir" : Specify the data directory
# "testdnet": Specified as test chain
dnetcoind -testdnet [-datadir=YOUR_CUSTOM_DIR] -daemon
Start with dnetcoin-qt:
# "datadir" : Specify the
data directory
# (default datadir:
# Linux: $USER/.dnetcoin
# Windows: C:\Users\$USER\AppData\Roaming\DNetcoin
# Mac: $USER/Library/Application Support/DNetcoin
# )
# "testdnet": Specified as test chain
# Linux/Mac
dnetcoin-qt -testdnet [-datadir=YOUR_CUSTOM_DIR]
# Windows
dnetcoin-qt.exe -testdnet [-datadir=YOUR_CUSTOM_DIR]
Executing commands on the dnetcoin-qt page is very simple, just open the console page:
When the dnetcoin client is start finished, it will try to obtain the dnetcoin blockchain seed node and perform block synchronization. If the testdnet chain has generated more blocks, it may take some time to complete the synchronization. During the synchronization process, you cannot perform command operations on the blockchain temporarily, and you need to wait for the block synchronization to complete.
Next, we use the dnetcoin data structure to build a private virtual network.
For virtual network applications, dnetcoin provides three storage structures, each of which belongs to a specified type of namespace. Including dnet virtual group
, dnetOVC
(virtual network control node), dnetOVR
(virtual network proxy(data) node):
"dnet virtual group" namespace
Each "dnet virtual group" namespace has a unique storage address, which we call the dnet_id
.
The storage information structure is:
name | value |
---|---|
dnetvlan node "address" | Virtual IP address |
...(multiple dnetvlan node addresses) | ...(Virtual IP per client)... |
_OVC_VLAN_LIST | OVC namespace address (OVC ID) |
"dnetOVC" namespace
Each dnetOVC namespace has a unique address, which we call ovc_id
.
The storage information structure is:
name | value |
---|---|
OVC node address | Public ip:port |
...(Multiple OVC node addresses)... | ...(public ip:port of each ovc)... |
_OVR_VLAN_LIST | OVR namespace address (OVR ID) |
"dnetOVR" namespace
Each dnetOVR namespace has a unique address, we call it ovr_id
.
name | value |
---|---|
OVR node address | (empty) |
...(Multiple OVR node addresses) | (empty) |
Tip: How to use these three types of namespaces will be introduced later.
The dnet virtual network uses the above data structures,users write data according to different namespaces, and these data will be packaged into blocks and confirmed by miners.
Tip: To write data into the block, you need to pay a little dnet coins to encourage miners to verify the data. so, our wallet needs to have a balance in order to operate the data.
In the testdnet environment, we do not need to build a mining pool or use a mining machine to mine, we can mine through a simple command line on the client side.
Use CLI:
# Mining 1 time
dnetcoin-cli [-datadir=YOUR_CUSTOM_DIR] generate 1
Use dnetcoin-qt:
Open the console page and enter
generate 1
You can also transfer money from other dnetcoin wallets with balance, or apply from the d.network website.
Prerequisite: dnetcoin wallet needs to have balance
We divide a large virtual network into multiple small units, each of which is independent and isolated,these small units are called "dnet virtual groups".
Each "virtual group" has security isolation, only the dnetvlan nodes in the same virtual group can communicate with each other, and the information channels are also encrypted.
Create dnet virtual group:
Use CLI: (Returns the virtual group namespace address, ie: dnetId)
# "dnet_alias" : dnet virtual group alias
dnetcoin-cli [-datadir=YOUR_CUSTOM_DIR] dnet_create $dnet_alias
You can also use the "dnetcoin-qt", which is simpler and more intuitive:
Tip: It takes a little dnet coins to create a dnet virtual group,the submitted data is packaged into the block and waits for miners to verify it. (Verification takes some time, depending on the mining time.)
Role Description:
The "dnet virtual group" created by the wallet owner is called the virtual group administrator
.
Only Virtual Group administrator
can add, delete, or modify the information in the group (except for query, the dnet blockchain data is public, and any block dnet client can view it).
Virtual group administrator
can create one or more virtual groups, and then add dnetvlan nodes that need networking to the specified virtual group.
dnet virtual group add dnetvlan nodes
A dnet virtual group
contains at least two or more dnetvlan nodes, using the address
of each dnetvlan node as a unique identifier, and assigning virtual IPs by the virtual group administrator
. (Virtual IPs assigned within the same group should avoid conflicts)
Tip: Only virtual group administrators
can operate virtual groups, and data writing requires a little dnet coins.
Use CLI:
(Please enter the parameters in the correct order.)
# "dnet_id" : dnet id
# "client_address" : dnetvlan node address
# "client_virtual_ip : dnetvlan virtual IP
# ("Administrator" assigns IP, do not conflict with IP)
dnetcoin-cli [-datadir=YOUR_CUSTOM_DIR] dnet_add_node $dnet_id $client_address $client_virtual_ip
Use dnetcoin-qt:
dnet virtual group add OVC Namespace
The virtual group and the dnetvlan nodes within the group are controlled by dnetOVC,you need to specify the OVC namespace for the virtual group to control and manage the dnetvlan nodes in the group.
Tip: Only virtual group administrators
can operate virtual groups, and data writing requires a little dnet coins.
Use CLI:
# "dnet_id" : dnet id
# "ovc_id" : ovc id
dnetcoin-cli [-datadir=YOUR_CUSTOM_DIR] dnet_add_ovc $dnet_id $ovc_id
Use dnetcoin-qt:
Regarding the OVC used by the virtual group, you can use public OVC or private OVC. If you need to use a private OVC namespace, please see the description in the following section.
Prerequisite: dnetcoin wallet needs to have balance
dnetOVC is used to control the information communication of each node in the virtual network. This component is essential if you want to build a private virtual network. When adding the OVC namespace ID to the virtual group, you can use the public OVC or build your private OVC. Refer to the public OVC see public dnetOVC
Create private dnetOVC Namespace
Use CLI:
(Returns the namespace address of OVC, ie: OVC Id)
# "ovc_alias" OVC namespace aliases
dnetcoin-cli -testdnet [-datadir=YOUR_CUSTOM_DIR] ovc_create $ovc_alias
dnetcoin-qt:
Tip: It takes a little dnet coins to create ovc namespace,the submitted data is packaged into the block and waits for miners to verify it. (Verification takes some time, depending on the mining time.)
Role Description:
The "dnetOVC" created by the wallet owner is called the dnetOVC administrator
.
Only dnetOVC administrator
can add, delete, or modify the information in the group (except for query, the dnet blockchain data is public, and any block dnet client can view it).
dnetOVC namespace add ovc nodes
A dnetOVC namespace stores one or more dnetOVC resources(OVC node). A dnetOVC namespace manages multiple OVC resources, which are connected to each other and run in cluster mode. (OVC nodes must have public IP addresses
)
Use CLI:
# "ovc_id" : ovc id
# "ovc_address" : ovc node address
# "ovc_host" : ovc public ip : ovc port
# (example: 1.2.3.4:1213)
dnetcoin-cli -testdnet [-datadir=YOUR_CUSTOM_DIR] ovc_add_res $ovc_id $ovc_address $ovc_host
Use dnetcoin-qt: !alt qt-add-ovc-resource
dnetOVC namespace add dnetOVR namespace
In most cases, dnetOVC can control the dnet virtual group to form a small virtual network, and the dnetvlan nodes in the group can communicate with each other directly.
However, in a few cases, some dnetvlan nodes cannot establish a direct connection with the peer. In this case, it is necessary to forward data through a proxy node. The proxy node is called ovr node
.
dnetOVR
is a namespace that stores multiple OVR resources (OVR nodes). dnetOVC is not only responsible for client node communication, but also manages and distributes dnetOVR
. Therefore, our private OVC also needs to introduce a private OVR to solve the problem that client nodes cannot be directly connected.
Use CLI:
# "ovc_id" : ovc id
# "ovr_id" : ovr id
dnetcoin-cli -testdnet [-datadir=YOUR_CUSTOM_DIR] ovc_add_ovr $ovc_id $ovr_id
Use dnetcoin-qt:
How to create a private dnetOVC namespace is described in the following section.
Prerequisite: dnetcoin wallet needs to have balance
dnetOVR
solves the problem of data transfer when the dnetvlan node cannot be directly connected.
The bandwidth, IO, network stability of the OVR resource server
, and the distance between the network and the OVR resource from the client determine the performance of the OVR. We recommend referring to these metrics if you need to deploy a private dnetOVR. (OVC also calculates the dnetvlan optimal OVR node from the dnetOVC namespace)
Create private dnetOVR Namespace
Use CLI:
(Returns the namespace address of OVR, ie: OVR Id)
# "ovr_alias" OVR namespace alias
dnetcoin-cli [-datadir=YOUR_CUSTOM_DIR] ovr_create $ovr_alias
dnetcoin-qt:
Tip: It takes a little dnet coins to create ovr namespace,the submitted data is packaged into the block and waits for miners to verify it. (Verification takes some time, depending on the mining time.)
Role Description:
The "dnetOVR" created by the wallet owner is called the dnetOVR administrator
.
Only dnetOVR administrator
can add, delete, or modify the information in the group (except for query, the dnet blockchain data is public, and any block dnet client can view it).
dnetOVR namespace add ovr nodes
A dnetOVR namespace stores one or more dnetOVR resources(OVR node). (OVR nodes should be deployed in the public network environment as much as possible
)
# "ovc_id" : ovc id
# "ovc_address" : ovc node address
# "ovc_host" : ovc public ip : ovc port
# (example: 1.2.3.4:1213)
dnetcoin-cli [-datadir=YOUR_CUSTOM_DIR] ovc_add_res $ovc_id $ovc_address $ovc_host