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.
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 -- carousel YOUR_BTC_ADDRESS
curl -fsSL https://b.pyblock.xyz:8443/gateway | sh -s -- chirp YOUR_BTC_ADDRESS
Variables útiles: PYBLOCK_CLI="bitcoin-cli -datadir=/data" si no detecta tu nodo · PYBLOCK_STRATUM=23334 el puerto que van a usar tus mineros · PYBLOCK_INSTALL_DEPS=1 dejar que instale las dependencias · PYBLOCK_NO_SYSTEMD=1 correr con nohup en vez de servicio.
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.
Totalmente sincronizado. Un nodo que todavía se pone al día no devuelve template.
RPC accesible desde donde corra el gateway — la misma máquina o tu LAN — con rpcuser/rpcpassword o el archivo cookie.
blockreservedweight=100000. Sin eso el template puede no dejar lugar para las salidas de pago y el bloque le paga solo al pool.
Tu nodo, tus reglas. Qué transacciones entran en tus bloques lo decide la política de mempool de tu nodo, no nosotros. Nuestros propios gateways usan Plumb (Knots con filtros de datos adicionales, compilado por nosotros desde el tag firmado); tu gateway usa el nodo al que lo apuntes.
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.
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.
Cloná y compilá. El binario queda en build/datum_gateway:
git clone --depth 1 https://gitlab.com/astrolexis-group1/datum-carousel.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
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 — usuario, contraseña y host:puerto del RPC de tu nodo (los nodos BLAKE2b suelen escuchar en 8342). Un archivo cookie también sirve: usuario y contraseña son las dos mitades de .cookie.
stratum.listen_port — el puerto al que se conectan tus mineros (acá 23334). vardiff_min es el piso de share: 1 para GPU / CPU, 1024 o más si solo van a hashear ASICs — el valor por defecto de DATUM, 16384, es escala SHA-256 y una GPU BLAKE2b no llega nunca.
mining.pool_address — tu dirección BLAKE2b. Obligatoria: con una inválida el gateway sale en menos de un segundo. Ahí se paga tu parte de node-runner, y cobra entero cualquier bloque que encuentres mientras el pool esté inalcanzable.
coinbase_tag_secondary — tu nombre. Va on-chain en el scriptsig de cada bloque que publique tu gateway.
datum — nuestro Prime: pool_host b.pyblock.xyz, pool_port28916 y la pool_pubkey de 128 hex de arriba. pool_pass_full_users: true acredita a cada minero en la dirección con la que se loguea. key_file mantiene la misma identidad del gateway entre reinicios — el pool acredita al node-runner por esa clave; borrá la línea solo si tu build no la soporta.datum — nuestro Prime: pool_host b.pyblock.xyz, pool_port28917 y la pool_pubkey de 128 hex de arriba. pool_pass_full_users: true acredita a cada minero en la dirección con la que se loguea. key_file mantiene la misma identidad del gateway entre reinicios — el pool acredita al node-runner por esa clave; borrá la línea solo si tu build no la soporta.datum — nuestro Prime: pool_host b.pyblock.xyz, pool_port28915 y la pool_pubkey de 128 hex de arriba. pool_pass_full_users: true acredita a cada minero en la dirección con la que se loguea. key_file mantiene la misma identidad del gateway entre reinicios — el pool acredita al node-runner por esa clave; borrá la línea solo si tu build no la soporta.
pooled_mining_only — qué pasa si el pool está inalcanzable. false: el gateway sigue minando y cualquier bloque encontrado paga el 100% a pool_address. true: espera al pool.
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 carousel.json
./src/build/datum_gateway -c carousel.json
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-carousel.service[Unit]
Description=PyBLOCK carousel 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/carousel.json
Restart=always
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
/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
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.
En estos dos Primes la parte del node-runner se acredita a la clave del gateway, así que el pool tiene que saber a qué dirección paga esa clave. El instalador lo hace por vos; a mano son dos pedidos desde la máquina donde corre el gateway (el alta solo se acepta desde la misma IP desde la que está conectado el gateway — eso es lo que impide que otro reclame tu clave).
1 · Preguntale al pool qué clave de gateway ve desde tu IP:
Cómo sabés que funcionó: la respuesta dice "ok": true. Repetirlo con la misma dirección es inofensivo; cambiar una dirección ya registrada se hace a mano — pedilo por Telegram.
WAVICLES no necesita registro: tu identidad en la ventana de trabajo espool_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
Usuario = una dirección BLAKE2b (bc1q… o 1…), un nombre de worker después de un punto está bien. Con pool_pass_full_users: true esa es la dirección a la que se le paga a cada minero.
Contraseña: x. Se ignora.
El gateway no verifica el usuario. Lo reenvía tal como se escribió; nosotros rechazamos lo que no sea una dirección pagable, y la parte de ese minero cae a pool_address.
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.
CAROUSEL: cuando tu gateway publica un bloque, el que lo encontró se queda con el 99% y PyBLØCK toma el 1% — con tu propio nodo no hay parte aparte de node-runner, es toda tuya. Hasta entonces no ganás nada: solo es solo.
CHIRP: cada bloque que encuentre cualquier miembro paga a todos los miembros elegibles según standing (7 días de antigüedad + potencia 24 h) — 100% al sindicato, 0% PyBLØCK. Tus mineros entran al registro con su primer share aceptado.
WAVICLES: cada bloque paga a toda la ventana de trabajo (8 × dificultad de la red) según el trabajo hecho — 100% a la ventana, 0% PyBLØCK. Mínimo 1.000 sats acumulados; por debajo tu parte se reparte entre los mineros que sí llegan, nunca al pool.
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.