Wiki de ZooBC
Tokens y mercados

El puente y las monedas envueltas

El puente conecta ZooBC con Bitcoin y Ethereum. Las monedas depositadas en una dirección de custodia de esas cadenas aparecen en ZooBC como monedas envueltas, una por una, y pueden devolverse por el mismo camino. No lo gestiona ninguna parte por sí sola: votan los nodos registrados, y la cadena solo acuña o quema cuando están de acuerdo dos tercios de las plazas que no están suspendidas.

El puente forma parte de ZooBC a partir de la versión 0.5.8: los guardianes atestiguan los depósitos y los retiros, y la cadena acuña y quema las monedas envueltas según sus votos. Las cadenas se relanzan con la versión 0.5.8 sin poner en marcha el servicio del puente.

Las monedas puente

Cuatro de las catorce monedas génesis son monedas puente:

MonedaRepresenta
ZBTCbitcoin
ZETHether
ZUSDCUSDC, un token ERC-20 en Ethereum
ZUSDTUSDT, un token ERC-20 en Ethereum

Cada una tiene una dirección de custodia en su cadena de origen, fijada en el génesis y comprometida en el hash del génesis. GET /api/v1/bridge/coins lista las cuatro. Las otras diez monedas génesis no tienen dirección de custodia. Los símbolos de 4 o 5 caracteres que empiezan o terminan por Z están reservados para este espacio de nombres, así que ningún token de usuario puede tomar el nombre de una moneda puente (véase emitir un token).

Guardianes y votos

Un nodo de ZooBC no vigila ninguna cadena externa. Un programa guardián independiente, zbc-bridge, se ejecuta junto a un nodo que tiene una configuración de puente. Vigila las direcciones de custodia y vota en ZooBC con transacciones AttestEvent (véase disparadores y atestaciones): el id de evento de un voto de depósito empieza por ZBRDEP1: y el de un voto de retiro por ZBWDR1:. Cada voto es un deber sin comisión, enviado con una comisión de exactamente 0 desde la propia clave del nodo.

Depósito: entrada de monedas

El puente: el ether llega a la dirección de custodia; los guardianes atestiguan cada uno «1 ZETH para Y»; el recuento supera los dos tercios y se acuñan ZETH para Y; debajo, el camino de vuelta a través de la custodia, una quema y las firmas de los guardianes
El puente: el ether llega a la dirección de custodia; los guardianes atestiguan cada uno «1 ZETH para Y»; el recuento supera los dos tercios y se acuñan ZETH para Y; debajo, el camino de vuelta a través de la custodia, una quema y las firmas de los guardianes
  1. El usuario envía monedas a la dirección de custodia en Bitcoin o en Ethereum.
  2. Cada guardián que ve el depósito confirmado envía una atestación que nombra el depósito y un valor: el token, el importe y el destinatario en ZooBC.
  3. Al final de cada bloque la cadena cuenta los votos. Cuando dos tercios de las plazas contadas, los nodos registrados que no están suspendidos (8 de 11, por ejemplo), han atestiguado exactamente el mismo valor, cada nodo acuña ese importe al destinatario, uno por uno y sin comisión de puente, y el evento queda cerrado de forma definitiva.

Las plazas suspendidas ni votan ni cuentan. Se aplican además dos salvaguardas:

  • Un tope diario. Si un depósito llevara las acuñaciones de un día de una moneda (los últimos 5760 bloques) por encima de la mayor de estas cantidades, una moneda entera o el 10 % de su suministro, deben estar de acuerdo todas las plazas que no están suspendidas, y nunca menos de dos tercios de todas las plazas.
  • El mínimo del registro. Ninguna decisión del puente se resuelve mientras el registro esté por debajo de su mínimo de max(3, min_registry_size) plazas y propietarios distintos (véase reglas de los dos tercios).

Retiro: salida de monedas

Un retiro: una transferencia a la custodia con el mensaje ZBW1, la finalidad de su bloque, los votos de los guardianes con firmas para la cadena externa, el recuento de dos tercios, la quema desde la custodia y las firmas que liberan el ether hacia el destino
Un retiro: una transferencia a la custodia con el mensaje ZBW1, la finalidad de su bloque, los votos de los guardianes con firmas para la cadena externa, el recuento de dos tercios, la quema desde la custodia y las firmas que liberan el ether hacia el destino
  1. El usuario envía la moneda envuelta con un TransferToken normal a la cuenta de custodia, con el mensaje ZBW1| seguido de la dirección de destino. Esa transferencia es la solicitud: no interviene ningún BurnToken, y el usuario no envía nada en la cadena externa.
  2. Los guardianes solo actúan cuando la solicitud es definitiva, lo que tarda entre unas 3 y unas 27 horas después de su bloque (véase finalidad y reversión); un guardián examina la cadena a partir del último bloque finalizado que procesó. El voto de cada guardián nombra la solicitud, el token, el importe y el destino, y lleva la firma de ese guardián para la cadena externa.
  3. Cuando dos tercios están de acuerdo, cada nodo vuelve a comprobar la solicitud y quema esas unidades de la cuenta de custodia.
  4. Las firmas reunidas de los guardianes, que pueden leerse a través de la API, autorizan la liberación de las monedas hacia el destino.

Un evento que no recibe ninguna atestación nueva durante 720 bloques (3 horas) deja de tenerse en cuenta.

Las monedas envueltas en ZooBC

Una vez acuñada, una moneda envuelta es un token génesis normal con 8 decimales: puede enviarse, ponerse en escrow, transmitirse en flujo, ofrecerse en un intercambio o negociarse en un mercado. Su suministro solo cambia a través del puente, y MintToken y BurnToken se rechazan sobre ella. Las acuñaciones del puente no las reparte la política de reparto del destinatario (véase políticas de reparto y de transacciones). Las quemas de monedas envueltas se cuentan en el recuento de quemas de la cadena, que para el propio ZBC sigue en cero.

Véase también