Mercados y órdenes
Un mercado de ZooBC es un libro de órdenes para un par de activos, que mantiene y casa la propia cadena. Todos los nodos aplican las mismas reglas de casamiento cuando se aplica una transacción de orden, así que todos llegan a las mismas ejecuciones, ningún operador tiene los fondos de los operadores y nadie puede reordenar el libro. Cualquiera puede abrir un mercado, y un mercado con actividad paga su propio alquiler.
Abrir un mercado
Un mercado es un par (base, cotización): por ejemplo, un token, el activo base, con precio en ZBC, el activo de cotización. El par es ordenado, así que (A, B) y (B, A) son dos mercados distintos. Ambos activos necesitan 8 decimales (véase decimales y el paso).
CreateMarket (tipo 21) cuesta market_creation_cost, 50 ZBC en mainnet. Ese coste pasa a ser el depósito de alquiler del mercado (véase más abajo).
Colocar una orden
Una PlaceOrder (tipo 22) indica el mercado, un lado (compra o venta), un precio límite, una cantidad, unos indicadores y una caducidad opcional. Los indicadores pueden convertirla en una orden de mercado (ejecutar o cancelar) o en una orden solo de creador (post-only).
Los precios se expresan en unidades atómicas del activo de cotización por unidad atómica del activo base, multiplicados por 10⁸. Por tanto, un precio de 1.015 ZBC por token se escribe 101 500 000.
Cuando un bloque aplica la orden:
- La orden retiene lo que puede gastar: una orden de venta retiene su cantidad del activo base; una orden de compra retiene cantidad × precio ÷ 10⁸ del activo de cotización.
- Se casa de inmediato con las órdenes en reposo del otro lado, primero el mejor precio y, a igual precio, primero el id de transacción más bajo. Cada ejecución se hace al precio de la orden en reposo, no al límite del tomador.
- Lo que no se ejecuta queda en reposo en el libro, salvo en una orden de mercado, cuyo resto se reembolsa.
Cada producto se redondea hacia abajo con aritmética de 128 bits, así que todos los nodos calculan exactamente las mismas ejecuciones.
Dos reglas mantienen limpios los libros de órdenes: el valor en el activo de cotización de una orden debe ser de al menos 2 500 000 unidades atómicas (0.025 del activo de cotización), y un tomador nunca se ejecuta frente a su propia orden en reposo.
La comisión de tomador
Solo el tomador paga una comisión de negociación: exchange_taker_fee_bps, 10 puntos básicos (0.1 %) en mainnet, tomada del activo que recibe el tomador (el activo base en una compra, el de cotización en una venta) y pagada al productor del bloque. En el ejemplo anterior, 0.3 de los 300 tokens recibidos van al productor. La tasa es un parámetro de la cadena que puede ir de 1 a 100 puntos básicos. Los creadores no pagan comisión de negociación, y el creador del mercado no recibe ninguna parte.
La comisión de tomador es distinta de la comisión de la transacción. Las comisiones de PlaceOrder y CancelOrder son comisiones normales, que van a la lotería coinbase. Cuando el productor del bloque todavía no es maduro (véase madurez e ingresos), su comisión de tomador también va a la lotería coinbase.
Cancelación y caducidad
CancelOrder (tipo 23) permite al creador de la orden, y solo a él, retirar una orden en reposo; lo que quede de lo retenido vuelve. Una orden en reposo con caducidad caduca al principio de un bloque, según la marca de tiempo del bloque anterior.
El alquiler del mercado
Un mercado ocupa el estado de la cadena, así que paga alquiler como todo lo que lo ocupa:
- el coste de creación de 50 ZBC es un depósito que paga por adelantado 12 periodos de alquiler; cada periodo de 172 800 bloques (30 días) se lleva una doceava parte, unos 4.17 ZBC, al fondo de longevidad;
- cada PlaceOrder y cada CancelOrder añaden al depósito el 20 % de su propia comisión, además de la comisión, hasta un depósito de 24 periodos, de modo que las propias órdenes mantienen financiado un mercado con actividad;
- un mercado que no puede pagar un periodo, o uno de cuyos activos ha caducado, se poda: sus órdenes en reposo se reembolsan a sus creadores, el resto del depósito va al fondo de longevidad y el par puede volver a abrirse más adelante.
ZooBC no tiene pools de creador de mercado automatizado: cada operación se hace entre órdenes que colocan las personas. Para un intercambio puntual de dos activos cualesquiera, incluidos los tokens con menos de 8 decimales, véase ofertas de intercambio.