Wiki de ZooBC
Integraciones

Pasarelas

Los nodos hablan HTTP plano en sus propios puertos y están ocupados manteniendo la cadena. Una pasarela se pone delante de ellos para el público. Tiene el certificado de un dominio, de modo que los navegadores se conectan por HTTPS, y sirve las páginas que abre la gente: la billetera, el explorador, la página de verificación de archivos, los manuales y las descargas. Las pasarelas figuran en la cadena, así que las billeteras pueden encontrar otra cuando la suya falla.

Qué hace una pasarela

Una pasarela es un papel que configura el instalador de ZooBC, un programa separado del nodo. Termina el TLS (el cifrado que hay detrás de HTTPS) y pasa las peticiones a la API bajo /api/v1/ a dos servicios internos:

  • primero a un servicio de archivo, que tiene un historial profundo y consultable (explorador y los nodos de archivo);
  • después a un nodo, cuando el servicio de archivo responde con un 404 vacío, lo que significa que no tiene esa ruta.

Por tanto, las transacciones nuevas acaban en un nodo completo, porque solo un nodo tiene un conjunto de transacciones pendientes. Las respuestas son los propios datos de la cadena; la pasarela solo los transporta. Añade sus propias cabeceras de origen cruzado (CORS), que permiten GET, POST y OPTIONS y una cabecera X-API-Key, almacenadas en caché durante 600 segundos.

Un navegador llega a la pasarela por HTTPS; la pasarela sirve las páginas de la billetera, del explorador y de verificación, pregunta primero al servicio de archivo y, si no, pasa a un nodo, cuyo conjunto de espera recibe las transacciones nuevas
Un navegador llega a la pasarela por HTTPS; la pasarela sirve las páginas de la billetera, del explorador y de verificación, pregunta primero al servicio de archivo y, si no, pasa a un nodo, cuyo conjunto de espera recibe las transacciones nuevas

Una pasarela nunca produce bloques, algo que solo hacen los nodos registrados, nunca tiene la clave de nadie y no cambia divisas.

Registrar una pasarela

Un propietario lista una pasarela con RegisterGateway (tipo 36). Registra:

  • la propia clave de la pasarela, escrita ZBG_…;
  • su dominio: de 1 a 256 caracteres, solo letras, dígitos, puntos y guiones;
  • su URL, que debe empezar por https:// y tener como máximo 1024 bytes.

Bloquea un stake de 10 ZBC (1 000 000 000 unidades atómicas) de la cuenta del propietario. El importe es el gateway_registration_cost votado, que empieza en 10 ZBC en todas las cadenas y solo se mueve mediante los votos de precio de las plazas.

Seguir listada

Una pasarela demuestra que está viva con transacciones GatewayHeartbeat (tipo 37). Cada latido es un cuerpo de 132 bytes: la clave de la pasarela, la altura y el hash de un bloque reciente, y una firma de la clave de la pasarela sobre los primeros 68 bytes. El bloque que nombra debe estar a menos de 20 bloques de la punta, así que un latido no puede prepararse de antemano.

La cadena permite un intervalo de latido de 240 bloques más un periodo de gracia de 480: una pasarela que guarda silencio durante 720 bloques (3 horas) pasa a estar inactiva, y su propietario recupera el stake. Un propietario también puede irse en cualquier momento con UnregisterGateway (tipo 38), que también devuelve el stake. No se quema nada: el stake es un depósito, no un pago, y no hay ninguna suscripción.

Los latidos, cada uno con un bloque de como máximo 20 de profundidad, mantienen listada la pasarela; tras 720 bloques de silencio pasa a inactiva y el stake de 10 ZBC vuelve al propietario
Los latidos, cada uno con un bloque de como máximo 20 de profundidad, mantienen listada la pasarela; tras 720 bloques de silencio pasa a inactiva y el stake de 10 ZBC vuelve al propietario

Cualquiera puede listar las pasarelas en GET /api/v1/registry/gateways. La forma de la respuesta de esta ruta varía según la dé el servicio de archivo o el nodo. Cuando su pasarela falla, la billetera web vuelve a leer esta lista, junto con las de relays y de servicios de archivo, y pasa a otra. Cada pasarela también puede tener relays asociados.

El faucet de testnet

En testnet, cuyas monedas no tienen valor, la pasarela sirve además el faucet en /faucet/. Le das una dirección y envía ZBC de prueba. El pago se reduce a la mitad a medida que pides: hasta 100 ZBC en la primera solicitud, luego 50, 25, 12.5 y así sucesivamente, hasta que una solicitud pagaría menos de 1 ZBC; después no llega nada más hasta el reinicio semanal. Lo retirado se cuenta por dirección o por dirección de internet (IP), así que muchas cuentas detrás de una misma conexión comparten un mismo cupo. El faucet es el único lugar que acepta un importe en ZBC con decimales en lugar de unidades atómicas.

Paga a cualquier dirección admitida, no solo a las ZBC_…: una dirección de Bitcoin, Ethereum o de otra cadena también sirve, ya que esas claves pueden controlar cuentas de ZooBC (claves y tipos de cuenta). Las monedas de prueba no pueden cambiarse por ZBC de mainnet, y nadie las vende (devnet, testnet y mainnet).

Véase también