multi: move lnd specific code to own package

pull/3/head
Oliver Gugger 4 years ago
parent 937db7b4aa
commit 9c2b85c21b
No known key found for this signature in database
GPG Key ID: 8E4256593F177720

@ -21,6 +21,7 @@ linters:
- gosec - gosec
- funlen - funlen
- maligned - maligned
- interfacer
issues: issues:
exclude-rules: exclude-rules:

@ -3,13 +3,13 @@ package main
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"github.com/guggero/chantools/btc"
"github.com/lightningnetwork/lnd/chanbackup"
"github.com/lightningnetwork/lnd/keychain"
"path" "path"
"github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcutil/hdkeychain"
"github.com/guggero/chantools/lnd"
"github.com/lightningnetwork/lnd/chanbackup"
"github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/channeldb"
"github.com/lightningnetwork/lnd/keychain"
) )
type chanBackupCommand struct { type chanBackupCommand struct {
@ -55,7 +55,7 @@ func (c *chanBackupCommand) Execute(_ []string) error {
return fmt.Errorf("error opening rescue DB: %v", err) return fmt.Errorf("error opening rescue DB: %v", err)
} }
multiFile := chanbackup.NewMultiFile(c.MultiFile) multiFile := chanbackup.NewMultiFile(c.MultiFile)
keyRing := &btc.HDKeyRing{ keyRing := &lnd.HDKeyRing{
ExtendedKey: extendedKey, ExtendedKey: extendedKey,
ChainParams: chainParams, ChainParams: chainParams,
} }
@ -70,7 +70,7 @@ func createChannelBackup(db *channeldb.DB, multiFile *chanbackup.MultiFile,
return fmt.Errorf("error extracting channel backup: %v", err) return fmt.Errorf("error extracting channel backup: %v", err)
} }
multi := &chanbackup.Multi{ multi := &chanbackup.Multi{
Version: chanbackup.DefaultMultiVersion, Version: chanbackup.DefaultMultiVersion,
StaticBackups: singles, StaticBackups: singles,
} }
var b bytes.Buffer var b bytes.Buffer

@ -65,7 +65,9 @@ func (c *compactDBCommand) compact(dst, src *bbolt.DB) error {
if err != nil { if err != nil {
return err return err
} }
defer tx.Rollback() defer func() {
_ = tx.Rollback()
}()
if err := c.walk(src, func(keys [][]byte, k, v []byte, seq uint64) error { if err := c.walk(src, func(keys [][]byte, k, v []byte, seq uint64) error {
// On each key/value, check if we have exceeded tx size. // On each key/value, check if we have exceeded tx size.
@ -166,9 +168,9 @@ func (c *compactDBCommand) walkBucket(b *bbolt.Bucket, keypath [][]byte,
if v == nil { if v == nil {
bkt := b.Bucket(k) bkt := b.Bucket(k)
if bkt == nil { if bkt == nil {
log.Warnf("Could not read bucket '%s' (full " + log.Warnf("Could not read bucket '%s' (full "+
"path '%s') database is likely " + "path '%s') database is likely "+
"corrupted. Continuing anyway but " + "corrupted. Continuing anyway but "+
"skipping corrupt bucket.", k, keypath) "skipping corrupt bucket.", k, keypath)
return nil return nil
} }

@ -5,7 +5,7 @@ import (
"github.com/btcsuite/btcutil" "github.com/btcsuite/btcutil"
"github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcutil/hdkeychain"
"github.com/guggero/chantools/btc" "github.com/guggero/chantools/lnd"
) )
type deriveKeyCommand struct { type deriveKeyCommand struct {
@ -41,11 +41,11 @@ func deriveKey(extendedKey *hdkeychain.ExtendedKey, path string,
neuter bool) error { neuter bool) error {
fmt.Printf("Deriving path %s for network %s.\n", path, chainParams.Name) fmt.Printf("Deriving path %s for network %s.\n", path, chainParams.Name)
parsedPath, err := btc.ParsePath(path) parsedPath, err := lnd.ParsePath(path)
if err != nil { if err != nil {
return fmt.Errorf("could not parse derivation path: %v", err) return fmt.Errorf("could not parse derivation path: %v", err)
} }
derivedKey, err := btc.DeriveChildren(extendedKey, parsedPath) derivedKey, err := lnd.DeriveChildren(extendedKey, parsedPath)
if err != nil { if err != nil {
return fmt.Errorf("could not derive children: %v", err) return fmt.Errorf("could not derive children: %v", err)
} }

@ -5,8 +5,8 @@ import (
"github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcutil/hdkeychain"
"github.com/davecgh/go-spew/spew" "github.com/davecgh/go-spew/spew"
"github.com/guggero/chantools/btc"
"github.com/guggero/chantools/dump" "github.com/guggero/chantools/dump"
"github.com/guggero/chantools/lnd"
"github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/chanbackup"
"github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/keychain"
) )
@ -41,7 +41,7 @@ func (c *dumpBackupCommand) Execute(_ []string) error {
return fmt.Errorf("backup file is required") return fmt.Errorf("backup file is required")
} }
multiFile := chanbackup.NewMultiFile(c.MultiFile) multiFile := chanbackup.NewMultiFile(c.MultiFile)
keyRing := &btc.HDKeyRing{ keyRing := &lnd.HDKeyRing{
ExtendedKey: extendedKey, ExtendedKey: extendedKey,
ChainParams: chainParams, ChainParams: chainParams,
} }

@ -7,7 +7,7 @@ import (
"time" "time"
"github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcutil/hdkeychain"
"github.com/guggero/chantools/btc" "github.com/guggero/chantools/lnd"
"github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/chanbackup"
"github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/keychain"
) )
@ -46,7 +46,7 @@ func (c *filterBackupCommand) Execute(_ []string) error {
return fmt.Errorf("backup file is required") return fmt.Errorf("backup file is required")
} }
multiFile := chanbackup.NewMultiFile(c.MultiFile) multiFile := chanbackup.NewMultiFile(c.MultiFile)
keyRing := &btc.HDKeyRing{ keyRing := &lnd.HDKeyRing{
ExtendedKey: extendedKey, ExtendedKey: extendedKey,
ChainParams: chainParams, ChainParams: chainParams,
} }

@ -6,7 +6,7 @@ import (
"time" "time"
"github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcutil/hdkeychain"
"github.com/guggero/chantools/btc" "github.com/guggero/chantools/lnd"
"github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/chanbackup"
"github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/keychain"
) )
@ -40,7 +40,7 @@ func (c *fixOldBackupCommand) Execute(_ []string) error {
return fmt.Errorf("backup file is required") return fmt.Errorf("backup file is required")
} }
multiFile := chanbackup.NewMultiFile(c.MultiFile) multiFile := chanbackup.NewMultiFile(c.MultiFile)
keyRing := &btc.HDKeyRing{ keyRing := &lnd.HDKeyRing{
ExtendedKey: extendedKey, ExtendedKey: extendedKey,
ChainParams: chainParams, ChainParams: chainParams,
} }
@ -48,7 +48,7 @@ func (c *fixOldBackupCommand) Execute(_ []string) error {
} }
func fixOldChannelBackup(multiFile *chanbackup.MultiFile, func fixOldChannelBackup(multiFile *chanbackup.MultiFile,
ring *btc.HDKeyRing) error { ring *lnd.HDKeyRing) error {
multi, err := multiFile.ExtractMulti(ring) multi, err := multiFile.ExtractMulti(ring)
if err != nil { if err != nil {

@ -14,6 +14,7 @@ import (
"github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcutil/hdkeychain"
"github.com/guggero/chantools/btc" "github.com/guggero/chantools/btc"
"github.com/guggero/chantools/dataformat" "github.com/guggero/chantools/dataformat"
"github.com/guggero/chantools/lnd"
"github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/channeldb"
"github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/input"
) )
@ -49,7 +50,7 @@ func (c *forceCloseCommand) Execute(_ []string) error {
return fmt.Errorf("rescue DB is required") return fmt.Errorf("rescue DB is required")
} }
db, err := channeldb.Open( db, err := channeldb.Open(
path.Dir(c.ChannelDB),channeldb.OptionSetSyncFreelist(true), path.Dir(c.ChannelDB), channeldb.OptionSetSyncFreelist(true),
channeldb.OptionReadOnly(true), channeldb.OptionReadOnly(true),
) )
if err != nil { if err != nil {
@ -73,7 +74,7 @@ func forceCloseChannels(extendedKey *hdkeychain.ExtendedKey,
return err return err
} }
api := &btc.ExplorerAPI{BaseURL: cfg.APIURL} api := &btc.ExplorerAPI{BaseURL: cfg.APIURL}
signer := &btc.Signer{ signer := &lnd.Signer{
ExtendedKey: extendedKey, ExtendedKey: extendedKey,
ChainParams: chainParams, ChainParams: chainParams,
} }
@ -103,7 +104,7 @@ func forceCloseChannels(extendedKey *hdkeychain.ExtendedKey,
} }
// Create signed transaction. // Create signed transaction.
lc := &btc.LightningChannel{ lc := &lnd.LightningChannel{
LocalChanCfg: channel.LocalChanCfg, LocalChanCfg: channel.LocalChanCfg,
RemoteChanCfg: channel.RemoteChanCfg, RemoteChanCfg: channel.RemoteChanCfg,
ChannelState: channel, ChannelState: channel,

@ -7,7 +7,7 @@ import (
"github.com/btcsuite/btcd/chaincfg" "github.com/btcsuite/btcd/chaincfg"
"github.com/btcsuite/btcutil" "github.com/btcsuite/btcutil"
"github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcutil/hdkeychain"
"github.com/guggero/chantools/btc" "github.com/guggero/chantools/lnd"
) )
const ( const (
@ -84,10 +84,10 @@ func (c *genImportScriptCommand) Execute(_ []string) error {
// External branch first (m/84'/<coinType>'/0'/0/x). // External branch first (m/84'/<coinType>'/0'/0/x).
for i := uint32(0); i < c.RecoveryWindow; i++ { for i := uint32(0); i < c.RecoveryWindow; i++ {
derivedKey, err := btc.DeriveChildren(extendedKey, []uint32{ derivedKey, err := lnd.DeriveChildren(extendedKey, []uint32{
btc.HardenedKeyStart + uint32(84), lnd.HardenedKeyStart + uint32(84),
btc.HardenedKeyStart + chainParams.HDCoinType, lnd.HardenedKeyStart + chainParams.HDCoinType,
btc.HardenedKeyStart + uint32(0), lnd.HardenedKeyStart + uint32(0),
0, 0,
i, i,
}) })
@ -102,10 +102,10 @@ func (c *genImportScriptCommand) Execute(_ []string) error {
// Now the internal branch (m/84'/<coinType>'/0'/1/x). // Now the internal branch (m/84'/<coinType>'/0'/1/x).
for i := uint32(0); i < c.RecoveryWindow; i++ { for i := uint32(0); i < c.RecoveryWindow; i++ {
derivedKey, err := btc.DeriveChildren(extendedKey, []uint32{ derivedKey, err := lnd.DeriveChildren(extendedKey, []uint32{
btc.HardenedKeyStart + uint32(84), lnd.HardenedKeyStart + uint32(84),
btc.HardenedKeyStart + chainParams.HDCoinType, lnd.HardenedKeyStart + chainParams.HDCoinType,
btc.HardenedKeyStart + uint32(0), lnd.HardenedKeyStart + uint32(0),
1, 1,
i, i,
}) })

@ -12,8 +12,8 @@ import (
"github.com/btcsuite/btcd/btcec" "github.com/btcsuite/btcd/btcec"
"github.com/btcsuite/btcutil" "github.com/btcsuite/btcutil"
"github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcutil/hdkeychain"
"github.com/guggero/chantools/btc"
"github.com/guggero/chantools/dataformat" "github.com/guggero/chantools/dataformat"
"github.com/guggero/chantools/lnd"
"github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/channeldb"
"github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/input"
"github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/keychain"
@ -197,10 +197,10 @@ func fillCache(extendedKey *hdkeychain.ExtendedKey) error {
cache = make([]*cacheEntry, cacheSize) cache = make([]*cacheEntry, cacheSize)
for i := 0; i < cacheSize; i++ { for i := 0; i < cacheSize; i++ {
key, err := btc.DeriveChildren(extendedKey, []uint32{ key, err := lnd.DeriveChildren(extendedKey, []uint32{
btc.HardenedKeyStart + uint32(keychain.BIP0043Purpose), lnd.HardenedKeyStart + uint32(keychain.BIP0043Purpose),
btc.HardenedKeyStart + chainParams.HDCoinType, lnd.HardenedKeyStart + chainParams.HDCoinType,
btc.HardenedKeyStart + lnd.HardenedKeyStart +
uint32(keychain.KeyFamilyPaymentBase), uint32(keychain.KeyFamilyPaymentBase),
0, 0,
uint32(i), uint32(i),

@ -12,6 +12,7 @@ import (
"github.com/btcsuite/btcutil/hdkeychain" "github.com/btcsuite/btcutil/hdkeychain"
"github.com/guggero/chantools/btc" "github.com/guggero/chantools/btc"
"github.com/guggero/chantools/dataformat" "github.com/guggero/chantools/dataformat"
"github.com/guggero/chantools/lnd"
"github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/input"
) )
@ -72,7 +73,7 @@ func sweepTimeLock(extendedKey *hdkeychain.ExtendedKey, apiURL string,
publish bool) error { publish bool) error {
// Create signer and transaction template. // Create signer and transaction template.
signer := &btc.Signer{ signer := &lnd.Signer{
ExtendedKey: extendedKey, ExtendedKey: extendedKey,
ChainParams: chainParams, ChainParams: chainParams,
} }

@ -111,7 +111,7 @@ func walletInfo(w *wallet.Wallet) error {
}, },
}) })
if err != nil { if err != nil {
return fmt.Errorf("unable to open key ring for coin type %d: " + return fmt.Errorf("unable to open key ring for coin type %d: "+
"%v", chainParams.HDCoinType, err) "%v", chainParams.HDCoinType, err)
} }
idPrivKey.Curve = btcec.S256() idPrivKey.Curve = btcec.S256()

@ -1,4 +1,4 @@
package btc package lnd
import ( import (
"github.com/btcsuite/btcd/txscript" "github.com/btcsuite/btcd/txscript"

@ -1,4 +1,4 @@
package btc package lnd
import ( import (
"fmt" "fmt"

@ -1,4 +1,4 @@
package btc package lnd
import ( import (
"fmt" "fmt"
Loading…
Cancel
Save