isValid() does not verify mining reward amount or enforce a single reward transaction per block
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- java
- Ambito
- blockchain
Direzione di ricerca
Leggi Blockchain.isValid() e Transaction.NETWORK in Transaction; l’issue indica i controlli mancanti e il README definisce la ricompensa di 50 coin. Segui il modo in cui i blocchi espongono le loro transazioni, poi aggiorna la validazione in modo che ogni blocco abbia al massimo una transazione di rete e il suo importo sia uguale a MINING_REWARD. Il lavoro è completato quando importi alterati e ricompense duplicate fanno restituire false a isValid(), mentre i blocchi minati validi continuano a superare la validazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
In mini-chain, mining rewards are issued with Transaction.NETWORK ("network") as the sender.
Under Transaction.hasValidSignature():
public boolean hasValidSignature() {
if (NETWORK.equals(from)) return true;
...
Transactions from "network" bypass digital signature checks by design because there is no private key for the network.
However, in Blockchain.isValid(), there is no validation verifying the mining reward amount or the count of reward transactions:
- A block's mining reward can be altered from
MINING_REWARD(50) to an arbitrary amount (e.g.1,000,000coins). - A block can contain multiple
"network"reward transactions.
When a block's reward transaction is tampered with, the Merkle root recalculated, and the block re-mined to meet the difficulty target (as demonstrated in Menu Option 7), isValid() still returns true because:
- The recalculated Merkle root matches
block.getMerkleRoot(). - The re-mined block hash meets the difficulty target.
tx.hasValidSignature()returnstruefor"network"without validating that the amount equalsMINING_REWARD.
Expected Behavior
According to the README:
- "Mining: A mined block holds all waiting payments plus a 50 coin reward for the miner."
- "Validation:
isValid()returns false if anything in any mined block was changed..."
isValid() should verify that in each mined block:
- There is at most one transaction from
Transaction.NETWORK. - Any transaction from
Transaction.NETWORKhastx.amount() == MINING_REWARD.
If either invariant is violated, isValid() should return false.
- Lingua principale
- Java
- Stelle
- 0
- Fork
- 3
- Merge medio
- 1g 18h
- PR unite (30g)
- 14
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di techcsispit/mini-chain
-
Blockchain.isValid() does not verify sender balance, allowing blocks with negative balances to pass validationForse già presa @aadiitya2007 l’ha presa 1 giorno fa. Aperta
Difficoltà 4/5 1-2 giorni Idoneità per principianti 20/100
techcsispit/mini-chain#37 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
README says changing Block or Transaction makes chain.dat stop loading, but adding a field or method still loads itForse già presa @tanujb03 l’ha presa 13 giorni fa. Apertadocumentation good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 25/100
techcsispit/mini-chain#21 ·
I maintainer di solito rispondono entro 2 giorni
-
Blockchain: a payment that was already mined can be submitted again, and it is accepted and mined a second timeForse già presa @aadiitya2007 l’ha presa 3 giorni fa. Apertabug good first issue
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
techcsispit/mini-chain#16 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di techcsispit/mini-chain
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
adorsys/keycloak-config-cli#1709 ·
I maintainer di solito rispondono entro 1 giorno
-
! and-bugs
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
osmandapp/OsmAnd#26769 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
NationalSecurityAgency/ghidra#9997 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
[Bug] DefaultSerializationExceptionWrapper does not implement Cleanable, so cleanup() is never invoked by codecsForse già presa @binbin0325 l’ha presa oggi. Apertacomponent/need-triage type/need-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
fix: tagged PDF fails with ClassCastException when a Form and its Image share an XObject nameForse già presa @hnc-jglee l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
opendataloader-project/opendataloader-pdf#830 ·
I maintainer di solito rispondono entro 1 giorno