<p>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.</p>

CC BY-SA 3.0
2012-02-27T16:03:20.810Z
There are several alternate block chains. They each have different schemes for block rewards, fee structures, scripting, etc.
cbeast
CC BY-SA 3.0
2012-02-27T19:55:04.863Z
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
CC BY-SA 3.0
2012-02-29T13:27:44.457Z
@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
CC BY-SA 3.0
2012-02-27T15:59:40.143Z
2012-02-27T15:59:40.143Z
cbeast
<p>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.</p>

CC BY-SA 3.0
2012-02-28T05:41:55.213Z
2012-02-28T05:41:55.213Z
Chris Moore
<p>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?</p>

<p>What are the ways of getting a blockchain fork into the Bitcoin network?</p>

<p>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.</p>

CC BY-SA 3.0
2012-02-28T05:35:56.873Z
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
CC BY-SA 3.0
2012-02-28T07:49:07.510Z
@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
<blockchain><security><attack><json-rpc><blockchain-fork>
How would one inject a blockchain fork to the Bitcoin network?
ThePiachu
# How would one inject a blockchain fork to the Bitcoin network?

(Asked by: username_0 on 2012-02-27)

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.

**Tags:** blockchain, security, attack, json-rpc, blockchain-fork

> **Comments:**
> **username_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.  
> **username_0**: @username_1 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.  

---

## 2 answers

### Answer by username_3 on 2012-02-28. Score: 6 | Accepted answer

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.


---

### Answer by username_2 on 2012-02-27. Score: -2

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.

> **Comments:**
> **username_2**: There are several alternate block chains. They each have different schemes for block rewards, fee structures, scripting, etc.  
> **username_0**: 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.  
> **username_2**: @username_0 - 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.  

---

