Does this mean that all accounts have the same view key(because the
view keys are directly derived from the seed and not from the
Just to clarify, "account" is just about grouping sets of subaddresses together. There are only subaddresses, and we decided to group them into accounts that would share the same balance for presentation purposes only. The blockchain has no idea what an account is. Accounts are only really part of a two tier numbering scheme, and nothing special.
Subaddresses were specifically designed so that the same private view key is used to scan for all incoming funds to all subaddresses.
If so does this mean every subaddress generated is using
the same public view key no matter the account it is in?
They're all generated from the same private view key
Is there any way or plan in the future to have different view keys for each account
in a wallet?
They share the same private view key for performance reasons. If you had N different private view keys, wallet scanning time (which is computationally expensive due to elliptic curve operations) would take N times longer. Thus, if you really want multiple private view keys, we decided that separate wallets were the best approach. This is just wallet logic though, and nothing is stopping someone from forking the Monero wallet and implementing a scheme with multiple view keys. This fork of the wallet software would be totally compatible with the Monero network and blockchain.
I know there is no limit to the number of subaddresses an
account can have - is there a limit(or recommended limit) for the max
number of accounts the monero-wallet-cli can handle?
There technically is a limit, which is 2^32 (approx 4 billion) accounts, each with 2^32 subaddresses.
Looking at the RPC commands on getmonero.org I don't see a way to see payments coming
into a specific subaddress. Is there a command like get_payments (even
just locally in monero-wallet-cli) that can break out payments to a
get_payments does return a "subaddr_index" with a major and minor index (account and subaddress index).
Why would some outgoing transactions not be viewable after June 2017?
Monero's privacy mechanisms are designed so that you can't tell for sure if an output has been spent, unless you know both the private view key and the private spend key. Thus it has never been enough to only know the private view key, if you want to know for sure about outgoing transactions. Some wallets may have tried to guess at outgoing transactions, based on the receipt of change outputs that happen to mention other outputs received to your wallet in the list of spent outputs. You need to know the private spend key in order to know the key images for your outputs, and only someone with the knowledge of the key images can tell whether outputs have been spent. I don't see how June 2017 would have changed this, unless some wallets that had previously been guessing at outgoing transactions decided to stop guessing.