From 9c2b85c21b1690922300b004490f08b21b745ba1 Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Mon, 30 Mar 2020 18:14:04 +0200 Subject: [PATCH] multi: move lnd specific code to own package --- .golangci.yml | 1 + cmd/chantools/chanbackup.go | 10 +++++----- cmd/chantools/compactdb.go | 10 ++++++---- cmd/chantools/derivekey.go | 6 +++--- cmd/chantools/dumpbackup.go | 4 ++-- cmd/chantools/filterbackup.go | 4 ++-- cmd/chantools/fixoldbackup.go | 6 +++--- cmd/chantools/forceclose.go | 7 ++++--- cmd/chantools/genimportscript.go | 18 +++++++++--------- cmd/chantools/rescueclosed.go | 10 +++++----- cmd/chantools/sweeptimelock.go | 3 ++- cmd/chantools/walletinfo.go | 2 +- {btc => lnd}/channel.go | 2 +- {btc => lnd}/hdkeychain.go | 2 +- {btc => lnd}/signer.go | 2 +- 15 files changed, 46 insertions(+), 41 deletions(-) rename {btc => lnd}/channel.go (99%) rename {btc => lnd}/hdkeychain.go (99%) rename {btc => lnd}/signer.go (99%) diff --git a/.golangci.yml b/.golangci.yml index d640b34..ac52304 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -21,6 +21,7 @@ linters: - gosec - funlen - maligned + - interfacer issues: exclude-rules: diff --git a/cmd/chantools/chanbackup.go b/cmd/chantools/chanbackup.go index 8ddabd6..20d925a 100644 --- a/cmd/chantools/chanbackup.go +++ b/cmd/chantools/chanbackup.go @@ -3,13 +3,13 @@ package main import ( "bytes" "fmt" - "github.com/guggero/chantools/btc" - "github.com/lightningnetwork/lnd/chanbackup" - "github.com/lightningnetwork/lnd/keychain" "path" "github.com/btcsuite/btcutil/hdkeychain" + "github.com/guggero/chantools/lnd" + "github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/channeldb" + "github.com/lightningnetwork/lnd/keychain" ) type chanBackupCommand struct { @@ -55,7 +55,7 @@ func (c *chanBackupCommand) Execute(_ []string) error { return fmt.Errorf("error opening rescue DB: %v", err) } multiFile := chanbackup.NewMultiFile(c.MultiFile) - keyRing := &btc.HDKeyRing{ + keyRing := &lnd.HDKeyRing{ ExtendedKey: extendedKey, ChainParams: chainParams, } @@ -70,7 +70,7 @@ func createChannelBackup(db *channeldb.DB, multiFile *chanbackup.MultiFile, return fmt.Errorf("error extracting channel backup: %v", err) } multi := &chanbackup.Multi{ - Version: chanbackup.DefaultMultiVersion, + Version: chanbackup.DefaultMultiVersion, StaticBackups: singles, } var b bytes.Buffer diff --git a/cmd/chantools/compactdb.go b/cmd/chantools/compactdb.go index d87f3a4..f3cef7e 100644 --- a/cmd/chantools/compactdb.go +++ b/cmd/chantools/compactdb.go @@ -65,7 +65,9 @@ func (c *compactDBCommand) compact(dst, src *bbolt.DB) error { if err != nil { return err } - defer tx.Rollback() + defer func() { + _ = tx.Rollback() + }() 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. @@ -166,9 +168,9 @@ func (c *compactDBCommand) walkBucket(b *bbolt.Bucket, keypath [][]byte, if v == nil { bkt := b.Bucket(k) if bkt == nil { - log.Warnf("Could not read bucket '%s' (full " + - "path '%s') database is likely " + - "corrupted. Continuing anyway but " + + log.Warnf("Could not read bucket '%s' (full "+ + "path '%s') database is likely "+ + "corrupted. Continuing anyway but "+ "skipping corrupt bucket.", k, keypath) return nil } diff --git a/cmd/chantools/derivekey.go b/cmd/chantools/derivekey.go index 4085eae..a4b8e5e 100644 --- a/cmd/chantools/derivekey.go +++ b/cmd/chantools/derivekey.go @@ -5,7 +5,7 @@ import ( "github.com/btcsuite/btcutil" "github.com/btcsuite/btcutil/hdkeychain" - "github.com/guggero/chantools/btc" + "github.com/guggero/chantools/lnd" ) type deriveKeyCommand struct { @@ -41,11 +41,11 @@ func deriveKey(extendedKey *hdkeychain.ExtendedKey, path string, neuter bool) error { 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 { 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 { return fmt.Errorf("could not derive children: %v", err) } diff --git a/cmd/chantools/dumpbackup.go b/cmd/chantools/dumpbackup.go index f35dd56..fe9ca0e 100644 --- a/cmd/chantools/dumpbackup.go +++ b/cmd/chantools/dumpbackup.go @@ -5,8 +5,8 @@ import ( "github.com/btcsuite/btcutil/hdkeychain" "github.com/davecgh/go-spew/spew" - "github.com/guggero/chantools/btc" "github.com/guggero/chantools/dump" + "github.com/guggero/chantools/lnd" "github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/keychain" ) @@ -41,7 +41,7 @@ func (c *dumpBackupCommand) Execute(_ []string) error { return fmt.Errorf("backup file is required") } multiFile := chanbackup.NewMultiFile(c.MultiFile) - keyRing := &btc.HDKeyRing{ + keyRing := &lnd.HDKeyRing{ ExtendedKey: extendedKey, ChainParams: chainParams, } diff --git a/cmd/chantools/filterbackup.go b/cmd/chantools/filterbackup.go index 2eca6b7..26daf78 100644 --- a/cmd/chantools/filterbackup.go +++ b/cmd/chantools/filterbackup.go @@ -7,7 +7,7 @@ import ( "time" "github.com/btcsuite/btcutil/hdkeychain" - "github.com/guggero/chantools/btc" + "github.com/guggero/chantools/lnd" "github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/keychain" ) @@ -46,7 +46,7 @@ func (c *filterBackupCommand) Execute(_ []string) error { return fmt.Errorf("backup file is required") } multiFile := chanbackup.NewMultiFile(c.MultiFile) - keyRing := &btc.HDKeyRing{ + keyRing := &lnd.HDKeyRing{ ExtendedKey: extendedKey, ChainParams: chainParams, } diff --git a/cmd/chantools/fixoldbackup.go b/cmd/chantools/fixoldbackup.go index 6a5dc18..c6b7688 100644 --- a/cmd/chantools/fixoldbackup.go +++ b/cmd/chantools/fixoldbackup.go @@ -6,7 +6,7 @@ import ( "time" "github.com/btcsuite/btcutil/hdkeychain" - "github.com/guggero/chantools/btc" + "github.com/guggero/chantools/lnd" "github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/keychain" ) @@ -40,7 +40,7 @@ func (c *fixOldBackupCommand) Execute(_ []string) error { return fmt.Errorf("backup file is required") } multiFile := chanbackup.NewMultiFile(c.MultiFile) - keyRing := &btc.HDKeyRing{ + keyRing := &lnd.HDKeyRing{ ExtendedKey: extendedKey, ChainParams: chainParams, } @@ -48,7 +48,7 @@ func (c *fixOldBackupCommand) Execute(_ []string) error { } func fixOldChannelBackup(multiFile *chanbackup.MultiFile, - ring *btc.HDKeyRing) error { + ring *lnd.HDKeyRing) error { multi, err := multiFile.ExtractMulti(ring) if err != nil { diff --git a/cmd/chantools/forceclose.go b/cmd/chantools/forceclose.go index 4859a56..fcb40d9 100644 --- a/cmd/chantools/forceclose.go +++ b/cmd/chantools/forceclose.go @@ -14,6 +14,7 @@ import ( "github.com/btcsuite/btcutil/hdkeychain" "github.com/guggero/chantools/btc" "github.com/guggero/chantools/dataformat" + "github.com/guggero/chantools/lnd" "github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/input" ) @@ -49,7 +50,7 @@ func (c *forceCloseCommand) Execute(_ []string) error { return fmt.Errorf("rescue DB is required") } db, err := channeldb.Open( - path.Dir(c.ChannelDB),channeldb.OptionSetSyncFreelist(true), + path.Dir(c.ChannelDB), channeldb.OptionSetSyncFreelist(true), channeldb.OptionReadOnly(true), ) if err != nil { @@ -73,7 +74,7 @@ func forceCloseChannels(extendedKey *hdkeychain.ExtendedKey, return err } api := &btc.ExplorerAPI{BaseURL: cfg.APIURL} - signer := &btc.Signer{ + signer := &lnd.Signer{ ExtendedKey: extendedKey, ChainParams: chainParams, } @@ -103,7 +104,7 @@ func forceCloseChannels(extendedKey *hdkeychain.ExtendedKey, } // Create signed transaction. - lc := &btc.LightningChannel{ + lc := &lnd.LightningChannel{ LocalChanCfg: channel.LocalChanCfg, RemoteChanCfg: channel.RemoteChanCfg, ChannelState: channel, diff --git a/cmd/chantools/genimportscript.go b/cmd/chantools/genimportscript.go index 0f3f104..dc98d70 100644 --- a/cmd/chantools/genimportscript.go +++ b/cmd/chantools/genimportscript.go @@ -7,7 +7,7 @@ import ( "github.com/btcsuite/btcd/chaincfg" "github.com/btcsuite/btcutil" "github.com/btcsuite/btcutil/hdkeychain" - "github.com/guggero/chantools/btc" + "github.com/guggero/chantools/lnd" ) const ( @@ -84,10 +84,10 @@ func (c *genImportScriptCommand) Execute(_ []string) error { // External branch first (m/84'/'/0'/0/x). for i := uint32(0); i < c.RecoveryWindow; i++ { - derivedKey, err := btc.DeriveChildren(extendedKey, []uint32{ - btc.HardenedKeyStart + uint32(84), - btc.HardenedKeyStart + chainParams.HDCoinType, - btc.HardenedKeyStart + uint32(0), + derivedKey, err := lnd.DeriveChildren(extendedKey, []uint32{ + lnd.HardenedKeyStart + uint32(84), + lnd.HardenedKeyStart + chainParams.HDCoinType, + lnd.HardenedKeyStart + uint32(0), 0, i, }) @@ -102,10 +102,10 @@ func (c *genImportScriptCommand) Execute(_ []string) error { // Now the internal branch (m/84'/'/0'/1/x). for i := uint32(0); i < c.RecoveryWindow; i++ { - derivedKey, err := btc.DeriveChildren(extendedKey, []uint32{ - btc.HardenedKeyStart + uint32(84), - btc.HardenedKeyStart + chainParams.HDCoinType, - btc.HardenedKeyStart + uint32(0), + derivedKey, err := lnd.DeriveChildren(extendedKey, []uint32{ + lnd.HardenedKeyStart + uint32(84), + lnd.HardenedKeyStart + chainParams.HDCoinType, + lnd.HardenedKeyStart + uint32(0), 1, i, }) diff --git a/cmd/chantools/rescueclosed.go b/cmd/chantools/rescueclosed.go index 3abfc8c..02ae5e3 100644 --- a/cmd/chantools/rescueclosed.go +++ b/cmd/chantools/rescueclosed.go @@ -12,8 +12,8 @@ import ( "github.com/btcsuite/btcd/btcec" "github.com/btcsuite/btcutil" "github.com/btcsuite/btcutil/hdkeychain" - "github.com/guggero/chantools/btc" "github.com/guggero/chantools/dataformat" + "github.com/guggero/chantools/lnd" "github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" @@ -197,10 +197,10 @@ func fillCache(extendedKey *hdkeychain.ExtendedKey) error { cache = make([]*cacheEntry, cacheSize) for i := 0; i < cacheSize; i++ { - key, err := btc.DeriveChildren(extendedKey, []uint32{ - btc.HardenedKeyStart + uint32(keychain.BIP0043Purpose), - btc.HardenedKeyStart + chainParams.HDCoinType, - btc.HardenedKeyStart + + key, err := lnd.DeriveChildren(extendedKey, []uint32{ + lnd.HardenedKeyStart + uint32(keychain.BIP0043Purpose), + lnd.HardenedKeyStart + chainParams.HDCoinType, + lnd.HardenedKeyStart + uint32(keychain.KeyFamilyPaymentBase), 0, uint32(i), diff --git a/cmd/chantools/sweeptimelock.go b/cmd/chantools/sweeptimelock.go index 945071f..f5f6496 100644 --- a/cmd/chantools/sweeptimelock.go +++ b/cmd/chantools/sweeptimelock.go @@ -12,6 +12,7 @@ import ( "github.com/btcsuite/btcutil/hdkeychain" "github.com/guggero/chantools/btc" "github.com/guggero/chantools/dataformat" + "github.com/guggero/chantools/lnd" "github.com/lightningnetwork/lnd/input" ) @@ -72,7 +73,7 @@ func sweepTimeLock(extendedKey *hdkeychain.ExtendedKey, apiURL string, publish bool) error { // Create signer and transaction template. - signer := &btc.Signer{ + signer := &lnd.Signer{ ExtendedKey: extendedKey, ChainParams: chainParams, } diff --git a/cmd/chantools/walletinfo.go b/cmd/chantools/walletinfo.go index 681404c..374df4e 100644 --- a/cmd/chantools/walletinfo.go +++ b/cmd/chantools/walletinfo.go @@ -111,7 +111,7 @@ func walletInfo(w *wallet.Wallet) error { }, }) 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) } idPrivKey.Curve = btcec.S256() diff --git a/btc/channel.go b/lnd/channel.go similarity index 99% rename from btc/channel.go rename to lnd/channel.go index e5918f6..68e3c10 100644 --- a/btc/channel.go +++ b/lnd/channel.go @@ -1,4 +1,4 @@ -package btc +package lnd import ( "github.com/btcsuite/btcd/txscript" diff --git a/btc/hdkeychain.go b/lnd/hdkeychain.go similarity index 99% rename from btc/hdkeychain.go rename to lnd/hdkeychain.go index d21cc4a..71b8fc0 100644 --- a/btc/hdkeychain.go +++ b/lnd/hdkeychain.go @@ -1,4 +1,4 @@ -package btc +package lnd import ( "fmt" diff --git a/btc/signer.go b/lnd/signer.go similarity index 99% rename from btc/signer.go rename to lnd/signer.go index f158075..0f82ac6 100644 --- a/btc/signer.go +++ b/lnd/signer.go @@ -1,4 +1,4 @@ -package btc +package lnd import ( "fmt"