mirror of https://github.com/BTCPrivate/lnd.git
lnwallet: set commit tnx related info in ChannelReservation
* Future commit will ditch all the thread-safe “getter” like methods. We’re all adults just make sure to grab the lock. * All wallet mutation funcs will also document which fields are set after completion of the request * Set shaChain, delivery address, commitment key
This commit is contained in:
parent
c7d604fd0b
commit
34e35fe2d5
|
@ -11,6 +11,8 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
|
"li.lan/labs/plasma/revocation"
|
||||||
|
|
||||||
"github.com/btcsuite/btcd/btcec"
|
"github.com/btcsuite/btcd/btcec"
|
||||||
"github.com/btcsuite/btcd/chaincfg"
|
"github.com/btcsuite/btcd/chaincfg"
|
||||||
"github.com/btcsuite/btcd/txscript"
|
"github.com/btcsuite/btcd/txscript"
|
||||||
|
@ -402,14 +404,47 @@ func (l *LightningWallet) handleFundingReserveRequest(req *initFundingReserveMsg
|
||||||
|
|
||||||
// TODO(roasbeef): re-calculate fees here to minFeePerKB, may need more inputs
|
// TODO(roasbeef): re-calculate fees here to minFeePerKB, may need more inputs
|
||||||
|
|
||||||
multiSigKey, err := l.getNextMultiSigKey()
|
// TODO(roasbeef): use wallet.CurrentAddress() here instead? Solves the
|
||||||
|
// problem of 'wasted' unused addrtesses.
|
||||||
|
// Grab two fresh keys from out HD chain, one will be used for the
|
||||||
|
// multi-sig funding transaction, and the other for the commitment
|
||||||
|
// transaction.
|
||||||
|
multiSigKey, err := l.getNextRawKey()
|
||||||
|
if err != nil {
|
||||||
|
req.err <- err
|
||||||
|
req.resp <- nil
|
||||||
|
return
|
||||||
|
}
|
||||||
|
commitKey, err := l.getNextRawKey()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
req.err <- err
|
req.err <- err
|
||||||
req.resp <- nil
|
req.resp <- nil
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
reservation.partialState.multiSigKey = multiSigKey
|
reservation.partialState.multiSigKey = multiSigKey
|
||||||
|
reservation.partialState.ourCommitKey = commitKey
|
||||||
|
|
||||||
|
// Generate a fresh address to be used in the case of a cooperative
|
||||||
|
// channel close.
|
||||||
|
// TODO(roasbeef): same here
|
||||||
|
//deliveryAddress, err := l.wallet.NewChangeAddress(waddrmgr.DefaultAccountNum)
|
||||||
|
addrs, err := l.wallet.Manager.NextInternalAddresses(waddrmgr.DefaultAccountNum, 1)
|
||||||
|
if err != nil {
|
||||||
|
// TODO(roasbeef): make into func sendErorr()
|
||||||
|
req.err <- err
|
||||||
|
req.resp <- nil
|
||||||
|
return
|
||||||
|
}
|
||||||
|
reservation.partialState.ourDeliveryAddress = addrs[0].Address()
|
||||||
|
|
||||||
|
// Create a new shaChain for verifiable transaction revocations.
|
||||||
|
shaChain, err := revocation.NewHyperShaChainFromSeed(nil, 0)
|
||||||
|
if err != nil {
|
||||||
|
req.err <- err
|
||||||
|
req.resp <- nil
|
||||||
|
return
|
||||||
|
}
|
||||||
|
reservation.partialState.ourShaChain = shaChain
|
||||||
|
|
||||||
// Funding reservation request succesfully handled. The funding inputs
|
// Funding reservation request succesfully handled. The funding inputs
|
||||||
// will be marked as unavailable until the reservation is either
|
// will be marked as unavailable until the reservation is either
|
||||||
|
@ -669,7 +704,7 @@ func (l *LightningWallet) handleFundingCounterPartySigs(msg *addCounterPartySigs
|
||||||
|
|
||||||
// nextMultiSigKey...
|
// nextMultiSigKey...
|
||||||
// TODO(roasbeef): on shutdown, write state of pending keys, then read back?
|
// TODO(roasbeef): on shutdown, write state of pending keys, then read back?
|
||||||
func (l *LightningWallet) getNextMultiSigKey() (*btcec.PrivateKey, error) {
|
func (l *LightningWallet) getNextRawKey() (*btcec.PrivateKey, error) {
|
||||||
l.lmtx.Lock()
|
l.lmtx.Lock()
|
||||||
defer l.lmtx.Unlock()
|
defer l.lmtx.Unlock()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue