Emitir un token
Cualquier cuenta puede crear su propio token en ZooBC con una sola transacción IssueToken. No hay ningún contrato que escribir ni nadie a quien pedir permiso: las reglas fijas de la cadena deciden si la transacción es válida, y una vez que un bloque la incluye, el token existe y el emisor tiene todo su suministro. Después, las unidades del token se mueven con TransferToken y pueden estar en escrows, flujos, programaciones y ofertas de intercambio y, con 8 decimales, en órdenes colocadas en un mercado.
La transacción IssueToken
Una IssueToken (tipo 10) indica:
| Campo | Regla |
|---|---|
| decimales | de 0 a 8 (véase decimales y el paso) |
| indicadores | canjeable, y el modo de acuñación (más abajo) |
| suministro total | mayor que 0, y múltiplo del paso del token |
| respaldo en ZBC | 0 o más |
| símbolo | de 2 a 10 caracteres (más abajo) |
| nombre | de 1 a 64 bytes (más abajo) |
| pago de supervivencia | opcional (véase mantenimiento de un token (persistencia)) |
Los indicadores son bits. El bit 0 hace que el token sea canjeable. Los bits 1 y 2 fijan el modo de acuñación: 0 para un suministro fijo, 1 para un token acuñable; los valores 2 y 3 se rechazan. El bit 3, «sin respaldo», se guarda y se informa, pero ninguna regla lo lee. Acuñar y quemar tokens explica lo que permiten los dos interruptores.
Un token emitido por un miembro de un grupo de cuentas pertenece al grupo.
El respaldo
El respaldo son ZBC reales que el emisor pone en el token. Salen del saldo del emisor y los retiene el propio token, en la cuenta de nadie; un nodo rechaza un respaldo que el emisor no tenga. Los ZBC solo vuelven a salir de tres maneras:
- hacia los tenedores que queman unidades de un token canjeable;
- como los ZBC liberados cuando una comisión se paga en el token (más abajo);
- hacia los tenedores, cuando el token caduca (véase mantenimiento de un token (persistencia)).
El id del token
El id de un token de usuario son los primeros 8 bytes del hash de su transacción IssueToken, leídos como un entero de 64 bits con signo little-endian (o 1, si ese número es 0). Por tanto, es el propio id de la transacción de emisión (véase firmar una transacción). El id se conoce en cuanto se firma la transacción, y los nodos nunca tienen que ponerse de acuerdo sobre un contador. La API escribe los ids como cadenas decimales con signo, así que un id puede ser negativo.
Los símbolos no son únicos: dos tokens vivos pueden compartir uno, y cualquiera puede copiar un símbolo que no esté reservado ni bloqueado. Las billeteras y las apps deberían mostrar y comprobar el id, no solo el símbolo (véase datos de la cadena son entradas no confiables).
Reglas del símbolo y del nombre
Un símbolo tiene de 2 a 10 caracteres, cada uno una letra mayúscula de la A a la Z o un dígito del 0 al 9. Eso descarta las minúsculas y las letras parecidas de otros alfabetos. Dos reglas más protegen los nombres conocidos:
- Reservados: los símbolos de 4 o 5 caracteres que empiezan o terminan por Z, como ZBTC o BTCZ, pertenecen al espacio de nombres del puente. Un símbolo de 6 caracteres como ZABCDE está permitido.
- Bloqueados: una lista integrada de 78 tickers conocidos que nadie puede suplantar: 17 monedas fiduciarias (como USD, EUR, CNY y JPY), 18 stablecoins (como USDT, USDC y DAI) y 43 criptomonedas principales (como BTC, ETH, BNB, SOL, XRP, ADA y DOGE).
Un nombre tiene de 1 a 64 bytes de UTF-8 válido. No puede contener los caracteres <, >, " y ' ni el acento grave; no puede contener caracteres de control, de ancho cero ni de cambio de dirección, ni ningún espacio que no sea el normal; y no puede empezar ni terminar con un espacio.
Mover unidades: TransferToken
Una TransferToken (tipo 11) lleva el id del token, un importe que es múltiplo del paso, un destinatario, un indicador opcional para pagar la comisión en el token y un pago de supervivencia opcional. El id de token 0 se rechaza: el ZBC no es un token, y se mueve con SendZBC. Una transferencia de más unidades de las que tiene el remitente es una operación nula pagada: paga su comisión y no mueve nada.
Las transferencias de tokens también pueden ir en escrow (véase escrow; la comisión se paga entonces en ZBC), en flujo (véase pagos líquidos (flujos)) o programadas (véase transferencias programadas). A partir de la versión 0.5.8 una transacción puede llevar hasta 32 transferencias de tokens, de cualquier token, como un lote: todo o nada, por la suma de las comisiones de cada transferencia por separado, pagada en ZBC, con el mensaje cobrado una sola vez (véase una transacción por cuenta y bloque, y los lotes).
Pagar la comisión en el token
Un token con respaldo en ZBC puede pagar sus propias transferencias (byte indicador 1). El token libera ZBC de su respaldo para cubrir el suelo y entrega las unidades correspondientes:
units given up = ceil( released ZBC × supply ÷ backing ), rounded up to the step
Tanto el suministro como el respaldo bajan. Si la comisión declarada supera el suelo, el excedente se queda en el token.