Skip to content

Commit 9440222

Browse files
committed
htlcswitch: create dynamic commit negotiation state machine api
1 parent 3da5224 commit 9440222

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

htlcswitch/dyncomm_negotiator.go

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package htlcswitch
2+
3+
import (
4+
"github.com/btcsuite/btcd/btcec/v2"
5+
"github.com/btcsuite/btcd/btcutil"
6+
"github.com/lightningnetwork/lnd/fn"
7+
"github.com/lightningnetwork/lnd/lnwallet/chainfee"
8+
"github.com/lightningnetwork/lnd/lnwire"
9+
)
10+
11+
type DynUpdate func(*lnwire.DynPropose)
12+
13+
func WithDustLimit(amt btcutil.Amount) DynUpdate {
14+
return func(dp *lnwire.DynPropose) {
15+
dp.DustLimit = fn.Some(amt)
16+
}
17+
}
18+
19+
func WithMaxValueInFlight(amt lnwire.MilliSatoshi) DynUpdate {
20+
return func(dp *lnwire.DynPropose) {
21+
dp.MaxValueInFlight = fn.Some(amt)
22+
}
23+
}
24+
25+
func WithChannelReserve(amt btcutil.Amount) DynUpdate {
26+
return func(dp *lnwire.DynPropose) {
27+
dp.ChannelReserve = fn.Some(amt)
28+
}
29+
}
30+
31+
func WithCsvDelay(blks uint16) DynUpdate {
32+
return func(dp *lnwire.DynPropose) {
33+
dp.CsvDelay = fn.Some(blks)
34+
}
35+
}
36+
37+
func WithMaxAcceptedHTLCs(max uint16) DynUpdate {
38+
return func(dp *lnwire.DynPropose) {
39+
dp.MaxAcceptedHTLCs = fn.Some(max)
40+
}
41+
}
42+
43+
func WithFundingKey(key btcec.PublicKey) DynUpdate {
44+
return func(dp *lnwire.DynPropose) {
45+
dp.FundingKey = fn.Some(key)
46+
}
47+
}
48+
49+
func WithChannelType(ty lnwire.ChannelType,
50+
rate chainfee.SatPerKWeight) DynUpdate {
51+
52+
return func(dp *lnwire.DynPropose) {
53+
dp.ChannelType = fn.Some(ty)
54+
dp.KickoffFeerate = fn.Some(rate)
55+
}
56+
}
57+
58+
type dyncommNegotiator struct {}
59+
60+
type DynResponse = fn.Either[lnwire.DynAck, lnwire.DynReject]
61+
62+
func (*dyncommNegotiator) recvDynPropose(msg lnwire.DynPropose) (
63+
DynResponse, error) {
64+
65+
panic("NOT IMPLEMENTED: dyncommNegotiator.recvDynPropose")
66+
}
67+
68+
func (*dyncommNegotiator) recvDynAck(msg lnwire.DynAck) (lnwire.DynPropose,
69+
error) {
70+
71+
panic("NOT IMPLEMENTED: dyncommNegotiator.recvDynAck")
72+
}
73+
74+
func (*dyncommNegotiator) recvDynReject(msg lnwire.DynReject) error {
75+
panic("NOT IMPLEMENTED: dyncommNegotiator.recvDynReject")
76+
}
77+
78+
func (*dyncommNegotiator) sendDynPropose(
79+
updates ...DynUpdate) lnwire.DynPropose {
80+
81+
panic("NOT IMPLEMENTED: dyncommNegotiator.sendDynPropose")
82+
}
83+
84+
func (*dyncommNegotiator) reset() {
85+
panic("NOT IMPLEMENTED: dyncommNegotiator.reset")
86+
}

0 commit comments

Comments
 (0)