Skip to content

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 it
  • In case error 2030 happen, we may break the loop
  • Increment 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 because InputSource() does not match in statement and does not get removed.

The equality between InputSource() instances wasn’t implemented. Done in duniterpy@4c30cf3f.

Edited by Moul
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information