{"id":13650211,"url":"https://github.com/alexk111/One-Time-Address","last_synced_at":"2025-04-22T18:31:01.075Z","repository":{"id":42989059,"uuid":"204288237","full_name":"alexk111/One-Time-Address","owner":"alexk111","description":"🏷 A better way to share your Bitcoin address.","archived":false,"fork":false,"pushed_at":"2022-12-11T04:04:50.000Z","size":335,"stargazers_count":79,"open_issues_count":6,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-08T23:32:42.029Z","etag":null,"topics":["bitcoin","bitcoin-address","bitcoin-payment","payments"],"latest_commit_sha":null,"homepage":"","language":"Handlebars","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":".github/funding.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":"https://mynode.alexkaul.com/gh-donate"}},"created_at":"2019-08-25T12:01:03.000Z","updated_at":"2025-02-27T02:31:09.000Z","dependencies_parsed_at":"2023-01-26T15:31:42.360Z","dependency_job_id":null,"html_url":"https://github.com/alexk111/One-Time-Address","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexk111%2FOne-Time-Address","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexk111%2FOne-Time-Address/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexk111%2FOne-Time-Address/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexk111%2FOne-Time-Address/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexk111","download_url":"https://codeload.github.com/alexk111/One-Time-Address/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250297201,"owners_count":21407167,"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","bitcoin-payment","payments"],"created_at":"2024-08-02T02:00:34.900Z","updated_at":"2025-04-22T18:31:00.730Z","avatar_url":"https://github.com/alexk111.png","language":"Handlebars","funding_links":["https://mynode.alexkaul.com/gh-donate"],"categories":["Blockchain API and Web services","Self-Hosted Bitcoin Payment Processors"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\t\u003cimg src=\"media/logo.png\" width=\"125\" height=\"125\"\u003e\n\t\u003ch1\u003eOne-Time Address\u003c/h1\u003e\n\t\u003cp\u003e\n\t\t\u003cb\u003eA better way to share your Bitcoin address\u003c/b\u003e\n\t\u003c/p\u003e\n\t\u003cbr\u003e\n\u003c/div\u003e\n\nOne-Time Address is a self-hosted, open-source service which turns your Bitcoin wallets into webpages and embeddable widgets that instantly provide an address with a QR code whenever someone wants to send you Bitcoin.\n\nOne-Time Address never shows the same address twice and thus helps to prevent address reuse. You should not reuse addresses because it abuses the privacy and security of the participants of the transactions as well as future holders of their value.\n\nNote #1: If the same visitor requests an address multiple times within a short period, he might see an address generated for him last time instead of a new one. This prevents wallets from bloating with repetitive requests.\n\nNote #2: It is not intended for use in e-commerce or when it's needed to trigger execution of other processes after the payment is done. One-Time Address provides the instant access to a one-time Bitcoin address and nothing else. If you need more features, then consider using [BTCPay Server](https://github.com/btcpayserver/btcpayserver).\n\n## Live Demo\n\nDemo webpage: https://donate.alexkaul.com/one-time-address\n\n## Installing\n\n```\n# clone repo\ngit clone https://github.com/alexk111/One-Time-Address\n\n# navigate to it\ncd One-Time-Address\n\n# install dependencies\nyarn install\n\n# add env variables\ncp .env.prod .env\n\n# add wallets config\ncp wallets.js.sample wallets.js\n```\n\nEdit ```.env```:\n\n- Update SERVER_HOST and SERVER_PORT if needed\n\nEdit ```wallets.js```:\n\n- Enter info for your wallets\n\n## Checking wallets\n\n```\n# check if your BTC wallet is generating the same addresses\nyarn run check my-wallet\n```\n\n## Running\n\n```\n# running http server\nyarn start\n```\n\n## Getting stats\n\n```\n# get stats on how many addresses have been already used\nyarn run stats my-wallet\n```\n\n## Address Cache\n\nOne-Time Address keeps generated addresses and visitor IPs in the cache for up to N minutes (5 by default). If the same visitor refreshes the same wallet page within the interval, an address will be returned from the cache instead of generating a new one. This prevents wallets from being bloated with repetitive or automated requests. The interval can be edited with ```addrIPCacheMins``` in ```wallets.js``` file. Set ```0``` to disable the cache.\n\n## Gap Limit Issue\n\nSince One-Time Address provides every visitor with a new Bitcoin address, you might find yourself in a situation where more than 20 addresses in a row will have zero transactions. This will cause an [Account Discovery](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki#account-discovery) issue when received funds don't appear in your Bitcoin wallet. Available workarounds:\n\n### Using HD Wallet Scanner\n\n[HD Wallet Scanner](https://github.com/alexk111/HD-Wallet-Scanner) finds all used addresses in your Bitcoin HD wallets bypassing gap limits. Then you might use Bitcoin Core + HWI (if you use a hardware wallet) to import child keys derived with their indexes.\n\n### Using Electrum wallet\n\n[Electrum wallet](https://www.electrum.org/) allows increasing Gap Limit. Open the ```Console tab``` and use the following commands at prompt: ```wallet.change_gap_limit(200)``` and press enter at your keyboard, ```wallet.storage.write()``` and press enter again. Then restart the client. To view/verify the current gap limit, type the following in the console: ```wallet.gap_limit```.\n\n### Using Wasabi wallet\n\nIf you are showing bech32 addresses, then you might use [Wasabi wallet](https://wasabiwallet.io/). It also allows increasing Gap Limit. The wallet file can be modified from File/Open/Wallet Folder. To change the gap limit, update ```MinGapLimit``` json property in the wallet file.\n\n## Backers 💝\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\nThank you for your support! 🙌 [[Donate](https://mynode.alexkaul.com/gh-donate)]\n\n## License\n\nMIT © Alex Kaul\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexk111%2FOne-Time-Address","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexk111%2FOne-Time-Address","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexk111%2FOne-Time-Address/lists"}