The public test trial fork for Satoshi’s Bitcoin is now ready for use.
To participate you only need to compile and start the trial client, everything has been setup to automatically run from there.
The public trial fork is scheduled for this coming Sunday at around noon eastern time US (block 403562 specifically).
The actual launch will follow this test and activate mid-April. I have run many trial tests and everything is working great. To participate in the test:
- Download and compile the public test branch “0.11.2_PublicTest_At403562” from github. The build environment is identical to Classic (link below).
- Backup your datadir, after the fork the datadir may not be compatible with the core client anymore
- Run bitcoind or bitcoin-qt
The public test branch is here:
https://github.com/satoshisbitcoin/satoshisbitcoin/tree/0.11.2_PublicTest_At403562
You can compare all code changes from Classic 0.11.2 here:
https://github.com/bitcoinclassic/bitcoinclassic/compare/0.11.2...satoshisbitcoin:0.11.2_PublicTest_At403562
I hope you will join the public trial, there is zero risk to participate and you are able to run a true full node that mines blocks at home again for fun. If the project does not take off there is nothing lost, but if it does you have the chance to mine early adopter blocks.
Difficulty for the trial is set so a smaller number of nodes will find blocks every 10 minutes. If more nodes join it will create faster blocks, this is being done intentionally to both stress test a fast block scenario and to allow the test to run through a few difficulty adjustments without waiting months. Also the test client will only run for 10K blocks post-fork before automatically stopping to prevent the test chain from continuing.
For the actual fork difficulty will be adjusted so the number of nodes that join the trial test mine at the expected 10 minute interval.
It was a lot of fun digging into the code to figure out how to implement this fork. Below is a list of some of the main work that went in. If you feel something else is needed please let me know.
- Following BIP009 conventions for parallel soft forks, a higher block version byte is used to tag blocks as full fork compatible. Version 0x00000100 (256) is used for the fork.
- The block height for the fork is set to 403562. At this point only blocks tagged for the full fork are accepted
- The block size post-fork automatically increases to 2MB (follows Classic)
- A new DNSSeed server was setup to help forked peers find each other after the fork
- The difficulty adjustment at the fork point is re-set to a value where the expected number of nodes will create blocks every 10 minutes.
- A difficulty retargeting overflow bug in core was found and fixed
- A new modified scrypt POW algorithm was implemented in the crypto library to re-enable CPU mining
- The new POW algorithm activates at the fork height by using the new version tag to select which algorithm
- To improve performance due to how long the new hash algorithm takes (~1 sec / hash), a caching method was implemented to save previous block hashes.
- Startup performance issues related to the new POW were found and fixed
- Multiple performance improvements were made to the bitcoind miner
- The difficulty adjustment band was increased to allow for faster difficulty adjustment in case hash power increases rapidly
- Informational debug.log messaging was improved to better communicate block rejection after the fork
- The alert key was update since it has been compromised by Theymos
Assuming the public trial is successful, the official release client will be made publicly available within a few days. The release version will be identical to the public test with just the fork height changed and the automatic stop removed. The official release will be set to fork in mid-April. This will provide several weeks to enable and build the ecosystem. The idea is that as more clients appear on the P2P network this will generate interest and encourage others to run a client as well.
If you would like to help make this project a reality, here are a few things that would be great if interested people could help with
- Setup a simple satoshisbitcoin.org website with the purpose and download links
- Create installation binaries for people to install
- Run multiple DNSSeed servers
- Promote the client