PegNet Compose leverages Docker Compose to help you start and manage a PegNet miner.
This is the initial setup process. You will only need to do this once.
git clone https://github.com/pegnet/pegnet-compose.git && cd pegnet-compose
PegNet Compose uses 3 Docker volumes to persist data.
docker volume create factom_database
docker volume create factom_wallet
docker volume create pegnet
It is necessary to create a factomd.conf file in the config folder. The default settings should work out of the box for most people.
cp config/factomd.conf.EXAMPLE config/factomd.conf
Begin syncing the blockchain and start the wallet. This command looks like it only brings walletd up, but it brings factomd up too.
docker-compose run --name walletd -d walletd
docker exec -it walletd \
curl -X GET \
--data-binary '{"jsonrpc": "2.0", "id": 0, "method": "generate-ec-address"}' \
-H 'content-type:text/plain;' http://localhost:8089/v2
Copy down the public address you see in the output as you will need it later. It should begin with EC
.
OR
Replace the secret key with your own secret key. It should begin with Es
. Note: be careful not to change the formatting when copying over your secret key. Check the quotation marks.
docker exec -it walletd \
curl -X GET --data-binary \
'{"jsonrpc": "2.0", "id": 0, "method": "import-addresses", "params":{"addresses":[{"secret":"Es3tXbGBVKZDhUWzDKzQtg4rcpmmHPXAY9vxSM2JddwJSD5td3f8"}]}}' \
-H 'content-type:text/plain;' http://localhost:8089/v2
If you do not already have a FCT address, you can create one in walletd.
docker exec -it walletd \
curl -X GET \
--data-binary '{"jsonrpc": "2.0", "id": 0, "method": "generate-factoid-address"}' \
-H 'content-type:text/plain;' http://localhost:8089/v2
Copy down the public address, you will need it later.
The cheapest way to buy entry credits is to create them yourself using FCT. You can do that using several different Factom wallets, including MyFactomWallet (web), Enterprise Wallet (desktop) or walletd (cli), which we have running here.
Alternatively, you can buy EC directly from Factom Inc or De Facto who will deposit EC directly into your entry credit address.
Copy the example config file to use as a template.
cp config/pegnet.ini.EXAMPLE config/pegnet.ini
Open the config file in a text editor.
nano config/pegnet.ini
Change the following items:
ECAddress
to the public EC address created or added to the wallet in step 5.FCTAddress
and CoinbaseAddress
to your FCT address.IdentityChain
to any alphanumeric string (no spaces!) that will help you identity your miner amongst the rest.Your miner needs to be able to get asset prices from an oracle. Complete the [Oracle]
and [OracleDataSources]
section of the config. The comments in the config file will guide you.
The initial sync might take anywhere from 12 to 48 hours. You can close the shell whilst this is happening if you wish.
You will be able to see the progress of the factomd sync in your web browser by visiting host:8090
, where host
is the IP address of your machine. If you're doing this on your local machine, host
will be localhost
.
You can also track it at the command line with the following command.
docker exec -it factomd \
curl -X POST --data-binary \
'{"jsonrpc": "2.0", "id": 0, "method": "heights"}' -H 'content-type:text/plain;' http://localhost:8088/v2
It has finished syncing when all the heights are the same.
We will bring it up again later when we start PegNet.
docker stop walletd && docker rm walletd
When you start PegNet, you need to pass the number of miners you want it to run as an environment variable. Each miner will require a single CPU core.
Make sure you're in the pegnet-compose directory.
MINERS=4 docker-compose up -d
Check the log output to make sure it is healthy. Mining will start once factomd begins to make progress, which may take a while.
docker-compose logs
The first time you start PegNet it will build a ByteMap table. This can take 10 to 15 minutes. The ByteMap table is persisted to disc, so it will not need to build it again when you start it in the future.
You can stop and remove the pegnet container without stopping factomd and walletd (for instance, if you want to change the number of miners).
docker stop pegnet && docker rm pegnet
If you ever want to take everything down.
docker-compose down
In either case, you can to bring it all back online with the start command above.