Rejected transactions kill consensus
- Dominant language
- Go
- Stars
- 44
- Forks
- 12
- PR merge metrics
- No merged PRs in 30d
Description
- Start 3 nodes (standard docker setup)
- Kill one
- Send a valid transaction, e.g.:
```
docker run --network host -it sebak wallet payment GDTEPFWEITKFHSUO44NQABY2XHRBBH2UBVGJ2ZJPDREIOL2F6RAEBJE4 1000 SBECGI3FSCYHNQIMANNCWQSVA6S5C6L4BXFKAPMBAMI5V47NWXNE37MN --endpoint=https://127.0.0.1:2822 --create
```
=> Should fail
- Start the dead one
- Try to re-run the transaction: It fails
```
DBUG[07-31|02:21:32] message is transaction module=sebak node=GAYG.TLY7 caller=node_runner_checker.go:34
EROR[07-31|02:21:32] failed to handle message from client module=sebak node=GAYG.TLY7 error="{\"code\":100,\"message\":\"already exists in block\"}" caller=node_runner.go:230
```
Contributor guide
Research direction
Reproduce the three-node scenario using the standard Docker setup and the wallet payment command. Start with node_runner_checker.go:34 and node_runner.go:230, then trace the rejected transaction and the “already exists in block” error. Done means a transaction rejected while a node is down can be retried after it returns without killing consensus.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- blockchain, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100