This tool offers a space for bitcoiners to experiment and learn how bitcoin wallets are generated using different sources of entropy (randomness). The page also offers many other seed related functionalites, some of which are outlined below. The online version can be found at https://bitcoiner.guide/seed.
NEVER use the online version of this tool to create or interact with seeds used to manage real bitcoin. While there is nothing in this tool that collects private information or sends it anywhere, there may be other software on your device that does. If the tool detects a network connection, it will display a network symbol in the top corner of the screen.
To use this tool offline, use the download link in the online version or download the index.html from the releases page.
Some common use cases for this tool include:-
- Learning how entropy is used to derive wallet components
- Generating seeds via dice rolls, coin flips or playing cards
- Verifying entropy inputs (dice rolls etc) applied to external wallets or signers
- Generating BIP85 child seeds (or check those generated by a signing device)
- Generating BIP47 payment codes and their corresponding PayNym avatars
- Generating BIP47 addresses between any two payment codes
- Verifying wallet address generation from a given seed/passphrase combination
- Testing for a forgotten/incorrect passphrase (if you know a receive address)
If you find this page useful, consider donating some sats to the lead developer SuperPhatArrow or to any of the open source libraries this tool was built on top of.
To verify the tool, take the following steps.
- Import the release signing key, which is in this repository as
RELEASE-SIGNING-KEY.asc
gpg --import RELEASE-SIGNING-KEY.asc
- Check the key's fingerprint is exactly
EB3D 738B EC6A 873A C274 5292 CF4F E215 EA66 63AC
gpg --fingerprint qna@bitcoiner.guide
-
Download the latest release
index.htmlandsignature.txtfiles -
Navigate to your Downloads folder and run
sha256sum index.html -
Check for an exact hash match as the one published in the
signature.txtfile -
Run
gpg --verify signature.txtand look for a Good signature from "QnA qna@bitcoiner.guide"
dist/index.html is assembled from the files in src/www by build.js, which only inlines them into one page. Anyone can rebuild a release from its tag and compare the hash with the one in that release's signature.txt:
git clone https://github.com/BitcoinQnA/seedtool.git
cd seedtool
git checkout <release tag>
node build.js
sha256sum dist/index.html
build.js needs Node.js only; no packages are installed. The bundled libraries in src/www/js/lib are committed build outputs: seven are built with esbuild by the build_*.js scripts from the pinned versions in package-lock.json, the rest are older browserify builds from libs/.
Before tagging a release, npm run release:check runs the tests, rebuilds dist/index.html and fails if the committed file differs from the source.
Make sure nodejs is installed:
node --version
If not, I recommend Node Version Manager (nvm). Then use nvm to make sure you are using the latest LTS version:
nvm install --lts
nvm use --lts
In the root directory of the project type:
npm i
In the root directory of the project type:
npm run dev
Open browser to http://localhost:3000/
change files in your code editor of choice and the webpage will reload on save of files in the src folder. The dev server only uses Node's standard library; PORT=4000 npm run dev serves on another port.
npm run build
Builds the output html file to the dist directory for distribution
MSG="Added this awesome new feature" npm run git
Will run the build script and push your changes to git