{"id":13650061,"url":"https://github.com/alexk111/HD-Wallet-Scanner","last_synced_at":"2025-04-22T18:30:47.564Z","repository":{"id":42243188,"uuid":"206322992","full_name":"alexk111/HD-Wallet-Scanner","owner":"alexk111","description":"❄️ Find all used addresses in your Bitcoin HD wallets bypassing gap limits.","archived":false,"fork":false,"pushed_at":"2022-12-11T21:41:34.000Z","size":276,"stargazers_count":32,"open_issues_count":11,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-03T20:37:16.052Z","etag":null,"topics":["bitcoin","bitcoin-address","hd-wallet"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexk111.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-04T13:14:43.000Z","updated_at":"2025-03-31T21:03:36.000Z","dependencies_parsed_at":"2023-01-27T07:31:28.342Z","dependency_job_id":null,"html_url":"https://github.com/alexk111/HD-Wallet-Scanner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexk111%2FHD-Wallet-Scanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexk111%2FHD-Wallet-Scanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexk111%2FHD-Wallet-Scanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexk111%2FHD-Wallet-Scanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexk111","download_url":"https://codeload.github.com/alexk111/HD-Wallet-Scanner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250297147,"owners_count":21407158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","bitcoin-address","hd-wallet"],"created_at":"2024-08-02T02:00:33.248Z","updated_at":"2025-04-22T18:30:47.207Z","avatar_url":"https://github.com/alexk111.png","language":"JavaScript","funding_links":[],"categories":["Utilities"],"sub_categories":["E-Books"],"readme":"\u003cdiv align=\"center\"\u003e\n\t\u003cimg src=\"media/logo.png\" width=\"125\" height=\"125\"\u003e\n\t\u003ch1\u003eHD Wallet Scanner\u003c/h1\u003e\n\t\u003cp\u003e\n\t\t\u003cb\u003eFind all used addresses in your Bitcoin HD Wallets bypassing gap limits\u003c/b\u003e\n\t\u003c/p\u003e\n\t\u003cbr\u003e\n\u003c/div\u003e\n\nHD Wallet Scanner is a utility for resolving an [Account Discovery](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account-discovery) issue when a HD Wallet has more than X (usually 20) unused addresses in a row and a wallet software stops seeing addresses beyond this point.\n\nThe utility was made to supplement [One-Time Address](https://github.com/alexk111/One-Time-Address). However it will also be helpful if you encounter the gap limit issue in other circumstances.\n\n## How it works\n\n1. You set an extended public key, a range for address indexes and a starting block for each of your HD Wallets\n2. HD Wallet Scanner scans blocks and generates report files with address indexes and input stats in ```output``` directory\n3. You use Bitcoin Core + HWI (if you use a hardware wallet) to import child keys derived with the address indexes and then spend unspent outputs\n\n## Prerequisites\n\nTo run the application, you will need a synced Bitcoin full node with RPC enabled.\n\n## Installing\n\n```\n# clone repo\ngit clone https://github.com/alexk111/HD-Wallet-Scanner\n\n# navigate to it\ncd HD-Wallet-Scanner\n\n# install dependencies\nyarn install\n\n# add env variables\ncp .env.sample .env\n\n# add wallets config\ncp wallets.js.sample wallets.js\n```\n\nEdit ```.env```:\n\n- BITCOIND_RPCUSER and BITCOIND_RPCPASSWORD - user/pass to access Bitcoin RPC server\n- MAX_ADDRESSES_PER_ITERATION - max number of addresses per a scan iteration (default: 100000)\n\nEdit ```wallets.js```:\n\n- Enter settings for your wallets\n\n## Scanning\n\n```\n# running the scanner\nyarn start\n```\n\n## Using Address Indexes\n\nAfter the scan completes, you will get two files in ```output``` directory: ```IDS ids{i}-{j} hgt{m}-{n}.json``` and ```INS ids{i}-{j} hgt{m}-{n}.json```. The ```IDS ...``` file only contains the address indexes, whereas the ```INS ...``` file also contains an address, value of a transaction input and a height of a block the transaction is recorded in.\n\nTo derive child keys with the collected address indexes and import them into Bitcoin Core wallet use [HWI](https://github.com/bitcoin-core/HWI) if your private keys are stored on a hardware wallet and ```bitcoin-cli```'s [importmulti](https://bitcoin.org/en/developer-reference#importmulti). For more info on how to use Bitcoin Core with HWI check [this guide](https://github.com/bitcoin-core/HWI/blob/master/docs/bitcoin-core-usage.md).\n\n Note. If you have huge gaps between used addresses, then call ```importmulti``` with keypool range parameter equal to ```n,n``` where ```n``` is an address index, to add only that specific address.\n\n## Backers 💝\n\n[[Become a backer](https://mynode.alexkaul.com/gh-donate)]\n\n[![Backer](https://mynode.alexkaul.com/gh-backer/top/0/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/0/profile)\n[![Backer](https://mynode.alexkaul.com/gh-backer/top/1/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/1/profile)\n[![Backer](https://mynode.alexkaul.com/gh-backer/top/2/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/2/profile)\n[![Backer](https://mynode.alexkaul.com/gh-backer/top/3/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/3/profile)\n[![Backer](https://mynode.alexkaul.com/gh-backer/top/4/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/4/profile)\n[![Backer](https://mynode.alexkaul.com/gh-backer/top/5/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/5/profile)\n[![Backer](https://mynode.alexkaul.com/gh-backer/top/6/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/6/profile)\n[![Backer](https://mynode.alexkaul.com/gh-backer/top/7/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/7/profile)\n[![Backer](https://mynode.alexkaul.com/gh-backer/top/8/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/8/profile)\n[![Backer](https://mynode.alexkaul.com/gh-backer/top/9/avatar/60)](https://mynode.alexkaul.com/gh-backer/top/9/profile)\n\n## License\n\nMIT © Alex Kaul\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexk111%2FHD-Wallet-Scanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexk111%2FHD-Wallet-Scanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexk111%2FHD-Wallet-Scanner/lists"}