I see. When you create a new address in a wallet application, say, it really creates a new private-key that's a 256 bit unit. Then from that the public-key is formed from a series of hashes and[ from the public-key another series of hashes creates the address. That means it's always possible to deduce from the private-key what the public-key and address are because you can run the private-key through the series of hashes to get the result.
Close but not exactly. Bitcoin uses ECDSA specifically curve SECP256K1.
https://en.bitcoin.it/wiki/Secp256k1The private key is a random 256 bit number. The private key is combined with the SECP256K1 curve to produce the public key. There is no hashing involved in the generation of the public key. The public key is a 512 bit value (unless compressed but lets save that for another day) which represents a point (256 bit x value, 256 bit y value) on the SECP256K1 curve. The math behind
Elliptical Curve Cryptography is complex but the strength comes from the fact that if you have the private key and the curve (public knowledge) you can generate the public key easily but if you only have the public key you can't determine the private key because it would be computationally infeasible.
As an extra level of security (and to prevent things like typos) the public key is then double hashed and a checksum generated. The 8 bits representing the version number (reason most Bitcoin address begin with 1 = version number), the 160 bit hash and 32 bit checksum are concatenated to form public address. The public address (simply a 200 bit number) is formatted using Base58 to make it more compact.
https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addressesPrivate Key - Random 256bit number
Public Key - Produced from Private key using ECC
Public Address - RIPEMD160(SHA256(public key)) combined with version number and checksum
That means that anyone with possession of the private-key has access to the address but knowledge of the address wont yield any knowledge of the private key because of the mathematical impossibility of inducing back up through the hashes.
Knowledge of the public address won't give you the public key but even if you have the public key you won't be able to determine the private key due to the one way nature of ECDA keypairs.
Public Key -> Public Address = trivially easy
Public Address -> Public Key = protected by the one way nature of RIPEMD160 & SHA256 hashing functions
Private Key -> Public Key = trivially easy
Public Key -> Private Key = protected by the one way nature of ECC
What does an index deal with in the index portion of a transaction? I know above for the coinbase transaction it doesn't matter much but what about the others?
A transaction consists of multiple inputs and multiple outputs. Unspent outputs of prior tx become the inputs for new txs. The tx hash identifies the tx but it doesn't identify which unspent output from that tx is being used. The index identifies the specific output (first one, second first, 23rd one, etc).