Empezá con DATUM

Tu nodo arma el bloque, tu gateway habla con el pool, tus mineros hashean contra tu gateway. Siete pasos, en este orden — cada uno termina con cómo sabés que salió bien.
¿Qué pool? Los pasos son los mismos; solo cambian el puerto, la clave y la regla de pago.
PASO 1Corré un nodo BLAKE2bPASO 2Descargá y compilá el gatewayPASO 3Configuralo — apuntalo a nuestro PrimePASO 4EjecutaloPASO 5Registrá tu dirección (CAROUSEL y CHIRP)PASO 6Apuntá tus mineros a tu gatewayPASO 7Confirmá que estás cobrando
No te saltees pasos. Un gateway cuyo nodo no está listo se conecta con nosotros, se queda en cero y desde afuera parece perfectamente sano. Terminá cada paso antes de empezar el siguiente.
¿Apurado? Para CAROUSEL y CHIRP un solo comando hace los pasos 2 a 5 por vos: encuentra tu nodo, instala las herramientas de compilación si lo dejás, clona y compila el gateway, escribe la config, lo arranca como servicio y registra tu dirección. Leé los pasos igual: es lo que hace el script, y es lo que vas a necesitar cuando algo se vea raro.
curl -fsSL https://b.pyblock.xyz:8443/gateway | sh -s -- chirp YOUR_BTC_ADDRESS
WAVICLES todavía no tiene instalador: seguí los pasos a mano, son unos diez minutos.

1Corré un nodo BLAKE2b

DATUM necesita un nodo Bitcoin Knots que siga la fork BLAKE2b (Knots ≥ 29.4), totalmente sincronizado. Un Knots o Core normal no sirve: no conoce la regla blake2b y no devuelve trabajo usable.
La parte de bitcoin.conf que importa acá:
server=1 rpcuser=YOUR_RPC_USER rpcpassword=YOUR_RPC_PASSWORD rpcallowip=127.0.0.1 blockreservedweight=100000
Cómo sabés que funcionó: esto devuelve un template en vez de un error. Si dice unknown rule blake2b, el nodo no está en la fork; si da otro error, arreglá el nodo primero — el gateway nunca va a andar sin él.
bitcoin-cli -rpcport=8342 getblocktemplate '{"rules":["segwit","blake2b"]}'

2Descargá y compilá el gateway

El gateway es un programa chico en C que se pone entre tu nodo y el pool: le pide trabajo a tu nodo, se lo da a tus mineros y nos dice quién hizo el trabajo para que el bloque les pague. No hay binario para bajar — lo compilás desde el código en un par de minutos.
Qué código. Para CAROUSEL y CHIRP: gitlab.com/astrolexis-group1/datum-carousel, el fork de PyBLØCK — el que compila el instalador, probado a diario contra estos Primes. Para WAVICLES: CONVOYMining/datum_gateway en el commit 7491a509 o posterior — los builds anteriores cuentan mal los bytes de la coinbase BLAKE2b y truncan la lista de pagos, así que los rechazamos en el handshake.
Dependencias de compilación (elegí tu distro):
Debian / Ubuntusudo apt-get update && sudo apt-get install -y git cmake build-essential libcurl4-openssl-dev libjansson-dev libmicrohttpd-dev libsodium-dev pkg-config
Fedora / RHELsudo dnf install -y git cmake gcc gcc-c++ libcurl-devel jansson-devel libmicrohttpd-devel libsodium-devel pkgconf
Archsudo pacman -S --needed git cmake base-devel curl jansson libmicrohttpd libsodium
Cloná y compilá. El binario queda en build/datum_gateway:
git clone --depth 1 https://github.com/CONVOYMining/datum_gateway.git ~/pyblock-gateway/src cd ~/pyblock-gateway/src cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j$(nproc) ls -l build/datum_gateway
Cómo sabés que funcionó: ./build/datum_gateway --help imprime la ayuda. Si además menciona key_file, tu build mantiene una identidad de gateway persistente (bien — ver paso 3).

3Configuralo — apuntalo a nuestro Prime

Un solo archivo JSON. Todo lo de abajo es lo que escribe el instalador; solo lo que está en MAYÚSCULAS lo completás vos. Clic en el bloque para copiarlo, guardalo como carousel.json al lado del binario y hacele chmod 600 — tiene la contraseña RPC de tu nodo.Un solo archivo JSON. Todo lo de abajo es lo que escribe el instalador; solo lo que está en MAYÚSCULAS lo completás vos. Clic en el bloque para copiarlo, guardalo como chirp.json al lado del binario y hacele chmod 600 — tiene la contraseña RPC de tu nodo.Un solo archivo JSON. Todo lo de abajo es lo que escribe el instalador; solo lo que está en MAYÚSCULAS lo completás vos. Clic en el bloque para copiarlo, guardalo como wavicles.json al lado del binario y hacele chmod 600 — tiene la contraseña RPC de tu nodo.
{ "bitcoind": { "rpcuser": "YOUR_RPC_USER", "rpcpassword": "YOUR_RPC_PASSWORD", "rpcurl": "127.0.0.1:8342", "work_update_seconds": 40, "notify_fallback": true }, "stratum": { "listen_port": 23334, "max_clients_per_thread": 1024, "max_threads": 4, "max_clients": 4096, "vardiff_min": 1024, "vardiff_target_shares_min": 8, "share_stale_seconds": 120, "fingerprint_miners": true }, "mining": { "pool_address": "YOUR_BLAKE2B_ADDRESS", "coinbase_tag_primary": "PyBLOCK-CHIRP", "coinbase_tag_secondary": "YOUR_NAME", "coinbase_unique_id": 4242, "pow_algorithm": "blake2b" }, "api": { "listen_addr": "127.0.0.1", "listen_port": 7152, "admin_password": "CHOOSE_A_PASSWORD" }, "logger": { "log_to_console": true, "log_to_file": true, "log_file": "chirp.log", "log_rotate_daily": true, "log_level_file": 2 }, "datum": { "pool_host": "b.pyblock.xyz", "pool_port": 28917, "pool_pubkey": "cf995bb5b975ef4b90932f0608c98a033679092e976982621243cd1226803c6417442870dff8372b11363d8f80665b1f298cc23132bf2dab23958a4bcc7d4f72", "key_file": "gateway.key", "pool_pass_workers": true, "pool_pass_full_users": true, "always_pay_self": true, "pooled_mining_only": false, "protocol_global_timeout": 60 } }
{ "bitcoind": { "rpcuser": "YOUR_RPC_USER", "rpcpassword": "YOUR_RPC_PASSWORD", "rpcurl": "127.0.0.1:8342", "work_update_seconds": 40, "notify_fallback": true }, "stratum": { "listen_port": 23334, "max_clients_per_thread": 1024, "max_threads": 4, "max_clients": 4096, "vardiff_min": 1, "vardiff_target_shares_min": 8, "share_stale_seconds": 120, "fingerprint_miners": true }, "mining": { "pool_address": "YOUR_BLAKE2B_ADDRESS", "coinbase_tag_primary": "PyBLOCK-WAVICLES-BLAKE2b", "coinbase_tag_secondary": "YOUR_NAME", "coinbase_unique_id": 4242, "pow_algorithm": "blake2b" }, "api": { "listen_addr": "127.0.0.1", "listen_port": 7152, "admin_password": "CHOOSE_A_PASSWORD" }, "logger": { "log_to_console": true, "log_to_file": true, "log_file": "wavicles.log", "log_rotate_daily": true, "log_level_file": 2 }, "datum": { "pool_host": "b.pyblock.xyz", "pool_port": 28915, "pool_pubkey": "b5e0b0326b964a92f3046c73a76b9e98173e0c3ea0e0ca771f4e6a3dd92e2935b2caad2a088fdd7bf0a48fc0c41776a9abb13c7d4c6964b53a9ceee4c775e036", "key_file": "gateway.key", "pool_pass_workers": true, "pool_pass_full_users": true, "always_pay_self": true, "pooled_mining_only": true, "protocol_global_timeout": 60 } }
Cómo sabés que funcionó: python3 -m json.tool carousel.json imprime el archivo sin quejarse — una coma que falta es la causa más común de que el gateway no arranque.python3 -m json.tool chirp.json imprime el archivo sin quejarse — una coma que falta es la causa más común de que el gateway no arranque.python3 -m json.tool wavicles.json imprime el archivo sin quejarse — una coma que falta es la causa más común de que el gateway no arranque.

4Ejecutalo

Primero en primer plano, para ver el log. En pocos segundos tiene que imprimir el DATUM Pool MOTD del pool — eso es el handshake hecho: tu gateway probó su clave y el Prime la aceptó.
cd ~/pyblock-gateway && chmod 600 chirp.json ./src/build/datum_gateway -c chirp.json
cd ~/pyblock-gateway && chmod 600 wavicles.json ./src/build/datum_gateway -c wavicles.json
Después hacelo servicio para que sobreviva a los reinicios. El instalador escribe esta unit; adaptá rutas y usuario:
/etc/systemd/system/pyblock-gateway-chirp.service[Unit] Description=PyBLOCK chirp DATUM gateway (your node, your block) After=network-online.target [Service] User=YOUR_USER ExecStart=/home/YOUR_USER/pyblock-gateway/src/build/datum_gateway -c /home/YOUR_USER/pyblock-gateway/chirp.json Restart=always RestartSec=5 LimitNOFILE=65536 [Install] WantedBy=multi-user.target
/etc/systemd/system/pyblock-gateway-wavicles.service[Unit] Description=PyBLOCK wavicles DATUM gateway (your node, your block) After=network-online.target [Service] User=YOUR_USER ExecStart=/home/YOUR_USER/pyblock-gateway/src/build/datum_gateway -c /home/YOUR_USER/pyblock-gateway/wavicles.json Restart=always RestartSec=5 LimitNOFILE=65536 [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload && sudo systemctl enable --now pyblock-gateway-chirp journalctl -u pyblock-gateway-chirp -f
sudo systemctl daemon-reload && sudo systemctl enable --now pyblock-gateway-wavicles journalctl -u pyblock-gateway-wavicles -f
Logs: journalctl -u pyblock-gateway-carousel -f (o el log_file de la config). El gateway también sirve un panel chico en http://127.0.0.1:7152/ — la pestaña Clients lista cada minero que hashea contra él.Logs: journalctl -u pyblock-gateway-chirp -f (o el log_file de la config). El gateway también sirve un panel chico en http://127.0.0.1:7152/ — la pestaña Clients lista cada minero que hashea contra él.Logs: journalctl -u pyblock-gateway-wavicles -f (o el log_file de la config). El gateway también sirve un panel chico en http://127.0.0.1:7152/ — la pestaña Clients lista cada minero que hashea contra él.
Cómo sabés que funcionó: tu gateway aparece en node runners conectados en el pool en menos de un minuto. Conectado con cero shares es normal en este punto: todavía nada hashea contra él.tu gateway aparece en node runners conectados en el pool en menos de un minuto. Conectado con cero shares es normal en este punto: todavía nada hashea contra él.tu gateway aparece en node runners conectados en el pool en menos de un minuto. Conectado con cero shares es normal en este punto: todavía nada hashea contra él.
¿Otra cosa en el log? La tabla de diagnóstico asocia cada línea con su causa.

5Registrá tu dirección (CAROUSEL y CHIRP)

WAVICLES no necesita registro: tu identidad en la ventana de trabajo es pool_address.

6Apuntá tus mineros a tu gateway

Cada minero se conecta a tu propio gateway, en su puerto stratum — sirve cualquier minero BLAKE2b: GPU, CPU o un ASIC clase Sia. La dirección del gateway es la de tu máquina, en tu LAN o en internet, no la nuestra.
URL stratum+tcp://YOUR_GATEWAY_IP:23334 Username YOUR_BLAKE2B_ADDRESS.rig-01 Password x
Nunca apuntes un minero al pool. b.pyblock.xyz:28916 es donde tu gateway habla con nosotros. Un minero mandado ahí no mina.b.pyblock.xyz:28917 es donde tu gateway habla con nosotros. Un minero mandado ahí no mina.b.pyblock.xyz:28915 es donde tu gateway habla con nosotros. Un minero mandado ahí no mina.
Cómo sabés que funcionó: la pestaña Clients del gateway lista al minero, y tu fila en node runners conectados empieza a contar shares en pocos minutos.

7Confirmá que estás cobrando

De acá en adelante es trabajo del pool. Todo es on-chain, en la coinbase del propio bloque: nada se retiene, nada que retirar.
Cómo sabés que funcionó: tu dirección aparece en su propia página — hashrate, workers y cada salida de coinbase que recibió.
Eso es todo el setup. El pool nunca retiene un sat: el que encuentra el bloque te paga directo, en el bloque. Guardá una copia de gateway.key y de tu config — son la identidad de tu gateway.
¿Todavía sin nodo? Empezá hoy igual
Miná a través del nodo de PyBLØCK mientras armás el tuyo. Mismos productos, mismas reglas de pago — el bloque lo arman nuestro nodo y nuestro gateway en vez de los tuyos. Todos los puertos y los tres campos están en la página de inicio.
En WAVICLES y CHIRP ese camino también tiene 0% de comisión (CAROUSEL mantiene su reparto). Igual tu propio nodo es mejor: armás vos el bloque, y más templates independientes mantienen la cadena descentralizada.