4

In my case a store owner has different POS terminals. On none of the terminals should be a private key stored! The owner has one wallet, where he wants to get all transactions aggregated, done on the POS terminals.

According to my reasearch I came up with 2 possibilities:

  • Stealth addresses (BIP 63), which to my knowledge is not implemented anywhere in a library, so that I could use it easily.
  • Master Public Key: E.g. the electrum wallet gives you an MPK by which one could derive addresses (through HD Derivation).

Now to my questions:

  • Is there any other approach one could generate addresses without a private key available?
  • Are there any problems one could face with the MPK derivation approach?
  • Which wallets expose the MPK and furthermore which wallets get a notice of transactions done to addresses derived outside of their knowledge (however from the seed they know)?
  • Of course, there is always the naive approach where you generate one single address (or one per terminal) and use that address for all incoming transactions. I assume that for improved anonymity (both for your store owner and the customers), you wish to avoid this? – Nate Eldredge Aug 1 '15 at 18:14
  • @NateEldredge Or improved auditability. – Nick ODell Aug 1 '15 at 18:17
  • @NateEldredge absolutely, reusing the same address should be avoided! – Stefan Aug 1 '15 at 18:21
  • @NickODell Auditing is not an issue in my case, as the orders are stored in a POS system, only the payments should go via bitcoin. – Stefan Aug 1 '15 at 18:23
  • Just checking, if you are still looking you can try medium.com/@blockonomics_co/…. Can generate address/invoice using ur MPK – dark knight Jul 29 '16 at 4:27
2

What Electrum describes as 'Master Public Keys' are more commonly know as 'extended public keys' and are an excellent way for a Point of Sale terminal to accept payment without being able to spend that payment.

Is there any other approach one could generate addresses without a private key available?

Well, there's always the approach of generating all of your addresses in advance. That has the advantage of simplicity. Other than that, I don't think there are any other approaches which work as well as BIP32.

Are there any problems one could face with the MPK derivation approach?

You mentioned that you have multiple terminals, which means that you need to avoid using the same index with the same MPK , or you'll generate the same address. You can avoid this by either using different indexes, or different MPK's.

Which wallets expose the MPK and furthermore which wallets get a notice of transactions done to addresses derived outside of their knowledge (however from the seed they know)?

Electrum does this. It's called a 'gap limit.' It will check for transactions beyond the last address with a balance that it knows about. By default it only checks 5 extra addresses, but you can increase that. Having an adjustable gap limit is pretty common.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.