ZYCORD documentación
Español
ZycordDocumentaciónInstalación

Instalación

Poner los archivos en una máquina y saber qué has obtenido. Ejecutar un nodo de verdad es Ejecutar un nodo; esta página trata de la instalación.

Zycord son dos programas de línea de comandos y una aplicación de escritorio:

NombreQué es
zcdLa herramienta de línea de comandos: claves, monederos, génesis, los vectores de referencia y zcd ui.
zycorddEl nodo: valida, mina, sirve a los pares, responde a un RPC de solo lectura.
Zycord WalletUna ventana de escritorio en torno a la misma interfaz de monedero que sirve zcd ui.
Dónde está el proyecto hoy

La primera versión etiquetada no se ha publicado, así que compilar desde el código fuente es actualmente la vía de entrada, y la sección de abajo es la que hay que leer. Las vías por gestor de paquetes y los archivos de versión descritos más abajo son la forma en que el proyecto se distribuye una vez que empiece el etiquetado; se documentan aquí porque los manifiestos están en el repositorio y son revisables ahora, no porque haya ya algo que descargar. La página de versiones es donde aparecerán.

Compilar desde el código fuente#

La versión de Go es go1.26.2, y forma parte del código fuente. Dos versiones de Go compilan el mismo paquete en código máquina distinto, así que un binario es salida de un compilador tanto como de un repositorio — una recompilación con otro Go es un archivo distinto a partir de un árbol idéntico. Por eso make build lo fija (GOTOOLCHAIN=go1.26.2 en el Makefile) y se niega a compilar bajo cualquier otro, en lugar de entregarte un binario cuyo hash no coincidirá sin decir por qué.

git clone https://gitlab.com/zycord-group/zycord-node.git
cd zycord-node
make build

Si no tienes go1.26.2 no tienes que ir a buscarlo: la fijación hace que el comando go descargue esa cadena de herramientas exacta en el primer uso y la contraste con la propia base de datos de sumas de comprobación de Go. Eso es lo único de esta compilación que toca la red.

Qué binario puede unirse a una red#

Este es el párrafo más importante de la página. RandomX se compila tras una etiqueta de compilación, así que hay dos compilaciones y solo una de ellas puede hablar con una red RandomX — que son tanto mainnet como la testnet pública.

# Default: no cgo, no C toolchain, development engine only.
# Byte-for-byte reproducible. Runs a local devnet and nothing else.
make build           #  -> bin/zcd, bin/zycordd

# The network binary. cgo, so not reproducible.
make build-randomx   #  -> bin/zcd-randomx, bin/zycordd-randomx

Las dos compilaciones escriben archivos distintos a propósito. Antes escribían las mismas dos rutas, así que la que se ejecutara en segundo lugar sustituía a la otra y el nombre no te decía nada sobre qué motor llevaba dentro. Ejecuta zcd-randomx donde la red sea RandomX y zcd donde no lo sea; ambos están presentes tras compilar los dos.

Un binario compilado sin la etiqueta se niega a arrancar en una red cuyo pow_engine no puede calcular. Esa negativa es lo importante: sin más motor al que recurrir que el de desarrollo, un nodo así aceptaría una sola pasada de BLAKE3 como proof of work para cada cabecera que viera — toda falsificación válida, toda bifurcación sin peso, y nada registrado. Lo inverso no es simétrico: el binario etiquetado lleva ambos motores y ejecuta una devnet correctamente.

Pregúntale a un binario cuál de los dos tienes:

zcd version
No hay go install para este proyecto

Y no es un descuido. go install resuelve una ruta de módulo a través del proxy de módulos, y el módulo raíz se llama zycord — sin host, sin punto en el primer elemento de la ruta, cosa que la cadena de herramientas rechaza de plano. El nombre es deliberado: go.mod no reclama ningún host, porque un host es una superficie de identidad. El clon de arriba es la vía de la cadena de herramientas de Go, y es la más fuerte de todos modos — compilas la etiqueta que descargaste y no lo que sirviera un proxy.

Dos niveles de garantía, enunciados en lugar de dados por supuestos#

Cuando existan versiones habrá dos conjuntos de archivos, y son conjuntos disjuntos. Esta es la tabla que hay que leer antes de decidir cuál tomar.

Artefacto¿Reproducible?¿Se une a mainnet?Por qué
zcd, zycordd — compilados desde el código con make buildSí, idénticos byte a byteNoGo puro, CGO_ENABLED=0, -trimpath, sin build id — y por tanto sin motor RandomX. Ya no se distribuye como descarga; SHA256SUMS.binaries se publica para que puedas compilarlo y comparar.
zcd, zycordd — paquete -randomxNoSícgo: RandomX es C++, así que una cadena de herramientas de C del sistema acaba en la salida
Zycord Wallet, Linux y macOSNon/acgo: una cadena de herramientas de C del sistema y un SDK de plataforma acaban en la salida
Zycord Wallet, WindowsSí, idéntico byte a byten/aSin cgo: Wails llega a WebView2 mediante Go puro

Las versiones publican solo los archivos -randomx — una versión que entrega un archivo que no puede unirse a una red es una versión que entrega un arma que se dispara al pie. Llevan sumas de comprobación en SHA256SUMS.randomx y deliberadamente no están en SHA256SUMS.binaries, porque una compilación con cgo es una que nadie puede reconstruir byte a byte. SHA256SUMS.binaries enumera a qué debería resumir una compilación que hagas tú mismo. El sentido de enunciarlo es que es una decisión tuya y no una suposición hecha por ti.

Por qué tu sistema operativo te avisará, y por qué no hay certificado#

Un ejecutable sin firmar lo bloquea SmartScreen en Windows y Gatekeeper en macOS. La solución habitual es un certificado de firma de código. Esa solución no está disponible aquí por construcción, no por presupuesto, y la razón merece entenderse antes de instalar nada — a un usuario que sabe por qué aparece el aviso es mucho más difícil engañarle con un instalador falso.

Un certificado Authenticode es una autoridad de certificación dando fe de una identidad legal verificada. Esa es toda su función; no hay versión de él sin un nombre legal dentro. El Developer ID de Apple es el mismo problema con otro proveedor. Zycord se publica de forma pseudónima, y comprar un certificado lo deshacía al instante.

Así que se conserva el pseudónimo. Eso no es un agujero en el argumento de confianza; selecciona otro distinto, y para este proyecto uno más fuerte:

Un certificado afirma "esto vino de la entidad X."
Una compilación reproducible afirma "esto vino de este código fuente, y cualquiera puede comprobarlo."

Para una red anónima la segunda es la afirmación que sostiene el peso, y no es un eslogan: CI recompila zcd dos veces en cada push a main y en cada etiqueta, y falla si los dos binarios difieren en un byte. No tienes que confiar en quien compilara el binario que descargaste. Puedes compilarlo tú mismo y comparar hashes — y si coinciden, la cuestión de quién lo compiló deja de importar. Ese procedimiento es Verificar una descarga.

Gestores de paquetes#

En lugar de pelear con SmartScreen y Gatekeeper, el proyecto pasa por la puerta que dejan abierta. Un gestor de paquetes instala a partir de una URL y un hash, no requiere firma, y no dispara ninguno de los dos avisos. Los manifiestos están en el repositorio (packaging/) y son revisables ahora; los taps que los sirven se publican con la primera versión.

Windows — Scoop#

Scoop no quita la marca de la web; la marca no se adjunta en ningún momento. La marca de la web la aplican los navegadores y la API del intérprete de ejecución de adjuntos de Windows, no los clientes HTTP en crudo, y Scoop descarga mediante [Net.HttpWebRequest] o aria2. La comprobación de reputación de aplicaciones de SmartScreen se dispara con archivos marcados lanzados desde el Explorador; un archivo que nunca se marcó, lanzado a través de un shim desde una terminal, no llega a esa vía en absoluto. El manifiesto fija la URL de la versión y el SHA-256, así que Scoop verifica la descarga antes de instalarla.

Lo que instala Scoop ejecuta --devnet y rechaza mainnet y la testnet pública — véase la tabla de dos niveles de arriba. Para unirte a una red en Windows, toma el zip -randomx para x86-64 de la página de descargas; Windows en ARM no tiene esa compilación y es solo devnet. zcd version imprime qué motor lleva el binario.

Windows sin Scoop

Un zip portable es deliberado: no hay instalador .exe ni MSI, porque un instalador sin firmar es precisamente lo que dispara la peor vía de SmartScreen — el bloqueo a pantalla completa "Windows protegió su PC". Los archivos extraídos se ejecutan desde una terminal sin él. El monedero de escritorio necesita el runtime de WebView2, preinstalado en Windows 11 y en Windows 10 actualizado; si falta, la ventana no se abrirá y zcd ui en un navegador es la forma de rodearlo.

macOS — Homebrew#

Ambos paquetes son fórmulas, no casks, y ahí está todo el truco: una fórmula compila desde el código fuente en tu máquina, así que el binario no es un archivo descargado y no tiene atributo de cuarentena. Gatekeeper nunca lo ve. También significa que no estás confiando en la compilación del proyecto en absoluto — Homebrew descarga el tarball del código fuente, comprueba su SHA-256, y lo compila con tu propia cadena de herramientas.

La fórmula compila los binarios de Go puro, así que lo que instala ejecuta --devnet y rechaza mainnet y la testnet pública. Para unirte a una red en macOS, toma el archivo -randomx de tu arquitectura, o compílalo tú mismo con make build-randomx.

Un cask es lo contrario y este proyecto no distribuye ninguno: un .app descargado, en cuarentena y sin firma, que solo funciona pidiendo a la gente que desactive una función de seguridad. Homebrew está cerrando esa vía deliberadamente — --no-quarantine está obsoleto en Homebrew 5.x.

macOS desde un zip de una versión

El .app de dentro sí está en cuarentena y macOS se negará a abrirlo. Para abrirlo de todos modos: haz doble clic y descarta la negativa; ve a Ajustes del Sistema → Privacidad & seguridad, baja hasta Seguridad; junto a "Se ha bloqueado Zycord Wallet", pulsa Abrir igualmente; confirma y autentícate.

No sigas el consejo antiguo de pulsar Control y elegir Abrir

macOS 15 (Sequoia) eliminó ese atajo. Control-clic ya no anula Gatekeeper, y Ajustes del Sistema es ahora la única vía.

El tarball de línea de comandos no tiene ese problema: zcd y zycordd se ejecutan desde una terminal, donde xattr -d com.apple.quarantine quita la comprobación del primer arranque en un solo comando.

Linux#

Sin ningún guardián de ningún tipo. Verifica antes la suma de comprobación y la firma — véase Verificar una descarga — y luego:

tar xzf zycord-<version>-linux-amd64-randomx.tar.gz
sudo install -m755 zycord-<version>-linux-amd64-randomx/zcd      /usr/local/bin/
sudo install -m755 zycord-<version>-linux-amd64-randomx/zycordd  /usr/local/bin/
zcd version    # must name randomx-v1

Ese es el único archivo de nodo que publica una versión; ya no hay uno simple que elegir por equivocación. En Debian y Ubuntu el .deb hace más que mover archivos — trae una unidad de systemd y una cuenta sin privilegios — y ambas vías, junto al script de instalación, están expuestas en la página de descargas. El monedero de escritorio en Linux se distribuye como AppImage, porque libwebkit2gtk tiene un nombre de paquete distinto en cada distribución.

En un servidor#

Nunca curl | sh

Canalizar un script sin verificar hacia un intérprete es la postura equivocada para software que guarda dinero, y es la postura equivocada incluso cuando el script es de este proyecto — todo el argumento de esta página es que no deberías tener que confiar en quien publica. packaging/install.sh descarga, verifica la suma de comprobación y la firma, y solo entonces instala. Descárgalo, léelo, y luego ejecútalo.

install.sh instala el archivo atestiguado — el de Go puro — porque ese es el nivel del que trata su recorrido de suma de comprobación y firma, y un script que verificara una firma y luego instalara otra cosa sería puro teatro. Así que los binarios que pone en /usr/local/bin rechazan mainnet y la testnet pública, y el script lo dice como lo último que imprime. Para un servidor destinado a unirse a una red, desempaqueta a mano el archivo -randomx.

Para usar la interfaz del monedero en un servidor, no expongas un puerto. zcd ui se enlaza a loopback y rechaza cualquier otra cosa; reenvíalo por ssh. El procedimiento está en Ejecutar un nodo.

De qué no te protege nada de esto#

Dicho sin rodeos, porque una página de seguridad que solo enumera sus fortalezas es un anuncio.

  • Un repositorio malicioso. Las compilaciones reproducibles demuestran que un binario se corresponde con su código fuente. No dicen nada sobre si el código fuente es honesto. Léelo — y ejecuta los vectores de referencia contra el binario en el que estás a punto de confiar.
  • Una página de versiones falsa. Si alguien monta un clon convincente y tú nunca verificas una firma, que los hashes coincidan con el archivo de sumas de comprobación de esa misma página no demuestra nada. La huella de la clave del proyecto E724 39CE DD85 11F9 D607 550B 87FD 60D5 EB4A 0B29 es el anclaje.
  • Una máquina comprometida. Un monedero no puede defender un equipo que ya está perdido.
  • Un nodo que miente. zcd y el monedero no son nodos completos; creen lo que un nodo les dice. Por eso el monedero rechaza un nodo cuyo chain id discrepa de la red que afirmaste, y por eso existe --confirm-rpc — véase Monedero.
  • Cualquiera que te venda ZCD. Todavía no hay moneda de mainnet. La génesis no ha ocurrido.