Skip to content

Commit 72f6fe8

Browse files
committed
htlcswitch: create dynamic commit negotiation state machine api
1 parent 6678f08 commit 72f6fe8

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

htlcswitch/dyncomm_negotiator.go

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

0 commit comments

Comments
 (0)