Bitcoin Forum

Other => Beginners & Help => Topic started by: stevep on October 21, 2012, 07:04:41 PM



Title: Block 0 Network Fork
Post by: stevep on October 21, 2012, 07:04:41 PM
In This post

https://bitcointalk.org/index.php?topic=119530.msg1286692#msg1286692 (https://bitcointalk.org/index.php?topic=119530.msg1286692#msg1286692)

Its mentioned that the output of block 0 can't be spent as this would allow Satoshi to fork the network.

Can someone clarify what this means.
I don't understand how being able to spend an output can lead to a fork.

Thanks,

Steve.


Title: Re: Block 0 Network Fork
Post by: BR0KK on October 21, 2012, 07:22:42 PM
Read further ... They explain it in the following post!


Title: Re: Block 0 Network Fork
Post by: stevep on October 21, 2012, 07:41:01 PM
I don't see any clarification of how a fork would occur.

I only see descriptions of how the coins from block 0 are unspendable.

Quote
The reason why the genesis block mining reward transaction can not be spent is because the reference bitcoin client doesn't add it to the list of known transactions at startup.

In fact it seems the unspendability of block 0 is a quirk of the implementation of the reference client.

Quote
The fact that the genesis block transaction itself is unspendable is irrelevant, and only an artifact of it not going into every nodes pool of known transactions.

Can you provide a link to the post that describes how Satoshi could create a fork if he were to spend the coins in block 0.



Title: Re: Block 0 Network Fork
Post by: Stephen Gornick on October 21, 2012, 09:49:20 PM
Can you provide a link to the post that describes how Satoshi could create a fork if he were to spend the coins in block 0.

All that was saying is that if there were a release of the client where that bug was fixed, then the first transaction that spends from block 0 would be accepted by some nodes (those running the latest software with that fix) and it would be rejected by others (those that hadn't obtained the update).

Thus the blockchain will split, with some mining capacity happily carrying on with the the fork that includes the "block 0 spend transactions", while others are mining a different longest chain which has no "block 0 spend transactions".  Which of the two ends up winning depends on if enough exchanges, merchants and individuals will accept the coins the miners earned from mining on the fork.  If not, miners finding that their coins are worthless abandon the new fork (and the coins they thought they earned) and stick with the version of the client from before the change was made.

Thus that is a hard-fork feature.  

These hard-fork features aren't impossible to roll out, just that they require an economic majority to accept them otherwise you can end up with a forked blockchain.  To avoid this, the Bitcoin.org developers generally don't propose any hard-fork changes unless there is a damned good reason to do so (and a near certainty that the economic majority will accept the change).  So that Satoshi can spend his 50 BTC (plus whatever else has been sent to that address since [Edited: Thanks Foxpup]) is not a good enough reason to implement a hard fork.  And "fixing" it will potentially introduce the risk of this fork occurring, so it won't be fixed for now and this behavior is essentially now part of the protocol.

It isn't even something on the "wishlist":
 - http://en.bitcoin.it/wiki/Hardfork_Wishlist



Title: Re: Block 0 Network Fork
Post by: Foxpup on October 21, 2012, 10:37:16 PM
So that Satoshi can spend his 50 BTC (plus whatever else has been sent to that address since) is not a good enough reason to implement a hard fork.
Slight correction: Satoshi can spend all the coins that have since been sent to that address (assuming he still has the private key, that is). Only the original BTC50 is unspendable. The rest are all perfectly valid and spendable transaction outputs.


Title: Re: Block 0 Network Fork
Post by: stevep on October 22, 2012, 06:15:39 AM
Thanks for the answers.

I updated the protocol specification on the bitcoin wiki to note that block 0 cannot be spent.

https://en.bitcoin.it/wiki/Protocol_specification#Transaction_Verification (https://en.bitcoin.it/wiki/Protocol_specification#Transaction_Verification)

I wasn't aware of this and it is quite counter-intuitive it could easily sneak into other bitcoin implementations and open the possibility for a block chain fork.