For theoretical purposes, how would one inject a blockchain fork in to the Bitcoin network? For example, lets say we have a small chain of blocks prepared in a program that is not a standard client / standard client with modified code. Can one force a client to accept those blocks through getmemorypool RPC command, or will the client not accept any block that would not go at the tip of the current blockchain?

What are the ways of getting a blockchain fork into the Bitcoin network?

EDIT: I'm not talking about alternative blockchain forks, like SolidCoin, etc., but rather about a fork in the standard Bitcoin chain/testnet chain that would cause some blocks to be orphaned.

  • 1
    I'm not sure what is the problem? Clients will reorg to the longest chain they are aware of, as long as it is consistent with the hardcoded checkpoint, which are pretty far in the past. – Meni Rosenfeld Feb 28 '12 at 5:35
  • 1
    @MeniRosenfeld I'm not sure if the standard client would accept such a chain one by one through GetMemoryPool JSON command (in which case it would be easier to program for), or only through a getblocks or other message from a peer. – ThePiachu Feb 28 '12 at 7:49
up vote 6 down vote accepted

Just pass the blocks one at a time to your official bitcoind program, and it will broadcast them to the network. You don't need to do anything tricky, except for somehow manage to hash faster than everyone else combined.

If you modify your client in such a way that it is not compatible with other clients, you will split the block chain for you and anyone else that uses your version of the client. If you can get more than 50% of the Bitcoin Network to adapt to your client, then it will become the official fork. There probably will be a hard fork made to the official core someday if consensus is reached on desired Bitcoin attributes.

  • There are several alternate block chains. They each have different schemes for block rewards, fee structures, scripting, etc. – cbeast Feb 27 '12 at 16:03
  • 1
    Just as a side note, I'm not really talking about changing the protocol and causing a fork like this, but rather making blocks that are valid in the standard client, but would replace some of the already existing blocks. – ThePiachu Feb 27 '12 at 19:55
  • @ThePiachu - Thank you for clearing that up. This is hypothetically possible, but due to variance it is mathematically pointless conjecture. If attempted in reality, it would most likely be recognized as an attack. – cbeast Feb 29 '12 at 13:27

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.