Page MenuHomePhabricator

Separate adding and spending coins for a given transaction.

Authored by deadalnix on Jun 5 2018, 23:38.



In addition, stop enforcing transaction ordering for RollforwardBlock by adding coin and spending them in two passes.

Depends on D1478

Test Plan
make check

Diff Detail

rABC Bitcoin ABC
Lint OK
No Unit Test Coverage
Build Status
Buildable 2704
Build 3520: Bitcoin ABC Buildbot (legacy)
Build 3519: arc lint + arc unit

Event Timeline

deadalnix created this revision.Jun 5 2018, 23:38
Herald added a reviewer: Restricted Project. · View Herald TranscriptJun 5 2018, 23:38
jasonbcox requested changes to this revision.Jun 6 2018, 16:26
jasonbcox added a subscriber: jasonbcox.
jasonbcox added inline comments.

This block is not consistent with the other UpdateCoins() function. Shouldn't this be encapsulated in another SpendCoins() function, but without the CTxUndo param? As a side effect, the tx.IsCoinBase() check can be separated rather than wrapping the rest of the logic.


Why split this apart? Do you plan on removing UpdateCoin() all together?

This revision now requires changes to proceed.Jun 6 2018, 16:26
deadalnix requested review of this revision.Jun 6 2018, 17:03
deadalnix added inline comments.

Why isn't it consistent ? It does the same, without updating the undo datastructure.


The goal of this refactoring is to get to a position where we add the output in one pass and then mark the coin spent in a second pass. Separating adding and spending is the first step toward this.

RollforwardBlock already does it in two passes, but ConnectBlock require some more refactoring and some activation mechanism before it can do it.

jasonbcox accepted this revision.Jun 8 2018, 15:01
This revision is now accepted and ready to land.Jun 8 2018, 15:01
This revision was automatically updated to reflect the committed changes.