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:
| Nombre | Qué es |
|---|---|
zcd | La herramienta de línea de comandos: claves, monederos, génesis, los vectores de referencia y zcd ui. |
zycordd | El nodo: valida, mina, sirve a los pares, responde a un RPC de solo lectura. |
| Zycord Wallet | Una ventana de escritorio en torno a la misma interfaz de monedero que sirve zcd ui. |
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
go install para este proyectoY 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 build | Sí, idénticos byte a byte | No | Go 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 -randomx | No | Sí | cgo: RandomX es C++, así que una cadena de herramientas de C del sistema acaba en la salida |
| Zycord Wallet, Linux y macOS | No | n/a | cgo: una cadena de herramientas de C del sistema y un SDK de plataforma acaban en la salida |
| Zycord Wallet, Windows | Sí, idéntico byte a byte | n/a | Sin 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.
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#
curl | shCanalizar 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 0B29es el anclaje. - Una máquina comprometida. Un monedero no puede defender un equipo que ya está perdido.
- Un nodo que miente.
zcdy 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.