Skip to content

Testing out the entire readme#9

Open
mothepro wants to merge 5 commits intomainfrom
mothepro-patch-5
Open

Testing out the entire readme#9
mothepro wants to merge 5 commits intomainfrom
mothepro-patch-5

Conversation

@mothepro
Copy link
Owner

hopefully the formatting is good :D

Repository owner deleted a comment from github-actions bot Oct 13, 2025
Repository owner deleted a comment from github-actions bot Oct 13, 2025
Repository owner deleted a comment from github-actions bot Oct 13, 2025
@mothepro mothepro marked this pull request as ready for review October 13, 2025 19:55
Repository owner deleted a comment from github-actions bot Oct 16, 2025
@github-actions
Copy link

github-actions bot commented Oct 16, 2025

Warning

@mothepro is the publisher, not the signer, unless stated otherwise 🕵

Important

1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN used their private key to digitally sign this message

Verify this verification

Unfortunately, the proof is too long to be a clickable link. (over 2000 characters)

Directly with verify-bitcoin-message.js.org

Visit https://verify-bitcoin-message.js.org, then copy and paste the following into the "Verify any Message" dialog:

{"address":"1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN","message":"# Verify Bitcoin Message\n\n[![free and open source](https://img.shields.io/badge/source-open-success\")](https://github.com/mothepro/verify-bitcoin-message) [![External Dependencies](https://img.shields.io/badge/dependencies-None-success\")](https://npmgraph.js.org/?q=verify-bitcoin-message) [![Offline First](https://img.shields.io/badge/Internet-Not_Required-success\")](https://github.com/mothepro/verify-bitcoin-message?tab=readme-ov-file#offline) [![Bundle Size](https://img.shields.io/badge/Bundle_Size-14kb-success\")](https://app.unpkg.com/verify-bitcoin-message/)\n\n> A dependency-free Bitcoin message verifier that works in browsers and as a lightweight CLI.\n\nTranslations would be an incredible contribution now :)\n\n## Published Messages\n\nAny messages, from around the globe, can be added via [Pull Requests](../../pulls).\n\nThe verification process automatically hides invalid messages.\n\n<!-- *Each fork is like its own \"[community](../../forks)\".* -->\n\n## Things you can do\n\n### Offline\n\nFirst visit the page by [Serving Locally](#serve-locally) or using our [GitHub Pages demo](https://mothepro.github.io/verify-bitcoin-message).\n\nIf you're on mobile, just turn on airplane mode.\n\nOn desktop you can test offline mode in Chrome (webkit browsers) by opening Developer Tools (F12) > `Network` tab > Change `No Throttling` to `Offline`\n\n### Clone the repository\n\n   Download [Bun](https://bun.sh), JS runtime\n\n   ```bash\n   git clone https://github.com/mothepro/verify-bitcoin-message\n   cd verify-bitcoin-message\n   bun install # Tests will be run automatically after installation\n   ```\n\n### Serve locally\n\n   ```bash\n   bun run build:browser\n   python -m http.server 8000 static # Any \"server\" is fine, doesn't have to be python\n   ```\n\n   Unfortunately, opening the html file directly from the file system will not work.\n   The browser's [built-in `crypto` libraries](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto) are [not available](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts) when running from the file system.\n\n### CDN\n\n   ```html\n   <script type=\"module\">\n     import verify, { verifySafe } from 'https://unpkg.com/verify-bitcoin-message';\n   </script>\n   ```\n\n### Command Line Interface\n\n```bash\nnpx verify-bitcoin-message --json \\\n   --address 1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV \\\n   --message \"This is an example of a signed message.\" \\\n   --signature \"H9L5yLFjti0QTHhPyFrZCT1V/MMnBtXKmoiKDZ78NDBjERki6ZTQZdSMCtkgoNmp17By9ItJr8o7ChX0XxY91nk=\"\n```\n\n### Programmatic Use\n\n```bash\nbun add verify-bitcoin-message # OR npm install verify-bitcoin-message\n```\n\n```typescript\nimport verify, { verifySafe } from 'verify-bitcoin-message';\n\nawait verify({\n  address: '1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV',\n  message: 'This is an example of a signed message.',\n  signature: 'H9L5yLFjti0QTHhPyFrZCT1V/MMnBtXKmoiKDZ78NDBjERki6ZTQZdSMCtkgoNmp17By9ItJr8o7ChX0XxY91nk='\n})\n\n// If you're not a fan of throwing errors:\nconst isValid = await verifySafe({\n  address: '1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV',\n  message: 'This is an example of a signed message.',\n  signature: 'H9L5yLFjti0QTHhPyFrZCT1V/MMnBtXKmoiKDZ78NDBjERki6ZTQZdSMCtkgoNmp17By9ItJr8o7ChX0XxY91nk='\n})\n```\n\n### Up Next\n\n- [ ] My idea to prevent fake screenshots :lightbulb:\n- [ ] more support for address types\n- [ ] explainer why cold storage >>> exchanges (you can use this)\n- [ ] service worker? for full PWA\n- [ ] **better example message**\n- [ ] allow markdown in message? :eyes:\n- [ ] wrap github gpg signatue with one of these\n\n### Web Alternatives\n\n- [Bitcoin.com](https://www.bitcoin.com/tools/verify-message/)\n  ![Closed Source](https://img.shields.io/badge/source-closed-red)\n\n- [Verify Bitcoin Message](https://www.verifybitcoinmessage.com/)\n  ![Closed Source](https://img.shields.io/badge/source-closed-red)\n\n- [BlueWallet's VerifySignature](https://bluewallet.github.io/VerifySignature?a=&m=&s=)\n  ![Open Source](https://img.shields.io/badge/source-Open-success)\n  ![Offline First](https://img.shields.io/badge/Internet-Not_Required-success)\n  [![68 Dependencies](https://img.shields.io/badge/dependencies-68-yellow)](https://npmgraph.js.org/?q=bitcoinjs-message)","signature":"G/B2LBFamPXuOgXOsj/717iqCWrenP3wdLdvZY/C7XgoW4FHDJB/PcrW29eapsT0WwUXeR0WDRiy30NWxqTbD/k="}

Github

Proof can be found in the Checks tab 🔏

Verify Bitcoin Message

free and open source External Dependencies Offline First Bundle Size

A dependency-free Bitcoin message verifier that works in browsers and as a lightweight CLI.

Translations would be an incredible contribution now :)

Published Messages

Any messages, from around the globe, can be added via Pull Requests.

The verification process automatically hides invalid messages.

Things you can do

Offline

First visit the page by Serving Locally or using our GitHub Pages demo.

If you're on mobile, just turn on airplane mode.

On desktop you can test offline mode in Chrome (webkit browsers) by opening Developer Tools (F12) > Network tab > Change No Throttling to Offline

Clone the repository

Download Bun, JS runtime

git clone https://github.com/mothepro/verify-bitcoin-message
cd verify-bitcoin-message
bun install # Tests will be run automatically after installation

Serve locally

bun run build:browser
python -m http.server 8000 static # Any "server" is fine, doesn't have to be python

Unfortunately, opening the html file directly from the file system will not work.
The browser's built-in crypto libraries are not available when running from the file system.

CDN

<script type="module">
  import verify, { verifySafe } from 'https://unpkg.com/verify-bitcoin-message';
</script>

Command Line Interface

npx verify-bitcoin-message --json \
   --address 1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV \
   --message "This is an example of a signed message." \
   --signature "H9L5yLFjti0QTHhPyFrZCT1V/MMnBtXKmoiKDZ78NDBjERki6ZTQZdSMCtkgoNmp17By9ItJr8o7ChX0XxY91nk="

Programmatic Use

bun add verify-bitcoin-message # OR npm install verify-bitcoin-message
import verify, { verifySafe } from 'verify-bitcoin-message';

await verify({
  address: '1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV',
  message: 'This is an example of a signed message.',
  signature: 'H9L5yLFjti0QTHhPyFrZCT1V/MMnBtXKmoiKDZ78NDBjERki6ZTQZdSMCtkgoNmp17By9ItJr8o7ChX0XxY91nk='
})

// If you're not a fan of throwing errors:
const isValid = await verifySafe({
  address: '1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV',
  message: 'This is an example of a signed message.',
  signature: 'H9L5yLFjti0QTHhPyFrZCT1V/MMnBtXKmoiKDZ78NDBjERki6ZTQZdSMCtkgoNmp17By9ItJr8o7ChX0XxY91nk='
})

Up Next

  • My idea to prevent fake screenshots :lightbulb:
  • more support for address types
  • explainer why cold storage >>> exchanges (you can use this)
  • service worker? for full PWA
  • better example message
  • allow markdown in message? 👀
  • wrap github gpg signatue with one of these

Web Alternatives

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant