3

I understand that a seed is used to generate your initial private spend key as well as the private/public view keys; creating your initial account and first real subaddress. From there, other accounts with their own subaddresses can be generated and added to your wallet.

  1. 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 accounts)?
  2. If so, does this mean every subaddress generated is using the same public view key no matter the account it is in?
  3. Is there any way or plan in the future to have different view keys for each account in a wallet?
  4. 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?
  5. 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 (or even just locally in monero-wallet-cli), that can break out payments to a specific subaddress?
  6. Also reading Moneropedia > View Key, I came across this:

By sharing a viewkey, a person is allowing access to view every incoming transaction for that address. However, outgoing transactions cannot be reliably viewed as of June 2017. Therefore, the balance of a Monero address as shown via a viewkey should not be relied upon.

Why would some outgoing transactions not be viewable after June 2017?

Thank you so much for your time.

3
  • 1
    for the same reason as before june 2017. That wording just means "it is that way, and today is in june 2017", so that if later on this changes, people reading this know this doesn't contradict another statement that says "it's not like that" but was written later.
    – user36303
    Jan 7, 2019 at 14:46
  • @user36303 Thank you - I misunderstood. Do you know if output transactions are now reliably viewable with view keys with the new version (0.13.0.4) or is this still an issue?
    – Ryan
    Jan 7, 2019 at 15:09
  • no, you definitely need the private spend key to reliably detect spent funds
    – knaccc
    Jan 7, 2019 at 18:18

1 Answer 1

4

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 accounts)?

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 specific subaddress?

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.

1
  • 1
    You and @user36303 are total MVPs - I've learned a ton reading your responses - thank you so very much!
    – Ryan
    Jan 7, 2019 at 15:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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