multi: Update lnd to use new feature vector API.
This commit is contained in:
1 parent
af49752d4d
commit
9fd77a6e40
16 files changed
+49
-63
No files matched your search
@@ -29,7 +29,7 @@ type ChannelAnnouncement struct {
|
||||
// by the target node. This field can be used to signal the type of the
|
||||
// channel, or modifications to the fields that would normally follow
|
||||
// this vector.
|
||||
Features *FeatureVector
|
||||
Features *RawFeatureVector
|
||||
|
||||
// ChainHash denotes the target chain that this channel was opened
|
||||
// within. This value should be the genesis hash of the target chain.
|
||||
|
||||
+5
-1
@@ -170,10 +170,14 @@ type FeatureVector struct {
|
||||
}
|
||||
|
||||
// NewFeatureVector constructs a new FeatureVector from a raw feature vector and
|
||||
// mapping of feature definitions.
|
||||
// mapping of feature definitions. If the feature vector argument is nil, a new
|
||||
// one will be constructed with no enabled features.
|
||||
func NewFeatureVector(featureVector *RawFeatureVector,
|
||||
featureNames map[FeatureBit]string) *FeatureVector {
|
||||
|
||||
if featureVector == nil {
|
||||
featureVector = NewRawFeatureVector()
|
||||
}
|
||||
return &FeatureVector{
|
||||
RawFeatureVector: featureVector,
|
||||
featureNames: featureNames,
|
||||
|
||||
@@ -9,15 +9,15 @@ import "io"
|
||||
type Init struct {
|
||||
// GlobalFeatures is feature vector which affects HTLCs and thus are
|
||||
// also advertised to other nodes.
|
||||
GlobalFeatures *FeatureVector
|
||||
GlobalFeatures *RawFeatureVector
|
||||
|
||||
// LocalFeatures is feature vector which only affect the protocol
|
||||
// between two nodes.
|
||||
LocalFeatures *FeatureVector
|
||||
LocalFeatures *RawFeatureVector
|
||||
}
|
||||
|
||||
// NewInitMessage creates new instance of init message object.
|
||||
func NewInitMessage(gf, lf *FeatureVector) *Init {
|
||||
func NewInitMessage(gf *RawFeatureVector, lf *RawFeatureVector) *Init {
|
||||
return &Init{
|
||||
GlobalFeatures: gf,
|
||||
LocalFeatures: lf,
|
||||
|
||||
+4
-3
@@ -215,7 +215,7 @@ func writeElement(w io.Writer, element interface{}) error {
|
||||
if err := wire.WriteVarBytes(w, 0, e); err != nil {
|
||||
return err
|
||||
}
|
||||
case *FeatureVector:
|
||||
case *RawFeatureVector:
|
||||
if e == nil {
|
||||
return fmt.Errorf("cannot write nil feature vector")
|
||||
}
|
||||
@@ -435,8 +435,9 @@ func readElement(r io.Reader, element interface{}) error {
|
||||
return err
|
||||
}
|
||||
*e = pubKey
|
||||
case **FeatureVector:
|
||||
f, err := NewFeatureVectorFromReader(r)
|
||||
case **RawFeatureVector:
|
||||
f := NewRawFeatureVector()
|
||||
err = f.Decode(r)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+10
-16
@@ -51,16 +51,14 @@ func randPubKey() (*btcec.PublicKey, error) {
|
||||
return priv.PubKey(), nil
|
||||
}
|
||||
|
||||
func randFeatureVector(r *rand.Rand) *FeatureVector {
|
||||
numFeatures := r.Int31n(10000)
|
||||
features := make([]Feature, numFeatures)
|
||||
for i := int32(0); i < numFeatures; i++ {
|
||||
features[i] = Feature{
|
||||
Flag: featureFlag(rand.Int31n(2) + 1),
|
||||
func randRawFeatureVector(r *rand.Rand) *RawFeatureVector {
|
||||
featureVec := NewRawFeatureVector()
|
||||
for i := 0; i < 10000; i++ {
|
||||
if r.Int31n(2) == 0 {
|
||||
featureVec.Set(FeatureBit(i))
|
||||
}
|
||||
}
|
||||
|
||||
return NewFeatureVector(features)
|
||||
return featureVec
|
||||
}
|
||||
|
||||
func TestMaxOutPointIndex(t *testing.T) {
|
||||
@@ -139,11 +137,9 @@ func TestLightningWireProtocol(t *testing.T) {
|
||||
customTypeGen := map[MessageType]func([]reflect.Value, *rand.Rand){
|
||||
MsgInit: func(v []reflect.Value, r *rand.Rand) {
|
||||
req := NewInitMessage(
|
||||
randFeatureVector(r),
|
||||
randFeatureVector(r),
|
||||
randRawFeatureVector(r),
|
||||
randRawFeatureVector(r),
|
||||
)
|
||||
req.GlobalFeatures.featuresMap = nil
|
||||
req.LocalFeatures.featuresMap = nil
|
||||
|
||||
v[0] = reflect.ValueOf(*req)
|
||||
},
|
||||
@@ -351,9 +347,8 @@ func TestLightningWireProtocol(t *testing.T) {
|
||||
MsgChannelAnnouncement: func(v []reflect.Value, r *rand.Rand) {
|
||||
req := ChannelAnnouncement{
|
||||
ShortChannelID: NewShortChanIDFromInt(uint64(r.Int63())),
|
||||
Features: randFeatureVector(r),
|
||||
Features: randRawFeatureVector(r),
|
||||
}
|
||||
req.Features.featuresMap = nil
|
||||
req.NodeSig1 = testSig
|
||||
req.NodeSig2 = testSig
|
||||
req.BitcoinSig1 = testSig
|
||||
@@ -396,7 +391,7 @@ func TestLightningWireProtocol(t *testing.T) {
|
||||
|
||||
req := NodeAnnouncement{
|
||||
Signature: testSig,
|
||||
Features: randFeatureVector(r),
|
||||
Features: randRawFeatureVector(r),
|
||||
Timestamp: uint32(r.Int31()),
|
||||
Alias: a,
|
||||
RGBColor: RGB{
|
||||
@@ -407,7 +402,6 @@ func TestLightningWireProtocol(t *testing.T) {
|
||||
// TODO(roasbeef): proper gen rand addrs
|
||||
Addresses: testAddrs,
|
||||
}
|
||||
req.Features.featuresMap = nil
|
||||
|
||||
var err error
|
||||
req.NodeID, err = randPubKey()
|
||||
|
||||
@@ -59,7 +59,7 @@ type NodeAnnouncement struct {
|
||||
Signature *btcec.Signature
|
||||
|
||||
// Features is the list of protocol features this node supports.
|
||||
Features *FeatureVector
|
||||
Features *RawFeatureVector
|
||||
|
||||
// Timestamp allows ordering in the case of multiple announcements.
|
||||
Timestamp uint32
|
||||
|
||||
Reference in new issue
Block a user