Les relais
Le portefeuille ZooBC peut indiquer quels contacts sont en ligne et établir des appels entre comptes. Deux navigateurs ne peuvent généralement pas se connecter directement l’un à l’autre ; il leur faut donc un point de rencontre sur l’internet ouvert. Un relais est ce point de rencontre. Il transporte la signalisation par laquelle deux portefeuilles se trouvent, leur indique quels serveurs utiliser pour l’appel lui-même et signale qui est en ligne. Les relais sont inscrits sur la chaîne, si bien que les portefeuilles les trouvent sans aucun annuaire central.
Ce que fait un relais
Un relais rend trois services aux portefeuilles :
- La signalisation : les messages courts que deux portefeuilles échangent pour établir un appel, transportés par un WebSocket à
/relay/ws. - La présence : les comptes qui sont en ligne à ce moment-là.
- L’aide à la connexion : les serveurs TURN et ICE qui permettent à deux navigateurs situés derrière des routeurs domestiques de se joindre pour l’appel.
Le portefeuille web officiel fait aussi passer par un relais les coups signés des jeux à canal (applis à canal).
Chaque relais se décrit lui-même à /relay/info : l’adresse de paiement de l’opérateur, son tarif, ses serveurs TURN et son chemin de signalisation. Les données relayées se paient en envoyant des ZBC à l’adresse de l’opérateur, et les comptes sans fonds sont refusés.
Se connecter
Un relais doit savoir quel compte est réellement en ligne, sans quoi n’importe qui pourrait se faire passer pour n’importe qui. Un portefeuille se connecte donc en signant avec sa clé de compte un défi à usage unique envoyé par le relais. Le défi ne peut pas être réutilisé, et la clé ne quitte jamais le portefeuille.
Inscrire un relais sur la chaîne
Le propriétaire inscrit un relais avec RegisterRelay (type 48), en indiquant :
- la clé propre du relais, écrite
ZBR_…; - la clé de la passerelle à laquelle il appartient, qui doit être une passerelle active détenue par le même compte ;
- son domaine et son URL, selon les mêmes règles que pour une passerelle : des lettres, des chiffres, des points et des tirets pour le domaine, et une URL commençant par
https://.
Aucune mise n’est bloquée. Le propriétaire retire l’entrée avec UnregisterRelay (type 49), et les portefeuilles trouvent les relais à GET /api/v1/registry/relays. Lorsque sa passerelle tombe en panne, le portefeuille web relit les listes de passerelles, de relais et de services d’archivage inscrites sur la chaîne.
Ce que les relais ne font pas
- Ils ne transmettent pas les transactions. Les nœuds transmettent eux-mêmes les transactions à leurs pairs, sans rien facturer pour cela.
- Ils ne surveillent pas d’autres chaînes pour le pont ; ce sont des programmes gardiens placés à côté des nœuds enregistrés qui s’en chargent (pont et les monnaies enveloppées).
- Ils ne produisent pas de blocs ; seuls les nœuds enregistrés en produisent (faire tourner un nœud).
- Ils ne détiennent jamais la clé d’un utilisateur.