Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I felt like I knew a little about Bitcoin, but I fail to grasp whatever this article is saying. Can anyone translate the "empty blocks" and 15 vs. 51% part and its implications? Also, wouldn't 15% of the network computing power require more than a simple webserver? Thanks.


I'm new to the details of Bitcoin, but I found these explanations to be illuminating:

Bitcoin relies on agreement among peers on a single unbroken chain of blocks: https://en.bitcoin.it/wiki/Block_chain

It takes computation work (searching for a header that produces a hard-to-find hash value) to generate the next block. Therefore, the block chain can be taken over by someone with 51% of all the hashing power on the network because the peers agree on whatever chain reflects the most work: https://en.bitcoin.it/wiki/How_bitcoin_works#Double_spending

In order for a bitcoin transaction to be consummated, it must be encoded in a new block. The entity that generates the block chooses which transactions to include in the new block, and the 15% entity that is the subject of this article is not including any transactions. Instead, it is only awarding itself the standard bounty for discovering a new block.


This is my rough understanding:

As you're aware, Bitcoin uses certain cryptographic guarantees in order to publish a public and immutable "block chain", which is essentially a public list of all Bitcoin transactions since the beginning of time.

Each block in the block chain is essentially a list of transactions which occurred between the time frame "after the previous block was discovered, but before this block was discovered".

(A block is 'discovered' by searching the hash space brute-force, searching for a valid code.)

When a new transaction is initiated, it is an interesting situation because it needs to be done in a way where neither party can somehow cheat the system. I believe this is accomplished by sending the transaction to many Bitcoin peers simultaneously. When, say, 5 or more peers have "acknowledged" this transaction, then you can be fairly confident (>99.9%) that your transaction will be encoded into the next block in the block chain.

The only reason this works is because it's assumed that each peer in the Bitcoin network is following the protocol in an unbiased way. E.g. it's assumed that peers aren't "going out of their way to do shady things". What kind of things? One example: acknowledge a transaction, but then discard/ignore that transaction, thereby attempting to trick you into thinking your transaction was processed when it wasn't.

Right now it doesn't matter if only a few people are doing shady things. This is because the majority of people are known to not be cheaters. Therefore, by the law of large numbers, you can assume that by waiting for N acknowledgements then you can become exponentially more confident that your transaction will be encoded into the public block chain, rather than maliciously ignored. The only reason this works is because less than 50% of the Bitcoin peers are attempting to cheat. If more than 50% were cheaters, then you'd have no way to "verify that your transaction will definitely make it into the public block chain". Thus, the system would cease to be useful.

Now, notice I'm talking in terms of "more than 50% of peers", but the article is talking about "more than 50% of processing power". I think the argument for "why 50% of the computation power needs to be non-malicious" is the same or very similar to my argument which I presented above. But I'm not positive on that.

(Essentially, if you control more than 50% of your "new block-finding capability", then you would have control over which transactions will/will not make it into the public block chain. Thus, we would lose our cryptographic guarantee that "if my transaction was acknowledged by at least N peers, then it will definitely be entered into the public block chain un-tampered.")


Also, the computing power is computed from the percentage of successful transaction blocks. Noone knows how much computers you had or anything, they just saw that 15% of the blocks were confirmed by the same PC.

The confirmation task can be easily paralelised - therefore, what is usually done is creating a whole pool of computers that together work on the transaction confirmation task, then the main computer announces the confirmation and is remembered in the blockchain. That's what these so-called mining pools do.

You can browse the blockchain by yourself here http://blockexplorer.com/

There is always at least 1 transaction in the block with the amount 50 - that's the "new" bitcoins that the person "mined" - those weren't previously in the system, you got them for the confirmation. Someone is cheating the system by creating empty blocks with only this transaction.


Whoa, that's bizarre: http://screencast.com/t/TA5fF8CDf3

And look at the timestamp on #171618: http://screencast.com/t/Kzzwiyi9Mz ... The timestamp reads "21:35:01". But the timestamp of the previous block is "21:35:35". So it's "in the past, by half a minute". What's up with that? I mean, I could understand a timestamp uncertainty of a few seconds when discovering new blocks ... but that's a discrepency of over half a minute. (Maybe this is a totally insignificant observation -- I have no idea. I'm just pointing it out.)

Bigger question: what's up with those "1-transaction blocks"? Could you talk a little bit more about that / why that's an indication that someone is cheating? Also, do you have any idea why they're doing this / what the benefit is?


I don't understand that much about it, but I believe that's partly what the original article talks about.


You're confusing "clients" (or Bitcoin nodes) with miners. All clients share information about pending transactions through a peer-to-peer network. A small % of those clients are also mining - incorporating (or not) transactions into a block and attempting to find a sufficiently rare hash value.

Since most mining is done in pools, there is quite a concentration of power in pool operators; if they want to ignore certain types of transactions, they can just omit them from the blocks that they mine.

The real threat is that if any mining pool that had more than 50% of the world-wide hashing power, they could effectively control which transactions would become verified, and which would remain forever "pending". They would accomplish this by ignoring all other mined blocks, knowing that they will be able to outrace the rest of the world in producing the chain representing the "most difficulty".

Ordinary (non-mining) clients can disrupt the propagation of transactions around the network - but as long as you have a possible communication path to SOME miner, you should be able to have your transactions registered in a new block; like the Internet, the bitcoin network has redundant paths to foil censorship from a minority of nodes.


The Bitcoin network maintains a shared transaction chain to make double spending of Bitcoins impossible. However somebody controlling the majority of the network's processing power could compromise the transaction chain.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: