Las claves de un nodo
Un operador de nodo de ZooBC usa dos claves. La clave de nodo es la identidad de la máquina: vive en el nodo y firma lo que el nodo hace a lo largo del día. La clave de propietario es una cuenta normal en la billetera del operador: controla la plaza y el stake. Mantenerlas separadas significa que una intrusión en el servidor no entrega la billetera del operador.
La clave de nodo
La clave de nodo es una clave Ed25519 de 32 bytes, escrita con el prefijo ZNK_. Se guarda en el archivo de configuración del nodo, node.conf, y firma:
- los bloques que produce el nodo, y la prueba que respalda la semilla de cada bloque (semilla del bloque (VRF));
- los recibos por los bloques y las transacciones que recibe de sus pares (recibos y la topología de la red);
- los mensajes a sus pares, incluido el saludo inicial que abre cada conexión;
- sus firmas en la cadena spine;
- atestaciones y votos, como los votos de precio y los vetos de versiones;
- las pruebas de que guarda fragmentos del almacenamiento descentralizado (almacenamiento descentralizado).
Como node.conf contiene la clave privada, el nodo se niega a arrancar si otros usuarios de la máquina pueden leer el archivo; cuando el nodo es dueño del archivo, él mismo fija sus permisos en 0600.
La cuenta propia del nodo
Los mismos 32 bytes escritos con el prefijo ZBC_ son una cuenta normal: la cuenta propia del nodo. Envía las transacciones de deber del nodo, como las pruebas de almacenamiento, las atestaciones y los votos, con una comisión de exactamente 0 (comisiones). Cada plaza génesis empieza con 10 ZBC en ella.
Los dos textos de una misma clave comparten los primeros 51 caracteres tras el prefijo y solo difieren en los cinco últimos, porque la suma de verificación de 3 bytes del final también cubre el prefijo. Por tanto, cambiar ZNK por ZBC a mano rompe la suma de verificación, y el texto editado se rechaza (cuentas y direcciones).
La clave de propietario
La clave de propietario es una cuenta ZBC_ normal en la billetera del operador. Firma las transacciones del registro:
- NodeRegistration (tipo 2), que registra el nodo y bloquea su stake;
- un aumento del stake;
- NodeRegistrationUpdate (tipo 258), que traslada la plaza a una nueva clave de nodo;
- RemoveNodeRegistration (tipo 514), que retira el nodo;
- ClaimNodeRegistration (tipo 770), que reclama el stake.
El stake sale de esta cuenta, y las ganancias de lotería del nodo se le pagan a ella. Un nodo nunca tiene la clave de su propietario.
Vinculadas: la prueba de propiedad
Un registro necesita ambas claves. La clave de nodo firma un breve mensaje que nombra la cuenta del propietario y un bloque reciente, y la clave de propietario firma la transacción que lo lleva. Ninguna de las dos claves por sí sola puede registrar la pareja, y nadie puede registrar el nodo de otra persona bajo su propia cuenta. Se exige la misma prueba para aumentar el stake y para reclamarlo. Su formato exacto está en registrar un nodo.
Los operadores crean ambas claves ellos mismos. No se emite nada, y nadie más tiene una copia.
Trasladar la plaza a una nueva clave de nodo
Si una clave de nodo queda expuesta, o se sustituye la máquina, el propietario puede trasladar la plaza a una nueva clave de nodo sin volver a registrarse. NodeRegistrationUpdate lleva la nueva clave de 32 bytes, con una prueba de propiedad firmada por la nueva clave. El nodo conserva su id, su puntuación, su estado en la cola y su admisión. El cambio surte efecto 120 bloques (30 minutos) después del bloque que lo incluye.
La clave de nodo también puede mover el stake
Protege la clave de nodo con el mismo cuidado que una clave de billetera. Quien la tenga puede reclamar el stake de la plaza hacia una cuenta que controle con ClaimNodeRegistration. La reclamación del propio propietario se trata como una retirada, con el mismo periodo de enfriamiento de 7 días. La de cualquier otro se anuncia y se ejecuta 40 320 bloques (7 días) después, salvo que el propietario retire antes el nodo, de modo que un propietario que vigila la cadena tiene una semana para reaccionar (salir del registro). Esta es también la vía para un propietario que ha perdido el acceso a la cuenta de propietario: la reclamación llega entonces desde otra cuenta, así que también se ejecuta 7 días después.
Otras claves
Las claves nativas pueden derivarse de una frase de recuperación según m/44'/883'/n', y la misma clave de 32 bytes también puede escribirse como clave de relay (ZBR_) o como clave de pasarela (ZBG_) (claves y tipos de cuenta). Las cuatro claves de rol del protocolo (autoridad de versiones, autoridad de páginas, tesorería y creador de mercado) son claves separadas en dispositivos separados (ZooBC Foundation); un operador no necesita ninguna de ellas.