From d55a8b7b294fa5512e0b7bee068c6c645682a303 Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Mon, 15 Apr 2019 14:24:43 +0200 Subject: [PATCH] channel+cnct: remove preimage from channel and resolution Now that the success resolver preimage field is always populated by the incoming contest resolver, preimage lookups earlier in the process (channel and channel arbitrator) can mostly be removed. --- breacharbiter_test.go | 6 ++-- contractcourt/chain_arbitrator.go | 4 +-- contractcourt/chain_watcher.go | 9 ++---- fundingmanager.go | 4 +-- htlcswitch/test_utils.go | 10 +++--- lnwallet/channel.go | 52 +++++++++++-------------------- lnwallet/channel_test.go | 46 ++++++++++----------------- lnwallet/interface.go | 16 ---------- lnwallet/test_utils.go | 6 ++-- lnwallet/transactions_test.go | 4 +-- peer.go | 6 ++-- rpcserver.go | 2 +- test_utils.go | 4 +-- witness_beacon.go | 2 -- 14 files changed, 53 insertions(+), 118 deletions(-) diff --git a/breacharbiter_test.go b/breacharbiter_test.go index 8be6e992..3d4ceb73 100644 --- a/breacharbiter_test.go +++ b/breacharbiter_test.go @@ -1844,14 +1844,12 @@ func createInitChannels(revocationWindow int) (*lnwallet.LightningChannel, *lnwa Packager: channeldb.NewChannelPackager(shortChanID), } - pCache := newMockPreimageCache() - aliceSigner := &mockSigner{aliceKeyPriv} bobSigner := &mockSigner{bobKeyPriv} alicePool := lnwallet.NewSigPool(1, aliceSigner) channelAlice, err := lnwallet.NewLightningChannel( - aliceSigner, pCache, aliceChannelState, alicePool, + aliceSigner, aliceChannelState, alicePool, ) if err != nil { return nil, nil, nil, err @@ -1860,7 +1858,7 @@ func createInitChannels(revocationWindow int) (*lnwallet.LightningChannel, *lnwa bobPool := lnwallet.NewSigPool(1, bobSigner) channelBob, err := lnwallet.NewLightningChannel( - bobSigner, pCache, bobChannelState, bobPool, + bobSigner, bobChannelState, bobPool, ) if err != nil { return nil, nil, nil, err diff --git a/contractcourt/chain_arbitrator.go b/contractcourt/chain_arbitrator.go index e21ba7ca..b7c5eb0d 100644 --- a/contractcourt/chain_arbitrator.go +++ b/contractcourt/chain_arbitrator.go @@ -259,7 +259,7 @@ func newActiveChannelArbitrator(channel *channeldb.OpenChannel, // Finally, we'll force close the channel completing // the force close workflow. chanMachine, err := lnwallet.NewLightningChannel( - c.cfg.Signer, c.cfg.PreimageDB, channel, nil, + c.cfg.Signer, channel, nil, ) if err != nil { return nil, err @@ -375,7 +375,6 @@ func (c *ChainArbitrator) Start() error { chainWatcherConfig{ chanState: channel, notifier: c.cfg.Notifier, - pCache: c.cfg.PreimageDB, signer: c.cfg.Signer, isOurAddr: c.cfg.IsOurAddress, contractBreach: func(retInfo *lnwallet.BreachRetribution) error { @@ -709,7 +708,6 @@ func (c *ChainArbitrator) WatchNewChannel(newChan *channeldb.OpenChannel) error chainWatcherConfig{ chanState: newChan, notifier: c.cfg.Notifier, - pCache: c.cfg.PreimageDB, signer: c.cfg.Signer, isOurAddr: c.cfg.IsOurAddress, contractBreach: func(retInfo *lnwallet.BreachRetribution) error { diff --git a/contractcourt/chain_watcher.go b/contractcourt/chain_watcher.go index 34bbd6c7..746d8011 100644 --- a/contractcourt/chain_watcher.go +++ b/contractcourt/chain_watcher.go @@ -88,11 +88,6 @@ type chainWatcherConfig struct { // notified of output spends and when transactions are confirmed. notifier chainntnfs.ChainNotifier - // pCache is a reference to the shared preimage cache. We'll use this - // to see if we can settle any incoming HTLC's during a remote - // commitment close event. - pCache WitnessBeacon - // signer is the main signer instances that will be responsible for // signing any HTLC and commitment transaction generated by the state // machine. @@ -702,7 +697,7 @@ func (c *chainWatcher) dispatchLocalForceClose( "detected", c.cfg.chanState.FundingOutpoint) forceClose, err := lnwallet.NewLocalForceCloseSummary( - c.cfg.chanState, c.cfg.signer, c.cfg.pCache, + c.cfg.chanState, c.cfg.signer, commitSpend.SpendingTx, localCommit, ) if err != nil { @@ -795,7 +790,7 @@ func (c *chainWatcher) dispatchRemoteForceClose( // materials required to let each subscriber sweep the funds in the // channel on-chain. uniClose, err := lnwallet.NewUnilateralCloseSummary( - c.cfg.chanState, c.cfg.signer, c.cfg.pCache, commitSpend, + c.cfg.chanState, c.cfg.signer, commitSpend, remoteCommit, commitPoint, ) if err != nil { diff --git a/fundingmanager.go b/fundingmanager.go index e68f2473..240c4e9b 100644 --- a/fundingmanager.go +++ b/fundingmanager.go @@ -1712,7 +1712,7 @@ func (f *fundingManager) handleFundingSigned(fmsg *fundingSignedMsg) { // Go on adding the channel to the channel graph, and crafting // channel announcements. lnChannel, err := lnwallet.NewLightningChannel( - nil, nil, completeChan, nil, + nil, completeChan, nil, ) if err != nil { fndgLog.Errorf("failed creating lnChannel: %v", err) @@ -2005,7 +2005,7 @@ func (f *fundingManager) handleFundingConfirmation(peer lnpeer.Peer, // We create the state-machine object which wraps the database state. lnChannel, err := lnwallet.NewLightningChannel( - nil, nil, completeChan, nil, + nil, completeChan, nil, ) if err != nil { return err diff --git a/htlcswitch/test_utils.go b/htlcswitch/test_utils.go index 407c243b..bc1035b3 100644 --- a/htlcswitch/test_utils.go +++ b/htlcswitch/test_utils.go @@ -367,11 +367,9 @@ func createTestChannel(alicePrivKey, bobPrivKey []byte, aliceSigner := &mockSigner{aliceKeyPriv} bobSigner := &mockSigner{bobKeyPriv} - pCache := newMockPreimageCache() - alicePool := lnwallet.NewSigPool(runtime.NumCPU(), aliceSigner) channelAlice, err := lnwallet.NewLightningChannel( - aliceSigner, pCache, aliceChannelState, alicePool, + aliceSigner, aliceChannelState, alicePool, ) if err != nil { return nil, nil, nil, nil, err @@ -380,7 +378,7 @@ func createTestChannel(alicePrivKey, bobPrivKey []byte, bobPool := lnwallet.NewSigPool(runtime.NumCPU(), bobSigner) channelBob, err := lnwallet.NewLightningChannel( - bobSigner, pCache, bobChannelState, bobPool, + bobSigner, bobChannelState, bobPool, ) if err != nil { return nil, nil, nil, nil, err @@ -441,7 +439,7 @@ func createTestChannel(alicePrivKey, bobPrivKey []byte, } newAliceChannel, err := lnwallet.NewLightningChannel( - aliceSigner, nil, aliceStoredChannel, alicePool, + aliceSigner, aliceStoredChannel, alicePool, ) if err != nil { return nil, nil, errors.Errorf("unable to create new channel: %v", @@ -481,7 +479,7 @@ func createTestChannel(alicePrivKey, bobPrivKey []byte, } newBobChannel, err := lnwallet.NewLightningChannel( - bobSigner, nil, bobStoredChannel, bobPool, + bobSigner, bobStoredChannel, bobPool, ) if err != nil { return nil, nil, errors.Errorf("unable to create new channel: %v", diff --git a/lnwallet/channel.go b/lnwallet/channel.go index 02ca4160..e82293bd 100644 --- a/lnwallet/channel.go +++ b/lnwallet/channel.go @@ -1309,13 +1309,6 @@ type LightningChannel struct { // signatures, of which there may be hundreds. sigPool *SigPool - // pCache is the global preimage cache shared across all other - // LightningChannel instance. We'll use this cache either when we force - // close, or we detect that the remote party has force closed. If the - // preimage for an incoming HTLC is found in the cache, then we'll try - // to claim it on chain. - pCache PreimageCache - // Capacity is the total capacity of this channel. Capacity btcutil.Amount @@ -1368,7 +1361,7 @@ type LightningChannel struct { // settled channel state. Throughout state transitions, then channel will // automatically persist pertinent state to the database in an efficient // manner. -func NewLightningChannel(signer input.Signer, pCache PreimageCache, +func NewLightningChannel(signer input.Signer, state *channeldb.OpenChannel, sigPool *SigPool) (*LightningChannel, error) { @@ -1387,7 +1380,6 @@ func NewLightningChannel(signer input.Signer, pCache PreimageCache, lc := &LightningChannel{ Signer: signer, sigPool: sigPool, - pCache: pCache, currentHeight: localCommit.CommitHeight, remoteCommitChain: newCommitmentChain(), localCommitChain: newCommitmentChain(), @@ -5096,7 +5088,7 @@ type UnilateralCloseSummary struct { // which case we will attempt to sweep the non-HTLC output using the passed // commitPoint. func NewUnilateralCloseSummary(chanState *channeldb.OpenChannel, signer input.Signer, - pCache PreimageCache, commitSpend *chainntnfs.SpendDetail, + commitSpend *chainntnfs.SpendDetail, remoteCommit channeldb.ChannelCommitment, commitPoint *btcec.PublicKey) (*UnilateralCloseSummary, error) { @@ -5113,7 +5105,6 @@ func NewUnilateralCloseSummary(chanState *channeldb.OpenChannel, signer input.Si SatPerKWeight(remoteCommit.FeePerKw), false, signer, remoteCommit.Htlcs, keyRing, &chanState.LocalChanCfg, &chanState.RemoteChanCfg, *commitSpend.SpenderTxHash, - pCache, ) if err != nil { return nil, fmt.Errorf("unable to create htlc "+ @@ -5211,11 +5202,11 @@ func NewUnilateralCloseSummary(chanState *channeldb.OpenChannel, signer input.Si // using this struct if we need to go on-chain for any reason, or if we detect // that the remote party broadcasts their commitment transaction. type IncomingHtlcResolution struct { - // Preimage is the preimage that will be used to satisfy the contract - // of the HTLC. + // Preimage is the preimage that will be used to satisfy the contract of + // the HTLC. // - // NOTE: This field will only be populated if we know the preimage at - // the time a unilateral or force close occurs. + // NOTE: This field will only be populated in the incoming contest + // resolver. Preimage [32]byte // SignedSuccessTx is the fully signed HTLC success transaction. This @@ -5448,7 +5439,7 @@ func newOutgoingHtlcResolution(signer input.Signer, localChanCfg *channeldb.Chan func newIncomingHtlcResolution(signer input.Signer, localChanCfg *channeldb.ChannelConfig, commitHash chainhash.Hash, htlc *channeldb.HTLC, keyRing *CommitmentKeyRing, feePerKw SatPerKWeight, dustLimit btcutil.Amount, csvDelay uint32, - localCommit bool, preimage [32]byte) (*IncomingHtlcResolution, error) { + localCommit bool) (*IncomingHtlcResolution, error) { op := wire.OutPoint{ Hash: commitHash, @@ -5475,7 +5466,6 @@ func newIncomingHtlcResolution(signer input.Signer, localChanCfg *channeldb.Chan // With the script generated, we can completely populated the // SignDescriptor needed to sweep the output. return &IncomingHtlcResolution{ - Preimage: preimage, ClaimOutpoint: op, CsvDelay: csvDelay, SweepSignDesc: input.SignDescriptor{ @@ -5526,10 +5516,12 @@ func newIncomingHtlcResolution(signer input.Signer, localChanCfg *channeldb.Chan InputIndex: 0, } - // Next, we'll construct the full witness needed to satisfy the input - // of the success transaction. + // Next, we'll construct the full witness needed to satisfy the input of + // the success transaction. Don't specify the preimage yet. The preimage + // will be supplied by the contract resolver, either directly or when it + // becomes known. successWitness, err := input.ReceiverHtlcSpendRedeem( - htlc.Signature, preimage[:], signer, &successSignDesc, successTx, + htlc.Signature, nil, signer, &successSignDesc, successTx, ) if err != nil { return nil, err @@ -5554,7 +5546,6 @@ func newIncomingHtlcResolution(signer input.Signer, localChanCfg *channeldb.Chan keyRing.CommitPoint, localChanCfg.DelayBasePoint.PubKey, ) return &IncomingHtlcResolution{ - Preimage: preimage, SignedSuccessTx: successTx, CsvDelay: csvDelay, ClaimOutpoint: wire.OutPoint{ @@ -5604,7 +5595,7 @@ func (r *OutgoingHtlcResolution) HtlcPoint() wire.OutPoint { func extractHtlcResolutions(feePerKw SatPerKWeight, ourCommit bool, signer input.Signer, htlcs []channeldb.HTLC, keyRing *CommitmentKeyRing, localChanCfg, remoteChanCfg *channeldb.ChannelConfig, - commitHash chainhash.Hash, pCache PreimageCache) (*HtlcResolutions, error) { + commitHash chainhash.Hash) (*HtlcResolutions, error) { // TODO(roasbeef): don't need to swap csv delay? dustLimit := remoteChanCfg.DustLimit @@ -5628,19 +5619,11 @@ func extractHtlcResolutions(feePerKw SatPerKWeight, ourCommit bool, // If the HTLC is incoming, then we'll attempt to see if we // know the pre-image to the HTLC. if htlc.Incoming { - // We'll now query the preimage cache for the preimage - // for this HTLC. If it's present then we can fully - // populate this resolution. - preimage, _ := pCache.LookupPreimage(htlc.RHash) - // Otherwise, we'll create an incoming HTLC resolution // as we can satisfy the contract. - var pre [32]byte - copy(pre[:], preimage[:]) ihr, err := newIncomingHtlcResolution( signer, localChanCfg, commitHash, &htlc, keyRing, feePerKw, dustLimit, uint32(csvDelay), ourCommit, - pre, ) if err != nil { return nil, err @@ -5730,7 +5713,7 @@ func (lc *LightningChannel) ForceClose() (*LocalForceCloseSummary, error) { localCommitment := lc.channelState.LocalCommitment summary, err := NewLocalForceCloseSummary( - lc.channelState, lc.Signer, lc.pCache, commitTx, + lc.channelState, lc.Signer, commitTx, localCommitment, ) if err != nil { @@ -5748,8 +5731,8 @@ func (lc *LightningChannel) ForceClose() (*LocalForceCloseSummary, error) { // channel state. The passed commitTx must be a fully signed commitment // transaction corresponding to localCommit. func NewLocalForceCloseSummary(chanState *channeldb.OpenChannel, signer input.Signer, - pCache PreimageCache, commitTx *wire.MsgTx, - localCommit channeldb.ChannelCommitment) (*LocalForceCloseSummary, error) { + commitTx *wire.MsgTx, localCommit channeldb.ChannelCommitment) ( + *LocalForceCloseSummary, error) { // Re-derive the original pkScript for to-self output within the // commitment transaction. We'll need this to find the corresponding @@ -5830,7 +5813,8 @@ func NewLocalForceCloseSummary(chanState *channeldb.OpenChannel, signer input.Si htlcResolutions, err := extractHtlcResolutions( SatPerKWeight(localCommit.FeePerKw), true, signer, localCommit.Htlcs, keyRing, &chanState.LocalChanCfg, - &chanState.RemoteChanCfg, txHash, pCache) + &chanState.RemoteChanCfg, txHash, + ) if err != nil { return nil, err } diff --git a/lnwallet/channel_test.go b/lnwallet/channel_test.go index 067e6258..3132fc56 100644 --- a/lnwallet/channel_test.go +++ b/lnwallet/channel_test.go @@ -19,7 +19,6 @@ import ( "github.com/lightningnetwork/lnd/chainntnfs" "github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/input" - "github.com/lightningnetwork/lnd/lntypes" "github.com/lightningnetwork/lnd/lnwire" ) @@ -544,10 +543,6 @@ func TestForceClose(t *testing.T) { t.Fatalf("Can't update the channel state: %v", err) } - // Before we force close Alice's channel, we'll add the pre-image of - // Bob's HTLC to her preimage cache. - aliceChannel.pCache.AddPreimages(lntypes.Preimage(preimageBob)) - // With the cache populated, we'll now attempt the force close // initiated by Alice. closeSummary, err := aliceChannel.ForceClose() @@ -681,8 +676,11 @@ func TestForceClose(t *testing.T) { receiverHtlcScript := closeSummary.CloseTx.TxOut[inHtlcIndex].PkScript // With the original pkscript located, we'll now verify that the second - // level transaction can spend from the multi-sig out. + // level transaction can spend from the multi-sig out. Supply the + // preimage manually. This is usually done by the contract resolver + // before publication. successTx := inHtlcResolution.SignedSuccessTx + successTx.TxIn[0].Witness[3] = preimageBob[:] vm, err = txscript.NewEngine(receiverHtlcScript, successTx, 0, txscript.StandardVerifyFlags, nil, nil, int64(htlcAmount.ToSatoshis())) @@ -778,10 +776,6 @@ func TestForceClose(t *testing.T) { "htlcs, got %v htlcs", 1, len(closeSummary.HtlcResolutions.IncomingHTLCs)) } - var zeroHash [32]byte - if closeSummary.HtlcResolutions.IncomingHTLCs[0].Preimage != zeroHash { - t.Fatalf("bob shouldn't know preimage but does") - } } // TestForceCloseDustOutput tests that if either side force closes with an @@ -1459,16 +1453,14 @@ func TestStateUpdatePersistence(t *testing.T) { } aliceChannelNew, err := NewLightningChannel( - aliceChannel.Signer, nil, aliceChannels[0], - aliceChannel.sigPool, + aliceChannel.Signer, aliceChannels[0], aliceChannel.sigPool, ) if err != nil { t.Fatalf("unable to create new channel: %v", err) } bobChannelNew, err := NewLightningChannel( - bobChannel.Signer, nil, bobChannels[0], - bobChannel.sigPool, + bobChannel.Signer, bobChannels[0], bobChannel.sigPool, ) if err != nil { t.Fatalf("unable to create new channel: %v", err) @@ -2645,13 +2637,13 @@ func TestChanSyncFullySynced(t *testing.T) { } aliceChannelNew, err := NewLightningChannel( - aliceChannel.Signer, nil, aliceChannels[0], aliceChannel.sigPool, + aliceChannel.Signer, aliceChannels[0], aliceChannel.sigPool, ) if err != nil { t.Fatalf("unable to create new channel: %v", err) } bobChannelNew, err := NewLightningChannel( - bobChannel.Signer, nil, bobChannels[0], bobChannel.sigPool, + bobChannel.Signer, bobChannels[0], bobChannel.sigPool, ) if err != nil { t.Fatalf("unable to create new channel: %v", err) @@ -2673,7 +2665,7 @@ func restartChannel(channelOld *LightningChannel) (*LightningChannel, error) { } channelNew, err := NewLightningChannel( - channelOld.Signer, channelOld.pCache, nodeChannels[0], + channelOld.Signer, nodeChannels[0], channelOld.sigPool, ) if err != nil { @@ -4943,11 +4935,6 @@ func TestChannelUnilateralCloseHtlcResolution(t *testing.T) { t.Fatalf("unable to close: %v", err) } - // Now that Bob has force closed, we'll modify Alice's pre image cache - // such that she now gains the ability to also settle the incoming HTLC - // from Bob. - aliceChannel.pCache.AddPreimages(lntypes.Preimage(preimageBob)) - // We'll then use Bob's transaction to trigger a spend notification for // Alice. closeTx := bobForceClose.CloseTx @@ -4958,7 +4945,7 @@ func TestChannelUnilateralCloseHtlcResolution(t *testing.T) { } aliceCloseSummary, err := NewUnilateralCloseSummary( aliceChannel.channelState, aliceChannel.Signer, - aliceChannel.pCache, spendDetail, + spendDetail, aliceChannel.channelState.RemoteCommitment, aliceChannel.channelState.RemoteCurrentRevocation, ) @@ -5108,7 +5095,7 @@ func TestChannelUnilateralClosePendingCommit(t *testing.T) { // our output wasn't picked up. aliceWrongCloseSummary, err := NewUnilateralCloseSummary( aliceChannel.channelState, aliceChannel.Signer, - aliceChannel.pCache, spendDetail, + spendDetail, aliceChannel.channelState.RemoteCommitment, aliceChannel.channelState.RemoteCurrentRevocation, ) @@ -5129,7 +5116,7 @@ func TestChannelUnilateralClosePendingCommit(t *testing.T) { } aliceCloseSummary, err := NewUnilateralCloseSummary( aliceChannel.channelState, aliceChannel.Signer, - aliceChannel.pCache, spendDetail, + spendDetail, aliceRemoteChainTip.Commitment, aliceChannel.channelState.RemoteNextRevocation, ) @@ -5926,7 +5913,7 @@ func TestChannelRestoreUpdateLogs(t *testing.T) { // We now re-create the channels, mimicking a restart. This should sync // the update logs up to the correct state set up above. newAliceChannel, err := NewLightningChannel( - aliceChannel.Signer, nil, aliceChannel.channelState, + aliceChannel.Signer, aliceChannel.channelState, aliceChannel.sigPool, ) if err != nil { @@ -5934,7 +5921,7 @@ func TestChannelRestoreUpdateLogs(t *testing.T) { } newBobChannel, err := NewLightningChannel( - bobChannel.Signer, nil, bobChannel.channelState, + bobChannel.Signer, bobChannel.channelState, bobChannel.sigPool, ) if err != nil { @@ -6008,7 +5995,7 @@ func restoreAndAssert(t *testing.T, channel *LightningChannel, numAddsLocal, numFailsLocal, numAddsRemote, numFailsRemote int) { newChannel, err := NewLightningChannel( - channel.Signer, nil, channel.channelState, + channel.Signer, channel.channelState, channel.sigPool, ) if err != nil { @@ -6318,8 +6305,7 @@ func TestChannelRestoreCommitHeight(t *testing.T) { expLocal, expRemote uint64) *LightningChannel { newChannel, err := NewLightningChannel( - channel.Signer, nil, channel.channelState, - channel.sigPool, + channel.Signer, channel.channelState, channel.sigPool, ) if err != nil { t.Fatalf("unable to create new channel: %v", err) diff --git a/lnwallet/interface.go b/lnwallet/interface.go index 395da6d1..01c5ceeb 100644 --- a/lnwallet/interface.go +++ b/lnwallet/interface.go @@ -10,7 +10,6 @@ import ( "github.com/btcsuite/btcd/wire" "github.com/btcsuite/btcutil" "github.com/btcsuite/btcwallet/wallet/txauthor" - "github.com/lightningnetwork/lnd/lntypes" ) // AddressType is an enum-like type which denotes the possible address types @@ -294,21 +293,6 @@ type MessageSigner interface { SignMessage(pubKey *btcec.PublicKey, msg []byte) (*btcec.Signature, error) } -// PreimageCache is an interface that represents a global cache for preimages. -// We'll utilize this cache to communicate the discovery of new preimages -// across sub-systems. -type PreimageCache interface { - // LookupPreimage attempts to look up a preimage according to its hash. - // If found, the preimage is returned along with true for the second - // argument. Otherwise, it'll return false. - LookupPreimage(hash lntypes.Hash) (lntypes.Preimage, bool) - - // AddPreimages adds a batch of newly discovered preimages to the global - // cache, and also signals any subscribers of the newly discovered - // witness. - AddPreimages(preimages ...lntypes.Preimage) error -} - // WalletDriver represents a "driver" for a particular concrete // WalletController implementation. A driver is identified by a globally unique // string identifier along with a 'New()' method which is responsible for diff --git a/lnwallet/test_utils.go b/lnwallet/test_utils.go index 392f4492..7d2abff4 100644 --- a/lnwallet/test_utils.go +++ b/lnwallet/test_utils.go @@ -301,13 +301,11 @@ func CreateTestChannels() (*LightningChannel, *LightningChannel, func(), error) aliceSigner := &input.MockSigner{Privkeys: aliceKeys} bobSigner := &input.MockSigner{Privkeys: bobKeys} - pCache := newMockPreimageCache() - // TODO(roasbeef): make mock version of pre-image store alicePool := NewSigPool(1, aliceSigner) channelAlice, err := NewLightningChannel( - aliceSigner, pCache, aliceChannelState, alicePool, + aliceSigner, aliceChannelState, alicePool, ) if err != nil { return nil, nil, nil, err @@ -316,7 +314,7 @@ func CreateTestChannels() (*LightningChannel, *LightningChannel, func(), error) bobPool := NewSigPool(1, bobSigner) channelBob, err := NewLightningChannel( - bobSigner, pCache, bobChannelState, bobPool, + bobSigner, bobChannelState, bobPool, ) if err != nil { return nil, nil, nil, err diff --git a/lnwallet/transactions_test.go b/lnwallet/transactions_test.go index b9eb3c47..27d6c2f2 100644 --- a/lnwallet/transactions_test.go +++ b/lnwallet/transactions_test.go @@ -780,8 +780,6 @@ func TestCommitmentAndHTLCTransactions(t *testing.T) { }, } - pCache := newMockPreimageCache() - for i, test := range testCases { expectedCommitmentTx, err := txFromHex(test.expectedCommitmentTxHex) if err != nil { @@ -848,7 +846,7 @@ func TestCommitmentAndHTLCTransactions(t *testing.T) { htlcResolutions, err := extractHtlcResolutions( SatPerKWeight(test.commitment.FeePerKw), true, signer, htlcs, keys, channel.localChanCfg, channel.remoteChanCfg, - commitTx.TxHash(), pCache, + commitTx.TxHash(), ) if err != nil { t.Errorf("Case %d: Failed to extract HTLC resolutions: %v", i, err) diff --git a/peer.go b/peer.go index 08b05f15..4c65290f 100644 --- a/peer.go +++ b/peer.go @@ -429,8 +429,7 @@ func (p *peer) QuitSignal() <-chan struct{} { func (p *peer) loadActiveChannels(chans []*channeldb.OpenChannel) error { for _, dbChan := range chans { lnChan, err := lnwallet.NewLightningChannel( - p.server.cc.signer, p.server.witnessBeacon, dbChan, - p.server.sigPool, + p.server.cc.signer, dbChan, p.server.sigPool, ) if err != nil { return err @@ -1789,8 +1788,7 @@ out: // set of active channels, so we can look it up later // easily according to its channel ID. lnChan, err := lnwallet.NewLightningChannel( - p.server.cc.signer, p.server.witnessBeacon, - newChan, p.server.sigPool, + p.server.cc.signer, newChan, p.server.sigPool, ) if err != nil { p.activeChanMtx.Unlock() diff --git a/rpcserver.go b/rpcserver.go index 858d6867..544393a2 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -1917,7 +1917,7 @@ func (r *rpcServer) fetchActiveChannel(chanPoint wire.OutPoint) ( // we create a fully populated channel state machine which // uses the db channel as backing storage. return lnwallet.NewLightningChannel( - r.server.cc.wallet.Cfg.Signer, nil, dbChan, nil, + r.server.cc.wallet.Cfg.Signer, dbChan, nil, ) } diff --git a/test_utils.go b/test_utils.go index 8d1fc3d1..044fee17 100644 --- a/test_utils.go +++ b/test_utils.go @@ -303,7 +303,7 @@ func createTestPeer(notifier chainntnfs.ChainNotifier, alicePool := lnwallet.NewSigPool(1, aliceSigner) channelAlice, err := lnwallet.NewLightningChannel( - aliceSigner, nil, aliceChannelState, alicePool, + aliceSigner, aliceChannelState, alicePool, ) if err != nil { return nil, nil, nil, nil, err @@ -312,7 +312,7 @@ func createTestPeer(notifier chainntnfs.ChainNotifier, bobPool := lnwallet.NewSigPool(1, bobSigner) channelBob, err := lnwallet.NewLightningChannel( - bobSigner, nil, bobChannelState, bobPool, + bobSigner, bobChannelState, bobPool, ) if err != nil { return nil, nil, nil, nil, err diff --git a/witness_beacon.go b/witness_beacon.go index 82835226..2971d93d 100644 --- a/witness_beacon.go +++ b/witness_beacon.go @@ -7,7 +7,6 @@ import ( "github.com/lightningnetwork/lnd/contractcourt" "github.com/lightningnetwork/lnd/invoices" "github.com/lightningnetwork/lnd/lntypes" - "github.com/lightningnetwork/lnd/lnwallet" ) // preimageSubscriber reprints an active subscription to be notified once the @@ -144,4 +143,3 @@ func (p *preimageBeacon) AddPreimages(preimages ...lntypes.Preimage) error { } var _ contractcourt.WitnessBeacon = (*preimageBeacon)(nil) -var _ lnwallet.PreimageCache = (*preimageBeacon)(nil)