Table of Contents

Application info


User Key

A pair of RSA private and pubic keys, which is your main identifier as an user of network. SHA256 Fingerprint of a public user key used as your User ID. When someone adds friend's user_id, he automatically allows all connections from nodes, associated with User Key. User key is just one for all your nodes (devices) and you should keep it as a proof of your identity. Closest analog in centralized networks is login+password credentials.


Node Key

A pair of RSA private and pubic keys, which is auto-generated on each of your devices as a node of network. SHA256 Fingerprint of a public node key used as your Node ID. If someone trusts user as a friend, he automatically trusts all connections from nodes, associated with his User Key. Node keys are different for all your nodes (devices) and you should not keep them or export across devices. It has no analogs in centralized network and you shouldn't handle it as a user. All that you should know - it is an identifier of a current device, which is associated with some user by his ID.


Certificate

Base64-encoded JSON object, which contains user's ID and an initial information for connection. You should generate a certificate and exchange it with your friends to allow connection between you. When connection between 2 nodes is established, they will automatically exchange an information about all own known nodes in background.


DHT

DHT means Distributed Hash Table. DHT generally is a decentralized temporal database of known online users and nodes, announced with their current network addresses. Dogma Meta uses own DHT system, served on the main router's port as a substream. There are 4 permission level's to announce, lookup and serve (bootstrap) DHT requests.

Each announce authorized by a main Dogma's authorization system, so it contains:

DHT Bootstrap

Serves all entries depends on permission level.

DHT lookup

Request for all nodes of a specific User ID or some specific Node.

DHT announce

Announces own card when TCP connection is established and verified after handshake.


Discovery Mode

Forcibly allows all unauthorized incoming connections, blocks all outcoming connection attempts and allows all to use own DHT bootstrap service.


Local Discovery

UDP socket to listen and broadcast announcements in a local network. When node's server is ready, broadcasts user_id, node_id and port to trigger another nodes in local network to initiate connection.


Command-line parameters

To run app with specific parameters (for headless mode or another cases). Full list of parameters.