Table of Contents
In order to facilitate quick connections to other people using Tox, Tox employs bootstrap nodes that each client may connect to in order to retrieve a list of clients currently connected to the pool.
Real time node status
To see the real time status of the nodes below visit https://nodes.tox.chat/
Active Nodes List
Below are a list of active nodes that you can connect to. This list is actively maintained.
If you are a developer and you are considering making your application automatically download the list of nodes either off this wiki page or https://nodes.tox.chat, we strongly advise you to cache the list of nodes your application downloads on user side, in order to reduce the number of requests our servers are getting. It's also a good idea to not rely on these lists to be available (e.g. our websites might be blocked by a firewall), which can be solved by shipping your application with a pre-set list of bootstrap nodes and allowing users to add their own list of bootstrap nodes through a user interface.
What is the purpose of bootstrap nodes?
If you are familiar with the concept of DHT, they are your regular DHT bootstrap nodes. If you are not familiar with DHT, then a more detailed explanation follows.
In Tox, every client communicates with other Tox clients, together creating an interconnected network. This Tox network is used to discover other peers in the network and communicate with them, which enables you to send/receive friend requests or get notified when your friend comes online. To connect to the Tox network, a client needs to connect to at least one other client that is connected to the Tox network, from which point it can ask the client it connected to for more clients it can connect to and keep repeating this process to discover more and more clients. A bootstrap node is what a client connects to first if it doesn't know of any other nodes in the network, thus it's required that bootstrap nodes are highly available (are online most of the time), have static IP addresses or use domain names, don't change port numbers, have static public keys and so on. While technically any Tox client can be used as a bootstrap node, the usage patterns of a Tox client by an average user violate the previously mentioned requirements – the user might want to shut down their computer, they might have dynamic IP addresses, their client might be changing public keys, and so on, therefore we need Tox clients dedicated to the task of being used as bootstrap nodes. Because bootstrap nodes would generally run on servers, they are made to have as small footprint as possible – they don't support most features a Tox client supports, they perform only some basic network functionality required for clients to discover other clients.
How do I run a bootstrap node?
See Running a node.
How do I get my bootstrap node added to the table above?
- Subscribe to the bootstrap mailing list, which is low-traffic announcement-only mailing list for cases when updating a bootstrap node would result in better network performance or toxcore changes DHT in non-backwards-compatible way.
- Send an email to email@example.com requesting your node to be added to the table of bootstrap nodes. Mention the email address you used to subscribe to the mailing list and provide information for the fields of the table. Sample email template:
Mailing list email address: IPv4: IPv6: Port: Public Key: Maintainer: Location:
Note that nodes that are offline for long periods of time are subject to removal from the table.
How much bandwidth is required to run a bootstrap node?
Generally it depends on popularity of your bootstrap node.
At the moment of writing this (August 4th, 2016), you may expect 700GiB of total traffic (1/2 incoming, 1/2 outgoing) per month for a very popular bootstrap node, one that was in the table for years and is actively used by many clients. The amount of traffic increases over time.
Is there anything else bootstrap node related I can help with besides running a bootstrap node?
If you are familiar with software development, there is an interesting idea for a project that would help us quite a bit.
You might have noticed that the process of adding a node to the table above is somewhat tedious: a person running the node needs to subscribe to a mailing list, send an email, someone must review that email, possibly ask additional questions and finally edit the wiki table adding the node. We can get rid of this process entirely. If we traverse the Tox DHT network, we can collect data such as IP addresses, public keys and port numbers of all nodes in the network. Collect that data over time, and we will be able to identify nodes that are online most of the time, don't change their IP address, use the same port and use the same public key, i.e. the perfect candidates for being bootstrap nodes. Make a webpage similar to https://nodes.tox.chat/ and show only nodes that are the perfect candidates for being bootstrap nodes. Any person running a bootstrap node long enough will show up on such table automatically, without any interaction required. There is already a project that does something similar – Tox Statistic project similarly traverses Tox DHT network, collects data on nodes in Tox DHT network, and displays it on a web page, but for statistical purposes.
If you are interested in working on this project, feel free to come to our development IRC channel to discuss it. iphy, Impyy, JFreegman and nurupo would probably be the best people to discuss this with.