Cómo funciona
Un minero pide una plantilla mediante getblocktemplate, busca un hash SHA256d que cumpla el objetivo de dificultad y presenta el bloque con submitblock. El nodo comprueba todas las reglas antes de aceptarlo.
El subsidio inicial total es de 50 SVCD por bloque y se reduce cada 210.000 bloques. La actualización v0.2 programa desde la altura 200 un pago obligatorio del 20% del subsidio al fundador, redondeado hacia abajo en unidades base: inicialmente 10 SVCD. El minero recibe el resto, inicialmente 40 SVCD, más todas las comisiones. Tras el primer halving serán 5 SVCD y 20 SVCD, respectivamente. Ambas partes son salidas coinbase y requieren 100 bloques de madurez antes de gastarse. Encontrar un bloque es probabilístico; no hay una recompensa garantizada por ejecutar el programa.
51.222.111.66:19333 es P2P. No es un pool ni una dirección Stratum. Utiliza la administración RPC de tu propio nodo, únicamente en localhost.1. Prepara tu nodo y wallet
Completa la guía de instalación. Comprueba que el nodo esté sincronizado y tenga al menos una conexión:
./saavecord-cli getblockchaininfo
./saavecord-cli getconnectioncountchain debe ser saavecord, initialblockdownload debe ser false y las conexiones deben ser mayores que cero. Genera una dirección de recompensa en tu wallet:
./saavecord-cli -rpcwallet=mi-wallet getnewaddress "mineria" bech32Consulta esa dirección con getaddressinfo y conserva su campo scriptPubKey para la configuración. Usa tu dirección recién creada, no una dirección de ejemplo o del operador del proyecto.
2. Revisa las herramientas
Se publican las fuentes actualizadas v0.2 del minero CPU inicial, con un límite de dos hilos. Descarga juntos los archivos de esta versión; no mezcles el coordinador y la biblioteca de versiones distintas:
- continuous_miner.py: coordina plantillas y envío de bloques.
- verify_lib.py: construye la plantilla y serialización del bloque.
- header_grinder.cpp: calcula las pruebas de trabajo.
Guarda los tres archivos en la misma carpeta y revisa el código. Se necesitan Python 3, un compilador C++17, OpenSSL de desarrollo y soporte de hilos. La configuración del sistema puede requerir dependencias adicionales.
Compila el componente de cálculo desde esa carpeta:
c++ -std=c++17 -O3 -pthread header_grinder.cpp -lcrypto -o header-grinderEl minero v0.2 solicita getblocktemplate con las reglas segwit y saavecord-founder-v1. Desde la altura 200, la respuesta debe indicar !saavecord-founder-v1 e incluir founder_payment, con active, activation_height, script, amount_sat y subsidy_sat. El campo coinbasevalue sigue representando el total de subsidio más comisiones. La herramienta reserva el importe obligatorio para el fundador y paga el resto al output_script del minero. Si faltan o son incoherentes los datos obligatorios, se detiene en lugar de producir un bloque incompatible.
La dirección fijada por consenso es sc1q8nhr9qhpmgm56mgwwrym6h276qlxuvvesgkrn3, con script 00143cee3282e1da374d6d0e70c9bd5d5ed03e6e3199. El minero actualizado utiliza dos salidas separadas aunque ambas direcciones coincidan. El minero oficial utiliza actualmente esa misma dirección: si gana el bloque, ambas partes siguen bajo control del fundador. Un minero independiente conserva su propia parte.
Estas son herramientas de arranque del proyecto. No constituyen una integración verificada con pools, equipos ASIC o programas de minería de terceros.
3. Configura el minero
Crea un archivo miner.json en la misma carpeta. Este ejemplo es una plantilla: sustituye la ruta del directorio de datos y el script de recompensa por tus propios valores antes de ejecutarlo.
{
"rpc_datadir": "/home/TU_USUARIO/.saavecord-public",
"rpc_port": 19332,
"chain": "saavecord",
"expected_genesis": "000000d5834ff77f43e6d8b2e5f1811bd47e0ed5ac486e49b57dbf9803eb0550",
"output_script": "TU_SCRIPT_PUBKEY_EN_HEXADECIMAL",
"grinder": "./header-grinder",
"interval_seconds": 600,
"threads": 2,
"batch_max_nonces": 1000000
}output_script es el valor hexadecimal de scriptPubKey que devuelve tu nodo para tu dirección de recompensa; no es la dirección sc1 ni una clave privada. rpc_datadir señala el directorio raíz de datos, sin añadir /saavecord. El minero buscará la cookie local dentro de la subcarpeta de esa cadena.
Ejecuta el minero con un usuario que pueda leer la cookie de su nodo. El archivo JSON no necesita contraseña ni claves privadas. No sustituyas el script obligatorio del fundador por tu dirección: output_script recibe únicamente la parte del minero. El componente header-grinder se busca relativo a la carpeta de configuración.
4. Inicia y observa
Desde la carpeta de las herramientas:
python3 continuous_miner.py --config miner.jsonEl minero verifica cadena y génesis, consulta la plantilla y emite eventos de progreso. block_accepted indica un bloque aceptado por tu nodo. waiting_for_interval indica que espera antes de buscar el siguiente; el ejemplo utiliza 600 segundos desde la marca temporal del bloque anterior. El tiempo de búsqueda se añade a esa espera. El objetivo de diez minutos no garantiza un bloque ni un abono cada diez minutos, y recibir SVCD no garantiza ingresos en dinero.
La carga depende del equipo y la dificultad. Supervisa el consumo de CPU y detén el programa con Ctrl+C si necesitas liberar recursos. El nodo se administra y detiene por separado.
Para consultar recompensas y madurez, utiliza getbalances en la wallet que controla la dirección de recompensa. Una recompensa confirmada puede seguir apareciendo como inmadura durante 100 bloques.
