71 lines
2.9 KiB
Markdown
71 lines
2.9 KiB
Markdown
Jami is built on two distinct distributed networks:
|
|
|
|
- the OpenDHT kademlia network to provide distributed connectivity
|
|
establishment and message distribution,
|
|
- the JamiNS blockchain to provide distributed name registration.
|
|
|
|
The OpenDHT network
|
|
-------------------
|
|
|
|
See
|
|
[<https://github.com/savoirfairelinux/opendht>](https://github.com/savoirfairelinux/opendht)
|
|
for more information about OpenDHT, which provides a distributed
|
|
key-value datastore for connectivity establishment (with ICE) and
|
|
message distribution in Jami.
|
|
|
|
An OpenDHT network can be joined by knowing about any node already
|
|
connected to the network. This node will then share its knowledge about
|
|
other nodes on the network.
|
|
|
|
Jami clients use a persistent node cache to reconnect to the network
|
|
after a first session. A configurable, known, stable "bootstrap" node is
|
|
used for the first connection or if cached nodes don't answer.
|
|
|
|
Jami clients currently use bootstrap.ring.cx:4222 as the default
|
|
(configurable) bootstrap node and network ID 0 (the default, public
|
|
OpenDHT network).
|
|
|
|
### Contribute to the OpenDHT network
|
|
|
|
Every Jami account runs an OpenDHT node, contributing to the network and
|
|
allowing Jami to scale.
|
|
|
|
Jami users can have full independence by running their own stable
|
|
OpenDHT node and configure it as a bootstrap node in Jami, while helping
|
|
to improve stability, robustness and resilience for every user of the
|
|
public OpenDHT network.
|
|
|
|
A standalone node can be run using the [dhtnode
|
|
utility](https://github.com/savoirfairelinux/opendht/wiki/Running-a-node-with-dhtnode)
|
|
included with OpenDHT. dhtnode doesn't persist any data and has a
|
|
default in-memory storage limit of 8 MiB.
|
|
|
|
Stable community-run DHT nodes will be added to the default bootstrap
|
|
list at the request of their owner, as more bootstrap nodes means a more
|
|
resilient, independent network.
|
|
|
|
The JamiNS blockchain
|
|
---------------------
|
|
|
|
The JamiNS blockchain is experimental and its architecture is expected
|
|
to evolve.
|
|
|
|
Jami clients don't run blockchain nodes themselves but rather
|
|
communicate with a JamiNS server using HTTP for name registration and
|
|
query, with a REST API. This is because the resources needed to run a
|
|
blockchain node are too high for most end-users.
|
|
|
|
The nameserver can be configured by-account in Jami, allowing to connect
|
|
Jami clients to various more or less centralized user directories.
|
|
|
|
### Contribute to the JamiNS blockchain
|
|
|
|
The default Jami name service is ns.jami.net, provided by Savoir-faire
|
|
Linux, connected to an Ethereum blockchain node; the goal being to give
|
|
everyone the possibility (if they which so) to run their own blockchain
|
|
node and HTTP service, mine some Ether, and use it to pay the
|
|
transaction fee needed to register their username in Jami.
|
|
|
|
Code of the Ethereum contract, the blockchain genesis file, and the
|
|
NodeJS module (HTTP server) can be found here :
|
|
[1](https://github.com/savoirfairelinux/ring-nameservice) |