Post
Topic
Board Beginners & Help
Re: Deep Technical Discussion -- Attacking the Blockchain
by
Maged
on 02/07/2011, 05:11:05 UTC
Quote
Absolutely not! PLEASE do! We need more competing clients!

So why aren't there competing clients?  I was under the impression that there's only one client option on both Windows and Linux because it's either really bad or really difficult. 

If I study the specification at https://en.bitcoin.it/wiki/Protocol_specification do you think I'll have enough knowledge to actually implement a client with all the networking/sockets to operate nicely with the rest of the network?  I suppose, the main client is open source, so perhaps I can use that source code to clear up gaps in my understanding.

-Eto
Look into BitcoinJ -  it's better commented.
By the way, something else I've been wondering (and an excuse to get to 5 posts):  what is the incentive for a node to include any transaction in their block for free?
The only incentive is that it will help get more people to be willing to use Bitcoin.
If you have a lot of transactions, isn't it going to take longer to hash?  If I was selfish, why wouldn't I calculate a block and only include my own coinbase transaction and nothing else?
It DOESN'T take longer to hash. There's no reason NOT to include transactions.
Similarly, as the network picks up popularity aren't we running the risk that we'll have to start including millions of transactions in every block?  Even if the difficulty adjusts to accommodate the slower hashing, won't the blockchain get untolerably large (in terms of storage space)?
I suggest reading this wiki page:
https://en.bitcoin.it/wiki/Scalability

Edit: to clarify, it's not the whole block that is hashed, just the headers, which includes the Merkle root. The amount of data hashed does not change - regardless of the number of transactions.



Who is responsible for constructing the merkle tree, and then the merkle root for inclusion in a block header?  Doesn't that take processing power?
The miner. Yes, it takes processing power. However, given that miners have hashing speeds in terms of megahashes per second, and even gigahashes per second, the loss is extremely minimal. ALL clients need to hash each transaction anyway, so no work is lost there. Thus, you only "waste" 1 hash per merkle tree branch that's made. I don't know the math for approximately how many hashes need to be done per transaction, but let's just go to the extreme and say 10 for a 100 transaction block. That's 1000 hashes wasted. Compare that to the millions of hashes computed per second on the video card...