Relay
Il wallet ZooBC può mostrare quali contatti sono online e avviare chiamate tra account. Due browser di solito non riescono a connettersi direttamente tra loro, quindi hanno bisogno di un punto di incontro su internet aperta. Un relay è quel punto di incontro. Trasporta la segnalazione con cui due wallet si trovano, indica loro quali server usare per la chiamata vera e propria e riferisce chi è online. I relay sono elencati sulla catena, così i wallet li trovano senza alcuna directory centrale.
Che cosa fa un relay
Un relay serve i wallet in tre modi:
- Segnalazione: i brevi messaggi che due wallet si scambiano per avviare una chiamata, trasportati su una WebSocket a
/relay/ws. - Presenza: quali account sono online in quel momento.
- Aiuto alla connessione: i server TURN e ICE che permettono a due browser dietro router domestici di raggiungersi per la chiamata.
Il wallet web ufficiale fa passare attraverso un relay anche le mosse firmate delle partite channel (app channel).
Ogni relay si descrive su /relay/info: l'indirizzo dell'operatore a cui pagare, la sua tariffa, i suoi server TURN e il suo percorso di segnalazione. I dati inoltrati si pagano inviando ZBC all'indirizzo dell'operatore, e gli account senza fondi vengono rifiutati.
L'accesso
Un relay deve sapere quale account è davvero online, altrimenti chiunque potrebbe fingersi chiunque. Un wallet accede quindi firmando con la chiave del proprio account una sfida monouso del relay. La sfida non può essere riutilizzata, e la chiave non lascia mai il wallet.
Elencare un relay sulla catena
Il proprietario elenca un relay con RegisterRelay (tipo 48), indicando:
- la chiave propria del relay, scritta
ZBR_…; - la chiave del gateway a cui appartiene, che deve essere un gateway attivo dello stesso account proprietario;
- il suo dominio e il suo URL, con le stesse regole di un gateway: lettere, cifre, punti e trattini per il dominio, e un URL che inizia con
https://.
Non viene bloccato alcuno stake. Il proprietario ritira la voce con UnregisterRelay (tipo 49), e i wallet trovano i relay su GET /api/v1/registry/relays. Quando il suo gateway non risponde, il wallet web rilegge gli elenchi on-chain di gateway, relay e servizi di archivio.
Che cosa non fanno i relay
- Non inoltrano transazioni. Sono i nodi stessi a passare le transazioni ai loro peer, senza farsi pagare.
- Non sorvegliano altre catene per il bridge; lo fanno i programmi keeper accanto ai nodi registrati (bridge e le monete wrapped).
- Non producono blocchi; lo fanno solo i nodi registrati (gestire un nodo).
- Non detengono mai la chiave di un utente.