Skip to content

Rupix v0.6.1 — checkpoints para DAG, wallet usable, primer checkpoint publicado

Choose a tag to compare

@xxxedu21xxx-bot xxxedu21xxx-bot released this 30 Sep 06:06
· 123 commits to main since this release

Cuatro ramas revisadas y aprobadas por el auditor externo el 29-sep, mergeadas sin conflictos sobre 1e38bace. Sin cambios de consenso salvo la regla de checkpoints (que hasta hoy no tenia efecto: la lista estaba vacia) y el primer checkpoint de la testnet.

  • Primer checkpoint publicado (testnet #4): blue score 86,400, hash 7e2ece393c7d991c86e7ba915276cd85b5fc19e8647d5d197fa26bf116604fad (DAA 86,399), caduca en DAA 2,000,000. Es el punto de poda que el seed y el nodo de JC ya compartian. TestCheckpointsPublicados obliga a que el codigo y CHECKPOINTS.md digan lo mismo.
  • Emision: TestTotalSupply afirma la emision por calendario (41,999,994.96) y documenta el exceso acotado en cada frontera de halving (medido: 0.5 RUPIX en el halving 2). MaxRupia es tope por transaccion, no de emision. Ver MEMORIA.
  • Guias ES/EN: la forja ya no lleva --password en la linea; la frase semilla se anota en papel al crear la wallet.
  • Envio grande probado en la red publica (29-sep, wallet de la rama wallet-envios-grandes, daemon de prueba): 1,000 RUPIX en 24 transacciones / 8.6 s; 10,000 RUPIX en 232 transacciones / 46.1 s, desde una wallet de minero de ~78k pedazos. Antes 1,000 se cortaba a los 120 s.
  • Arreglo del envio grande (rama wallet-envios-grandes, para v0.6.1): la seleccion de pedazos estima la comision en tiempo lineal y la exacta se calcula una sola vez al final. Medido en el seed, misma wallet de 78k pedazos: 100 RUPIX 1.6s -> 0.10s; 300: 16s -> 0.24s; 600: 65s -> 0.47s; 1,000: cortado a 120s -> 0.82s.
  • Checkpoints para DAG (rama checkpoint-dag, para v0.6.1): la regla pasa a "todo bloque con blue score >= X + MergeDepth debe tener al bloque canonico H en su pasado". Un hermano tardio de H ya no rompe nada; una historia alterna sin H se rechaza. TestCheckpointDAG lo prueba, y se verifico que la prueba FALLA si la regla se apaga.
  • Mempool (rama mempool-niveles, para v0.6.1): prueba automatica de que una forja de un nivel cerrado se rechaza al entrar al mempool y la misma transaccion entra pasado su halving (H-1 nivel A).
  • .gitignore: los binarios quedan anclados a la raiz; la linea rupixwallet tapaba la carpeta cmd/rupixwallet y hacia fallar git add ahi.
  • tools/verificar-emision.py: compara el Gold que existe en tu nodo con la regla de emision (enteros exactos) y alerta si alguna vez hay mas del permitido.
  • Wallet (encontrado el 28-sep, se arregla en v0.6.1): enviar mucho Gold desde una wallet de minero se corta a los 2 minutos porque la seleccion de pedazos recalcula la comision rearmando toda la transaccion (costo al cuadrado; medido en el seed). parse imprime "KAS".
  • Web: pagina matematica.html (emision, escalera, costo de mover, calculadora) en espanol e ingles.
  • gofmt en todo el repo (251 archivos): solo formato. Los unicos cambios que no son espacios son imports reordenados (el renombre kaspa->rupix cambio su orden alfabetico). Compila igual.
  • Explorer: la copia de la pagina en el repo estaba vieja (halving de testnet en 10,000; el real es 100,000). Sincronizada con la viva, y el tiempo al proximo halving ahora se muestra en minutos, horas o dias.
  • govulncheck (27-sep): 0 vulnerabilidades que afecten al codigo; 3 en modulos requeridos que el codigo no llama.
  • SECURITY.md: como reportar una vulnerabilidad en privado (pestana Security de GitHub), con tiempos de respuesta.
  • Builds de release con -trimpath -buildvcs=false -buildid=: primer paso hacia builds reproducibles. Falta comprobar que dos builds den el mismo hash.
  • params.go: el comentario del halving de mainnet decia "~decadas"; son ~16 meses (42M bloques a 1/seg). Hallazgo del auditor. Al revisarlo aparecio constants.BlocksPerHalving = 150, una constante sin uso cuyo comentario decia que definia la emision: eliminada. El consenso usa el valor de cada red.
  • Alarma v2.1: sigue la rotacion del log del nodo (guarda inode + posicion; si el archivo viejo no aparece, ERROR). Pedido del auditor al revisar la v2.
  • go.mod: minimo de Go de 1.26.6 a 1.25.0 (la minima real del arbol de dependencias). Un revisor con Go 1.25 ya puede compilar y correr la suite. Los binarios de release se siguen compilando con 1.26.6.
  • Residuos del fork: el daemon de rupixwallet escribe su log en ~/.rupixwallet (antes ~/.kaspawallet); el minero dice "Rupixd is not synced" (antes "Kaspad").
  • Alarma de bloques descalificados corregida. La v1 (25-sep, pedida por el auditor el 23-sep) caminaba hacia atras por la cadena seleccionada y, por construccion, nunca podia ver un bloque descalificado: dijo "OK" 134 veces sin poder sonar. La v2 lee la decision del propio nodo en su log (solo lo nuevo desde la revision anterior) y dice ERROR si el log no crece. Probada con un log falso: suena. Falta probarla provocando un bloque descalificado en devnet.
  • Nodo: resolve_block_status.go registra cada bloque descalificado en nivel Warn (BLOQUE DESCALIFICADO <hash>: <motivo>); antes era Debug y no se veia. Cambio de log, no de consenso: no requiere relanzamiento.
  • README (es/en): seccion "Como minar Rupix".
  • changelog.txt renombrado a CHANGELOG-kaspad-upstream.txt para no confundirlo con este archivo.

Verificación: cada .zip trae su .sha256, generado por el CI de GitHub. Descarga, compara, y confirma que nadie lo alteró. Guías: GUIA-TESTNET.md / TESTNET-GUIDE.md, GUIA-FORJA.md / FORGE-GUIDE.md. No confíes, verifica.