Split Output
Revision as of 14:40, 22 October 2014 by Justusranvier (talk | contribs)
This procedure is used when, either due to a large output or small inputs, the inputs required to satisfy a single output can not fit within transaction size limits.
The outBailment
will be split across two or more transactions.
Initial Conditions
- The transaction being constructed contains one change output, one non-change output, and many inputs.
- The transaction did not exceed any size limits until the most recent input was added.
Sequence
- Remove the change output from the transaction.
- Decrement the value of the
nextchangestart
property of the withdrawal status object. - Determine if the transaction still exceeds size limits.
- If yes, then remove the most-recently added input.
- Update the value of the output in the transaction to be the sum of the inputs minus the required transaction fee.
- Make a copy of the outputs object corresponding to this outBailmentID.
- Update the
amount
field of the copied output by subtracting the value determined in step 4. - Push this new output to the output stack.
- Update the
status
field for this outBailmentID in the withdrawal status object to "partial-". - Perform the Finalize Transaction Procedure.
- Initialize a new transaction.