Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Enhancement: Deterministic transaction hashing across all record fields

Cerrado Apto para principiantes
#29 1 comentario 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 2 días

@sohanjadyal ya está trabajando en esto.

Desde el 16/10/2026.

  • #30 de @sohanjadyal — fusionado

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
74/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java
Área
blockchain

Línea de trabajo

Empieza por Transaction.toString() en src/main/java/minichain/Transaction.java (alrededor de las líneas 49-52) y por el bucle de hojas en Block.computeMerkleRoot() en src/main/java/minichain/Block.java (alrededor de las líneas 37-39). Añade a Transaction un método hash() que genere un digest de cada campo del registro, y luego cambia las hojas para que lo usen. Amplía BlockchainTest.java con un caso por campo que muestre que el hash cambia, y comprueba si alguna prueba existente afirma una raíz de Merkle fija. Se da por terminado cuando mvn clean test pasa y se cumplen los criterios de aceptación del issue.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Problem

In Block.computeMerkleRoot(), leaf hashes were constructed using:

tree.add(sha256(tx.toString()));

However, Transaction.toString() only serialized from, to, and amount:

return from + " -> " + to + ": " + amount;

While digital signatures are independently checked during block validation, id and transaction key details were not committed to within the block's Merkle tree root. Tampering with fields like id left the Merkle tree root unchanged.

Proposed Solution

  1. Add an explicit, deterministic hash() method to Transaction that computes a SHA-256 digest over all record fields (id, from, to, amount, senderKey, and signature).
  2. Update Block.computeMerkleRoot() to build Merkle leaf nodes directly from tx.hash().
  3. Add tests verifying hash determinism, format (64-character hex), field sensitivity, and Merkle root invalidation upon field modification.
Lenguaje dominante
Java
Estrellas
0
Forks
3
Merge medio
2 d 5 h
PR fusionados (30 d)
15

Preparar el entorno

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de techcsispit/mini-chain

Todos los issues de techcsispit/mini-chain

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.