Author

Topic: Help me understand. (Read 969 times)

legendary
Activity: 1258
Merit: 1001
November 13, 2015, 11:08:33 AM
#5
The miners will not record the block with your nonce if the block have invalid transactions.

yes, every miner validates all the transactions before it is put into the block irrespective of whether it is the one generated the nonce or not.
sr. member
Activity: 364
Merit: 252
October 24, 2015, 12:54:27 AM
#4
2 parts - how honest and dishonest nodes will react:

Honest nodes - If the transactions you put in are invalid then they simply wont be broadcast further by other nodes.

Dishonest nodes -  They are not the majority, but lets say one of them mines (find the solution within target range) a block including the fake transactions. In that case that block will be relayed to other peers, but guess what the other nodes will reject the block since it contains invalid transations (yes, each node checks for themselves). So that block wont be added to the block chain and instead some other block will be added which contains valid transactions, thus defeating your purpose.

Hope that explains.
sr. member
Activity: 452
Merit: 252
from democracy to self-rule.
October 23, 2015, 10:00:43 PM
#3
The bitcoin blockchain is around 45 gb today. On a 2mbps connection it will take about 6 hours to download, right? Nope.
It takes much much longer, why? Because the validation of the correctness of transactions is a CPU intensive process.

In Bitcoin core, peers would not only reject Bob, but also penalize Bob for sending too many invalid blocks. Unless Alice is paying Bob more than 25 bitcoins for each such attempt, Bob is better off sending empty blocks rather than invalid blocks. In BitcoinXT, further Bob's identity also matters.
It is against the bitcoin protocol anyways : See point 16 https://en.bitcoin.it/wiki/Protocol_specification#block

However, many wallets do not implement the protocol correctly. For eg SPV Bitcoinj wallets do no validation what-so-ever, blindly following the longest chain.
There was this issue in July where miners were SPV mining, that is blindly mining over the previous blocks without validating and generating invalid blocks. Details: https://bitcoin.org/en/alert/2015-07-04-spv-mining

You might also want to read the discussion around BIP66.

So yes, in bitcoin, no one trusts anyone and verifies everything for themselves.
legendary
Activity: 1358
Merit: 1000
October 23, 2015, 09:53:36 PM
#2
I should let somebody technical answer this, but the answer to your question has to be yes. You cannot update the blockchain with a block containing invalid transactions.

Every block includes
- Hash of the previous block
- Transactions list
- Solution to the problem.

 From Bitcoin Wiki - A chain is valid if all of the blocks and transactions within it are valid, and only if it starts with the genesis block.
So yes, only valid blocks can be added to the blockchain.
hero member
Activity: 686
Merit: 500
vini, vedi, no vici.
October 23, 2015, 07:06:54 AM
#1
Alice has some bitcoin. Bob is professional miner with somewhat 20-30% hashing power of network. Alice befriends Bob and conveniences him to support below:

Alice: Bob, I will send you fake transactions and you'll have to help me enter them on blockchain.
Bob: That is not possible because transactions are verified for authenticity from blockchain records. You can only spend what you have.
Alice: So you mean, I can spend what I have and I guess you cross verify them with ledger you have on computer.
Bob: Yes. Transactions that come to me are verified automatically from blockchain that I have on my computer. If they're appropriate then, I give a seal of approval.
Alice: How you give a seal of approval?
Bob: I do it with proof of work. When I find a random number that is beyond the threshold and suits the requirement, I use it to seal the block and announce to network.
Alice: That means, that random number is signature that you have done work. That's great!
Bob: Yeah! I guess.
Alice: What if I send you Tx1, Tx2, Tx3...Tx10 fake transactions? What happens?
Bob: Well, my bitcoin client verifies it against ledger that I have. Because those are fake they will be rejected by me.
Alice: So, verifying these transactions is your authority. Can you just tweek codes and pass them as valid? Its all up to you, so far.
Bob: Sorry?
Alice: I keep on sending you fake transactions and you try to sign them with random number. Eventually, someday you'd find number and you'll have authority to enter them into blockchain. Isn't it?
Bob: Okay. You send me fake transactions. If I find nunce then I sign it and broadcast it to network.

So the question is, "when blocks are broadcast to network, does other clients re-check before updating their blockchain with new block?

Jump to: