Bitcoin Forum
November 09, 2024, 09:01:52 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: What's with all the addresses I've never seen before in my transactions?!?  (Read 865 times)
TT (OP)
Member
**
Offline Offline

Activity: 77
Merit: 10



View Profile
July 16, 2011, 09:59:48 AM
 #1

OK, I'm guessing someone has already answered this one somewhere...and it could just be
that I still don't really understand the bitcoin protocol.

When I send, say, .3 BTC, I'm seeing a bunch of other transactions in the transaction history
with addresses I've never seen before. Rather than a straightforward .3005 input and .3 output,
with .0005 as a transaction fee, I see something like 2 BTC as an input and two outputs:
one is 1.6995 and the other is .3. I recognize the .3 output as the address I sent to. But I have
no idea who the other address is.

Can someone please help?!

Thanks.
myrkul
Hero Member
*****
Offline Offline

Activity: 532
Merit: 500


FIAT LIBERTAS RVAT CAELVM


View Profile WWW
July 16, 2011, 10:05:05 AM
 #2

Check your address book. I bet you'll find the receiving address of that 1.6995.

It's all part of the program. Helps with anonymity. (You can't say exactly how much money each person has sent where, etc.)

BTC1MYRkuLv4XPBa6bGnYAronz55grPAGcxja
Need Dispute resolution? Public Key ID: 0x11D341CF
No person has the right to initiate force, threat of force, or fraud against another person or their property. VIM VI REPELLERE LICET
cuddlefish
Sr. Member
****
Offline Offline

Activity: 364
Merit: 250


View Profile
July 16, 2011, 10:05:29 AM
 #3

OK, I'm guessing someone has already answered this one somewhere...and it could just be
that I still don't really understand the bitcoin protocol.

When I send, say, .3 BTC, I'm seeing a bunch of other transactions in the transaction history
with addresses I've never seen before. Rather than a straightforward .3005 input and .3 output,
with .0005 as a transaction fee, I see something like 2 BTC as an input and two outputs:
one is 1.6995 and the other is .3. I recognize the .3 output as the address I sent to. But I have
no idea who the other address is.

Can someone please help?!

Thanks.

Inputs are all-or-nothing, you must spend the entire address balance.

the second output is your 'change', to a new address Bitcoin generated.


Smart question, BTW.
TT (OP)
Member
**
Offline Offline

Activity: 77
Merit: 10



View Profile
July 16, 2011, 10:06:40 AM
Last edit: July 17, 2011, 12:07:23 AM by Maged
 #4

OK, so this is my change. Only problem is, I don't see this address ANYWHERE in my address book.
Is it a "hidden" address? Is the client trying to do something clever without telling me?

Also, why can't you just get the change back at the sending address? So the client is creating a
hidden account in my wallet to receive the change?
Maged
Legendary
*
Offline Offline

Activity: 1204
Merit: 1015


View Profile
July 17, 2011, 12:04:35 AM
 #5

OK, so this is my change. Only problem is, I don't see this address ANYWHERE in my address book.
Is it a "hidden" address? Is the client trying to do something clever without telling me?
Yes, it's a hidden address. However, if you send something to it, you'll notice that you still get the money.
Also, why can't you just get the change back at the sending address? So the client is creating a
hidden account in my wallet to receive the change?
It's to help with anonymity. As an outside observer, it's harder to be sure which address is the change and which address was the one that you were actually sending to.

TT (OP)
Member
**
Offline Offline

Activity: 77
Merit: 10



View Profile
July 17, 2011, 03:37:08 AM
 #6

But say I wanted to be able to specify all these things myself in the API without the client
trying to do all these clever little tricks for me. Say I wanted a simple way of saying
"I want X amount transfered from address A to address B." Shouldn't the API expose
this functionality?
JoelKatz
Legendary
*
Offline Offline

Activity: 1596
Merit: 1012


Democracy is vulnerable to a 51% attack.


View Profile WWW
July 17, 2011, 03:41:20 AM
 #7

But say I wanted to be able to specify all these things myself in the API without the client
trying to do all these clever little tricks for me. Say I wanted a simple way of saying
"I want X amount transfered from address A to address B." Shouldn't the API expose
this functionality?
The protocol doesn't really work that way and the client design doesn't reflect that philosophy. You don't really transfer funds from an address, addresses are just to allow other people to send you bitcoins. And accounts are only used for local bookkeeping.

The client treats all your bitcoins as one giant pile.

I am an employee of Ripple. Follow me on Twitter @JoelKatz
1Joe1Katzci1rFcsr9HH7SLuHVnDy2aihZ BM-NBM3FRExVJSJJamV9ccgyWvQfratUHgN
TT (OP)
Member
**
Offline Offline

Activity: 77
Merit: 10



View Profile
July 17, 2011, 09:36:21 AM
 #8

But when you sign a transaction, you do it from a specific private key which corresponds to a unique public key which is the address, no?
So to check whether a transaction is valid, the network checks the block chain to see if the transactions involving that address add up. Or am I missing something here?!?
JoelKatz
Legendary
*
Offline Offline

Activity: 1596
Merit: 1012


Democracy is vulnerable to a 51% attack.


View Profile WWW
July 17, 2011, 03:17:56 PM
Last edit: July 17, 2011, 04:23:18 PM by JoelKatz
 #9

But when you sign a transaction, you do it from a specific private key which corresponds to a unique public key which is the address, no?
Sort of. You sign it with each private key that corresponds to the output of a previous transaction that is being claimed by the current transaction.

Quote
So to check whether a transaction is valid, the network checks the block chain to see if the transactions involving that address add up. Or am I missing something here?!?
You might be. I think you're thinking it does this:

1) Check the signature to prove the transaction came from the owner of the address.

2) Find unclaimed bitcoins for that address and use them.

But it actually works like this:

1) For each 'input' to this transaction, find the corresponding 'output' of a previous transaction.

2) Check the signature(s) on this transaction to confirm that the corresponding output of a previous transaction is validly claimed.

That is, the validation is per input to a transaction, not per transaction. Transactions can claim inputs using signatures with different keys.

Transactions have inputs that gather bitcoins into a pile and the outputs that distribute that pile. The inputs can come from a variety of different previous transactions sent to different addresses.

I am an employee of Ripple. Follow me on Twitter @JoelKatz
1Joe1Katzci1rFcsr9HH7SLuHVnDy2aihZ BM-NBM3FRExVJSJJamV9ccgyWvQfratUHgN
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!