Talk:Transaction Construction Algorithm (voting pools)
In the preparation step it is mentioned that we create a withdrawal status object which is referenced throughout the algorithm.
We add the roundID to this object, but it does not seem to be used anywhere. Is it needed at all?
It's needed to match up withdrawalstatus objects with siglist objects.
In the output list initialization procedure we may return an empty output list if the smallest output is bigger than the sum of the inputs. What should happen if we return an empty output list? The next step (transaction initialization) seems to assume that it is not empty.
As there are no longer any ouputs we cannot make a transaction. I don't seem to find any error code that reflects this situation.
Transaction Initialization does not depend on the size of the output list. If the transaction skeleton ends up not being used, then Finalize Transaction will discard it (first step).
Easiest way to see what happens is to just follow the steps with an empty output list and you'll find all the checks that handle it.
In the 'Output List Initialization' I don't think it's specified how to keep track of the outputs that are removed if sum(inputs) < sum(outputs). I would assume that we need to mark the output status in the withdrawal status object so the caller can take appropriate action?