lnwallet+fundingmgr: interrupt funding flow for PSBT
In case the funding manager detects that a funding flow is requested to be executed with the help of a PsbtIntent, the normal channel negotiation with the remote peer is interrupted, as soon as the accept_channel message was received. With the remote peer's funding multisig key and our local key, we can derive the funding output script and its address. This is enough to start the PSBT funding and signing process which the user will do externally to the daemon.
This commit is contained in:
4 files changed
+419
-19
No files matched your search
@@ -590,6 +590,7 @@ func testFundingTransactionLockedOutputs(miner *rpctest.Harness,
|
||||
FundingFeePerKw: feePerKw,
|
||||
PushMSat: 0,
|
||||
Flags: lnwire.FFAnnounceChannel,
|
||||
PendingChanID: [32]byte{0, 1, 2, 3},
|
||||
}
|
||||
if _, err := alice.InitChannelReservation(req); err != nil {
|
||||
t.Fatalf("unable to initialize funding reservation 1: %v", err)
|
||||
@@ -612,6 +613,7 @@ func testFundingTransactionLockedOutputs(miner *rpctest.Harness,
|
||||
FundingFeePerKw: feePerKw,
|
||||
PushMSat: 0,
|
||||
Flags: lnwire.FFAnnounceChannel,
|
||||
PendingChanID: [32]byte{1, 2, 3, 4},
|
||||
}
|
||||
failedReservation, err := alice.InitChannelReservation(failedReq)
|
||||
if err == nil {
|
||||
@@ -648,6 +650,7 @@ func testFundingCancellationNotEnoughFunds(miner *rpctest.Harness,
|
||||
FundingFeePerKw: feePerKw,
|
||||
PushMSat: 0,
|
||||
Flags: lnwire.FFAnnounceChannel,
|
||||
PendingChanID: [32]byte{2, 3, 4, 5},
|
||||
}
|
||||
chanReservation, err := alice.InitChannelReservation(req)
|
||||
if err != nil {
|
||||
@@ -655,6 +658,7 @@ func testFundingCancellationNotEnoughFunds(miner *rpctest.Harness,
|
||||
}
|
||||
|
||||
// Attempt to create another channel with 44 BTC, this should fail.
|
||||
req.PendingChanID = [32]byte{3, 4, 5, 6}
|
||||
_, err = alice.InitChannelReservation(req)
|
||||
if _, ok := err.(*chanfunding.ErrInsufficientFunds); !ok {
|
||||
t.Fatalf("coin selection succeeded should have insufficient funds: %v",
|
||||
@@ -684,6 +688,7 @@ func testFundingCancellationNotEnoughFunds(miner *rpctest.Harness,
|
||||
// attempting coin selection.
|
||||
|
||||
// Request to fund a new channel should now succeed.
|
||||
req.PendingChanID = [32]byte{4, 5, 6, 7, 8}
|
||||
if _, err := alice.InitChannelReservation(req); err != nil {
|
||||
t.Fatalf("unable to initialize funding reservation: %v", err)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user