Skip to content

make cut_through more useful by returning both cut-through and non-cut-through elements#3410

Merged
antiochp merged 1 commit into
mimblewimble:masterfrom
antiochp:cut_through_split
Jul 30, 2020
Merged

make cut_through more useful by returning both cut-through and non-cut-through elements#3410
antiochp merged 1 commit into
mimblewimble:masterfrom
antiochp:cut_through_split

Conversation

@antiochp
Copy link
Copy Markdown
Member

@antiochp antiochp commented Jul 30, 2020

Refactor cut_through() to return both cut-through and non-cut-through elements.

This makes cut_through() significantly more flexible as we can use it to identify not just the inputs/outputs that remain after applying cut-through but also the inputs/outputs what are cut-through in the process.

We currently use cut_through when aggregating a single transaction.
But - with this change we can now use cut_through to compare two separate transactions and identify the "overlap" between them. This effectively corresponds to 0-confirmation output spends.
By extension we can compare a transaction to the current txpool and identify the same "overlap" of outputs not yet in the utxo that would be spent (cut-through).

Simple example -
Inputs: [A, B, C]
Outputs: [C, D, E]
cut_through returns: ([A, B], [D, E], [C], [C]) where input C and output C are cut-through.

We would like to be able to lookup "to be spent" outputs based on a transaction entering the txpool.
This change gives us a nice convenient way of doing this.

…ugh and non-cut-through elements

split the slices internally rather than simply taking sub-slices
@antiochp
Copy link
Copy Markdown
Member Author

Merging this - tested on mainnet and we look good.

@antiochp antiochp merged commit 70c637f into mimblewimble:master Jul 30, 2020
@antiochp antiochp deleted the cut_through_split branch July 30, 2020 14:29
@antiochp antiochp mentioned this pull request Sep 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant