Fork Example

After you fill in the parameters you want and click "Generate New Altcoin", you will see a page similar to this:

After making absolutely sure there are no mistakes or anything, you send money to the given address. Once the payment has received enough confirmations, the page will automatically update and look something like this:

You can (and probably should) write a password into the field and click update (warning: do not misplace this password; keep it simple if you have to, there is no way to recover it if you lose it). There are currently no customization options for new forks, but in the future there may be. Once you're done, click on the "build page" link (blue text). This will take you to the actual build page:

The fork will then be queued for generation, then it will be prepped and compiled. Once everything is finished, you can download each of the binary types (windows, mac, and linux) as well as the source code by clicking each of the blue links after "(platform) binaries compiled:" and "Created source tarball:".

Once you have downloaded binaries and the source files, you can start the node up on a machine of your choice. Here, the linux binaries are used. Extract the files, then run the "daemon" binary:

You can see how your fork is doing by checking the "debug.log" file in the data directory. The data directory differs depending on your operating system: for linux, it is in $HOME/.forkname directory; for macs, it is in $HOME/Application Support/Library/ForkName.

Once you see

*** FORKING ***
in the log file, you know your fork has finally detached permanently from the Bitcoin eco system. You are on your own. Now it's time (unless you've done so already) to figure out how to make others interested in your fork. You may want to customize it to suit your needs, but be aware that forkgen (the service) only provides support up to the point where your fork is unmodified; once you start changing the code base, you are entirely on your own.

For starters, though, let's start generating blocks; to do so, we need at least ONE other peer. On some machine, start up a second instance of the fork, and then connect the two machines together. Here, for simplicity, we are connecting two nodes running on the same machine:

$ mkdir "$HOME"/forkgencoin-2
$ echo -n -e "port=10102\nrpcport=10103\nconnect=localhost\n" > "$HOME"/forkgencoin-2/forkgencoin.conf
$ ./forkgencoind -daemon -datadir="$HOME"/forkgencoin-2

Check if we actually got a peer (if not, we will not be able to use the setgenerate command):

$ ./forkgencoin-cli getconnectioncount
1 <-- if this says 0, something is wrong; go back up and try to make the nodes connect; you may wanna try ./forkgencoin-cli addnode IPNUMBER

Now we enable block generation on the primary node using 2 CPU's:

$ ./forkgencoin-cli setgenerate true 2

Tailing the debug.log file should eventually (it may take awhile, sometimes hours) show us a bunch of new blocks being made:

$ tail -f ~/forkgencoin-2/debug.log
2019-02-15T13:27:41Z init message: Starting network threads...
2019-02-15T13:27:41Z DNS seeding disabled
2019-02-15T13:27:41Z net thread start
2019-02-15T13:27:41Z init message: Done loading
2019-02-15T13:27:41Z opencon thread start
2019-02-15T13:27:41Z addcon thread start
2019-02-15T13:27:41Z msghand thread start
2019-02-15T13:27:41Z New outbound peer connected: version: 70015, blocks=1000, peer=0
2019-02-15T13:27:41Z Leaving InitialBlockDownload (latching to false)
2019-02-15T13:35:44Z UpdateTip: new best=000000009ed0bde3069d633855637315b8b005640f2d386d5706198b828f4a96 height=1001 version=0x20000000 log2_work=41.968689 tx=1021 date='2019-02-15T13:35:44Z' progress=1.000000 cache=0.0MiB(1txo)
(here, a block was found after about 8 minutes, as you can see from the timestamps). Once you get this far, you have successfully created your own fork, with its own blocks. You should start seeing a balance increase after 100 blocks (the time to mature; read up on it if you don't know what that means).

Good luck. May the fork be with you!