peer+rpcserver: use new conf scaling for notifications
This commit is contained in:
1 parent
4f43717d4f
commit
931b54e848
2 files changed
+26
-15
No files matched your search
+18
-14
@@ -4465,14 +4465,19 @@ func (p *Brontide) finalizeChanClosure(chanCloser *chancloser.ChanCloser) {
|
|||||||
localOut := chanCloser.LocalCloseOutput()
|
localOut := chanCloser.LocalCloseOutput()
|
||||||
remoteOut := chanCloser.RemoteCloseOutput()
|
remoteOut := chanCloser.RemoteCloseOutput()
|
||||||
auxOut := chanCloser.AuxOutputs()
|
auxOut := chanCloser.AuxOutputs()
|
||||||
go WaitForChanToClose(
|
// Determine the number of confirmations to wait before
|
||||||
chanCloser.NegotiationHeight(), notifier, errChan,
|
// signaling a successful cooperative close, scaled by
|
||||||
&chanPoint, &closingTxid, closingTx.TxOut[0].PkScript, func() {
|
// channel capacity (see CloseConfsForCapacity).
|
||||||
// Respond to the local subsystem which requested the
|
numConfs := lnwallet.CloseConfsForCapacity(chanCloser.Channel().Capacity)
|
||||||
// channel closure.
|
|
||||||
if closeReq != nil {
|
go WaitForChanToClose(
|
||||||
closeReq.Updates <- &ChannelCloseUpdate{
|
chanCloser.NegotiationHeight(), notifier, errChan,
|
||||||
ClosingTxid: closingTxid[:],
|
&chanPoint, &closingTxid, closingTx.TxOut[0].PkScript, numConfs, func() {
|
||||||
|
// Respond to the local subsystem which requested the
|
||||||
|
// channel closure.
|
||||||
|
if closeReq != nil {
|
||||||
|
closeReq.Updates <- &ChannelCloseUpdate{
|
||||||
|
ClosingTxid: closingTxid[:],
|
||||||
Success: true,
|
Success: true,
|
||||||
LocalCloseOutput: localOut,
|
LocalCloseOutput: localOut,
|
||||||
RemoteCloseOutput: remoteOut,
|
RemoteCloseOutput: remoteOut,
|
||||||
@@ -4489,16 +4494,15 @@ func (p *Brontide) finalizeChanClosure(chanCloser *chancloser.ChanCloser) {
|
|||||||
// finally the callback will be executed. If any error is encountered within
|
// finally the callback will be executed. If any error is encountered within
|
||||||
// the function, then it will be sent over the errChan.
|
// the function, then it will be sent over the errChan.
|
||||||
func WaitForChanToClose(bestHeight uint32, notifier chainntnfs.ChainNotifier,
|
func WaitForChanToClose(bestHeight uint32, notifier chainntnfs.ChainNotifier,
|
||||||
errChan chan error, chanPoint *wire.OutPoint,
|
errChan chan error, chanPoint *wire.OutPoint,
|
||||||
closingTxID *chainhash.Hash, closeScript []byte, cb func()) {
|
closingTxID *chainhash.Hash, closeScript []byte, numConfs uint32, cb func()) {
|
||||||
|
|
||||||
peerLog.Infof("Waiting for confirmation of close of ChannelPoint(%v) "+
|
peerLog.Infof("Waiting for confirmation of close of ChannelPoint(%v) "+
|
||||||
"with txid: %v", chanPoint, closingTxID)
|
"with txid: %v", chanPoint, closingTxID)
|
||||||
|
|
||||||
// TODO(roasbeef): add param for num needed confs
|
confNtfn, err := notifier.RegisterConfirmationsNtfn(
|
||||||
confNtfn, err := notifier.RegisterConfirmationsNtfn(
|
closingTxID, closeScript, numConfs, bestHeight,
|
||||||
closingTxID, closeScript, 1, bestHeight,
|
)
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errChan != nil {
|
if errChan != nil {
|
||||||
errChan <- err
|
errChan <- err
|
||||||
|
|||||||
+8
-1
@@ -2845,9 +2845,16 @@ func (r *rpcServer) CloseChannel(in *lnrpc.CloseChannelRequest,
|
|||||||
|
|
||||||
errChan = make(chan error, 1)
|
errChan = make(chan error, 1)
|
||||||
notifier := r.server.cc.ChainNotifier
|
notifier := r.server.cc.ChainNotifier
|
||||||
|
|
||||||
|
// For force closes, we notify the RPC client immediately after
|
||||||
|
// 1 confirmation. The actual security-critical confirmation
|
||||||
|
// waiting is handled by the channel arbitrator.
|
||||||
|
numConfs := uint32(1)
|
||||||
|
|
||||||
go peer.WaitForChanToClose(
|
go peer.WaitForChanToClose(
|
||||||
uint32(bestHeight), notifier, errChan, chanPoint,
|
uint32(bestHeight), notifier, errChan, chanPoint,
|
||||||
&closingTxid, closingTx.TxOut[0].PkScript, func() {
|
&closingTxid, closingTx.TxOut[0].PkScript, numConfs,
|
||||||
|
func() {
|
||||||
// Respond to the local subsystem which
|
// Respond to the local subsystem which
|
||||||
// requested the channel closure.
|
// requested the channel closure.
|
||||||
updateChan <- &peer.ChannelCloseUpdate{
|
updateChan <- &peer.ChannelCloseUpdate{
|
||||||
|
|||||||
Reference in new issue
Block a user