diff --git a/chancloser.go b/chancloser.go index a9df9fa9..257b6db1 100644 --- a/chancloser.go +++ b/chancloser.go @@ -4,8 +4,6 @@ import ( "fmt" "github.com/davecgh/go-spew/spew" - "github.com/lightningnetwork/lnd/channeldb" - "github.com/lightningnetwork/lnd/contractcourt" "github.com/lightningnetwork/lnd/htlcswitch" "github.com/lightningnetwork/lnd/lnwallet" "github.com/lightningnetwork/lnd/lnwire" @@ -135,8 +133,6 @@ type channelCloser struct { // TODO(roasbeef): abstract away closeReq *htlcswitch.ChanClose - closeCtx *contractcourt.CooperativeCloseCtx - // localDeliveryScript is the script that we'll send our settled // channel funds to. localDeliveryScript []byte @@ -151,8 +147,7 @@ type channelCloser struct { // only be populated iff, we're the initiator of this closing request. func newChannelCloser(cfg chanCloseCfg, deliveryScript []byte, idealFeePerKw lnwallet.SatPerKWeight, negotiationHeight uint32, - closeReq *htlcswitch.ChanClose, - closeCtx *contractcourt.CooperativeCloseCtx) *channelCloser { + closeReq *htlcswitch.ChanClose) *channelCloser { // Given the target fee-per-kw, we'll compute what our ideal _total_ // fee will be starting at for this fee negotiation. @@ -186,7 +181,6 @@ func newChannelCloser(cfg chanCloseCfg, deliveryScript []byte, cfg: cfg, negotiationHeight: negotiationHeight, idealFeeSat: idealFeeSat, - closeCtx: closeCtx, localDeliveryScript: deliveryScript, priorFeeOffers: make(map[btcutil.Amount]*lnwire.ClosingSigned), } @@ -420,7 +414,7 @@ func (c *channelCloser) ProcessCloseMsg(msg lnwire.Message) ([]lnwire.Message, b remoteSigBytes := closeSignedMsg.Signature.ToSignatureBytes() remoteSig := append(remoteSigBytes, byte(txscript.SigHashAll)) - closeTx, finalLocalBalance, err := c.cfg.channel.CompleteCooperativeClose( + closeTx, _, err := c.cfg.channel.CompleteCooperativeClose( localSig, remoteSig, c.localDeliveryScript, c.remoteDeliveryScript, remoteProposedFee, ) @@ -438,33 +432,16 @@ func (c *channelCloser) ProcessCloseMsg(msg lnwire.Message) ([]lnwire.Message, b if err := c.cfg.broadcastTx(closeTx); err != nil { return nil, false, err } - - // Clear out the current channel state, marking the channel as - // being closed within the database. - closingTxid := closeTx.TxHash() - chanInfo := c.cfg.channel.StateSnapshot() - c.closeCtx.Finalize(&channeldb.ChannelCloseSummary{ - ChanPoint: c.chanPoint, - ChainHash: chanInfo.ChainHash, - ClosingTXID: closingTxid, - CloseHeight: c.negotiationHeight, - RemotePub: &chanInfo.RemoteIdentity, - Capacity: chanInfo.Capacity, - SettledBalance: finalLocalBalance, - CloseType: channeldb.CooperativeClose, - ShortChanID: c.cfg.channel.ShortChanID(), - IsPending: true, - }) - - // TODO(roasbeef): don't need, ChainWatcher will handle - - c.state = closeFinished + if c.cfg.channel.MarkCommitmentBroadcasted(); err != nil { + return nil, false, err + } // Finally, we'll transition to the closeFinished state, and // also return the final close signed message we sent. // Additionally, we return true for the second argument to // indicate we're finished with the channel closing // negotiation. + c.state = closeFinished matchingOffer := c.priorFeeOffers[remoteProposedFee] return []lnwire.Message{matchingOffer}, true, nil @@ -493,7 +470,7 @@ func (c *channelCloser) ProcessCloseMsg(msg lnwire.Message) ([]lnwire.Message, b // current compromise fee. func (c *channelCloser) proposeCloseSigned(fee btcutil.Amount) (*lnwire.ClosingSigned, error) { - rawSig, txid, localAmt, err := c.cfg.channel.CreateCloseProposal( + rawSig, _, _, err := c.cfg.channel.CreateCloseProposal( fee, c.localDeliveryScript, c.remoteDeliveryScript, ) if err != nil { @@ -521,20 +498,6 @@ func (c *channelCloser) proposeCloseSigned(fee btcutil.Amount) (*lnwire.ClosingS // accepts our offer. This way, we don't have to re-sign. c.priorFeeOffers[fee] = closeSignedMsg - chanInfo := c.cfg.channel.StateSnapshot() - c.closeCtx.LogPotentialClose(&channeldb.ChannelCloseSummary{ - ChanPoint: c.chanPoint, - ChainHash: chanInfo.ChainHash, - ClosingTXID: *txid, - CloseHeight: c.negotiationHeight, - RemotePub: &chanInfo.RemoteIdentity, - Capacity: chanInfo.Capacity, - SettledBalance: localAmt, - CloseType: channeldb.CooperativeClose, - ShortChanID: c.cfg.channel.ShortChanID(), - IsPending: true, - }) - return closeSignedMsg, nil }