Bitcoin Forum
May 27, 2024, 04:39:34 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Why such a tricky abstraction layer, really?  (Read 1224 times)
zemario (OP)
Full Member
***
Offline Offline

Activity: 194
Merit: 100


View Profile
April 04, 2013, 01:48:36 PM
 #1

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?
jim618
Legendary
*
Offline Offline

Activity: 1708
Merit: 1066



View Profile WWW
April 04, 2013, 03:30:31 PM
 #2

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.



MultiBit HD   Lightweight desktop client.                    Bitcoin Solutions Ltd   Bespoke software. Consultancy.
zemario (OP)
Full Member
***
Offline Offline

Activity: 194
Merit: 100


View Profile
April 04, 2013, 09:25:45 PM
 #3

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.
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
April 04, 2013, 09:28:53 PM
 #4

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.
zemario (OP)
Full Member
***
Offline Offline

Activity: 194
Merit: 100


View Profile
April 04, 2013, 10:55:50 PM
 #5

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?
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
April 05, 2013, 12:28:20 AM
 #6

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.
nybble41
Full Member
***
Offline Offline

Activity: 152
Merit: 100


View Profile
April 05, 2013, 03:36:32 PM
 #7

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.
zemario (OP)
Full Member
***
Offline Offline

Activity: 194
Merit: 100


View Profile
April 05, 2013, 08:22:19 PM
 #8

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.
jim618
Legendary
*
Offline Offline

Activity: 1708
Merit: 1066



View Profile WWW
April 05, 2013, 08:23:43 PM
 #9

Yes - agreed that the private keys are a bit too hidden away.

MultiBit HD   Lightweight desktop client.                    Bitcoin Solutions Ltd   Bespoke software. Consultancy.
zemario (OP)
Full Member
***
Offline Offline

Activity: 194
Merit: 100


View Profile
April 05, 2013, 08:42:29 PM
 #10

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