Bitcoin Forum

Other => Beginners & Help => Topic started by: clinton on June 21, 2011, 03:22:52 AM



Title: Technical Questions
Post by: clinton on June 21, 2011, 03:22:52 AM
Hi

I just have a few questions about how Bitcoin operates. I did have a read through Satoshi Nakamoto's paper, but I'm not I got everything.

(1) It is my understanding that the network generates new blocks roughly every ten minutes, and these new blocks contain the recent transactions. Each new block depends on a hash of all previous blocks, building a chain.

But what happens if two new blocks are generated at a similar time? Is only one accepted by the network, or are they both excepted, and is this split in the chain then merged somehow?

I'm guessing this ten minutes is a compromise between new block clashes and network traffic and transaction confirmation speed?

(2) If you want to confirm transactions are valid, I assume you need to know how much is in each wallet in the network. Does this mean that every node in the network that wants to confirm transactions are valid needs a copy of all the current balances of all wallets in the network? And can't this grow without bound as wallets can contain very small fractional amounts of bitcoins?


Title: Re: Technical Questions
Post by: MilkMan on June 21, 2011, 04:31:13 AM
Im a moderate on this one


Title: Re: Technical Questions
Post by: Maged on June 21, 2011, 04:40:41 AM
Hi

I just have a few questions about how Bitcoin operates. I did have a read through Satoshi Nakamoto's paper, but I'm not I got everything.

(1) It is my understanding that the network generates new blocks roughly every ten minutes, and these new blocks contain the recent transactions. Each new block depends on a hash of all previous blocks, building a chain.

But what happens if two new blocks are generated at a similar time? Is only one accepted by the network, or are they both excepted, and is this split in the chain then merged somehow?
The first one that each node receives is worked on. Whatever miner finds the next block afterward determines which side of the chain will be used. Statistically, that would be the side where the block propagated the most. Another tie at this point would be solved the same way.



(2) If you want to confirm transactions are valid, I assume you need to know how much is in each wallet in the network. Does this mean that every node in the network that wants to confirm transactions are valid needs a copy of all the current balances of all wallets in the network? And can't this grow without bound as wallets can contain very small fractional amounts of bitcoins?

Read this:
https://en.bitcoin.it/wiki/Scalability


Title: Re: Technical Questions
Post by: clinton on June 21, 2011, 05:14:43 AM
The first one that each node receives is worked on. Whatever miner finds the next block afterward determines which side of the chain will be used. Statistically, that would be the side where the block propagated the most. Another tie at this point would be solved the same way.

So I'm guessing the 10 minute average block generation time is a balance between transaction processing time and minimizing network splits yes?

Read this:
https://en.bitcoin.it/wiki/Scalability

So is this saying that some nodes in the network (say the top tier nodes) would need a copy of every transaction ever?



Title: Re: Technical Questions
Post by: clinton on June 21, 2011, 05:26:35 AM
Also, another question:

(3) Does the creator of the new block get to keep all the transaction fees (i.e. do new block finders get more than 50 bitcoins)?


Title: Re: Technical Questions
Post by: 861362 on June 21, 2011, 05:52:10 AM
Quote from: clinton
So is this saying that some nodes in the network (say the top tier nodes) would need a copy of every transaction ever?
Does the creator of the new block get to keep all the transaction fees (i.e. do new block finders get more than 50 bitcoins)?
Yes to both.


Title: Re: Technical Questions
Post by: clinton on June 21, 2011, 06:03:23 AM
Thanks for the replies 861362 and Maged, I think things make more sense now.


Title: Re: Technical Questions
Post by: Maged on June 21, 2011, 06:29:43 AM
So I'm guessing the 10 minute average block generation time is a balance between transaction processing time and minimizing network splits yes?
Exactly. An attacker won't ever have a split on their malicious chain because there would be no latency between their nodes. As a result, the more splits the main network has, the less percent of total hashing power an attacker would need. If we assume the worst case that block propagation time will eventually be as slow as BGP (which takes about 1 minute to propagate worldwide), the network would only lose at most 10% (1 min/10 min) of hashing power by chain splits.


Title: Re: Technical Questions
Post by: clinton on June 21, 2011, 06:51:19 AM
Exactly. An attacker won't ever have a split on their malicious chain because there would be no latency between their nodes. As a result, the more splits the main network has, the less percent of total hashing power an attacker would need. If we assume the worst case that block propagation time will eventually be as slow as BGP (which takes about 1 minute to propagate worldwide), the network would only lose at most 10% (1 min/10 min) of hashing power by chain splits.

Further to this, do nodes have any individual incentive to propagate new blocks? Either carrot (i.e. they get coins for it, are prioritized to receive new block updates or some other incentive) or stick (i.e. they're seen as bad neighbors if they don't and their neighbor nodes drop their connections)?


Title: Re: Technical Questions
Post by: Maged on June 21, 2011, 07:03:52 AM
Exactly. An attacker won't ever have a split on their malicious chain because there would be no latency between their nodes. As a result, the more splits the main network has, the less percent of total hashing power an attacker would need. If we assume the worst case that block propagation time will eventually be as slow as BGP (which takes about 1 minute to propagate worldwide), the network would only lose at most 10% (1 min/10 min) of hashing power by chain splits.

Further to this, do nodes have any individual incentive to propagate new blocks? Either carrot (i.e. they get coins for it, are prioritized to receive new block updates or some other incentive) or stick (i.e. they're seen as bad neighbors if they don't and their neighbor nodes drop their connections)?
Nope. But if they do that, they might as well just not listen for connections like most of the network is doing, as it would have a similar effect. If it became a problem, though, something could be done about it.