mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-20 02:27:21 +01:00
8147151fbf
This commit does to things: moves the prior ShortChannelID struct into a new short_channel_id.go file, and also implements the new ChannelID’s currently used within he specification. These new ID’s are 32-bytes in length and used during initial channel funding as well as during normal channel updates. During initial channel funding, the ID is to be a random 32-byte string, while once normal channel operation has began, the ID is to be (txid XOR index), where index is the index of the funding outpoint.
57 lines
1.9 KiB
Go
57 lines
1.9 KiB
Go
package lnwire
|
|
|
|
import "testing"
|
|
|
|
// TestChannelIDOutPointConversion ensures that the IsChanPoint always
|
|
// recognizes its seed OutPoint for all possible values of an output index.
|
|
func TestChannelIDOutPointConversion(t *testing.T) {
|
|
testChanPoint := *outpoint1
|
|
|
|
// For a given OutPoint, we'll run through all the possible output
|
|
// index values, mutating our test outpoint to match that output index.
|
|
for i := uint32(0); i < MaxFundingTxOutputs; i++ {
|
|
testChanPoint.Index = i
|
|
|
|
// With the output index mutated, we'll convert it into a
|
|
// ChannelID.
|
|
cid := NewChanIDFromOutPoint(&testChanPoint)
|
|
|
|
// Once the channel point has been converted to a channelID, it
|
|
// should recognize its original outpoint.
|
|
if !cid.IsChanPoint(&testChanPoint) {
|
|
t.Fatalf("channelID not recognized as seed channel "+
|
|
"point: cid=%v, op=%v", cid, testChanPoint)
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestGenPossibleOutPoints ensures taht the GenPossibleOutPoints generates a
|
|
// vali set of outpoints for a channelID. A set of outpoints is valid iff, the
|
|
// root outpoint (the outpoint that generated the ChannelID) is included in the
|
|
// returned set of outpoints.
|
|
func TestGenPossibleOutPoints(t *testing.T) {
|
|
// We'll first convert out test outpoint into a ChannelID.
|
|
testChanPoint := *outpoint1
|
|
chanID := NewChanIDFromOutPoint(&testChanPoint)
|
|
|
|
// With the chan ID created, we'll generate all possible root outpoints
|
|
// given this channel ID.
|
|
possibleOutPoints := chanID.GenPossibleOutPoints()
|
|
|
|
// If we run through the generated possible outpoints, the original
|
|
// root outpoint MUST be found in this generated set.
|
|
var opFound bool
|
|
for _, op := range possibleOutPoints {
|
|
if op == testChanPoint {
|
|
opFound = true
|
|
break
|
|
}
|
|
}
|
|
|
|
// If we weren't able to locate the original outpoint in the set of
|
|
// possible outpoints, then we'll fail the test.
|
|
if !opFound {
|
|
t.Fatalf("possible outpoints did not contain the root outpoint")
|
|
}
|
|
}
|