diff --git a/Makefile b/Makefile index d350904..5e7eb8f 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -PKG := github.com/guggero/chantools +PKG := github.com/lightninglabs/chantools TOOLS_DIR := tools GOTEST := GO111MODULE=on go test -v diff --git a/README.md b/README.md index 0ec5404..1df53fb 100644 --- a/README.md +++ b/README.md @@ -23,13 +23,14 @@ a private API URL with `--apiurl`. ## Installation The easiest way to install `chantools` is to [download a pre-built binary for -your operating system and architecture](https://github.com/guggero/chantools/releases). +your operating system and +architecture](https://github.com/lightninglabs/chantools/releases). Example (make sure you always use the latest version!): ```shell $ cd /tmp -$ wget -O chantools.tar.gz https://github.com/guggero/chantools/releases/download/v0.10.7/chantools-linux-amd64-v0.10.7.tar.gz +$ wget -O chantools.tar.gz https://github.com/lightninglabs/chantools/releases/download/v0.11.2/chantools-linux-amd64-v0.11.2.tar.gz $ tar -zxvf chantools.tar.gz $ sudo mv chantools-*/chantools /usr/local/bin/ ``` @@ -42,11 +43,109 @@ need to make sure you have `go 1.19.x` (or later) and `make` installed and can then run the following commands: ```bash -git clone https://github.com/guggero/chantools.git +git clone https://github.com/lightninglabs/chantools.git cd chantools make install ``` +## When should I use what command? + +This list contains a list of scenarios that users seem to run into sometimes. + +**Before you start running any `chantools` command, you MUST read the +["What should I NEVER do?"](#what-should-i-never-do) section below!** + +Scenarios: + +- **My node/disk/database crashed and I only have the seed and `channel.backup` + file.** + + This is the "normal" recovery scenario for which you don't need `chantools`. + Just follow the [`lnd` recovery guide][recovery]. + All channels will be closed to recover funds, so you should still try to avoid + This scenario. You only need `chantools` if you had [zombie + channels][safety-zombie] or a channel that did not confirm in time (see + below). + +- **My node/disk/database crashed and I only have the seed.** + + This is very bad and recovery will take manual steps and might not be + successful for private channels. If you do not have _any_ data left from your + node, you need to follow the [`chantools fakechanbackup` command + ](doc/chantools_fakechanbackup.md) help text. If you do have an old version of + your `channel.db` file, DO NOT UNDER ANY CIRCUMSTANCES start your node with + it. Instead, try to extract a `channel.backup` from it using the [`chantools + chanbackup`](doc/chantools_chanbackup.md) command. If that is successful, + follow the steps in the [`lnd` recovery guide][recovery]. + This will not cover new channels opened after the backup of the `channel.db` + file was created. You might still need to create the fake channel backup. + +- **I suspect my channel.db file to be corrupt.** + + This can happen due to unclean shutdowns or power outages. Try running + [`chantools compactdb`](doc/chantools_compactdb.md). If there are NO ERRORS + during the execution of that command, things should be back to normal, and you + can continue running your node. If you get errors, you should probably follow + the [recovery scenario described below](#channel-recovery-scenario) to avoid + future issues. This will close all channels, however. + +- **I don't have a `channel.backup` file but all my peers force closed my + channels, why don't I see the funds with just my seed?** + + When a channel is force closed by the remote party, the funds don't + automatically go to a normal on-chain address. You need to sweep those funds + using the [`chantools sweepremoteclosed`](doc/chantools_sweepremoteclosed.md) + command. + +- **My channel peer is online, but they don't force close a channel when using + a `channel.backup` file**. + + This can have many reasons. Often it means the channels is a legacy channel + type (not an anchor output channel) and the force close transaction the peer + has doesn't have enough fees to make it into the mempool. In that case waiting + for an empty mempool might be the only option. + Another reason might be that the peer is a CLN node with a specific version + that doesn't react to force close requests normally. You can use the + [`chantools triggerforceclose` command](doc/chantools_triggerforceclose.md) in + that case (ONLY works with CLN peers of a certain version). + +## What should I NEVER do? + +- You should never panic. There are extremely few situations in which doing + nothing makes things worse. On the contrary, most cases where users actually + lost funds it was due to them running commands they did not understand in a + rush of panic. So stay calm, try to find out what the reason for the problem + is, ask for help (see [Slack][slack], [`lnd` discussions][discussions]) or use + Google. + Create a backup of all your files in the `lnd` data directory (just in case, + but never [start a node from a file based backup][safety-file-backup]) + before running _any_ command. Also read the [`lnd` Operational Safety + Guidelines][safety]. +- Whatever you might read in any issue, you should never use + `lncli abandonchannel` on a channel that was confirmed on chain. Even if you + have an SCB (Static Channel Backup, unfortunately poorly named) file + (`channel.backup`) or export from `lncli exportchanbackup`. Those files DO NOT + contain enough information to close a channel if your peer does not have the + channel data either (which might happen if the channel took longer than 2 + weeks to confirm). If the channel confirmed on chain, you need to force close + it from your node if it does not operate normally. Running `abandonchannel` + deletes the information needed to be able to force close. +- When running Umbrel, NEVER just uninstall the Lightning App when encountering + a problem. Uninstalling the app deletes important data that might be needed + for recovery in edge cases. The channel backup (SCB) in the cloud does NOT + cover "expired" channels (channels that took longer than 2 weeks to confirm) + or [zombie channels][safety-zombie]. +- The term "backup" in SCB (Static Channel Backup) or the `channel.backup` file + or the output of `lncli exportchanbackup` is not optimal as it implies the + channels can be fully restored or brought back to an operational state. But + the content of those files are for absolute emergencies only. Channels are + always closed when using such a file (by asking the remote peer to issue their + latest force close transaction they have). So chain fees occur. And there are + some edge cases where funds are not covered by those files, for example when + a channel funding transaction is not confirmed in time. Or for channels where + the peer is no longer online. So deleting your `lnd` data directory should + never ever be something to be done lightly (see Umbrel above). + ## Channel recovery scenario The following flow chart shows the main recovery scenario this tool was built @@ -63,177 +162,208 @@ compacting the DB). **Explanation:** 1. **Node crashed**: For some reason your `lnd` node crashed and isn't starting - anymore. If you get errors similar to - [this](https://github.com/lightningnetwork/lnd/issues/4449), - [this](https://github.com/lightningnetwork/lnd/issues/3473) or - [this](https://github.com/lightningnetwork/lnd/issues/4102), it is possible - that a simple compaction (a full copy in safe mode) can solve your problem. - See [`chantools compactdb`](doc/chantools_compactdb.md). -

- If that doesn't work and you need to continue the recovery, make sure you can - at least extract the `channel.backup` file and if somehow possible any version - of the `channel.db` from the node. -

- Whatever you do, do **never, ever** replace your `channel.db` file with an old - version (from a file based backup) and start your node that way. - [Read this explanation why that can lead to loss of funds.](https://github.com/lightningnetwork/lnd/blob/master/docs/safety.md#file-based-backups) + anymore. If you get errors similar to + [this](https://github.com/lightningnetwork/lnd/issues/4449), + [this](https://github.com/lightningnetwork/lnd/issues/3473) or + [this](https://github.com/lightningnetwork/lnd/issues/4102), it is possible + that a simple compaction (a full copy in safe mode) can solve your problem. + See [`chantools compactdb`](doc/chantools_compactdb.md). +

+ If that doesn't work and you need to continue the recovery, make sure you can + at least extract the `channel.backup` file and if somehow possible any + version + of the `channel.db` from the node. +

+ Whatever you do, do **never, ever** replace your `channel.db` file with an + old + version (from a file based backup) and start your node that way. + [Read this explanation why that can lead to loss of + funds.][safety-file-backup] 2. **Rescue on-chain balance**: To start the recovery process, we are going to - re-create the node from scratch. To make sure we don't overwrite any old data - in the process, make sure the old data directory of your node (usually `.lnd` - in the user's home directory) is safely moved away (or the whole folder - renamed) before continuing.
- To start the on-chain recovery, [follow the sub step "Starting On-Chain Recovery" of this guide](https://github.com/lightningnetwork/lnd/blob/master/docs/recovery.md#starting-on-chain-recovery). - Don't follow the whole guide, only this single chapter! -

- This step is completed once the `lncli getinfo` command shows both - `"synced_to_chain": true` and `"synced_to_graph": true` which can take several - hours depending on the speed of your hardware. **Do not be alarmed** that the - `lncli getinfo` command shows 0 channels. This is normal as we haven't started - the off-chain recovery yet. + re-create the node from scratch. To make sure we don't overwrite any old data + in the process, make sure the old data directory of your node (usually `.lnd` + in the user's home directory) is safely moved away (or the whole folder + renamed) before continuing.
+ To start the on-chain recovery, [follow the sub step "Starting On-Chain + Recovery" of this guide][2]. + Don't follow the whole guide, only this single chapter! +

+ This step is completed once the `lncli getinfo` command shows both + `"synced_to_chain": true` and `"synced_to_graph": true` which can take + several + hours depending on the speed of your hardware. **Do not be alarmed** that the + `lncli getinfo` command shows 0 channels. This is normal as we haven't + started + the off-chain recovery yet. 3. **Recover channels using SCB**: Now that the node is fully synced, we can try - to recover the channels using the [Static Channel Backups (SCB)](https://github.com/lightningnetwork/lnd/blob/master/docs/safety.md#static-channel-backups-scbs). - For this, you need a file called `channel.backup`. Simply run the command - `lncli restorechanbackup --multi_file `. **This - will take a while!**. The command itself can take several minutes to complete, - depending on the number of channels. The recovery can easily take a day or - two as a lot of chain rescanning needs to happen. It is recommended to wait at - least one full day. You can watch the progress with the `lncli pendingchannels` - command. If the list is empty, congratulations, you've recovered all channels! - If the list stays un-changed for several hours, it means not all channels - could be restored using this method. - [One explanation can be found here.](https://github.com/lightningnetwork/lnd/blob/master/docs/safety.md#zombie-channels) + to recover the channels using the [Static Channel Backups (SCB)][safety-scb]. + For this, you need a file called `channel.backup`. Simply run the command + `lncli restorechanbackup --multi_file `. **This + will take a while!**. The command itself can take several minutes to + complete, + depending on the number of channels. The recovery can easily take a day or + two as a lot of chain rescanning needs to happen. It is recommended to wait + at + least one full day. You can watch the progress with + the `lncli pendingchannels` + command. If the list is empty, congratulations, you've recovered all + channels! + If the list stays un-changed for several hours, it means not all channels + could be restored using this method. + [One explanation can be found here.][1] 4. **Install chantools**: To try to recover the remaining channels, we are going - to use `chantools`. Simply [follow the installation instructions.](#installation) - The recovery can only be continued if you have access to some version of the - crashed node's `channel.db`. This could be the latest state as recovered from - the crashed file system, or a version from a regular file based backup. If you - do not have any version of a channel DB, `chantools` won't be able to help - with the recovery. See step 11 for some possible manual steps. + to use `chantools`. + Simply [follow the installation instructions.](#installation) + The recovery can only be continued if you have access to some version of the + crashed node's `channel.db`. This could be the latest state as recovered from + the crashed file system, or a version from a regular file based backup. If + you + do not have any version of a channel DB, `chantools` won't be able to help + with the recovery. See step 11 for some possible manual steps. 5. **Create copy of channel DB**: To make sure we can read the channel DB, we - are going to create a copy in safe mode (called compaction). Simply run -

- `chantools compactdb --sourcedb --destdb ./results/compacted.db` -

- We are going to assume that the compacted copy of the channel DB is located in - `./results/compacted.db` in the following commands. + are going to create a copy in safe mode (called compaction). Simply run +

+ `chantools compactdb --sourcedb --destdb ./results/compacted.db` +

+ We are going to assume that the compacted copy of the channel DB is located + in + `./results/compacted.db` in the following commands. 6. **chantools summary**: First, `chantools` needs to find out the state of each - channel on chain. For this, a blockchain API (by default [blockstream.info](https://blockstream.info)) - is queried. The result will be written to a file called - `./results/summary-yyyy-mm-dd.json`. This result file will be needed for the - next command. -

- `chantools --fromchanneldb ./results/compacted.db summary` + channel on chain. For this, a blockchain API (by + default [blockstream.info](https://blockstream.info)) + is queried. The result will be written to a file called + `./results/summary-yyyy-mm-dd.json`. This result file will be needed for the + next command. +

+ `chantools --fromchanneldb ./results/compacted.db summary` 7. **chantools rescueclosed**: It is possible that by now the remote peers have - force-closed some of the remaining channels. What we now do is try to find the - private keys to sweep our balance of those channels. For this we need a shared - secret which is called the `commit_point` and is changed whenever a channel is - updated. We do have the latest known version of this point in the channel DB. - The following command tries to find all private keys for channels that have - been closed by the other party. The command needs to know what channels it is - operating on, so we have to supply the `summary-yyy-mm-dd.json` created by the - previous command: -

- `chantools --fromsummary ./results/.json rescueclosed --channeldb ./results/compacted.db` -

- This will create a new file called `./results/rescueclosed-yyyy-mm-dd.json` - which will contain any found private keys and will also be needed for the next - command. Use `bitcoind` or Electrum Wallet to sweep all of the private keys. + force-closed some of the remaining channels. What we now do is try to find + the + private keys to sweep our balance of those channels. For this we need a + shared + secret which is called the `commit_point` and is changed whenever a channel + is + updated. We do have the latest known version of this point in the channel DB. + The following command tries to find all private keys for channels that have + been closed by the other party. The command needs to know what channels it is + operating on, so we have to supply the `summary-yyy-mm-dd.json` created by + the + previous command: +

+ `chantools --fromsummary ./results/.json rescueclosed --channeldb ./results/compacted.db` +

+ This will create a new file called `./results/rescueclosed-yyyy-mm-dd.json` + which will contain any found private keys and will also be needed for the + next + command. Use `bitcoind` or Electrum Wallet to sweep all of the private keys. 8. **chantools forceclose**: This command will now close all channels that - `chantools` thinks are still open. This is achieved by publishing the latest - known channel state of the `channel.db` file. -
**Please read the full warning text of the - [`forceclose` command below](doc/chantools_forceclose.md) as this command can put - your funds at risk** if the state in the channel DB is not the most recent - one. This command should only be executed for channels where the remote peer - is not online anymore. -

- `chantools --fromsummary ./results/.json forceclose --channeldb ./results/compacted.db --publish` -

- This will create a new file called `./results/forceclose-yyyy-mm-dd.json` - which will be needed for the next command. -

- If you get the error `non-mandatory-script-verify-flag (Signature must be zero - for failed CHECK(MULTI)SIG operation)`, you might be affected by an old bug - of `lnd` that was fixed in the meantime. But it means the signature in the - force-close transaction is invalid and needs to be fixed. There is [a guide - on how to do exactly that here](doc/fix-commitment-tx.md). + `chantools` thinks are still open. This is achieved by publishing the latest + known channel state of the `channel.db` file. +
**Please read the full warning text of the + [`forceclose` command below](doc/chantools_forceclose.md) as this command can + put + your funds at risk** if the state in the channel DB is not the most recent + one. This command should only be executed for channels where the remote peer + is not online anymore. +

+ `chantools --fromsummary ./results/.json forceclose --channeldb ./results/compacted.db --publish` +

+ This will create a new file called `./results/forceclose-yyyy-mm-dd.json` + which will be needed for the next command. +

+ If you get the + error `non-mandatory-script-verify-flag (Signature must be zero + for failed CHECK(MULTI)SIG operation)`, you might be affected by an old bug + of `lnd` that was fixed in the meantime. But it means the signature in the + force-close transaction is invalid and needs to be fixed. There is [a guide + on how to do exactly that here](doc/fix-commitment-tx.md). 9. **Wait for timelocks**: The previous command closed the remaining open - channels by publishing your node's state of the channel. By design of the - Lightning Network, you now have to wait until the channel funds belonging to - you are not time locked any longer. Depending on the size of the channel, you - have to wait for somewhere between 144 and 2000 confirmations of the - force-close transactions. Only continue with the next step after the channel - with the highest `csv_delay` has reached that many confirmations of its - closing transaction. You can check this by looking up each force closed - channel transaction on a block explorer (like - [blockstream.info](https://blockstream.info) for example). Open the result - JSON file of the last command (`./results/forceclose-yyyy-mm-dd.json`) and - look up every TXID in `"force_close" -> "txid"` on the explorer. If the number - of confirmations is equal to or greater to the value shown in - `"force_close" -> "csv_delay"` for each of the channels, you can proceed. + channels by publishing your node's state of the channel. By design of the + Lightning Network, you now have to wait until the channel funds belonging to + you are not time locked any longer. Depending on the size of the channel, you + have to wait for somewhere between 144 and 2000 confirmations of the + force-close transactions. Only continue with the next step after the channel + with the highest `csv_delay` has reached that many confirmations of its + closing transaction. You can check this by looking up each force closed + channel transaction on a block explorer (like + [blockstream.info](https://blockstream.info) for example). Open the result + JSON file of the last command (`./results/forceclose-yyyy-mm-dd.json`) and + look up every TXID in `"force_close" -> "txid"` on the explorer. If the + number + of confirmations is equal to or greater to the value shown in + `"force_close" -> "csv_delay"` for each of the channels, you can proceed. 10. **chantools sweeptimelock**: Once all force-close transactions have reached - the number of transactions as the `csv_timeout` in the JSON demands, these - time locked funds can now be swept. Use the following command to sweep all the - channel funds to an address of your wallet: -

- `chantools --fromsummary ./results/.json sweeptimelock --publish --sweepaddr ` + the number of transactions as the `csv_timeout` in the JSON demands, these + time locked funds can now be swept. Use the following command to sweep all + the + channel funds to an address of your wallet: +

+ `chantools --fromsummary ./results/.json sweeptimelock --publish --sweepaddr ` 11. **Manual intervention necessary**: You got to this step because you either - don't have a `channel.db` file or because `chantools` couldn't rescue all your - node's channels. There are a few things you can try manually that have some - chance of working: + don't have a `channel.db` file or because `chantools` couldn't rescue all + your + node's channels. There are a few things you can try manually that have some + chance of working: - Make sure you can connect to all nodes when restoring from SCB: It happens - all the time that nodes change their IP addresses. When restoring from a - static channel backup, your node tries to connect to the node using the IP - address encoded in the backup file. If the address changed, the SCB restore - process doesn't work. You can use block explorers like [1ml.com](https://1ml.com) - to try to find an IP address that is up-to-date. Just run - `lncli connect @:` in the recovered - `lnd` node from step 3 and wait a few hours to see if the channel is now - being force closed by the remote node. - - Find out who the node belongs to: Maybe you opened the channel with someone - you know. Or maybe their node alias contains some information about who the - node belongs to. If you can find out who operates the remote node, you can - ask them to force-close the channel from their end. If the channel was opened - with the `option_static_remote_key`, (`lnd v0.8.0` and later), the funds can - be swept by your node. + all the time that nodes change their IP addresses. When restoring from a + static channel backup, your node tries to connect to the node using the IP + address encoded in the backup file. If the address changed, the SCB + restore + process doesn't work. You can use block explorers + like [1ml.com](https://1ml.com) + to try to find an IP address that is up-to-date. Just run + `lncli connect @:` in the recovered + `lnd` node from step 3 and wait a few hours to see if the channel is now + being force closed by the remote node. + - Find out who the node belongs to: Maybe you opened the channel with + someone + you know. Or maybe their node alias contains some information about who + the + node belongs to. If you can find out who operates the remote node, you can + ask them to force-close the channel from their end. If the channel was + opened + with the `option_static_remote_key`, (`lnd v0.8.0` and later), the funds + can + be swept by your node. 12. **Use Zombie Channel Recovery Matcher**: As a final, last resort, you can - go to [node-recovery.com](https://www.node-recovery.com/) and register your - node's ID for being matched up against other nodes with the same problem. -

- Once you were contacted with a match, follow the instructions on the - [Zombie Channel Recovery Guide](doc/zombierecovery.md) page. -

- If you know the peer of a zombie channel and have a way to contact them, you - can also skip the registration/matching process and [create your own match - file](doc/zombierecovery.md#file-format). + go to [node-recovery.com](https://www.node-recovery.com/) and register your + node's ID for being matched up against other nodes with the same problem. +

+ Once you were contacted with a match, follow the instructions on the + [Zombie Channel Recovery Guide](doc/zombierecovery.md) page. +

+ If you know the peer of a zombie channel and have a way to contact them, you + can also skip the registration/matching process and [create your own match + file](doc/zombierecovery.md#file-format). ## Seed and passphrase input All commands that require the seed (and, if set, the seed's passphrase) offer three distinct possibilities to specify it: + 1. **Enter manually on the terminal**: This is the safest option as it makes - sure that the seed isn't stored in the terminal's command history. + sure that the seed isn't stored in the terminal's command history. 2. **Pass the extened master root key as parameter**: This is added as an option - for users who don't have the full seed anymore, possibly because they used - `lnd`'s `--noseedbackup` flag and extracted the `xprv` from the wallet + for users who don't have the full seed anymore, possibly because they used + `lnd`'s `--noseedbackup` flag and extracted the `xprv` from the wallet database with the `walletinfo` command. Those users can specify the master root key by passing the `--rootkey` command line flag to each command that requires the seed. 3. **Use environment variables**: This option makes it easy to automate usage of - `chantools` by removing the need to type into the terminal. There are three - environment variables that can be set to skip entering values through the - terminal: + `chantools` by removing the need to type into the terminal. There are three + environment variables that can be set to skip entering values through the + terminal: - `AEZEED_MNEMONIC`: Specifies the 24 word `lnd` aezeed. - `AEZEED_PASSPHRASE`: Specifies the passphrase for the aezeed. If no passphrase was used during the creation of the seed, the special value @@ -260,6 +390,7 @@ Your BIP32 HD root key is: xprv9s21ZrQH1... ``` ### Are my funds safe? + Some commands require the seed. But your seed will never leave your computer. Most commands don't require an internet connection: you can and should @@ -270,7 +401,7 @@ run them on a computer with a firewall that blocks outgoing connections. ```text This tool provides helper functions that can be used rescue funds locked in lnd channels in case lnd itself cannot run properly anymore. -Complete documentation is available at https://github.com/guggero/chantools/. +Complete documentation is available at https://github.com/lightninglabs/chantools/. Usage: chantools [command] @@ -281,6 +412,7 @@ Available Commands: compactdb Create a copy of a channel.db file in safe/read-only mode deletepayments Remove all (failed) payments from a channel DB derivekey Derive a key with a specific derivation path + doublespendinputs Tries to double spend the given inputs by deriving the private for the address and sweeping the funds to the given address. This can only be used with inputs that belong to an lnd wallet. dropchannelgraph Remove all graph related data from a channel DB dumpbackup Dump the content of a channel.backup file dumpchannels Dump all channel information from an lnd channel database @@ -319,32 +451,61 @@ Use "chantools [command] --help" for more information about a command. Detailed documentation for each sub command is available in the [docs](doc/chantools.md) folder. -Quick access: -+ [chanbackup](doc/chantools_chanbackup.md) -+ [closepoolaccount](doc/chantools_closepoolaccount.md) -+ [compactdb](doc/chantools_compactdb.md) -+ [deletepayments](doc/chantools_deletepayments.md) -+ [derivekey](doc/chantools_derivekey.md) -+ [dropchannelgraph](doc/chantools_dropchannelgraph.md) -+ [dumpbackup](doc/chantools_dumpbackup.md) -+ [dumpchannels](doc/chantools_dumpchannels.md) -+ [fakechanbackup](doc/chantools_fakechanbackup.md) -+ [filterbackup](doc/chantools_filterbackup.md) -+ [fixoldbackup](doc/chantools_fixoldbackup.md) -+ [forceclose](doc/chantools_forceclose.md) -+ [genimportscript](doc/chantools_genimportscript.md) -+ [migratedb](doc/chantools_migratedb.md) -+ [recoverloopin](doc/chantools_recoverloopin.md) -+ [removechannel](doc/chantools_removechannel.md) -+ [rescueclosed](doc/chantools_rescueclosed.md) -+ [rescuefunding](doc/chantools_rescuefunding.md) -+ [showrootkey](doc/chantools_showrootkey.md) -+ [signrescuefunding](doc/chantools_signrescuefunding.md) -+ [summary](doc/chantools_summary.md) -+ [sweepremoteclosed](doc/chantools_sweepremoteclosed.md) -+ [sweeptimelock](doc/chantools_sweeptimelock.md) -+ [sweeptimelockmanual](doc/chantools_sweeptimelockmanual.md) -+ [triggerforceclose](doc/chantools_triggerforceclose.md) -+ [vanitygen](doc/chantools_vanitygen.md) -+ [walletinfo](doc/chantools_walletinfo.md) -+ [zombierecovery](doc/chantools_zombierecovery.md) +The following table provides quick access to each command's documentation. +Legend: + +- :pencil: This command requires the seed to be entered (see [seed and + passphrase input](#seed-and-passphrase-input)). +- :warning: Should not be used unless no other option exists, can lead to + malfunction of the node. +- :skull: Danger of loss of funds, only use when instructed to. +- :pushpin: Command was created for a very specific version or use case and most + likely does not apply to 99.9% of users + +| Command | Use when | +|-------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------| +| [chanbackup](doc/chantools_chanbackup.md) | :pencil: Extract a `channel.backup` file from a `channel.db` file | +| [closepoolaccount](doc/chantools_closepoolaccount.md) | :pencil: Manually close an expired Lightning Pool account | +| [compactdb](doc/chantools_compactdb.md) | Run database compaction manually to reclaim space | +| [deletepayments](doc/chantools_deletepayments.md) | Remove ALL payments from a `channel.db` file to reduce size | +| [derivekey](doc/chantools_derivekey.md) | :pencil: Derive a single private/public key from `lnd`'s seed, use to test seed | +| [doublespendinputs](doc/chantools_doublespendinputs.md) | :pencil: Tries to double spend the given inputs by deriving the private for the address and sweeping the funds to the given address | +| [dropchannelgraph](doc/chantools_dropchannelgraph.md) | (:warning:) Completely drop the channel graph from a `channel.db` to force re-sync | +| [dumpbackup](doc/chantools_dumpbackup.md) | :pencil: Show the content of a `channel.backup` file as text | +| [dumpchannels](doc/chantools_dumpchannels.md) | Show the content of a `channel.db` file as text | +| [fakechanbackup](doc/chantools_fakechanbackup.md) | :pencil: Create a fake `channel.backup` file from public information | +| [filterbackup](doc/chantools_filterbackup.md) | :pencil: Remove a channel from a `channel.backup` file | +| [fixoldbackup](doc/chantools_fixoldbackup.md) | :pencil: (:pushpin:) Fixes an issue with old `channel.backup` files | +| [forceclose](doc/chantools_forceclose.md) | :pencil: (:skull: :warning:) Publish an old channel state from a `channel.db` file | +| [genimportscript](doc/chantools_genimportscript.md) | :pencil: Create a script/text file that can be used to import `lnd` keys into other software | +| [migratedb](doc/chantools_migratedb.md) | Upgrade the `channel.db` file to the latest version | +| [recoverloopin](doc/chantools_recoverloopin.md) | :pencil: Recover funds from a failed Lightning Loop inbound swap | +| [removechannel](doc/chantools_removechannel.md) | (:skull: :warning:) Remove a single channel from a `channel.db` file | +| [rescueclosed](doc/chantools_rescueclosed.md) | :pencil: (:pushpin:) Rescue funds in a legacy (pre `STATIC_REMOTE_KEY`) channel output | +| [rescuefunding](doc/chantools_rescuefunding.md) | :pencil: (:pushpin:) Rescue funds from a funding transaction. Deprecated, use [zombierecovery](doc/chantools_zombierecovery.md) instead | +| [showrootkey](doc/chantools_showrootkey.md) | :pencil: Display the master root key (`xprv`) from your seed (DO NOT SHARE WITH ANYONE) | +| [signrescuefunding](doc/chantools_signrescuefunding.md) | :pencil: (:pushpin:) Sign to funds from a funding transaction. Deprecated, use [zombierecovery](doc/chantools_zombierecovery.md) instead | +| [summary](doc/chantools_summary.md) | Create a summary of channel funds from a `channel.db` file | +| [sweepremoteclosed](doc/chantools_sweepremoteclosed.md) | :pencil: Find channel funds from remotely force closed channels and sweep them | +| [sweeptimelock](doc/chantools_sweeptimelock.md) | :pencil: Sweep funds in locally force closed channels once time lock has expired (requires `channel.db`) | +| [sweeptimelockmanual](doc/chantools_sweeptimelockmanual.md) | :pencil: Manually sweep funds in a locally force closed channel where no `channel.db` file is available | +| [triggerforceclose](doc/chantools_triggerforceclose.md) | :pencil: (:pushpin:) Request certain CLN peers to force close a channel that don't react to normal SCB recovery requests | +| [vanitygen](doc/chantools_vanitygen.md) | Generate an `lnd` seed for a node public key that starts with a certain sequence of hex digits | +| [walletinfo](doc/chantools_walletinfo.md) | Show information from a `wallet.db` file, requires access to the wallet password | +| [zombierecovery](doc/chantools_zombierecovery.md) | :pencil: Cooperatively rescue funds from channels where normal recovery is not possible (see [full guide here][zombie-recovery]) | + +[safety]: https://github.com/lightningnetwork/lnd/blob/master/docs/safety.md + +[safety-zombie]: https://github.com/lightningnetwork/lnd/blob/master/docs/safety.md#zombie-channels + +[safety-file-backup]: https://github.com/lightningnetwork/lnd/blob/master/docs/safety.md#file-based-backups + +[safety-scb]: https://github.com/lightningnetwork/lnd/blob/master/docs/safety.md#static-channel-backups-scbs + +[recovery]: https://github.com/lightningnetwork/lnd/blob/master/docs/recovery.md + +[slack]: https://lightning.engineering/slack.html + +[discussions]: https://github.com/lightningnetwork/lnd/discussions + +[zombie-recovery]: doc/zombierecovery.md \ No newline at end of file diff --git a/btc/bip39.go b/btc/bip39.go index b3695be..42bdbce 100644 --- a/btc/bip39.go +++ b/btc/bip39.go @@ -12,7 +12,7 @@ import ( "github.com/btcsuite/btcd/btcutil/hdkeychain" "github.com/btcsuite/btcd/chaincfg" - "github.com/guggero/chantools/bip39" + "github.com/lightninglabs/chantools/bip39" "golang.org/x/crypto/pbkdf2" "golang.org/x/crypto/ssh/terminal" ) diff --git a/btc/bitcoind.go b/btc/bitcoind.go index 7409245..98dd5a0 100644 --- a/btc/bitcoind.go +++ b/btc/bitcoind.go @@ -10,7 +10,7 @@ import ( "github.com/btcsuite/btcd/btcutil/hdkeychain" "github.com/btcsuite/btcd/chaincfg" "github.com/btcsuite/btcd/wire" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" ) const ( diff --git a/btc/summary.go b/btc/summary.go index a3c1389..17638c6 100644 --- a/btc/summary.go +++ b/btc/summary.go @@ -4,7 +4,7 @@ import ( "errors" "github.com/btcsuite/btclog" - "github.com/guggero/chantools/dataformat" + "github.com/lightninglabs/chantools/dataformat" ) func SummarizeChannels(apiURL string, channels []*dataformat.SummaryEntry, diff --git a/cmd/chantools/chanbackup.go b/cmd/chantools/chanbackup.go index 100f234..f8f3835 100644 --- a/cmd/chantools/chanbackup.go +++ b/cmd/chantools/chanbackup.go @@ -3,7 +3,7 @@ package main import ( "fmt" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/chanbackup" "github.com/spf13/cobra" ) diff --git a/cmd/chantools/closepoolaccount.go b/cmd/chantools/closepoolaccount.go index 4321064..dc85a28 100644 --- a/cmd/chantools/closepoolaccount.go +++ b/cmd/chantools/closepoolaccount.go @@ -10,8 +10,8 @@ import ( "github.com/btcsuite/btcd/btcutil/hdkeychain" "github.com/btcsuite/btcd/txscript" "github.com/btcsuite/btcd/wire" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/lnd" "github.com/lightninglabs/pool/account" "github.com/lightninglabs/pool/poolscript" "github.com/lightningnetwork/lnd/input" diff --git a/cmd/chantools/closepoolaccount_test.go b/cmd/chantools/closepoolaccount_test.go index edade66..fac5ddd 100644 --- a/cmd/chantools/closepoolaccount_test.go +++ b/cmd/chantools/closepoolaccount_test.go @@ -7,7 +7,7 @@ import ( "github.com/btcsuite/btcd/btcec/v2" "github.com/btcsuite/btcd/btcutil/hdkeychain" "github.com/btcsuite/btcd/chaincfg" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightninglabs/pool/poolscript" "github.com/lightningnetwork/lnd/keychain" "github.com/stretchr/testify/require" diff --git a/cmd/chantools/deletepayments.go b/cmd/chantools/deletepayments.go index 1c2eb31..cdb9ef9 100644 --- a/cmd/chantools/deletepayments.go +++ b/cmd/chantools/deletepayments.go @@ -3,7 +3,7 @@ package main import ( "fmt" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/spf13/cobra" ) @@ -25,7 +25,7 @@ If only the failed payments should be deleted (and not the successful ones), the CAUTION: Running this command will make it impossible to use the channel DB with an older version of lnd. Downgrading is not possible and you'll need to -run lnd v0.16.0-beta or later after using this command!'`, +run lnd ` + lndVersion + ` or later after using this command!'`, Example: `chantools deletepayments --failedonly \ --channeldb ~/.lnd/data/graph/mainnet/channel.db`, RunE: cc.Execute, diff --git a/cmd/chantools/derivekey.go b/cmd/chantools/derivekey.go index 39bbe6f..e7edc1f 100644 --- a/cmd/chantools/derivekey.go +++ b/cmd/chantools/derivekey.go @@ -5,7 +5,7 @@ import ( "github.com/btcsuite/btcd/btcutil" "github.com/btcsuite/btcd/btcutil/hdkeychain" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/spf13/cobra" ) diff --git a/cmd/chantools/derivekey_test.go b/cmd/chantools/derivekey_test.go index 84263de..e99a926 100644 --- a/cmd/chantools/derivekey_test.go +++ b/cmd/chantools/derivekey_test.go @@ -3,8 +3,8 @@ package main import ( "testing" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/lnd" "github.com/stretchr/testify/require" ) diff --git a/cmd/chantools/doublespendinputs.go b/cmd/chantools/doublespendinputs.go index 2ad4ffd..a7ea4e1 100644 --- a/cmd/chantools/doublespendinputs.go +++ b/cmd/chantools/doublespendinputs.go @@ -13,8 +13,8 @@ import ( "github.com/btcsuite/btcd/txscript" "github.com/btcsuite/btcd/wire" "github.com/decred/dcrd/dcrec/secp256k1/v4" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/lnwallet/chainfee" "github.com/spf13/cobra" diff --git a/cmd/chantools/dropchannelgraph.go b/cmd/chantools/dropchannelgraph.go index 2f42ff1..6456f50 100644 --- a/cmd/chantools/dropchannelgraph.go +++ b/cmd/chantools/dropchannelgraph.go @@ -9,7 +9,7 @@ import ( "github.com/btcsuite/btcd/btcec/v2" "github.com/btcsuite/btcd/btcutil" "github.com/btcsuite/btcd/wire" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/chainreg" "github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/keychain" @@ -46,7 +46,7 @@ without removing any other data. CAUTION: Running this command will make it impossible to use the channel DB with an older version of lnd. Downgrading is not possible and you'll need to -run lnd v0.16.0-beta or later after using this command!'`, +run lnd ` + lndVersion + ` or later after using this command!'`, Example: `chantools dropchannelgraph \ --channeldb ~/.lnd/data/graph/mainnet/channel.db \ --node_identity_key 03...... diff --git a/cmd/chantools/dumpbackup.go b/cmd/chantools/dumpbackup.go index e44f47f..9e3e76f 100644 --- a/cmd/chantools/dumpbackup.go +++ b/cmd/chantools/dumpbackup.go @@ -4,8 +4,8 @@ import ( "fmt" "github.com/davecgh/go-spew/spew" - "github.com/guggero/chantools/dump" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/dump" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/keychain" "github.com/spf13/cobra" diff --git a/cmd/chantools/dumpchannels.go b/cmd/chantools/dumpchannels.go index 5bec361..5c4db4d 100644 --- a/cmd/chantools/dumpchannels.go +++ b/cmd/chantools/dumpchannels.go @@ -4,8 +4,8 @@ import ( "fmt" "github.com/davecgh/go-spew/spew" - "github.com/guggero/chantools/dump" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/dump" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/channeldb" "github.com/spf13/cobra" ) diff --git a/cmd/chantools/fakechanbackup.go b/cmd/chantools/fakechanbackup.go index 6b30a12..e935e64 100644 --- a/cmd/chantools/fakechanbackup.go +++ b/cmd/chantools/fakechanbackup.go @@ -14,7 +14,7 @@ import ( "github.com/btcsuite/btcd/btcutil" "github.com/btcsuite/btcd/wire" "github.com/gogo/protobuf/jsonpb" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/keychain" diff --git a/cmd/chantools/filterbackup.go b/cmd/chantools/filterbackup.go index f1b6500..46d8b24 100644 --- a/cmd/chantools/filterbackup.go +++ b/cmd/chantools/filterbackup.go @@ -6,7 +6,7 @@ import ( "strings" "time" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/keychain" "github.com/spf13/cobra" diff --git a/cmd/chantools/fixoldbackup.go b/cmd/chantools/fixoldbackup.go index d42f16a..39e000b 100644 --- a/cmd/chantools/fixoldbackup.go +++ b/cmd/chantools/fixoldbackup.go @@ -6,7 +6,7 @@ import ( "os" "time" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/keychain" "github.com/spf13/cobra" diff --git a/cmd/chantools/forceclose.go b/cmd/chantools/forceclose.go index c214b0a..90ea393 100644 --- a/cmd/chantools/forceclose.go +++ b/cmd/chantools/forceclose.go @@ -11,9 +11,9 @@ import ( "github.com/btcsuite/btcd/btcutil/hdkeychain" "github.com/btcsuite/btcd/txscript" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/dataformat" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/dataformat" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/input" "github.com/spf13/cobra" diff --git a/cmd/chantools/genimportscript.go b/cmd/chantools/genimportscript.go index b8bf72d..eb84ffc 100644 --- a/cmd/chantools/genimportscript.go +++ b/cmd/chantools/genimportscript.go @@ -5,8 +5,8 @@ import ( "os" "time" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/lnd" "github.com/spf13/cobra" ) diff --git a/cmd/chantools/migratedb.go b/cmd/chantools/migratedb.go index 0a080a0..7730266 100644 --- a/cmd/chantools/migratedb.go +++ b/cmd/chantools/migratedb.go @@ -3,7 +3,7 @@ package main import ( "fmt" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/spf13/cobra" ) @@ -25,7 +25,7 @@ needs to read the database content. CAUTION: Running this command will make it impossible to use the channel DB with an older version of lnd. Downgrading is not possible and you'll need to -run lnd v0.16.0-beta or later after using this command!'`, +run lnd ` + lndVersion + ` or later after using this command!'`, Example: `chantools migratedb \ --channeldb ~/.lnd/data/graph/mainnet/channel.db`, RunE: cc.Execute, diff --git a/cmd/chantools/recoverloopin.go b/cmd/chantools/recoverloopin.go index 211a8b3..52330c3 100644 --- a/cmd/chantools/recoverloopin.go +++ b/cmd/chantools/recoverloopin.go @@ -9,8 +9,8 @@ import ( "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/txscript" "github.com/btcsuite/btcd/wire" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/lnd" "github.com/lightninglabs/loop" "github.com/lightninglabs/loop/loopdb" "github.com/lightninglabs/loop/swap" diff --git a/cmd/chantools/removechannel.go b/cmd/chantools/removechannel.go index 3e331c9..63b450b 100644 --- a/cmd/chantools/removechannel.go +++ b/cmd/chantools/removechannel.go @@ -7,7 +7,7 @@ import ( "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/wire" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/channeldb" "github.com/spf13/cobra" ) @@ -31,7 +31,7 @@ channel was never confirmed on chain! CAUTION: Running this command will make it impossible to use the channel DB with an older version of lnd. Downgrading is not possible and you'll need to -run lnd v0.16.0-beta or later after using this command!`, +run lnd ` + lndVersion + ` or later after using this command!`, Example: `chantools removechannel \ --channeldb ~/.lnd/data/graph/mainnet/channel.db \ --channel 3149764effbe82718b280de425277e5e7b245a4573aa4a0203ac12cee1c37816:0`, diff --git a/cmd/chantools/rescueclosed.go b/cmd/chantools/rescueclosed.go index c991a09..3bfa38f 100644 --- a/cmd/chantools/rescueclosed.go +++ b/cmd/chantools/rescueclosed.go @@ -13,8 +13,8 @@ import ( "github.com/btcsuite/btcd/btcec/v2" "github.com/btcsuite/btcd/btcutil" "github.com/btcsuite/btcd/btcutil/hdkeychain" - "github.com/guggero/chantools/dataformat" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/dataformat" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/channeldb" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" diff --git a/cmd/chantools/rescuefunding.go b/cmd/chantools/rescuefunding.go index 9cb17cb..9e4e4cd 100644 --- a/cmd/chantools/rescuefunding.go +++ b/cmd/chantools/rescuefunding.go @@ -9,8 +9,8 @@ import ( "github.com/btcsuite/btcd/btcutil" "github.com/btcsuite/btcd/btcutil/psbt" "github.com/btcsuite/btcd/wire" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/lnwallet/chainfee" diff --git a/cmd/chantools/rescuetweakedkey.go b/cmd/chantools/rescuetweakedkey.go index 1c24404..08507b1 100644 --- a/cmd/chantools/rescuetweakedkey.go +++ b/cmd/chantools/rescuetweakedkey.go @@ -10,7 +10,7 @@ import ( "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/txscript" "github.com/decred/dcrd/dcrec/secp256k1/v4" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/spf13/cobra" ) diff --git a/cmd/chantools/root.go b/cmd/chantools/root.go index ec39d07..c739675 100644 --- a/cmd/chantools/root.go +++ b/cmd/chantools/root.go @@ -14,9 +14,9 @@ import ( "github.com/btcsuite/btcd/btcutil/hdkeychain" "github.com/btcsuite/btcd/chaincfg" "github.com/btcsuite/btclog" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/dataformat" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/dataformat" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/build" "github.com/lightningnetwork/lnd/chanbackup" "github.com/lightningnetwork/lnd/channeldb" @@ -27,8 +27,16 @@ import ( const ( defaultAPIURL = "https://blockstream.info/api" - version = "0.11.2" - na = "n/a" + + // version is the current version of the tool. It is set during build. + // NOTE: When changing this, please also update the version in the + // download link shown in the README. + version = "0.11.3" + na = "n/a" + + // lndVersion is the current version of lnd that we support. This is + // shown in some commands that affect the database and its migrations. + lndVersion = "v0.16.0-beta" Commit = "" ) @@ -47,7 +55,7 @@ var rootCmd = &cobra.Command{ Short: "Chantools helps recover funds from lightning channels", Long: `This tool provides helper functions that can be used rescue funds locked in lnd channels in case lnd itself cannot run properly anymore. -Complete documentation is available at https://github.com/guggero/chantools/.`, +Complete documentation is available at https://github.com/lightninglabs/chantools/.`, Version: fmt.Sprintf("v%s, commit %s", version, Commit), PersistentPreRun: func(cmd *cobra.Command, args []string) { switch { diff --git a/cmd/chantools/showrootkey_test.go b/cmd/chantools/showrootkey_test.go index e759553..2468924 100644 --- a/cmd/chantools/showrootkey_test.go +++ b/cmd/chantools/showrootkey_test.go @@ -3,8 +3,8 @@ package main import ( "testing" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/lnd" "github.com/stretchr/testify/require" ) diff --git a/cmd/chantools/signrescuefunding.go b/cmd/chantools/signrescuefunding.go index 1d09dc2..9380ae3 100644 --- a/cmd/chantools/signrescuefunding.go +++ b/cmd/chantools/signrescuefunding.go @@ -7,7 +7,7 @@ import ( "github.com/btcsuite/btcd/btcec/v2" "github.com/btcsuite/btcd/btcutil/hdkeychain" "github.com/btcsuite/btcd/btcutil/psbt" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/keychain" "github.com/spf13/cobra" ) diff --git a/cmd/chantools/summary.go b/cmd/chantools/summary.go index 60ea62f..c1b9e3d 100644 --- a/cmd/chantools/summary.go +++ b/cmd/chantools/summary.go @@ -6,8 +6,8 @@ import ( "io/ioutil" "time" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/dataformat" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/dataformat" "github.com/spf13/cobra" ) diff --git a/cmd/chantools/sweepremoteclosed.go b/cmd/chantools/sweepremoteclosed.go index 1220829..a94cdad 100644 --- a/cmd/chantools/sweepremoteclosed.go +++ b/cmd/chantools/sweepremoteclosed.go @@ -11,8 +11,8 @@ import ( "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/txscript" "github.com/btcsuite/btcd/wire" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/lnwallet/chainfee" diff --git a/cmd/chantools/sweeptimelock.go b/cmd/chantools/sweeptimelock.go index 74a29a4..d4cd932 100644 --- a/cmd/chantools/sweeptimelock.go +++ b/cmd/chantools/sweeptimelock.go @@ -10,9 +10,9 @@ import ( "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/txscript" "github.com/btcsuite/btcd/wire" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/dataformat" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/dataformat" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/lnwallet/chainfee" diff --git a/cmd/chantools/sweeptimelockmanual.go b/cmd/chantools/sweeptimelockmanual.go index 25004c9..ca6935c 100644 --- a/cmd/chantools/sweeptimelockmanual.go +++ b/cmd/chantools/sweeptimelockmanual.go @@ -10,8 +10,8 @@ import ( "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/txscript" "github.com/btcsuite/btcd/wire" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/lnwallet/chainfee" diff --git a/cmd/chantools/sweeptimelockmanual_test.go b/cmd/chantools/sweeptimelockmanual_test.go index faf2163..9c0323c 100644 --- a/cmd/chantools/sweeptimelockmanual_test.go +++ b/cmd/chantools/sweeptimelockmanual_test.go @@ -7,7 +7,7 @@ import ( "github.com/btcsuite/btcd/btcec/v2" "github.com/btcsuite/btcd/btcutil/hdkeychain" "github.com/btcsuite/btcd/chaincfg" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/stretchr/testify/require" ) diff --git a/cmd/chantools/triggerforceclose.go b/cmd/chantools/triggerforceclose.go index e0d841b..c1775fe 100644 --- a/cmd/chantools/triggerforceclose.go +++ b/cmd/chantools/triggerforceclose.go @@ -10,8 +10,8 @@ import ( "github.com/btcsuite/btcd/chaincfg/chainhash" "github.com/btcsuite/btcd/connmgr" "github.com/btcsuite/btcd/wire" - "github.com/guggero/chantools/btc" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/brontide" "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/lncfg" diff --git a/cmd/chantools/vanitygen.go b/cmd/chantools/vanitygen.go index bca9fe5..ff1da21 100644 --- a/cmd/chantools/vanitygen.go +++ b/cmd/chantools/vanitygen.go @@ -11,8 +11,8 @@ import ( "sync" "time" - "github.com/guggero/chantools/btc/fasthd" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/btc/fasthd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/aezeed" "github.com/lightningnetwork/lnd/keychain" "github.com/spf13/cobra" diff --git a/cmd/chantools/walletinfo.go b/cmd/chantools/walletinfo.go index e79c2ec..0d2c519 100644 --- a/cmd/chantools/walletinfo.go +++ b/cmd/chantools/walletinfo.go @@ -12,7 +12,7 @@ import ( "github.com/btcsuite/btcwallet/wallet" "github.com/btcsuite/btcwallet/walletdb" _ "github.com/btcsuite/btcwallet/walletdb/bdb" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/lncfg" "github.com/lightningnetwork/lnd/lnwallet" diff --git a/cmd/chantools/zombierecovery_findmatches.go b/cmd/chantools/zombierecovery_findmatches.go index 0822af1..50cb849 100644 --- a/cmd/chantools/zombierecovery_findmatches.go +++ b/cmd/chantools/zombierecovery_findmatches.go @@ -13,8 +13,8 @@ import ( "time" "github.com/btcsuite/btcd/btcec/v2" - "github.com/guggero/chantools/btc" "github.com/hasura/go-graphql-client" + "github.com/lightninglabs/chantools/btc" "github.com/spf13/cobra" "golang.org/x/oauth2" ) @@ -52,7 +52,7 @@ Contact: {{$peer.Contact}} {{end}} The document that describes what to do exactly is located here: -https://github.com/guggero/chantools/blob/master/doc/zombierecovery.md +https://github.com/lightninglabs/chantools/blob/master/doc/zombierecovery.md Good luck! diff --git a/cmd/chantools/zombierecovery_makeoffer.go b/cmd/chantools/zombierecovery_makeoffer.go index 7464e25..0683af3 100644 --- a/cmd/chantools/zombierecovery_makeoffer.go +++ b/cmd/chantools/zombierecovery_makeoffer.go @@ -16,7 +16,7 @@ import ( "github.com/btcsuite/btcd/chaincfg" "github.com/btcsuite/btcd/wire" "github.com/btcsuite/btcwallet/wallet/txrules" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/input" "github.com/lightningnetwork/lnd/keychain" "github.com/lightningnetwork/lnd/lnwallet/chainfee" diff --git a/cmd/chantools/zombierecovery_preparekeys.go b/cmd/chantools/zombierecovery_preparekeys.go index 10c33d7..6485fff 100644 --- a/cmd/chantools/zombierecovery_preparekeys.go +++ b/cmd/chantools/zombierecovery_preparekeys.go @@ -8,7 +8,7 @@ import ( "io/ioutil" "time" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/spf13/cobra" ) diff --git a/cmd/chantools/zombierecovery_root.go b/cmd/chantools/zombierecovery_root.go index d081b61..fbf9e3d 100644 --- a/cmd/chantools/zombierecovery_root.go +++ b/cmd/chantools/zombierecovery_root.go @@ -18,7 +18,7 @@ func newZombieRecoveryCommand() *cobra.Command { Long: `A sub command that hosts a set of further sub commands to help with recovering funds tuck in zombie channels. -Please visit https://github.com/guggero/chantools/blob/master/doc/zombierecovery.md +Please visit https://github.com/lightninglabs/chantools/blob/master/doc/zombierecovery.md for more information on how to use these commands.`, Run: func(cmd *cobra.Command, args []string) { if len(args) == 0 { diff --git a/cmd/chantools/zombierecovery_signoffer.go b/cmd/chantools/zombierecovery_signoffer.go index 43f2b45..9298038 100644 --- a/cmd/chantools/zombierecovery_signoffer.go +++ b/cmd/chantools/zombierecovery_signoffer.go @@ -10,7 +10,7 @@ import ( "github.com/btcsuite/btcd/btcutil/hdkeychain" "github.com/btcsuite/btcd/btcutil/psbt" "github.com/btcsuite/btcd/txscript" - "github.com/guggero/chantools/lnd" + "github.com/lightninglabs/chantools/lnd" "github.com/lightningnetwork/lnd/keychain" "github.com/spf13/cobra" ) diff --git a/doc/chantools.md b/doc/chantools.md index 00ccb3d..4c6b1a3 100644 --- a/doc/chantools.md +++ b/doc/chantools.md @@ -6,7 +6,7 @@ Chantools helps recover funds from lightning channels This tool provides helper functions that can be used rescue funds locked in lnd channels in case lnd itself cannot run properly anymore. -Complete documentation is available at https://github.com/guggero/chantools/. +Complete documentation is available at https://github.com/lightninglabs/chantools/. ### Options diff --git a/doc/chantools_recoverloopin.md b/doc/chantools_recoverloopin.md index a6f1dd9..fff8177 100644 --- a/doc/chantools_recoverloopin.md +++ b/doc/chantools_recoverloopin.md @@ -13,7 +13,7 @@ chantools recoverloopin \ --txid abcdef01234... \ --vout 0 \ --swap_hash abcdef01234... \ - --loop_db_path /path/to/loop.db \ + --loop_db_dir /path/to/loop/db/dir \ --sweep_addr bc1pxxxxxxx \ --feerate 10 ``` @@ -25,7 +25,7 @@ chantools recoverloopin \ --bip39 read a classic BIP39 seed and passphrase from the terminal instead of asking for lnd seed format or providing the --rootkey flag --feerate uint32 fee rate to use for the sweep transaction in sat/vByte -h, --help help for recoverloopin - --loop_db_path string path to the loop database file + --loop_db_dir string path to the loop database directory, where the loop.db file is located --num_tries int number of tries to try to find the correct key index (default 1000) --publish publish sweep TX to the chain API instead of just printing the TX --rootkey string BIP32 HD root key of the wallet to use for deriving starting key; leave empty to prompt for lnd 24 word aezeed diff --git a/doc/chantools_zombierecovery.md b/doc/chantools_zombierecovery.md index 322db7a..90b4a15 100644 --- a/doc/chantools_zombierecovery.md +++ b/doc/chantools_zombierecovery.md @@ -7,7 +7,7 @@ Try rescuing funds stuck in channels with zombie nodes A sub command that hosts a set of further sub commands to help with recovering funds tuck in zombie channels. -Please visit https://github.com/guggero/chantools/blob/master/doc/zombierecovery.md +Please visit https://github.com/lightninglabs/chantools/blob/master/doc/zombierecovery.md for more information on how to use these commands. ``` diff --git a/doc/zombierecovery.md b/doc/zombierecovery.md index 9baebb3..e4ca451 100644 --- a/doc/zombierecovery.md +++ b/doc/zombierecovery.md @@ -46,7 +46,7 @@ Below image is a simplified version of the steps described below the image. node, continue: 3. Send/upload the JSON file(s) to your node. If you open the JSON file(s), you will see your own node ID (and contact info) and the peers'. [Download or - install chantools](https://github.com/guggero/chantools#installation). + install chantools](https://github.com/lightninglabs/chantools#installation). Technically, you do not _need_ to install `chantools` on the same machine as your node. Maybe you do not feel confident entering your seed words on your node and want to do this someplace else. diff --git a/go.mod b/go.mod index 8b98594..fe9d449 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/guggero/chantools +module github.com/lightninglabs/chantools go 1.19 @@ -19,6 +19,10 @@ require ( github.com/hasura/go-graphql-client v0.9.1 github.com/lightninglabs/loop v0.23.0-beta github.com/lightninglabs/pool v0.6.2-beta.0.20230329135228-c3bffb52df3a + // The current version of lnd we are compatible with, mostly affects the + // commands that touch the channel DB and has an impact on the DB schema. + // NOTE: When updating this version, make sure to also update the string in + // cmd/chantools/root.go. github.com/lightningnetwork/lnd v0.16.0-beta github.com/lightningnetwork/lnd/kvdb v1.4.1 github.com/lightningnetwork/lnd/queue v1.1.0 @@ -53,7 +57,6 @@ require ( github.com/dsnet/compress v0.0.1 // indirect github.com/dustin/go-humanize v1.0.0 // indirect github.com/fergusstrange/embedded-postgres v1.10.0 // indirect - github.com/frankban/quicktest v1.11.2 // indirect github.com/go-errors/errors v1.0.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -81,14 +84,7 @@ require ( github.com/jonboulle/clockwork v0.2.2 // indirect github.com/jrick/logrotate v1.0.0 // indirect github.com/json-iterator/go v1.1.11 // indirect - github.com/juju/clock v1.0.0 // indirect - github.com/juju/collections v1.0.0 // indirect - github.com/juju/errors v1.0.0 // indirect github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4 // indirect - github.com/juju/mgo/v2 v2.0.0 // indirect - github.com/juju/retry v1.0.0 // indirect - github.com/juju/utils/v3 v3.0.0 // indirect - github.com/juju/version/v2 v2.0.0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/kkdai/bstream v1.0.0 // indirect github.com/klauspost/compress v1.16.0 // indirect diff --git a/go.sum b/go.sum index 1729569..a28fd29 100644 --- a/go.sum +++ b/go.sum @@ -179,9 +179,8 @@ github.com/fergusstrange/embedded-postgres v1.10.0 h1:YnwF6xAQYmKLAXXrrRx4rHDLih github.com/fergusstrange/embedded-postgres v1.10.0/go.mod h1:a008U8/Rws5FtIOTGYDYa7beVWsT3qVKyqExqYYjL+c= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/frankban/quicktest v1.0.0/go.mod h1:R98jIehRai+d1/3Hv2//jOVCTJhW1VBavT6B6CuGq2k= +github.com/frankban/quicktest v1.2.2 h1:xfmOhhoH5fGPgbEAlhLpJH9p0z/0Qizio9osmvn9IUY= github.com/frankban/quicktest v1.2.2/go.mod h1:Qh/WofXFeiAFII1aEBu529AtJo6Zg2VHscnEsbBnJ20= -github.com/frankban/quicktest v1.11.2 h1:mjwHjStlXWibxOohM7HYieIViKyh56mmt3+6viyhDDI= -github.com/frankban/quicktest v1.11.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= @@ -278,7 +277,6 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -408,23 +406,16 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= -github.com/juju/clock v1.0.0 h1:9U1jPr/FT0DfZjl8qh9dSACAXUodjPOz+uZBdeVv/N8= -github.com/juju/clock v1.0.0/go.mod h1:GZ/FY8Cqw3KHG6DwRVPUKbSPTAwyrU28xFi5cqZnLsc= -github.com/juju/collections v1.0.0 h1:iuWddKN/SMbjLoyOpcnAl8XyBCavZm6coeFBcXQldbw= -github.com/juju/collections v1.0.0/go.mod h1:JWeZdyttIEbkR51z2S13+J+aCuHVe0F6meRy+P0YGDo= -github.com/juju/errors v1.0.0 h1:yiq7kjCLll1BiaRuNY53MGI0+EQ3rF6GB+wvboZDefM= -github.com/juju/errors v1.0.0/go.mod h1:B5x9thDqx0wIMH3+aLIMP9HjItInYWObRovoCFM5Qe8= +github.com/juju/clock v0.0.0-20220203021603-d9deb868a28a h1:Az/6CM/P5guGHNy7r6TkOCctv3lDmN3W1uhku7QMupk= +github.com/juju/collections v0.0.0-20220203020748-febd7cad8a7a h1:d7eZO8OS/ZXxdP0uq3E8CdoA1qNFaecAv90UxrxaY2k= +github.com/juju/errors v0.0.0-20220331221717-b38fca44723b h1:AxFeSQJfcm2O3ov1wqAkTKYFsnMw2g1B4PkYujfAdkY= github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4 h1:NO5tuyw++EGLnz56Q8KMyDZRwJwWO8jQnj285J3FOmY= github.com/juju/loggo v0.0.0-20210728185423-eebad3a902c4/go.mod h1:NIXFioti1SmKAlKNuUwbMenNdef59IF52+ZzuOmHYkg= -github.com/juju/mgo/v2 v2.0.0 h1:gUhskkN5WpxFEWYzX4pTkX55D7vYKwVJAWjXDFEZHyw= -github.com/juju/mgo/v2 v2.0.0/go.mod h1:N614SE0a4e+ih2rg96Vi2PeC3cTpUOWgCTv3Cgk974c= -github.com/juju/retry v1.0.0 h1:Tb1hFdDSPGLH/BGdYQOF7utQ9lA0ouVJX2imqgJK6tk= -github.com/juju/retry v1.0.0/go.mod h1:SssN1eYeK3A2qjnFGTiVMbdzGJ2BfluaJblJXvuvgqA= +github.com/juju/mgo/v2 v2.0.0-20220111072304-f200228f1090 h1:zX5GoH3Jp8k1EjUFkApu/YZAYEn0PYQfg/U6IDyNyYs= +github.com/juju/retry v0.0.0-20220204093819-62423bf33287 h1:U+7oMWEglXfiikIppNexButZRwKPlzLBGKYSNCXzXf8= github.com/juju/testing v0.0.0-20220203020004-a0ff61f03494 h1:XEDzpuZb8Ma7vLja3+5hzUqVTvAqm5Y+ygvnDs5iTMM= -github.com/juju/utils/v3 v3.0.0 h1:Gg3n63mGPbBuoXCo+EPJuMi44hGZfloI8nlCIebHu2Q= -github.com/juju/utils/v3 v3.0.0/go.mod h1:8csUcj1VRkfjNIRzBFWzLFCMLwLqsRWvkmhfVAUwbC4= -github.com/juju/version/v2 v2.0.0 h1:0OjCOlgA2UBbB8fSCgd8fmGsntrSbAWXEJil47bQptY= -github.com/juju/version/v2 v2.0.0/go.mod h1:ZeFjNy+UFEWJDDPdzW7Cm9NeU6dsViGaFYhXzycLQrw= +github.com/juju/utils/v3 v3.0.0-20220203023959-c3fbc78a33b0 h1:bn+2Adl1yWqYjm3KSFlFqsvfLg2eq+XNL7GGMYApdVw= +github.com/juju/version/v2 v2.0.0-20220204124744-fc9915e3d935 h1:6YoyzXVW1XkqN86y2s/rz365Jm7EiAy39v2G5ikzvHU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= @@ -450,7 +441,6 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= @@ -667,7 +657,6 @@ github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4A github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= @@ -1093,7 +1082,6 @@ gopkg.in/check.v1 v1.0.0-20160105164936-4f90aeace3a2/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v1 v1.0.1 h1:oQFRXzZ7CkBGdm1XZm/EbQYaYNNEElNBOd09M6cqNso= gopkg.in/errgo.v1 v1.0.1/go.mod h1:3NjfXwocQRYAPTq4/fzX+CwUhPRcR/azYRhj8G+LqMo= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= @@ -1109,7 +1097,6 @@ gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24 gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/release.sh b/release.sh index 9913722..0ddaf6a 100755 --- a/release.sh +++ b/release.sh @@ -9,7 +9,7 @@ set -e -PKG="github.com/guggero/chantools" +PKG="github.com/lightninglabs/chantools" PACKAGE=chantools # green prints one line of green text (if the terminal supports it). diff --git a/tools/go.mod b/tools/go.mod index cfa82a7..1f524bc 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -1,4 +1,4 @@ -module github.com/guggero/chantools/tools +module github.com/lightninglabs/chantools/tools go 1.18