Generate addresses without private key: Stealth addresses vs Master Public Key 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)?
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.