config: add a new --debughtlc config parameter
This commit adds a new configuration parameter to the deamon: ‘DebugHTLC’. When true, all outgoing HTLC’s sent via the RPC interface will be sent paying to a special rHash value which all lnd nodes also with the flag activated know the preimage to. Therefore all payments sent to a 1-hop node will immediately be settled by that node. By default, this flag is false, it it only intended to be used to exercise local changes to 1-hop behavior manually.
This commit is contained in:
parent
0c4293ba82
commit
39c9dfb9e4
@ -68,6 +68,7 @@ type config struct {
|
||||
TestNet3 bool `long:"testnet" description:"Use the test network"`
|
||||
SimNet bool `long:"simnet" description:"Use the simulation test network"`
|
||||
SegNet bool `long:"segnet" description:"Use the segragated witness test network"`
|
||||
DebugHTLC bool `long:"debughtlc" description:"Activate the debug htlc mode. With the debug HTLC mode, all payments sent use a pre-determined R-Hash. Additionally, all HTLC's sent to a node with the debug HTLC R-Hash are immediately settled in the next available state transition."`
|
||||
}
|
||||
|
||||
// loadConfig initializes and parses the config using a config file and command
|
||||
|
12
rpcserver.go
12
rpcserver.go
@ -458,12 +458,22 @@ func (r *rpcServer) SendPayment(paymentStream lnrpc.Lightning_SendPaymentServer)
|
||||
return err
|
||||
}
|
||||
|
||||
// If we're in debug HTLC mode, then all outgoing
|
||||
// HTLC's will pay to the same debug rHash. Otherwise,
|
||||
// we pay to the rHash specified within the RPC
|
||||
// request.
|
||||
var rHash [32]byte
|
||||
if cfg.DebugHTLC {
|
||||
rHash = debugHash
|
||||
} else {
|
||||
copy(rHash[:], nextPayment.PaymentHash)
|
||||
}
|
||||
// Craft an HTLC packet to send to the routing sub-system. The
|
||||
// meta-data within this packet will be used to route the
|
||||
// payment through the network.
|
||||
htlcAdd := &lnwire.HTLCAddRequest{
|
||||
Amount: lnwire.CreditsAmount(nextPayment.Amt),
|
||||
RedemptionHashes: [][32]byte{debugHash},
|
||||
RedemptionHashes: [][32]byte{rHash},
|
||||
}
|
||||
destAddr, err := wire.NewShaHash(nextPayment.Dest)
|
||||
if err != nil {
|
||||
|
@ -104,6 +104,15 @@ func newServer(listenAddrs []string, notifier chainntnfs.ChainNotifier,
|
||||
quit: make(chan struct{}),
|
||||
}
|
||||
|
||||
// If the debug HTLC flag is on, then we invoice a "master debug"
|
||||
// invoice which all outgoing payments will be sent and all incoming
|
||||
// HTLC's with the debug R-Hash immediately settled.
|
||||
if cfg.DebugHTLC {
|
||||
kiloCoin := btcutil.Amount(btcutil.SatoshiPerBitcoin * 1000)
|
||||
s.invoices.AddDebugInvoice(kiloCoin, *debugPre)
|
||||
srvrLog.Debugf("Debug HTLC invoice inserted, preimage=%x, hash=%x",
|
||||
debugPre[:], debugHash[:])
|
||||
}
|
||||
|
||||
s.utxoNursery = newUtxoNursery(notifier, wallet)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user