Bitcoin Forum
May 06, 2024, 05:25:31 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Withdrawing bitcoin from exchange.  (Read 254 times)
toggle57 (OP)
Newbie
*
Offline Offline

Activity: 14
Merit: 9


View Profile
November 28, 2020, 07:57:49 PM
Merited by o_e_l_e_o (2), webtricks (1)
 #1

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.
1715016331
Hero Member
*
Offline Offline

Posts: 1715016331

View Profile Personal Message (Offline)

Ignore
1715016331
Reply with quote  #2

1715016331
Report to moderator
"Governments are good at cutting off the heads of a centrally controlled networks like Napster, but pure P2P networks like Gnutella and Tor seem to be holding their own." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715016331
Hero Member
*
Offline Offline

Posts: 1715016331

View Profile Personal Message (Offline)

Ignore
1715016331
Reply with quote  #2

1715016331
Report to moderator
jackg
Copper Member
Legendary
*
Offline Offline

Activity: 2856
Merit: 3071


https://bit.ly/387FXHi lightning theory


View Profile
November 28, 2020, 08:02:56 PM
 #2

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 Offline

Activity: 2268
Merit: 18510


View Profile
November 29, 2020, 01:28:58 AM
 #3

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 Offline

Activity: 14
Merit: 9


View Profile
November 29, 2020, 05:16:24 AM
 #4

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 Offline

Activity: 2268
Merit: 18510


View Profile
November 29, 2020, 06:42:26 AM
Merited by webtricks (1)
 #5

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 Offline

Activity: 4298
Merit: 3214



View Profile
November 29, 2020, 10:14:41 AM
Merited by webtricks (1)
 #6

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 Offline

Activity: 14
Merit: 9


View Profile
November 29, 2020, 07:48:21 PM
 #7

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 Offline

Activity: 2268
Merit: 18510


View Profile
November 29, 2020, 09:25:12 PM
Merited by webtricks (1)
 #8

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 Offline

Activity: 14
Merit: 9


View Profile
November 30, 2020, 02:22:49 AM
 #9

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).

Quote
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 Offline

Activity: 2268
Merit: 18510


View Profile
November 30, 2020, 02:39:54 AM
 #10

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_addresses

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.
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 Offline

Activity: 1918
Merit: 1728


View Profile
November 30, 2020, 07:20:47 AM
 #11

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 Offline

Activity: 14
Merit: 9


View Profile
November 30, 2020, 08:00:51 PM
 #12

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 Offline

Activity: 2268
Merit: 18510


View Profile
November 30, 2020, 08:28:11 PM
Merited by webtricks (1)
 #13

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 Offline

Activity: 14
Merit: 9


View Profile
November 30, 2020, 09:04:16 PM
 #14

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.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!