|
|
|
@ -616,7 +616,6 @@ func TestCooperativeChannelClosure(t *testing.T) {
|
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to create alice coop close proposal: %v", err) |
|
|
|
|
} |
|
|
|
|
aliceCloseSig := append(aliceSig.Serialize(), byte(txscript.SigHashAll)) |
|
|
|
|
|
|
|
|
|
bobFee := bobChannel.CalcFee(bobFeeRate) |
|
|
|
|
bobSig, _, _, err := bobChannel.CreateCloseProposal( |
|
|
|
@ -625,14 +624,13 @@ func TestCooperativeChannelClosure(t *testing.T) {
|
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to create bob coop close proposal: %v", err) |
|
|
|
|
} |
|
|
|
|
bobCloseSig := append(bobSig.Serialize(), byte(txscript.SigHashAll)) |
|
|
|
|
|
|
|
|
|
// With the proposals created, both sides should be able to properly
|
|
|
|
|
// process the other party's signature. This indicates that the
|
|
|
|
|
// transaction is well formed, and the signatures verify.
|
|
|
|
|
aliceCloseTx, _, err := bobChannel.CompleteCooperativeClose( |
|
|
|
|
bobCloseSig, aliceCloseSig, bobDeliveryScript, |
|
|
|
|
aliceDeliveryScript, bobFee, |
|
|
|
|
bobSig, aliceSig, bobDeliveryScript, aliceDeliveryScript, |
|
|
|
|
bobFee, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to complete alice cooperative close: %v", err) |
|
|
|
@ -640,8 +638,8 @@ func TestCooperativeChannelClosure(t *testing.T) {
|
|
|
|
|
bobCloseSha := aliceCloseTx.TxHash() |
|
|
|
|
|
|
|
|
|
bobCloseTx, _, err := aliceChannel.CompleteCooperativeClose( |
|
|
|
|
aliceCloseSig, bobCloseSig, aliceDeliveryScript, |
|
|
|
|
bobDeliveryScript, aliceFee, |
|
|
|
|
aliceSig, bobSig, aliceDeliveryScript, bobDeliveryScript, |
|
|
|
|
aliceFee, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to complete bob cooperative close: %v", err) |
|
|
|
@ -2054,24 +2052,25 @@ func TestCooperativeCloseDustAdherence(t *testing.T) {
|
|
|
|
|
// balances. As a result, performing a cooperative closure now result
|
|
|
|
|
// in both sides having an output within the closure transaction.
|
|
|
|
|
aliceFee := btcutil.Amount(aliceChannel.CalcFee(aliceFeeRate)) + 1000 |
|
|
|
|
aliceSig, _, _, err := aliceChannel.CreateCloseProposal(aliceFee, |
|
|
|
|
aliceDeliveryScript, bobDeliveryScript) |
|
|
|
|
aliceSig, _, _, err := aliceChannel.CreateCloseProposal( |
|
|
|
|
aliceFee, aliceDeliveryScript, bobDeliveryScript, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to close channel: %v", err) |
|
|
|
|
} |
|
|
|
|
aliceCloseSig := append(aliceSig.Serialize(), byte(txscript.SigHashAll)) |
|
|
|
|
|
|
|
|
|
bobFee := btcutil.Amount(bobChannel.CalcFee(bobFeeRate)) + 1000 |
|
|
|
|
bobSig, _, _, err := bobChannel.CreateCloseProposal(bobFee, |
|
|
|
|
bobDeliveryScript, aliceDeliveryScript) |
|
|
|
|
bobSig, _, _, err := bobChannel.CreateCloseProposal( |
|
|
|
|
bobFee, bobDeliveryScript, aliceDeliveryScript, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to close channel: %v", err) |
|
|
|
|
} |
|
|
|
|
bobCloseSig := append(bobSig.Serialize(), byte(txscript.SigHashAll)) |
|
|
|
|
|
|
|
|
|
closeTx, _, err := bobChannel.CompleteCooperativeClose( |
|
|
|
|
bobCloseSig, aliceCloseSig, |
|
|
|
|
bobDeliveryScript, aliceDeliveryScript, bobFee) |
|
|
|
|
bobSig, aliceSig, bobDeliveryScript, aliceDeliveryScript, |
|
|
|
|
bobFee, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to accept channel close: %v", err) |
|
|
|
|
} |
|
|
|
@ -2093,23 +2092,24 @@ func TestCooperativeCloseDustAdherence(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
// Attempt another cooperative channel closure. It should succeed
|
|
|
|
|
// without any issues.
|
|
|
|
|
aliceSig, _, _, err = aliceChannel.CreateCloseProposal(aliceFee, |
|
|
|
|
aliceDeliveryScript, bobDeliveryScript) |
|
|
|
|
aliceSig, _, _, err = aliceChannel.CreateCloseProposal( |
|
|
|
|
aliceFee, aliceDeliveryScript, bobDeliveryScript, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to close channel: %v", err) |
|
|
|
|
} |
|
|
|
|
aliceCloseSig = append(aliceSig.Serialize(), byte(txscript.SigHashAll)) |
|
|
|
|
|
|
|
|
|
bobSig, _, _, err = bobChannel.CreateCloseProposal(bobFee, |
|
|
|
|
bobDeliveryScript, aliceDeliveryScript) |
|
|
|
|
bobSig, _, _, err = bobChannel.CreateCloseProposal( |
|
|
|
|
bobFee, bobDeliveryScript, aliceDeliveryScript, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to close channel: %v", err) |
|
|
|
|
} |
|
|
|
|
bobCloseSig = append(bobSig.Serialize(), byte(txscript.SigHashAll)) |
|
|
|
|
|
|
|
|
|
closeTx, _, err = bobChannel.CompleteCooperativeClose( |
|
|
|
|
bobCloseSig, aliceCloseSig, |
|
|
|
|
bobDeliveryScript, aliceDeliveryScript, bobFee) |
|
|
|
|
bobSig, aliceSig, bobDeliveryScript, aliceDeliveryScript, |
|
|
|
|
bobFee, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to accept channel close: %v", err) |
|
|
|
|
} |
|
|
|
@ -2141,7 +2141,6 @@ func TestCooperativeCloseDustAdherence(t *testing.T) {
|
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to close channel: %v", err) |
|
|
|
|
} |
|
|
|
|
aliceCloseSig = append(aliceSig.Serialize(), byte(txscript.SigHashAll)) |
|
|
|
|
|
|
|
|
|
bobSig, _, _, err = bobChannel.CreateCloseProposal( |
|
|
|
|
bobFee, bobDeliveryScript, aliceDeliveryScript, |
|
|
|
@ -2149,11 +2148,11 @@ func TestCooperativeCloseDustAdherence(t *testing.T) {
|
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to close channel: %v", err) |
|
|
|
|
} |
|
|
|
|
bobCloseSig = append(bobSig.Serialize(), byte(txscript.SigHashAll)) |
|
|
|
|
|
|
|
|
|
closeTx, _, err = bobChannel.CompleteCooperativeClose( |
|
|
|
|
bobCloseSig, aliceCloseSig, |
|
|
|
|
bobDeliveryScript, aliceDeliveryScript, bobFee) |
|
|
|
|
bobSig, aliceSig, bobDeliveryScript, aliceDeliveryScript, |
|
|
|
|
bobFee, |
|
|
|
|
) |
|
|
|
|
if err != nil { |
|
|
|
|
t.Fatalf("unable to accept channel close: %v", err) |
|
|
|
|
} |
|
|
|
|