WIP: Feature/6/jeffreypicard/dockerize for deployment #7
1 changed files with 41 additions and 0 deletions
|
@ -1749,6 +1749,47 @@ func TestRBF(t *testing.T) {
|
||||||
},
|
},
|
||||||
err: "",
|
err: "",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
// A transaction that doesn't signal replacement, can
|
||||||
|
// be replaced if the parent signals replacement.
|
||||||
|
name: "inherited replacement",
|
||||||
|
setup: func(ctx *testContext) (*btcutil.Tx, []*btcutil.Tx) {
|
||||||
|
coinbase := ctx.addCoinbaseTx(1)
|
||||||
|
|
||||||
|
// Create an initial parent transaction that
|
||||||
|
// marks replacement, we won't be replacing
|
||||||
|
// this directly however.
|
||||||
|
coinbaseOut := txOutToSpendableOut(coinbase, 0)
|
||||||
|
outs := []spendableOutput{coinbaseOut}
|
||||||
|
parent := ctx.addSignedTx(
|
||||||
|
outs, 1, defaultFee, true, false,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Now create a transaction that spends that
|
||||||
|
// parent transaction, which is marked as NOT
|
||||||
|
// being RBF-able.
|
||||||
|
parentOut := txOutToSpendableOut(parent, 0)
|
||||||
|
parentOuts := []spendableOutput{parentOut}
|
||||||
|
childNoReplace := ctx.addSignedTx(
|
||||||
|
parentOuts, 1, defaultFee, false, false,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Now we'll create another transaction that
|
||||||
|
// replaces the *child* only. This should work
|
||||||
|
// as the parent has been marked for RBF, even
|
||||||
|
// though the child hasn't.
|
||||||
|
respendOuts := []spendableOutput{parentOut}
|
||||||
|
childReplace, err := ctx.harness.CreateSignedTx(
|
||||||
|
respendOuts, 1, defaultFee*3, false,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
ctx.t.Fatalf("unable to create child tx: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return childReplace, []*btcutil.Tx{childNoReplace}
|
||||||
|
},
|
||||||
|
err: "",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, testCase := range testCases {
|
for _, testCase := range testCases {
|
||||||
|
|
Loading…
Reference in a new issue