Author

Topic: Why such a tricky abstraction layer, really? (Read 1236 times)

full member
Activity: 194
Merit: 100
There you go, a suggestion to a future version.
Could show on a dialog fired from the context menu for example.

Anyway, thumbs up for a no-non-sense clutter-free client. I'm glad some people still value logical paradigms over the absurd dumbest-user trend.
legendary
Activity: 1708
Merit: 1066
Yes - agreed that the private keys are a bit too hidden away.
full member
Activity: 194
Merit: 100
I see... I'm fairly new to bitcoins and made very few transactions, haven't been paying much attention on how things work under the hood.
Now I understand why most clients resource to the concept of "wallet".
However, I still think addresses and keys should be elevated to first class citizens in the UX. For example, I should be able to retrieve keys by right clicking on an address. Or check history per address. Of course all the password protections and/or double check could still be there just like they are for the export feature for example.
full member
Activity: 152
Merit: 100
DeathAndTaxes is correct about the need for multiple inputs and outputs. The network doesn't support spending just part of an input, so unless you happen to have an exact match (including the fee) you must combine outputs from previous transactions until you have at least the amount you want to spend, and then split that total between the destination address and a "change" address.

However, the reason for having multiple addresses basically does come down to privacy. If a new address is generated for each "change" output then it becomes difficult to say which output was the destination and which was the change--at least until you link the change address with one of your other addresses in a later transaction. There is no fundamental reason why the change couldn't be sent back to the original address, however, and some clients work this way. Personally, I agree that the limited privacy benefits of unique change addresses are not generally worth the extra complexity.
donator
Activity: 1218
Merit: 1079
Gerald Davis
I'm not sure about how much of that analogy stands here.
Why would the output be a different amount than the one I want to spend in the first place?

For example, the website strongcoin.com does what I said. You pick an address from which you want to spend, pick the destination address, and a simple transaction with one input and one output is done. What am I missing in here?

If that happened it was only because of pure blind luck.  You had an unspent output that was EXACTLY the size you were looking to spend.  In other words you were spending 1 BTC you had an unspent output exactly 1BTC.  Not 1.1 BTC or more than 1 unspent output each 0.9 BTC or less.  Had you spent more or less the entire output would need to have been spent.

This isn't a "strongcoin" thing, this is how the entire network works, how it always works, how it always has worked since the very first block.  Bitcoin doesn't work on the concept "x BTC at address y" it works on the concept of unspent outputs.  Outputs can't EVER be partially spent.  They are unspent or they are spent.  A transaction is the process that converts an unspent output into a spent output and creates one or more new unspent outputs.   Every transactions, every time, on every client.
full member
Activity: 194
Merit: 100
I'm not sure about how much of that analogy stands here.
Why would the output be a different amount than the one I want to spend in the first place?

For example, the website strongcoin.com does what I said. You pick an address from which you want to spend, pick the destination address, and a simple transaction with one input and one output is done. What am I missing in here?
donator
Activity: 1218
Merit: 1079
Gerald Davis
Also  noticed that some transactions move coins not only to the destination, but to other addresses in the same wallet. Is that to improve anonymity? If so, it should be optional.

It can't be optional.  The bitcoin network works on the concept of unspent outputs.  Think of them like a bill.  If you have a $20 can you spend half of it?  Can you tear $3 worth off it it and hand it to the clerk to pay for a $3 purchase?  Of course not.  Unspent outputs can't be "partially spent" either.  So when you have an unspent output worth 12.345 BTC and want to send 1 BTC to another user it is impossible spend less than 12.345.  So the client will make a tx sending 1.0 BTC where you want and sending 11.345 to another address you own.

The purpose of wallets are to abstract that concept from you.  You simply see it as "spend 1 BTC" and your balance goes down to 11.345 but behind the scenes the 12.345 BTC tx still occurs.  You are free to make a client which just works with raw addresses.  It likely isn't going to be user friendly but since the bitcoin network works on the concept of unspent outputs it would still work.
full member
Activity: 194
Merit: 100
I rephrase:

why, when using multibit, instead of just picking an address where I have some coins and sending them to some other address, I have to chose to send coins from a group of addresses (aka wallet)?

Rephrasing yet again:
why do wallets have more than one address?

Also  noticed that some transactions move coins not only to the destination, but to other addresses in the same wallet. Is that to improve anonymity? If so, it should be optional.
legendary
Activity: 1708
Merit: 1066
If you strip everything away and look at the reality of Bitcoin it is basically:

1) you redeem previous transaction outputs that have an amount of bitcoin available, as specified in some block somewhere in the blockchain.
2) you need to sign the redemption with your private key to prove you control the transaction outputs.
3) you specify in a script how they can be redeemed (typically they are sent to an address not not necessarily).

That's the reality of bitcoin 'at the bottom'.

In those 3 points you have the following jargon:
redeem, transaction output, amount of bitcoin, block, blockchain, sign, redemption, private key, script, address.

If in a GUI we used the actual bitcoin terms it would not be usable by anyone. It would be just all jargon.

Wallets are used as they are familiar concrete objects where you store your money IRL.
Wallets are simply collections of private keys (that do the signing) with relevant transactions added.


full member
Activity: 194
Merit: 100
I do't get this whole wallet thing. Why do transactions have so many inputs and outputs? why not simply let the user decide from which address and to which address the coins should go?

The gui is wallet based, why not making it address based instead?
Jump to: