nuts-foundation / nuts-foundation/nuts-node
Network protocol keeps requesting data the peer does not have
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 28
- Forks
- 23
- Avg merge
- 1d 10h
- Merged PRs (30d)
- 76
Description
Situation:
- Alice tries to
handleTransactionListreceived from Bob - While adding one of the transactions to the DAG, it fails with
dag.ErrPreviousTransactionMissing - Alice immediately sends a
Statemessage to Bob to restart the set reconciliation - Bob does not have the missing transaction so ends up sending the same transactionList as before (DB is corrupt? attacker?)
- go back to step 1
It's unlikely that Bob is going to send a different result than last time, so it's likely to fail again.
This generates a lot of traffic since there is no delay between the two attempts. A solution is not obvious to me since adding a delay is just reducing the amount of spam a bit, but permanently blocking is not an option either.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the handleTransactionList flow and the dag.ErrPreviousTransactionMissing failure, then trace how Alice sends a State message and how Bob responds with the transaction list. Reproduce the repeated exchange and define completion as preventing unbounded retries or traffic while preserving a way to recover from a temporary inconsistency.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- distributed-systems, networking
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100