channeldb: eliminate ChanID in favor of FundingOutpoint
This commit eliminates a bit of redundancy within the OpenChannel struct by eschewing the ChanID field, in favor of simply the FundingOutpoint field.
This commit is contained in:
parent
a092b0d82c
commit
5780992f8d
@ -224,6 +224,10 @@ type ChannelConfig struct {
|
|||||||
// "time-travel" to a prior state.
|
// "time-travel" to a prior state.
|
||||||
type OpenChannel struct {
|
type OpenChannel struct {
|
||||||
// ShortChannelID encodes the exact location in the chain in which the
|
// ShortChannelID encodes the exact location in the chain in which the
|
||||||
|
// FundingOutpoint is the outpoint of the final funding transaction.
|
||||||
|
// This value uniquely and globally identities the channel within the
|
||||||
|
// target blockchain as specified by the chain hash parameter.
|
||||||
|
FundingOutpoint wire.OutPoint
|
||||||
// channel was initially confirmed. This includes: the block height,
|
// channel was initially confirmed. This includes: the block height,
|
||||||
// transaction index, and the output within the target transaction.
|
// transaction index, and the output within the target transaction.
|
||||||
ShortChanID lnwire.ShortChannelID
|
ShortChanID lnwire.ShortChannelID
|
||||||
@ -238,9 +242,6 @@ type OpenChannel struct {
|
|||||||
// channel has been established with.
|
// channel has been established with.
|
||||||
IdentityPub *btcec.PublicKey
|
IdentityPub *btcec.PublicKey
|
||||||
|
|
||||||
// ChanID is an identifier that uniquely identifies this channel
|
|
||||||
// globally within the blockchain.
|
|
||||||
ChanID *wire.OutPoint
|
|
||||||
|
|
||||||
// FeePerKw is the min satoshis/kilo-weight that should be paid within
|
// FeePerKw is the min satoshis/kilo-weight that should be paid within
|
||||||
// the commitment transaction for the entire duration of the channel's
|
// the commitment transaction for the entire duration of the channel's
|
||||||
@ -430,7 +431,7 @@ func (c *OpenChannel) fullSync(tx *bolt.Tx) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, c.ChanID); err != nil {
|
if err := writeOutpoint(&b, &c.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if chanIndexBucket.Get(b.Bytes()) == nil {
|
if chanIndexBucket.Get(b.Bytes()) == nil {
|
||||||
@ -665,7 +666,7 @@ func (c *OpenChannel) AppendToRevocationLog(delta *ChannelDelta) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return appendChannelLogEntry(logBucket, delta, c.ChanID)
|
return appendChannelLogEntry(logBucket, delta, &c.FundingOutpoint)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -728,7 +729,7 @@ func (c *OpenChannel) RevocationLogTail() (*ChannelDelta, error) {
|
|||||||
func (c *OpenChannel) CommitmentHeight() (uint64, error) {
|
func (c *OpenChannel) CommitmentHeight() (uint64, error) {
|
||||||
// TODO(roasbeef): this is super hacky, remedy during refactor!!!
|
// TODO(roasbeef): this is super hacky, remedy during refactor!!!
|
||||||
o := &OpenChannel{
|
o := &OpenChannel{
|
||||||
ChanID: c.ChanID,
|
FundingOutpoint: c.FundingOutpoint,
|
||||||
}
|
}
|
||||||
|
|
||||||
err := c.Db.View(func(tx *bolt.Tx) error {
|
err := c.Db.View(func(tx *bolt.Tx) error {
|
||||||
@ -771,7 +772,7 @@ func (c *OpenChannel) FindPreviousState(updateNum uint64) (*ChannelDelta, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
delta, err = fetchChannelLogEntry(logBucket, c.ChanID,
|
delta, err = fetchChannelLogEntry(logBucket, &c.FundingOutpoint,
|
||||||
updateNum)
|
updateNum)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
@ -883,7 +884,7 @@ func (c *OpenChannel) CloseChannel(summary *ChannelCloseSummary) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, c.ChanID); err != nil {
|
if err := writeOutpoint(&b, &c.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -905,7 +906,7 @@ func (c *OpenChannel) CloseChannel(summary *ChannelCloseSummary) error {
|
|||||||
// Now that the index to this channel has been deleted, purge
|
// Now that the index to this channel has been deleted, purge
|
||||||
// the remaining channel metadata from the database.
|
// the remaining channel metadata from the database.
|
||||||
if err := deleteOpenChannel(chanBucket, nodeChanBucket,
|
if err := deleteOpenChannel(chanBucket, nodeChanBucket,
|
||||||
outPointBytes, c.ChanID); err != nil {
|
outPointBytes, &c.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -913,7 +914,7 @@ func (c *OpenChannel) CloseChannel(summary *ChannelCloseSummary) error {
|
|||||||
// information stored within the revocation log.
|
// information stored within the revocation log.
|
||||||
logBucket := nodeChanBucket.Bucket(channelLogBucket)
|
logBucket := nodeChanBucket.Bucket(channelLogBucket)
|
||||||
if logBucket != nil {
|
if logBucket != nil {
|
||||||
err := wipeChannelLogEntries(logBucket, c.ChanID)
|
err := wipeChannelLogEntries(logBucket, &c.FundingOutpoint)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -954,7 +955,7 @@ func (c *OpenChannel) Snapshot() *ChannelSnapshot {
|
|||||||
|
|
||||||
snapshot := &ChannelSnapshot{
|
snapshot := &ChannelSnapshot{
|
||||||
RemoteIdentity: *c.IdentityPub,
|
RemoteIdentity: *c.IdentityPub,
|
||||||
ChannelPoint: c.ChanID,
|
ChannelPoint: &c.FundingOutpoint,
|
||||||
Capacity: c.Capacity,
|
Capacity: c.Capacity,
|
||||||
LocalBalance: c.OurBalance,
|
LocalBalance: c.OurBalance,
|
||||||
RemoteBalance: c.TheirBalance,
|
RemoteBalance: c.TheirBalance,
|
||||||
@ -1141,7 +1142,7 @@ func putOpenChannel(openChanBucket *bolt.Bucket, nodeChanBucket *bolt.Bucket,
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := putCurrentHtlcs(nodeChanBucket, channel.Htlcs,
|
if err := putCurrentHtlcs(nodeChanBucket, channel.Htlcs,
|
||||||
channel.ChanID); err != nil {
|
&channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1155,7 +1156,7 @@ func fetchOpenChannel(openChanBucket *bolt.Bucket, nodeChanBucket *bolt.Bucket,
|
|||||||
|
|
||||||
var err error
|
var err error
|
||||||
channel := &OpenChannel{
|
channel := &OpenChannel{
|
||||||
ChanID: chanID,
|
FundingOutpoint: *chanID,
|
||||||
}
|
}
|
||||||
|
|
||||||
// First, read out the fields of the channel update less frequently.
|
// First, read out the fields of the channel update less frequently.
|
||||||
@ -1284,7 +1285,7 @@ func putChanCapacity(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
|||||||
scratch3 := make([]byte, 8)
|
scratch3 := make([]byte, 8)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1329,7 +1330,7 @@ func deleteChanCapacity(openChanBucket *bolt.Bucket, chanID []byte) error {
|
|||||||
func fetchChanCapacity(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func fetchChanCapacity(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
// A byte slice re-used to compute each key prefix below.
|
// A byte slice re-used to compute each key prefix below.
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1356,7 +1357,7 @@ func putChanFeePerKw(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
|||||||
byteOrder.PutUint64(scratch, uint64(channel.FeePerKw))
|
byteOrder.PutUint64(scratch, uint64(channel.FeePerKw))
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1408,7 +1409,7 @@ func deleteChanMinFeePerKb(openChanBucket *bolt.Bucket, chanID []byte) error {
|
|||||||
|
|
||||||
func fetchChanMinFeePerKb(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func fetchChanMinFeePerKb(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1475,7 +1476,7 @@ func putChanNumUpdates(openChanBucket *bolt.Bucket, channel *OpenChannel) error
|
|||||||
byteOrder.PutUint64(scratch, channel.NumUpdates)
|
byteOrder.PutUint64(scratch, channel.NumUpdates)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1495,7 +1496,7 @@ func deleteChanNumUpdates(openChanBucket *bolt.Bucket, chanID []byte) error {
|
|||||||
|
|
||||||
func fetchChanNumUpdates(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func fetchChanNumUpdates(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1514,7 +1515,7 @@ func putChanAmountsTransferred(openChanBucket *bolt.Bucket, channel *OpenChannel
|
|||||||
scratch2 := make([]byte, 8)
|
scratch2 := make([]byte, 8)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1547,7 +1548,7 @@ func deleteChanAmountsTransferred(openChanBucket *bolt.Bucket, chanID []byte) er
|
|||||||
|
|
||||||
func fetchChanAmountsTransferred(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func fetchChanAmountsTransferred(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1569,7 +1570,7 @@ func putChanIsPending(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
|||||||
scratch := make([]byte, 2)
|
scratch := make([]byte, 2)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1595,7 +1596,7 @@ func deleteChanIsPending(openChanBucket *bolt.Bucket, chanID []byte) error {
|
|||||||
|
|
||||||
func fetchChanIsPending(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func fetchChanIsPending(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1615,7 +1616,7 @@ func fetchChanIsPending(openChanBucket *bolt.Bucket, channel *OpenChannel) error
|
|||||||
|
|
||||||
func putChanConfInfo(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func putChanConfInfo(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1633,7 +1634,7 @@ func putChanConfInfo(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
|||||||
|
|
||||||
func fetchChanConfInfo(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func fetchChanConfInfo(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1660,7 +1661,7 @@ func deleteChanConfInfo(openChanBucket *bolt.Bucket, chanID []byte) error {
|
|||||||
func putChannelIDs(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func putChannelIDs(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
// TODO(roasbeef): just pass in chanID everywhere for puts
|
// TODO(roasbeef): just pass in chanID everywhere for puts
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1687,7 +1688,7 @@ func fetchChannelIDs(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
|||||||
b bytes.Buffer
|
b bytes.Buffer
|
||||||
)
|
)
|
||||||
|
|
||||||
if err = writeOutpoint(&b, channel.ChanID); err != nil {
|
if err = writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1738,7 +1739,7 @@ func putChanCommitFee(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
|||||||
byteOrder.PutUint64(scratch, uint64(channel.CommitFee))
|
byteOrder.PutUint64(scratch, uint64(channel.CommitFee))
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1751,7 +1752,7 @@ func putChanCommitFee(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
|||||||
|
|
||||||
func fetchChanCommitFee(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func fetchChanCommitFee(openChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1799,7 +1800,7 @@ func fetchChanCommitKeys(nodeChanBucket *bolt.Bucket, channel *OpenChannel) erro
|
|||||||
|
|
||||||
func putChanCommitTxns(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func putChanCommitTxns(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var bc bytes.Buffer
|
var bc bytes.Buffer
|
||||||
if err := writeOutpoint(&bc, channel.ChanID); err != nil {
|
if err := writeOutpoint(&bc, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
txnsKey := make([]byte, len(commitTxnsKey)+bc.Len())
|
txnsKey := make([]byte, len(commitTxnsKey)+bc.Len())
|
||||||
@ -1840,7 +1841,7 @@ func deleteChanCommitTxns(nodeChanBucket *bolt.Bucket, chanID []byte) error {
|
|||||||
func fetchChanCommitTxns(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func fetchChanCommitTxns(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var bc bytes.Buffer
|
var bc bytes.Buffer
|
||||||
var err error
|
var err error
|
||||||
if err = writeOutpoint(&bc, channel.ChanID); err != nil {
|
if err = writeOutpoint(&bc, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
txnsKey := make([]byte, len(commitTxnsKey)+bc.Len())
|
txnsKey := make([]byte, len(commitTxnsKey)+bc.Len())
|
||||||
@ -1876,7 +1877,7 @@ func fetchChanCommitTxns(nodeChanBucket *bolt.Bucket, channel *OpenChannel) erro
|
|||||||
|
|
||||||
func putChanFundingInfo(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func putChanFundingInfo(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var bc bytes.Buffer
|
var bc bytes.Buffer
|
||||||
if err := writeOutpoint(&bc, channel.ChanID); err != nil {
|
if err := writeOutpoint(&bc, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
fundTxnKey := make([]byte, len(fundingTxnKey)+bc.Len())
|
fundTxnKey := make([]byte, len(fundingTxnKey)+bc.Len())
|
||||||
@ -1939,7 +1940,7 @@ func deleteChanFundingInfo(nodeChanBucket *bolt.Bucket, chanID []byte) error {
|
|||||||
|
|
||||||
func fetchChanFundingInfo(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func fetchChanFundingInfo(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
fundTxnKey := make([]byte, len(fundingTxnKey)+b.Len())
|
fundTxnKey := make([]byte, len(fundingTxnKey)+b.Len())
|
||||||
@ -2054,7 +2055,7 @@ func deleteChanPreimageState(nodeChanBucket *bolt.Bucket, chanID []byte) error {
|
|||||||
|
|
||||||
func fetchChanPreimageState(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
func fetchChanPreimageState(nodeChanBucket *bolt.Bucket, channel *OpenChannel) error {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
if err := writeOutpoint(&b, channel.ChanID); err != nil {
|
if err := writeOutpoint(&b, &channel.FundingOutpoint); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
preimageKey := make([]byte, len(preimageStateKey)+b.Len())
|
preimageKey := make([]byte, len(preimageStateKey)+b.Len())
|
||||||
|
Loading…
Reference in New Issue
Block a user