Bitcoin Forum
November 05, 2024, 05:59:47 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Some technical questions about bitcoin...  (Read 429 times)
xion (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
November 11, 2013, 05:37:54 PM
 #1

Hi,

No need to mention that I'm new to the forum, I'm new to bitcoin too maybe, even if I installed the client a year ago, I didn't use it much. But I guess I'm not the typical newbie, I've been reading a lot about bitcoin lately, so I ran into some technical questions and I hope that I will find the answers here Smiley

First question: The files representing the blockchain are stored locally, and by now it's about 7GB, and soon it will be even more (100GB+) in that case it will be really annoying for the users to store the database, and for the new comers too, it will be days before they can start using bitcoin, assuming they have a good Internet connexion... I'm really exited about the idea that everyone in the network can verify the transactions by themselves, but storing all this amount of data locally can be really consuming for the average user, for me storing that much data is not possible, I would rather have my own data in my computer than other's, given that in my SSD I only have 120Gb...

Isn't there a way to make a sort of checkpoint? we could say : hey, from this on, every address has that much money, I don't care about what was in the blockchain before so I can simply erase it... I wonder if anyone thought about that when releasing bitcoin, I assume yes, otherwise in the future only servers would have all the blockchain, and we would lose the decentralized characteristic of the system.

Other question: Why does the sender have to reference the older transaction when sending a new one? In my opinion this only creates the security issue, can't the sender just say : "I [senderAddress] send x btc to [receiverAddress] + time stamp + some random number" and sign this shit with his private key? if he tries to send another x btc to his address with the same time stamp and random number it will only send him his money, and would not cancel the previous transaction, if other nodes receive the same transaction they would know it from the timestamp+random number and will ignore it, no double spending at all.

Again I think this was designed like that for a specific reason, but I can't figure out why, could anyone tell me please?

Thank you Smiley

And sorry if this isn't in the right section, I would've posted here anyway, when I registered my account, I was told to create topics in the newbies section in the beginning, so I guess it's for the best, I hate choices anyway Cheesy
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
November 11, 2013, 05:47:52 PM
 #2

Blockchain will get larger.   There are checkpoints which prevent rollback of the chain beyond a certain point but Bitcoin doesn't work on the concept of balances so there is no way to create a "current balance" and delete everything else.  Even if there was it probably can't be done on Bitcoin in a decentralized manner.

However most users will not run full nodes.  They will run SPV clients which download just the portions of the blocks they need in realtime as they need them.   Some users will always have to run full nodes but the security model of Bitcoin doesn't require 100% of users to run full nodes 100% of the time.

Quote
Other question: Why does the sender have to reference the older transaction when sending a new one? In my opinion this only creates the security issue, can't the sender just say : "I [senderAddress] send x btc to [receiverAddress] + time stamp + some random number" and sign this shit with his private key? if he tries to send another x btc to his address with the same time stamp and random number it will only send him his money, and would not cancel the previous transaction, if other nodes receive the same transaction they would know it from the timestamp+random number and will ignore it, no double spending at all.

Bitcoin doesn't work using the concept of "balances" there are a large number of technical reasons I would recommend starting with the bitcoin wiki.  When your wallet shows "2.5 BTC" what is really means is I see according to the current blockchain that there are unspent outputs totalling 2.5 BTC for which I have the private key to spend.

Timestamps are generally next to useless in a decentralized network.  They provide no security.  I can sign anything with any timestamp.  If you (say a new user) receives it weeks from now prove to me I signed it at the timestamp indicated.  Bitcoin doesn't rely on timestamps for its security model (except in a limited fashion in difficulty adjustment but even then safeguards are included to limit the effect of any malicious timestamp).

If you haven't already and want a technical understanding of Bitcoin I recommend reading Satoshi's paper first and then doing some reading on the Bitcoin wiki.  You will not learn it all in a day, week, or probably a month.  Most users will probably never need to.
xion (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
November 11, 2013, 06:11:01 PM
 #3

Thanks for the reply, I need the technical details as I'm a computer engineer, and one day or another I will need this.

Therefore it sucks that I have to keep all this data in my computer for now I would like to have the full client, if everyone choses to run only SPV clients in the future, I don't see how the network will continue working (with this difficulty oO). Also for time stamps I didn't say anyone will rely on it, if the user modifies it, that will only harm him as he is the one that would have his money spent double time Cheesy as it's only to have a unique signature for it, no body cares about the time of the transaction.

Anyway I will try to find satoshi's paper (I like the name, it's like a bible or something, he will be a legend if the bitcoin system succeed in the next 50 years).
DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
November 11, 2013, 06:27:57 PM
Last edit: November 11, 2013, 06:53:17 PM by DeathAndTaxes
 #4

Here you go, the paper that started it all.  Don't expect concrete protocol details it was written about a year before the first client was released however it is a good reference to answer the "why" instead of the "how".  I would recommend reading it straight through, think about it, and then read it again.  Bitcoin's "way" of doing things is rather complicated and often the first reaction is "hey why didn't they just do xzy?" or " thats stupid you could just do abc instead for cheaper".  with further reading and research the "genius" of the solution starts to appear.

http://bitcoin.org/bitcoin.pdf

More on the nuts and bolts:
https://en.bitcoin.it/wiki/Introduction#Bitcoin_Basics

I left the prior post incomplete when I said Bitcoin doesn't work on the concept of balances by not saying what concept it does you.  Bitcoin works on the concept of inputs and outputs.  Understanding Bitcoin without this high level concept is pretty much impossible and often leads to all kinds of incorrect assumptions.  The whole Bitcoin system works on inputs and outputs.  All tx consists of inputs and outputs.  All inputs are the output of a prior tx.  An output is "spent" by creating a tx which uses it as an inut.  Outputs can only be spent once.  All outputs in the blockchain are either spent or unspent.  Since only unspent outputs can be used in future transactions the working set of possible inputs at any time is the set of current unspent outputs (UXTO).  This allows any node at any time to validate the integrity of any new tx is a very quick manner.  Remember miners are't the whole security model.  Miners simply force a consensus between two possible (but both valid) views of the network.  A model where all security relies on miners gives miners too much power.  In Bitcoin, all nodes in real time validate every single transaction.  Because the input of all txs are simply a collection of prior unspent outputs this can be done very fast and without ambiguity. 

Regarding Satoshi "himself", I fall into the camp that thinks it is more likely that Satoshi is a psuedonym for a team of people.  Bitcoin includes so many different concepts (cryptography, distributed networks, database, game theory, economics) that I find it difficult to believe that is was developed fully by a single person.  Anything is possible though.  I imagine we probably will never know.  I do agree they or he chose a memorable name for the history books.
xion (OP)
Newbie
*
Offline Offline

Activity: 11
Merit: 0


View Profile
November 11, 2013, 06:46:45 PM
 #5

Yes, I agree, I'm sure even if it was one person that had the general idea, he worked with many people to come up with this system. I fall into the same group I think Smiley but like you said we'll probably never know.

Thanks for all your answers Smiley
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!