Select different sources for intermediaries tx
Issues found
Intermediaries transactions bug
A bug or a behaviour modification was introduced between v0.6.1 and the migration to DuniterPy (v0.7.0), which makes intermediaries transactions being the same, and then get refused by the network.
If intermediaries transactions occurs, I had a case when infinite loop occurs because of already proceed tx for already proceed intermediaries tx. I don’t know why the same sources are now taken for two followed intermediaries tx Does source selection have been removed during this migration? I don’t think so after checked previous and current code.
Transaction refusal by nodes
- Nodes refuse transactions sent within the lapse of time between two blocks:
Error: It cannot exist 2 identical sources for transactions inside a given block
- This causes the refusals of sent transactions.
Solutions
We could change the comment by incrementing a variable in itIn case error2030
happen, we maybreak
the loopIncrement sources/inputs selection in order to not have same ones in intermediaries tx-
Check if sources are free. This could avoid taking locked sources when sending two similar tx (final ones) close in the time. Take them from tx/history/<pubkey>/pending
. Pending are already added to sources. May be they are no longer well added to the inputs. It seems already used input are no longer removed. May be becauseInputSource()
does not matchin
statement and does not get removed.
The equality between InputSource()
instances wasn’t implemented. Done in duniterpy@4c30cf3f.
Edited by Moul