Wiki de ZooBC
Integraciones

Relays

La billetera de ZooBC puede mostrar qué contactos están en línea y establecer llamadas entre cuentas. Dos navegadores normalmente no pueden conectarse directamente entre sí, así que necesitan un punto de encuentro en internet. Un relay es ese punto de encuentro. Transporta la señalización mediante la cual dos billeteras se encuentran, les indica qué servidores usar para la propia llamada e informa de quién está en línea. Los relays figuran en la cadena, así que las billeteras los encuentran sin ningún directorio central.

Qué hace un relay

Un relay sirve a las billeteras de tres maneras:

  • Señalización: los breves mensajes que intercambian dos billeteras para establecer una llamada, transportados por un WebSocket en /relay/ws.
  • Presencia: qué cuentas están en línea en ese momento.
  • Ayuda para conectar: los servidores TURN e ICE que permiten que dos navegadores detrás de routers domésticos se alcancen para la llamada.

La billetera web oficial también hace pasar por un relay los movimientos firmados de las partidas de canal (apps de canal).

Cada relay se describe a sí mismo en /relay/info: la dirección de cobro del operador, su tarifa, sus servidores TURN y su ruta de señalización. Los datos retransmitidos se pagan enviando ZBC a la dirección del operador, y las cuentas sin fondos se rechazan.

Iniciar sesión

Un relay debe saber qué cuenta está realmente en línea, o cualquiera podría hacerse pasar por cualquiera. Por eso, una billetera inicia sesión firmando con la clave de su cuenta un desafío de un solo uso del relay. El desafío no puede reutilizarse, y la clave nunca sale de la billetera.

Dos billeteras conectadas cada una a un relay para la señalización y la presencia, que inician sesión con su cuenta y una firma, con la llamada en sí entre ellas a través de TURN; RegisterRelay registra la clave del relay, el dominio, la URL y la pasarela del propietario
Dos billeteras conectadas cada una a un relay para la señalización y la presencia, que inician sesión con su cuenta y una firma, con la llamada en sí entre ellas a través de TURN; RegisterRelay registra la clave del relay, el dominio, la URL y la pasarela del propietario

Listar un relay en la cadena

El propietario lista un relay con RegisterRelay (tipo 48), nombrando:

  • la propia clave del relay, escrita ZBR_…;
  • la clave de la pasarela a la que pertenece, que debe ser una pasarela activa de la misma cuenta;
  • su dominio y su URL, con las mismas reglas que los de una pasarela: letras, dígitos, puntos y guiones para el dominio, y una URL que empieza por https://.

No se bloquea ningún stake. El propietario retira la entrada con UnregisterRelay (tipo 49), y las billeteras encuentran los relays en GET /api/v1/registry/relays. Cuando su pasarela falla, la billetera web vuelve a leer las listas en la cadena de pasarelas, relays y servicios de archivo.

Lo que no hacen los relays

  • No reenvían transacciones. Los nodos se pasan las transacciones entre sí ellos mismos, sin cobrar por ello.
  • No vigilan otras cadenas para el puente; eso lo hacen los programas guardianes que funcionan junto a los nodos registrados (puente y las monedas envueltas).
  • No producen bloques; solo lo hacen los nodos registrados (operar un nodo).
  • Nunca tienen la clave de un usuario.

Véase también