toggle57 (OP)
Newbie
Offline
Activity: 14
Merit: 9
|
I have a Trazor hardware wallet, and use the Trazor web site to withdraw bitcoin from my exchange.
For each withdrawal I must copy and paste a string of characters from the Trazor web page to my exchange.
It is possible to reuse the same string (from a previous withdrawal) OR each time create a new string of characters.
question:
So is this string of characters the public key - so each time I withdraw (using a new string of characters) into my wallet I am withdrawing into a new location on the block chain - and the Trazor wallet keeps track of all these separate locations?
OR
Is each string just a hash/signature from which a single (same) public key is calculated.
I assume its the second... and that reusing the same "hash" is not a problem because money is going into the block chain public address and not out of it.
thanks in advance.
|
|
|
|
jackg
Copper Member
Legendary
Offline
Activity: 2856
Merit: 3071
https://bit.ly/387FXHi lightning theory
|
|
November 28, 2020, 08:02:56 PM |
|
Your address is a hash of your public key and your public key is like a remainder function being run on your private key.
Addresses have a many to one relationship with public keys (however collisions are almost impossible). Each address is a hash of a new public key bit all are stored in your trezor wallet.
|
|
|
|
o_e_l_e_o
In memoriam
Legendary
Offline
Activity: 2268
Merit: 18771
|
|
November 29, 2020, 01:28:58 AM |
|
So is this string of characters the public key - so each time I withdraw (using a new string of characters) into my wallet I am withdrawing into a new location on the block chain - and the Trazor wallet keeps track of all these separate locations? This is the closer of your two suggestions. The string of characters is what is known as an address rather than the public key itself. The address is a hash of the public key with some additional data added in (a byte to indicate what kind of address it is and a checksum). It is fine to reuse the same address from a security point of view - we are far away from the stage where revealing your public key (as you do when you spend coins from an address) is any real risk to your private key. However, reusing the same address compromises your privacy as anyone who knows that address belongs to you can link every transaction involving that address back to you.
|
|
|
|
toggle57 (OP)
Newbie
Offline
Activity: 14
Merit: 9
|
|
November 29, 2020, 05:16:24 AM |
|
This is the closer of your two suggestions. The string of characters is what is known as an address rather than the public key itself. The address is a hash of the public key with some additional data added in (a byte to indicate what kind of address it is and a checksum).
Ok so each time I create a new "address" (aka string of characters) it is ultimately resolved to the same public key - and the public key is the single "pointer" to where all my transactions are on the block chain? I'm an old c programmer so the terms "address" and "key" are very loaded words to me. However, reusing the same address compromises your privacy as anyone who knows that address belongs to you can link every transaction involving that address back to you.
Thanks... this is something that had not occurred to me.
|
|
|
|
o_e_l_e_o
In memoriam
Legendary
Offline
Activity: 2268
Merit: 18771
|
|
November 29, 2020, 06:42:26 AM |
|
Ok so each time I create a new "address" (aka string of characters) it is ultimately resolved to the same public key No. Each address in your wallet has its own unique public key. Your Trezor wallet uses the seed phrase (the words you should have written down when you first initialized it) to deterministically generate a list of unique private keys through a series of intermediate steps. Each one of those private keys will generate a unique public key, and each one of those public keys will hash to a unique address. The public key is indeed the "pointer" as to where your bitcoin are on the blockchain, and the possession of the associated private key allows you to spend the bitcoin stored at that public key.
|
|
|
|
odolvlobo
Legendary
Offline
Activity: 4522
Merit: 3427
|
|
November 29, 2020, 10:14:41 AM |
|
So is this string of characters the public key - so each time I withdraw (using a new string of characters) into my wallet I am withdrawing into a new location on the block chain - and the Trazor wallet keeps track of all these separate locations?
OR
Is each string just a hash/signature from which a single (same) public key is calculated.
I assume its the second... and that reusing the same "hash" is not a problem because money is going into the block chain public address and not out of it.
thanks in advance.
The string of characters is called an "address". It can be thought of as the location of the bitcoins that are held in the block chain, though that is not technically correct. Each time you tell the Trezor software that you want to receive some bitcoins, it will get a new address from the hardware. Note that many people confuse "address" with "public key". They are different things, though they are related. An "address" is derived from its "public key", which is derived from its "private key", which is generated by the hardware using the "seed". Since the wallet software knows all the addresses and private keys, it can manage all the bitcoins. Reusing addresses with the same exchange is not bad since they already know who they are sending the coins to.
|
Join an anti-signature campaign: Click ignore on the members of signature campaigns. PGP Fingerprint: 6B6BC26599EC24EF7E29A405EAF050539D0B2925 Signing address: 13GAVJo8YaAuenj6keiEykwxWUZ7jMoSLt
|
|
|
toggle57 (OP)
Newbie
Offline
Activity: 14
Merit: 9
|
|
November 29, 2020, 07:48:21 PM |
|
Ok so each time I create a new "address" (aka string of characters) it is ultimately resolved to the same public key No. Each address in your wallet has its own unique public key. Your Trezor wallet uses the seed phrase (the words you should have written down when you first initialized it) to deterministically generate a list of unique private keys through a series of intermediate steps. Each one of those private keys will generate a unique public key, and each one of those public keys will hash to a unique address. The public key is indeed the "pointer" as to where your bitcoin are on the blockchain, and the possession of the associated private key allows you to spend the bitcoin stored at that public key. So I think I need to introduce the word "Account" into this discussion - which is where [I think] there is a disconnect here. I realize that I may choose to have several [for example] Bitcoin "Accounts" in my wallet but I am choosing to ONLY discuss a single "Account" of Bitcoin within my wallet. So each time I withdraw from my exchange newly purchased Bitcoin I am depositing them into my hardware wallet to the same "Account". BUT when I tell my exchange where to send the Bitcoin I am providing them with a different hash/signature that ultimately is resolved to the same single public key - aka the same "Account" on the block chain. So there is a 1 to 1 relationship between a wallet address and a public key BUT... many different hash/signatures of a given wallet address can be used to generate the public key on the block chain. A wallet address would never be directly transmitted or used to transact... a hash/signature would always be used instead. Also a wallet address is analogous to a private key. Thanks so much for your patience on this.
|
|
|
|
o_e_l_e_o
In memoriam
Legendary
Offline
Activity: 2268
Merit: 18771
|
|
November 29, 2020, 09:25:12 PM |
|
So I think I need to introduce the word "Account" into this discussion Account already has a defined meaning when it comes to bitcoin wallets. Make sure you see not confusing things further by using words which already mean different things. An account on your Trezor is a specific derivation path which contains potentially billions of keys and addresses. So each time I withdraw from my exchange newly purchased Bitcoin I am depositing them into my hardware wallet to the same "Account". BUT when I tell my exchange where to send the Bitcoin I am providing them with a different hash/signature that ultimately is resolved to the same single public key - aka the same "Account" on the block chain. Each address has its own unique public key. Multiple transactions to the same address will all have different signatures, but the coins will end up at the same public key. If you make transactions to different addresses, then they end up at different public keys. So there is a 1 to 1 relationship between a wallet address and a public key BUT... many different hash/signatures of a given wallet address can be used to generate the public key on the block chain. A wallet address would never be directly transmitted or used to transact... a hash/signature would always be used instead. A wallet address is used to transact. When I want to send coins to a specific address, I must include that address in the transaction data. Also a wallet address is analogous to a private key. A private key generates a public key which generates an address, but they are not analogous.
|
|
|
|
toggle57 (OP)
Newbie
Offline
Activity: 14
Merit: 9
|
|
November 30, 2020, 02:22:49 AM |
|
So I think I need to introduce the word "Account" into this discussion Account already has a defined meaning when it comes to bitcoin wallets. Make sure you see not confusing things further by using words which already mean different things. An account on your Trezor is a specific derivation path which contains potentially billions of keys and addresses. So each time I withdraw from my exchange newly purchased Bitcoin I am depositing them into my hardware wallet to the same "Account". BUT when I tell my exchange where to send the Bitcoin I am providing them with a different hash/signature that ultimately is resolved to the same single public key - aka the same "Account" on the block chain. Each address has its own unique public key. Multiple transactions to the same address will all have different signatures, but the coins will end up at the same public key. If you make transactions to different addresses, then they end up at different public keys. So there is a 1 to 1 relationship between a wallet address and a public key BUT... many different hash/signatures of a given wallet address can be used to generate the public key on the block chain. A wallet address would never be directly transmitted or used to transact... a hash/signature would always be used instead. A wallet address is used to transact. When I want to send coins to a specific address, I must include that address in the transaction data. Also a wallet address is analogous to a private key. A private key generates a public key which generates an address, but they are not analogous. Man, I am struggling... So it seems that the thing I have been calling the hash/signature is actually the wallet address. I keep thinking of the wallet address as this singular immutable thing but it sounds like a wallet address can be used like a disposable [single use] token to write a transaction to the block chain at the location of the public key (or as previously discussed an existing wallet address could be reused). A private key generates a public key which generates an address, but they are not analogous.
just to be sure i'm clear... are you saying the public key generates the wallet address? I had thought that both public key and wallet address were derived directly from the private key. I had imagined wallets only needed to contain private keys - and that everything needed could be derived from that.
|
|
|
|
o_e_l_e_o
In memoriam
Legendary
Offline
Activity: 2268
Merit: 18771
|
|
November 30, 2020, 02:39:54 AM |
|
So it seems that the thing I have been calling the hash/signature is actually the wallet address. Hashes are used for a lot of different things in bitcoin. An address is a hash of the public key (plus some extra data). A signature is created when you sign a transaction with the relevant private key. Without a valid signature, the transaction cannot be processed. Here is a good resource which might help you: https://learnmeabitcoin.com/beginners/keys_addressesjust to be sure i'm clear... are you saying the public key generates the wallet address? I had thought that both public key and wallet address were derived directly from the private key. I had imagined wallets only needed to contain private keys - and that everything needed could be derived from that.
Yes, the public key generates the address, but you are also correct in saying that everything can be derived from the private key. If I have a private key, I can perform elliptic curve multiplication on it to derive the public key. I can then hash that public key, add an identifier byte and a checksum, and arrive at the address.
|
|
|
|
webtricks
Legendary
Offline
Activity: 1918
Merit: 1759
|
|
November 30, 2020, 07:20:47 AM |
|
Trezor is a HD (Hierarchical Deterministic) wallet. The following terms are commonly used when we talk about HD wallet: - Seed Phrase - Also known as Recovery Phrase or Mnemonic Seed
- Private Key
- Public Key
- Bitcoin address - Also known as hash of public key
Your wallet generates a random seed phrase and gives it to you when you get started with the wallet. Then the wallet uses various hashing algorithms and fixed standard to generate private keys hierarchically from the seed phrase. In the simplest words, hierarchically means adding a sequence number to the input to generate the private keys. For example, 0 is used for first private key, 1 is used for next private key and so on. In short, we can say your wallet can create billions of private keys using a single seed phrase by just incrementing a number in the input. Then all private keys are stored in the wallet. Now, when you request a bitcoin address from your wallet, it will take the first private key, create public key from it using Elliptic Curve Multiplication. Then create a hash of public key and give it you. That hash of public key is known as Bitcoin address. You can use same address any number of time (although it isn't consider very privacy-friendly). Alternatively, you can request a new address and your wallet will use second private key, create second public key from it using ECC Multiplication, hash it and create second address. This happens everytime you create a new address. So each address belongs to different public and private key pair.
PS: I am preparing a detailed thread which will explain how the entire conversion from seed phrase to bitcoin address happens in most simplest words so everyone can understand the technicality. The thread will be up by next Sunday. In the meanwhile, if things are still unclear to you, you can ask further.
|
|
|
|
toggle57 (OP)
Newbie
Offline
Activity: 14
Merit: 9
|
|
November 30, 2020, 08:00:51 PM |
|
You can use same address any number of time (although it isn't consider very privacy-friendly). Alternatively, you can request a new address and your wallet will use second private key, create second public key from it using ECC Multiplication, hash it and create second address.
This happens everytime you create a new address. So each address belongs to different public and private key pair.
Thanks... I guess what I am trying to get clear on here is... I think of my total Bitcoin holdings like a single Bank Account... I may make hundreds of buys and sells but all of those transactions get aggregated under a single "thing". If I continue to create new addresses for each buy/sell - generating new private and public keys - what is it that aggregates all of these transactions? I had thought that this aggregation happened because all the transactions went to the same public key.
|
|
|
|
o_e_l_e_o
In memoriam
Legendary
Offline
Activity: 2268
Merit: 18771
|
|
November 30, 2020, 08:28:11 PM |
|
I had thought that this aggregation happened because all the transactions went to the same public key.
The aggregation happens because all your private keys (and public keys, and addresses) are all part of the same wallet, which is generated in a deterministic fashion. That is to say, all your keys are ultimately derived from the seed phrase your Trezor generated for you. You can type that seed phrase in to any compatible piece of software on any computer on the planet, and it will generate the same private keys (and public keys, and addresses) in the same order every single time. Note: Don't actually type your seed phrase in anywhere. As soon as you do, you have exposed it to the internet and so it is no longer secure, and you need to move all the coins to a new wallet immediately.
|
|
|
|
toggle57 (OP)
Newbie
Offline
Activity: 14
Merit: 9
|
|
November 30, 2020, 09:04:16 PM |
|
I had thought that this aggregation happened because all the transactions went to the same public key.
The aggregation happens because all your private keys (and public keys, and addresses) are all part of the same wallet, which is generated in a deterministic fashion. That is to say, all your keys are ultimately derived from the seed phrase your Trezor generated for you. You can type that seed phrase in to any compatible piece of software on any computer on the planet, and it will generate the same private keys (and public keys, and addresses) in the same order every single time. Note: Don't actually type your seed phrase in anywhere. As soon as you do, you have exposed it to the internet and so it is no longer secure, and you need to move all the coins to a new wallet immediately. Ok thanks very much, I think we can close this thread. Although there are finer points about the hardware wallet rabbit hole I could go down - I think I understand things as much as I need to in a practical way.
|
|
|
|
|