I'd like to take the existing public chain and use it to bootstrap a private chain. Change the difficulty and add custom endpoints.


1 Answer 1


You could just sync up to the public blockchain, then cut off all communications from your node client to the internet (search this site for "network port" to work out the public network ports). And use the parameters like --nodiscover --maxpeers --networkid in the geth client.

If your node client does accidentally come in contact with other node clients over the internet, your privately generated blocks will be immediately overwritten as the difficulty within your private network would be your 1 node with say 25 MHz hashrate vs the 60.912 THz public network.

The one problem you will faces when you first block off the public network communication is that it will take you a very very long time to mine your blocks. The estimated time to find a block would be 15 seconds x {network hashrate} / {your hashrate}.

The difficulty adjustment algorithm will eventually bring down the difficulty figure that is written in each block of the blockchain.

But what you can do is to modify your node client to change the difficulty adjustment algorithm - see Is it possible to change the block target time?.

You could also possibly create a --dev blockchain and try copying the public network blockchain data into the --dev blockchain /chaindata directory. There may be some checks in the node client code that compare your blockchain data, but you could try to remove these checks.

What custom endpoints to you intend to add?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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