Live data from Hacker News

How to accept Bitcoin payments without running a full node

incoherency.co.uk

1–10 of 28 posts

Re: How to accept Bitcoin payments without running a full node

#2
The author mentions being plagued by crashes/corruption, but I've never experienced this and I've been running a full node for a few years. Other than the large (well, not _that_ large) storage requirements (.bitcoin is currently 101G) I've not got any complaints...

Unless there's a bug in a recent version of bitcoind which causes it to crap out when initially catching up with the network?

Re: How to accept Bitcoin payments without running a full node

#3
> Third-party Bitcoin payments services typically take a 1% fee.

This is not accurate. Bitpay (most popular payment provider) charges you only if you settle (convert your BTC to USD).

If you are going through an exchange (bitfinex for example), you'll pay 0.2% for taker rates.

0.8% seems reasonable enough for me considering that Bitpay provides a decent interface and decent tools.

Re: How to accept Bitcoin payments without running a full node

#7
If you're going to run a payment system this way, by generating addresses and then checking if they've confirmed, the better way to do it (rather than pre-generating a batch), is to use hierarchical deterministic (HD) wallets. This way, instead of having to re-generate a batch of one-time receiving addresses to use on a regular basis, you generate a master key and then use the algorithm to generate addresses without having to use a full Bitcoin node (there are libraries in Python, JS, and all the common languages, look for "BIP 32" or "HD Wallet"). All you need to generate the deterministic addresses on your server is the master public key, thus there's less security risk (if the master public key is disclosed, it threatens the privacy of your users, but not the integrity of your funds).

If you don't want to bother generating the deterministic keys online, you could pre-generate thousands, even millions of them if you want. And keep both the private and public master keys offline. It also is a safer approach since you can securely store the master private key in a offline hardware wallet and not have to worry about keeping track of hundreds of private keys.

Long time since I've been active in Bitcoin, but this is the way I would have run a payment service without using a full node.

Re: How to accept Bitcoin payments without running a full node

#8
Article recommends creating private/public pair via vanitiygen but imo that's not the best way to do it.

Alternative:

Create HD wallet (via electrum e.g.), get "public master key" and use it everywhere. You can generate consequent public addresses using that key but you can't generate private keys (i.e. spend anything). Now your server is protected from stealing any money and don't require any special backups for these new keys.

Re: How to accept Bitcoin payments without running a full node

#9
Author here, surprised to see this on HN! I considered submitting it myself but didn't think this crowd was that into Bitcoin. Nice to be proven wrong :)

A couple of people mentioned HD wallets:

I initially tried using an HD wallet, but the mechanism for interacting with it was more inconvenient than generating keys manually - especially considering that you might have to generate hundreds of addresses in a row that never receive a payment.

I've added an update at the end of the article.

Cheers!

Re: How to accept Bitcoin payments without running a full node

#10
post #3

> Third-party Bitcoin payments services typically take a 1% fee. This is not accurate. Bitpay (most popular payment provider) charges you only if you settle (convert your BTC to USD). If you are going through an exchange (bitfinex for example), you'll pay 0.2% for taker rates. 0.8% seems reasonable enough for me considering that Bitpay provides a decent interface and decent tools.

Thanks, I didn't know that!
Post reply on HN