@DannyHamilton
Thanks for the wonderful response. I think it clears up much.
I understand now that when I "login" to see my wallet, what I am logging into is really a semantic that has nothing at all to do with Bitcoin. I am logging into an environment that now has access to all the private/public key pairs that "belong" to me. The pairs that involve unspent inputs are important since these contain BTC that have value and I could spend.
Whenever I want to receive BTC from some arbitrary user Bob, I do not at any point tell Bob ANYTHING about my existing public keys that I hold the private key for (where the public key is effectively a BTC address). What I do instead is generate a NEW key pair, keeping the private key stored only in this secure environment I just logged into (how this is implemented is not relevant -- could be stored in the cloud or on my local hard drive or whatever), and give Bob the BTC address corresponding to the public key from this pair. Bob makes the payment, not knowing anything about what other pairs I hold nor any unspent inputs among them.
Now, once I have received that BTC from Bob, I have another pair that I manage that has unspent inputs.
Some questions:
1. Is the above accurate?
You're getting closer, but I think you're still missing some big pieces about how bitcoin works. Have you read the
bitcoin whitepaper yet? It really should be a prerequisite to engage in the "Development & Technical Discussion" forum to have at least read the whitepaper for a basic understanding of what bitcoin attempts to accomplish and how it attempts to accomplish it.
2. Over time, won't this environment I am managing become rather unwieldy to manage? Over the course of say 80 years of a human life time for someone who is 15 years old now and using this environment, they will have a new pair for every single payment they ever receive. That could be thousands of BTC addresses they now have pairs for.
Sure, I suppose there could be thousands of pairs in a wallet if the user NEVER switches to a new wallet for their entire life. That seems unlikely to me, but a computer should manage a few thousand keypairs without an problem. Why would it be "unwieldy"?
3. This bit confuses me: "As an example, any casual user of Bitcoin Core will have new addresses generated for them without their knowledge every time they send a transaction". I can see how when I want Bob to send me BTC, I generate a new key pair. But to send, how do I have a new address generated automatically? I mean sure, I could generate one, but I have to "fund" it with the unspent inputs from one of the other keypairs I own before I can make a payment from it, right? How is that anonymous? Now, there is a connection from this new keypair to the one that funded it. So the recipient may as well just receive BTC from the original keypair (ie: the original keypair may as well sign off on spending some of its unspent inputs to pay Bob).
Yep, I was right, you're definitely still missing some big pieces about how bitcoin works. Please read the
whitepaper, then read about transaction "
change". Then we'll discuss this further if you still have questions.
4. In general, I get that if Alice pays Bob, Bob can create new keypairs so Alice never knows about what Bob has in his "wallet" other than all the addresses Alice paid Bob from. But whenever Bob pays Carol, he has to use previous keypairs to fund the payment to Carol, so Carol now knows through the blockchain what addresses Bob funded with. Furthermore, Alice can see where the BTC she sent Bob went on to. Am I getting this right? So basically, Bob cannot anonymize the source of his payments to Carol -- he can only anonymize his holdings from Alice who pays him.
Carol doesn't know anything about which addresses Alice was using, or what other addresses Bob received bitcoins at. Alice doesn't know anything about Carol's addresses, or what other funds Bob may have sent in other transactions.
It is possible for some addresses to be linked together. If a user is careful (especially if they use a wallet that provides "coin control" features), then they can reduce the connections and improve their privacy.
Bitcoin Whitepaper:
https://bitcoin.org/bitcoin.pdfChange:
https://en.bitcoin.it/wiki/ChangeActually, I did read it. A while ago. I will give it another go. Thanks for the quick response.