mirror of https://github.com/guggero/chantools
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.6 KiB
Go
64 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/btcsuite/btcutil/hdkeychain"
|
|
"github.com/davecgh/go-spew/spew"
|
|
"github.com/guggero/chantools/dump"
|
|
"github.com/guggero/chantools/lnd"
|
|
"github.com/lightningnetwork/lnd/chanbackup"
|
|
"github.com/lightningnetwork/lnd/keychain"
|
|
)
|
|
|
|
type dumpBackupCommand struct {
|
|
RootKey string `long:"rootkey" description:"BIP32 HD root key of the wallet that was used to create the backup. Leave empty to prompt for lnd 24 word aezeed."`
|
|
MultiFile string `long:"multi_file" description:"The lnd channel.backup file to dump."`
|
|
}
|
|
|
|
func (c *dumpBackupCommand) Execute(_ []string) error {
|
|
setupChainParams(cfg)
|
|
|
|
var (
|
|
extendedKey *hdkeychain.ExtendedKey
|
|
err error
|
|
)
|
|
|
|
// Check that root key is valid or fall back to console input.
|
|
switch {
|
|
case c.RootKey != "":
|
|
extendedKey, err = hdkeychain.NewKeyFromString(c.RootKey)
|
|
|
|
default:
|
|
extendedKey, _, err = lnd.ReadAezeedFromTerminal(chainParams)
|
|
}
|
|
if err != nil {
|
|
return fmt.Errorf("error reading root key: %v", err)
|
|
}
|
|
|
|
// Check that we have a backup file.
|
|
if c.MultiFile == "" {
|
|
return fmt.Errorf("backup file is required")
|
|
}
|
|
multiFile := chanbackup.NewMultiFile(c.MultiFile)
|
|
keyRing := &lnd.HDKeyRing{
|
|
ExtendedKey: extendedKey,
|
|
ChainParams: chainParams,
|
|
}
|
|
return dumpChannelBackup(multiFile, keyRing)
|
|
}
|
|
|
|
func dumpChannelBackup(multiFile *chanbackup.MultiFile,
|
|
ring keychain.KeyRing) error {
|
|
|
|
multi, err := multiFile.ExtractMulti(ring)
|
|
if err != nil {
|
|
return fmt.Errorf("could not extract multi file: %v", err)
|
|
}
|
|
spew.Dump(dump.BackupMulti{
|
|
Version: multi.Version,
|
|
StaticBackups: dump.BackupDump(multi, chainParams),
|
|
})
|
|
return nil
|
|
}
|