Author

Topic: Something strange here.... (Read 1979 times)

member
Activity: 84
Merit: 10
May 13, 2013, 05:29:27 PM
#29
ok thanks seems complex but if its all back end stuff guess its fine
donator
Activity: 1218
Merit: 1079
Gerald Davis
May 12, 2013, 11:14:01 PM
#28
thanks for explaining that seems wierd but if it works, so if my pool payouts keep going to one address then its still keeping the amounts seperate?

I don't think anyone addressed this bit. The answer is no, the amounts aren't kept separate. It's only when an address is an INPUT that its entire amount gets spent. You can have several transactions send to the same address, and the address only stores the total balance (though the blockchain keeps a record of each transaction, and so will your client if you can be arsed to look, which I usually can't).


Not correct.

The blockchain ONLY cares about inputs and outputs.  Each tx creates separate outputs and uses older unspent outputs (making them spent) as inputs.  So if one receives 1 BTC, 0.5 BTC and 0.2 BTC at address X.  The amounts are "seperate".  Nowhere at the protocol level is there "1.7 BTC at address x".  There are three distinct unspent outputs to address X in the amounts of 1.0, 0.5 & 0.2 BTC.  One can create a tx spending one or more of them if one has the private key for address X.


There is no such thing as "total value" at an address at the protocol level.  Now your client will scan the blockchain and give you the total but that is merely an abstraction.  When your wallet shows "balance: 1.000 BTC" what is really means is that "as of the current block I have scanned the entire blockchain and located in the blockchain unspent outputs for addresses that I have the corresponding private key and the sum of those unspent outputs is 1.000 BTC"
hero member
Activity: 492
Merit: 503
May 12, 2013, 03:50:53 PM
#27
thanks for explaining that seems wierd but if it works, so if my pool payouts keep going to one address then its still keeping the amounts seperate?

I don't think anyone addressed this bit. The answer is no, the amounts aren't kept separate. It's only when an address is an INPUT that its entire amount gets spent. You can have several transactions send to the same address, and the address only stores the total balance (though the blockchain keeps a record of each transaction, and so will your client if you can be arsed to look, which I usually can't).
donator
Activity: 1218
Merit: 1079
Gerald Davis
May 12, 2013, 03:45:16 PM
#26
its just im a small time miner so i have payments of .3-.5 btc and id liketo mitigate fees as much as possible as it increases

Make the payment threshold from your pool the largest you are comfortable with.  Each tx is a separate unspent output.
kjj
legendary
Activity: 1302
Merit: 1026
May 12, 2013, 03:37:32 PM
#25
You can send transactions to yourself.  If you just do sendtoaddress, you won't necessarily collect the small transactions that you are hoping to collect, unless you send your entire balance to yourself.  Which isn't necessarily a good idea, by the way.

Or, you can use the raw transaction API to collect the small transactions and send them to yourself, manually.  This is a hassle, but works well, particularly once you have it scripted.
member
Activity: 84
Merit: 10
May 12, 2013, 10:56:57 AM
#24
its just im a small time miner so i have payments of .3-.5 btc and id liketo mitigate fees as much as possible as it increases
hero member
Activity: 616
Merit: 522
May 12, 2013, 10:52:35 AM
#23
You don't have to merge them to spend. Your client will automatically combine multiple outputs to create a transaction. So in the previous example where you have outputs: 10 BTC, 30 BTC and 60 BTC; if you want to send 80 BTC, your client will take 60 BTC and 30 BTC outputs to create a 90 BTC transaction: 80 BTC will go to the address you want to send to, and 10 BTC will go back to your wallet to one of your change addresses. You don't really need to think about these things as it's handled automatically under the hood.
donator
Activity: 1218
Merit: 1079
Gerald Davis
May 12, 2013, 10:51:14 AM
#22
You don't.  You just spend them.
member
Activity: 84
Merit: 10
May 12, 2013, 10:35:35 AM
#21
thanks for explaining that seems wierd but if it works, so if my pool payouts keep going to one address then its still keeping the amounts seperate?

so how would you merge small amounts back into a single input output thing for spending
hero member
Activity: 616
Merit: 522
May 11, 2013, 07:23:06 PM
#20
so to simplify and clarify.

i have 100 btc in a wallet,
i choose to send 5btc to address xxxyz
bitcoin sends the entire 100btc to the system,
then directs 5 to xxxyz
and returns 95 to an address it makes from the keypool before hiding it

No. The above is true only if you have 100 BTC as one unspent output. Output is, simplifying, what you received in a transaction. So if you have 100 BTC which you received as a single output of a a single transaction, then what you above wrote is true.

But if you first received 10 BTC, then 30 BTC and then 60 BTC in three separate transactions, then you have in total 100 BTC but in three separate outputs. When you send coins, entire outputs need to be spent (not entire wallets), so if you send 5 BTC, bitcoin client will send the entire 10 BTC output (and this will be an input of the new transaction): it will generate 5 BTC output to xxxyz and 5 BTC output to a change address that you own. You will now have previous unspent outputs of 30 BTC and 60 BTC and a new output of 5 BTC.

(that is, assuming for simplification, that bitcoin client chooses the 10 BTC output to use for this transaction; if it chosen 30 BTC, then it would send 5 BTC and 25 BTC change and after the transaction you'd have previous unspent outputs of 10 BTC and 60 BTC and a new output of 25 BTC in your wallet).

Edit: corrected inputs into outputs.
donator
Activity: 1218
Merit: 1079
Gerald Davis
May 11, 2013, 07:20:29 PM
#19
There is no system. Your client creates a transaction with a 100 BTC input and a pair of outputs 95 & 5 BTC.  The protocol doesn't know or care which is the change address.  It merely sees a valid tx with 100 BTC input and 100 BTC output(s).
member
Activity: 84
Merit: 10
May 11, 2013, 07:11:13 PM
#18
so to simplify and clarify.

i have 100 btc in a wallet,
i choose to send 5btc to address xxxyz
bitcoin sends the entire 100btc to the system,
then directs 5 to xxxyz
and returns 95 to an address it makes from the keypool before hiding it
sr. member
Activity: 448
Merit: 254
May 11, 2013, 06:49:48 PM
#17
Bitcoin users shouldn't be using those sites before understanding how bitcoin works, unless they like to be "the ox looking at the palace"...

Perhaps, but they're the easiest way to reassure yourself things are really happening, which is comforting when you just clicked a button in a beta software and are wondering if it actually did what it said it would.
legendary
Activity: 1358
Merit: 1002
May 11, 2013, 06:41:40 PM
#16
You can blame the blockexplorer sites for causing the confusion on users.
Bitcoin users shouldn't be using those sites before understanding how bitcoin works, unless they like to be "the ox looking at the palace"...
hero member
Activity: 616
Merit: 522
May 11, 2013, 06:35:08 PM
#15
There are no perfect solutions to this problem, but a decent one might be:

Always show all addresses that have ever been used, as in received funds. So after change address has been used, it's starting to show in your addresses list. Additionally, at the first time when change address is used, the client would show a popup message to the user explaining in few simple words change addresses concept and telling that they will be shown in their address list as they're being used. That popup would have “Understand. Don't show me this in the future“ checkbox and the “OK” button. Show it every time a new change address is used and until the user checked the “Don't show me” option.

This would trade the current questions for different ones, but at the same time it should decrease number of these new questions by order of magnitude and help more users understand what's going on.
sr. member
Activity: 448
Merit: 254
May 11, 2013, 05:43:27 PM
#14
Using a single key means that every single transaction you ever do it absolutely linked.  With random change addresses, there is sometimes a little linkage, but it isn't as easy or as automatic to track you.

Oh, agreed, but I am not sure casual users care so much about privacy.  They are also unlikely to use coin control or something to be mindful of linkage, so they harm their own privacy anyway*.  If these assumptions are correct, it seems silly to use random change addresses when the user doesn't want them and is actually confused by them.  At least, it should be configurable.

* Although if multi-party transaction creation like this were to become common, linking your change addresses wouldn't necessarily disclose they were owned by the same person.
kjj
legendary
Activity: 1302
Merit: 1026
May 08, 2013, 03:39:21 PM
#13
Plus, it would make the default to spray information around the network.

What do you mean?

Using a single key means that every single transaction you ever do it absolutely linked.  With random change addresses, there is sometimes a little linkage, but it isn't as easy or as automatic to track you.
sr. member
Activity: 448
Merit: 254
May 08, 2013, 03:05:17 PM
#12
Unhiding change would not in any way reduce confusion.  It would just trade the current questions for new different ones.

Agreed, or at least it would be difficult to show change addresses without confusion.  This is part of why I prefer to just get rid of change addresses.  Perhaps the simplest abstraction is having just one address, like how you only have one bank account number.  It's still a little weird to see your entire balance spent and then part sent back to you, but at least the questions go from "how'd this random address steal my money?!!" to "why does my entire balance get spent and then returned to me?"  It's just a trade of questions as you say, but maybe a step down in panic levels is worth it.

I'm thinking about writing a proposal for some kind of "user profile" selection wizard when you create a new wallet.  It asks questions about how advanced you are and what your use cases are in order to configure settings, like a new one to just use one address.  Has someone written this up already?  On the other hand, that effort might be better spent trying to make the current system more understandable.  (Or is that a lost cause, and new users who poke around on blockchain.info are just going to have to experience some confusion?)

Plus, it would make the default to spray information around the network.

What do you mean?
kjj
legendary
Activity: 1302
Merit: 1026
May 08, 2013, 12:40:42 PM
#11
Unhiding change would not in any way reduce confusion.  It would just trade the current questions for new different ones.  Plus, it would make the default to spray information around the network.  Not a good trade.
donator
Activity: 1218
Merit: 1079
Gerald Davis
May 07, 2013, 09:54:39 PM
#10
That is a good point.  If the hidding of change addresses made sense at one point it certainly doesn't now.  It causes nothing but user confusion.  I have never encountered a user who said "thank goodness the wallet hides some addresses from me".

Now hiding unused keypool addresses "might" make sense but even that should be visible via an advanced menu option.

If you click NEW ADDRESS then a "hidden" keypool address becomes visible.
If you receive funds at an address from the keypool it become visibile.
If your wallet sends funds to a keypool address as a change operation is remains invisible.

Which one of these is different.

The wallet hiding addresses WHICH HAS VALUE (i.e. unspent outputs) is horrible design.  It can ONLY lead to loss of funds.  Showing change addresses (i.e. you create a tx and it uses address 123.... as change and now 123.... shows in list of addresses) might lead to some user confusion but it won't lead to losing funds.

Hopefully someday the authors revisit this.  Since sites like blockchain.info exist and are used (even by users who don't use blockchain.info wallet) to track the status of transactions hiding info in the wallet that is visible in third party sites is just poor design.  Honestly it only remains due to inertia.
sr. member
Activity: 448
Merit: 254
May 07, 2013, 09:05:25 PM
#9
it was excluded because it breaks the absraction of a "wallet". users do not need to know what a change address is, nor do they need to know what inputs or outputs are. this is the same reason why paypal/ach/sepa transfers do not disclose their internal implementation details. having that feature in the client complicates application design, and adds the burden of wannabe power users asking for support.

Given the current system, we still have users, who know their way around blockchain.info or another block explorer but haven't learned the "change address" concept ("wannabe power users" as you would probably call them; I'm not that blunt), getting confused and, you guessed it, asking for support.

This may not be the place to delve into this, but to elaborate: If there were an internal implementation requirement that change addresses must be used, you are right that it should be abstracted from the user.  Unfortunately people have perfectly valid reasons to sidestep that abstraction by going to a third-party service that doesn't know what their change addresses are and therefore can't abstract it for them.  For this reason (and the fact that random change addresses are not a hard requirement; only semi privacy-enhancing), my argument was that we should consider abolishing change addresses by default and just send change back to one of the spending addresses.  This still has potential for confusion, but I think less than seeing a destination address that the client intentionally hides the very existence of.  At least the confusion will hopefully not be the panic of "some random address hijacked most of my coins when I sent a few!!  this address is not listed in my client anywhere, I have never seen it before, etc."

It is either a technical change like stopping use of random change addresses, or trying to teach people why it's good that their spent coins get shuffled into random addresses that they didn't create themselves and are currently discouraged from viewing.  Which is easier?  Does the average user even agree with the rationale of change addresses?
full member
Activity: 224
Merit: 100
May 07, 2013, 06:28:34 PM
#8
And it looks like I put this in the wrong section to begin with.  Sorry about that, wasn't sure if it belonged here or there.

Well, at least in the debug console I can see what addresses exist in my wallet with "listaddressgroupings".
sr. member
Activity: 364
Merit: 250
May 07, 2013, 06:28:19 PM
#7
That would make sense, if that address showed ANYWHERE in the bitcoin-qt install, but it doesn't.  That's why I'm confused.

The only way I could find the 1Dkd7... address to begin with was to go like I was going to sign a message or request a payment.  Seems odd the Address Book won't show your own address by default.

Yep, they are hidden on purpose, probably in a (misguided?) attempt to not confuse the user.  Every time I read a thread like this, I become more convinced that change addresses should be disabled by default.  Users who want the pseudo-anonymity offered by random change addresses, and who understand it, can re-enable it.

+1, it should be an option in the advanced settings.
legendary
Activity: 2058
Merit: 1452
May 07, 2013, 06:13:18 PM
#6
That would make sense, if that address showed ANYWHERE in the bitcoin-qt install, but it doesn't.  That's why I'm confused.

The only way I could find the 1Dkd7... address to begin with was to go like I was going to sign a message or request a payment.  Seems odd the Address Book won't show your own address by default.

Yep, they are hidden on purpose, probably in a (misguided?) attempt to not confuse the user.  Every time I read a thread like this, I become more convinced that change addresses should be disabled by default.  Users who want the pseudo-anonymity offered by random change addresses, and who understand it, can re-enable it.
it was excluded because it breaks the absraction of a "wallet". users do not need to know what a change address is, nor do they need to know what inputs or outputs are. this is the same reason why paypal/ach/sepa transfers do not disclose their internal implementation details. having that feature in the client complicates application design, and adds the burden of wannabe power users asking for support.
full member
Activity: 224
Merit: 100
May 07, 2013, 06:09:30 PM
#5
Yep, they are hidden on purpose, probably in a (misguided?) attempt to not confuse the user.  Every time I read a thread like this, I become more convinced that change addresses should be disabled by default.  Users who want the pseudo-anonymity offered by random change addresses, and who understand it, can re-enable it.

Huh, "change addresses".  Guess I missed that when I read up on things.

There any way to turn that off?  I'd rather it just use the one address on this install for everything, change included.

At least now I've got my Blockchain wallet (which actually has nothing in it) showing the correct total which includes the watch addresses I've added, after adding this change address in to it.
sr. member
Activity: 448
Merit: 254
May 07, 2013, 06:01:52 PM
#4
That would make sense, if that address showed ANYWHERE in the bitcoin-qt install, but it doesn't.  That's why I'm confused.

The only way I could find the 1Dkd7... address to begin with was to go like I was going to sign a message or request a payment.  Seems odd the Address Book won't show your own address by default.

Yep, they are hidden on purpose, probably in a (misguided?) attempt to not confuse the user.  Every time I read a thread like this, I become more convinced that change addresses should be disabled by default.  Users who want the pseudo-anonymity offered by random change addresses, and who understand it, can re-enable it.
full member
Activity: 224
Merit: 100
May 07, 2013, 05:57:50 PM
#3
That would make sense, if that address showed ANYWHERE in the bitcoin-qt install, but it doesn't.  That's why I'm confused.

The only way I could find the 1Dkd7... address to begin with was to go like I was going to sign a message or request a payment.  Seems odd the Address Book won't show your own address by default.
donator
Activity: 1218
Merit: 1079
Gerald Davis
May 07, 2013, 05:49:27 PM
#2
It is called "change" and the balance was sent to a "change address".
Bitcoin CAN ONLY spend entire outputs. 

You had an unspent output worth 0.20560192 BTC.  You wanted to spend 0.1 BTC

Your wallet created a tx spending 0.20560192 BTC.  0.1 BTC to the address you specified and 0.10560192 BTC back to another unused address in your wallet.
full member
Activity: 224
Merit: 100
May 07, 2013, 05:47:30 PM
#1
I'm trying to figure out what happened with this transaction:
https://blockchain.info/tx/45d3052208af765202197260a4e70986155d1480ab1f1a2cf38f4dbe7da35386

It was sent from Bitcoin-qt installed in a Fedora 18 virtual machine.  According to Bitcoin-qt, all it sent was the 0.1 BTC to the 1C9PZ... address.  I did not enter the 1PSv3... address or any amount to go to it.

What is really strange about this is the 0.20560192 BTC amount in the output was the amount I originally sent to the 1Dkd7... address after I got Bitcoin-qt set up on the machine (it was the address it created for the new wallet).  It would not have surprised me to see that amount, if the remainder after the 0.1 BTC to 1C9PZ... had been sent back to the 1Dkd7... address.

Any ideas how that 1PSv3... address got there?  I went ahead and password-protected the wallet using the in-program option for that.  Had to enter my password to send it to begin with.

Even weirder as I look at this some more.  The 1PSv3... address does not show up on any other transactions on Blockchain.

What the heck? Huh
Jump to: