Danny, Thank you. PLEASE don't hate me for asking this ( I know it seems stupid) but I think it will help me wrap my head around it better.
There is no hate here. Nobody can understand something until they understand it. I'll do what I can to help you reach that understanding.
Say your address is: 1AD1PeA41UYrcdtg68jcZoEzHJYTEh5XrZ
What prevents ME from getting into your wallet and taking your bitcoins? Is it because YOU (for example) have the only wallet in existence tied to that address? (as well as the only means of making a key that can access that wallet?)
A private key is a really big number that can be represented with 256 binary digits.
Here is an example of a private key:
290,546,074,773,574,840,000
We can represent this same number in hexadecimal as:
E9 87 3D 79 C6 D8 7D C0 FB 6A 57 78 63 33 89 F4 45 32 13 30 3D A6 1F 20 BD 67 FC 23 3A A3 32 62
This exact same number can also be represented in the standard bitcoin Wallet Import Format as:
5Kb8kLf9zgWQnogidDA76MzPL6TsZZY36hWXMssSzNydYXYB9KF
This value can also be represented in Mini Private Key format as:
SzavMBLoXU6kDrqtUVmffv
The three strings of letters and numbers above are just three different ways of representing the exact same 256 bit number.
Using this "private key" with the worldwide standard ECDSA algorithm and the secp256k1 curve we can generate a public key and from there we can generate the bitcoin address:
1CC3X2gu58d6wXUWMffpuzN9JAfTUWu4Kj
Normally, your wallet program takes care of choosing a private key for you and generating the bitcoin address. The wallet program then stores the private key in a file, and displays the address to you so you can give it to others. Anyone who is going to send you bitcoins needs to know what bitcoin address to send the bitcoins to. Most wallets will allow you to have as many bitcoin addresses as you want. You can generate a new address for every transaction. The wallet program takes care of keeping track of all the addresses and adding up the total of all bitcoins associated with each address to display a total amount of bitcoins you control.
So, knowing what someone's
bitcoin address is allows you to send bitcoins to them.
When you want to send bitcoins somewhere, your wallet program will assign some of the bitcoins that you have received to someone else's address. To prove that you have the right to re-assign these bitcoins in this way, the bitcoin protocol will require a digital signature that is created using the private key of each address that the bitcoins are being reassigned from. Since the wallet program is keeping track of the addresses, private keys, and bitcoins for you, it takes care of providing the appropriate digital signature. Since you (or your wallet) is the ONLY one that has access to the private keys, providing the necessary signature to the bitcoin network is how the bitcoins get spent.
So, knowing the
private key that a bitcoin address was generated from allows you to spend all bitcoins that are ever received at that address.
What prevents you from taking my bitcoins is the fact that you don't know the private keys that were used to generate any of my bitcoin addresses. The wallet program that I use encrypts those private keys with a password. You don't know my password, so you can't take my bitcoins even if you do get access to my private keys since you need my password to decrypt those private keys.
Having a key means access to the bitcoins tied to that key
&
Having the address means you can only send to that address
Yes.
Having a "private key" gives you access to spend/send the bitcoins that are associated with the bitcoin address that was generated from that private key.
Having a bitcoin address means you can reassign some of your own bitcoins to that address.