===== 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. * 0 - Disabled * 1 - Only for own nodes * 2 - For own nodes and friends * 3 - For all ([[about#discovery_mode|Discovery node]]) Each announce authorized by a main Dogma's authorization system, so it contains: * Public IPv4 * Public IPv6 (Optional) * Router port * User ID (hash) * Node ID (hash) === 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 [[about#dht|DHT bootstrap]] service. ---- ==== Local Discovery ==== UDP socket to listen and broadcast announcements in a local network. When node's server is ready, broadcasts [[about#user_key|user_id]], [[about#node_key|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). [[parameters|Full list of parameters]].