Using a Docker container

Sync Chain Data

Ensure Docker is installed (or install it in your OS of choice) and run the gluwa/creditcoin3 Docker image.

Using Docker to run a Mainnet node

Docker should automatically pull the specified gluwa/creditcoin3 image. If not, you can try pulling it yourself from DockerHub by running docker pull gluwa/creditcoin3:3.39.0-mainnet and then re-running the command below.

docker run \
 --name creditcoin-validator \
 -p 30333:30333 \
 -v <your local data path>:/creditcoin-node/data  \
 gluwa/creditcoin3:3.39.0-mainnet `# Enter latest mainnet image` \
 --name "validator name" `# name the validator` \
 --telemetry-url "wss://telemetry.creditcoin.network/submit/ 0" `# (optional) opt in to telemetry` \
 --public-addr "/dns4/<yourhostname or ip>/tcp/30333" `# REPLACE <yourhostname or ip> with the public IP address or host name at which your node can be reached` \
 --chain /mainnetSpecRaw.json `# we want to connect to mainnet` \
 --bootnodes "/dns4/cc3-bootnode.creditcoin.network/tcp/30333/p2p/12D3KooWLGyvbdQ3wTGjRAEueFsDnstZnV8fN3iyPTmHeyswSPGy" \
 --validator `# if we want to run a validator node` \
 --base-path /creditcoin-node/data `# the base path to store the node's data` \
 --port 30333 # the port to use for node-to-node communications

In the command above, notice the -v flag that takes a local directory as the first part of the parameter. It's import that docker has the ability to write to this directory, otherwise you will see errors such as Error: Service(Client(Backend("IO Error: Permission denied (os error 13)"))). Your command will likely use a path similar to -v /home/validator/data:/creditcoin-node/data.

Here is an example command to run a validator that connects to the Creditcoin Mainnet:

docker run \
-p 30333:30333 \
-v ~/chain_data:/data \
gluwa/creditcoin3:3.39.0-mainnet \
--bootnodes "/dns4/cc3-bootnode.creditcoin.network/tcp/30333/p2p/12D3KooWLGyvbdQ3wTGjRAEueFsDnstZnV8fN3iyPTmHeyswSPGy" \
--chain /mainnetSpecRaw.json \
--validator \
--base-path /data \
--port 30333

Using Docker to run a Testnet node

Generating a network p2p key (Necessary for new Testnet nodes starting 3.47.0)

Starting v3.47.0, new nodes that intent to be validators will no longer generate network key automatically on start-up. Validator nodes in existence prior to v3.47.0 do not need to make changes to how they handle network key. When setting up a new node, run the following command to generate and store on disk the network key that will be referenced in the start-up command:

docker run --name creditcoin-validator -p 30333:30333 -v <your local data path>:/creditcoin-node/data gluwa/creditcoin3:3.48.0-testnet key generate-node-key

The command will output two values. A node peer id and the associated secret key.

The secret key must be placed in a file under this path

<your local path>/creditcoin-node/data/chains/creditcoin3_testnet/network/secret_ed25519

CAUTION: This step can be bypassed using the --unsafe-force-node-key-generation argument in the start-up command. This parameter forces the generation of a new network key even if one already exists under the network folder or if the system would normally prevent its generation under certain conditions.

Attempting to run a validator without its network key configured will result in the follow error:

Error: NetworkKeyNotFound("/data/chains/creditcoin3_testnet/network/secret_ed25519")

Docker should automatically pull the specified gluwa/creditcoin3 image. If not, you can try pulling it yourself from DockerHub by running docker pull gluwa/creditcoin3:3.48.0-testnet and then re-running the command below.

docker run \
 --name creditcoin-validator \
 -p 30333:30333 \
 -v <your local data path>:/creditcoin-node/data  \
 gluwa/creditcoin3:3.48.0-testnet `# Enter latest testnet image` \
 --name "validator name" `# name the validator` \
 --telemetry-url "wss://telemetry.creditcoin.network/submit/ 0" `# (optional) opt in to telemetry` \
 --public-addr "/dns4/<yourhostname or ip>/tcp/30333" `# REPLACE <yourhostname or ip> with the public IP address or host name at which your node can be reached` \
 --chain testnet `# we want to connect to the testnet` \
 --bootnodes "/dns4/cc3-test-bootnode.creditcoin.network/tcp/30333/p2p/12D3KooWAxmsWr6iEjFyLqQBzfLvbCRTAhYBeszyr8UWgQx6Zu7K" \
 --validator `# we want to run a validator node` \
 --base-path /creditcoin-node/data `# the base path to store the node's data` \
 --port 30333 # the port to use for node-to-node communications

In the command above, notice the -v flag that takes a local directory as the first part of the parameter. It's import that docker has the ability to write to this directory, otherwise you will see errors such as Error: Service(Client(Backend("IO Error: Permission denied (os error 13)"))). Your command will likely use a path similar to -v /home/validator/data:/creditcoin-node/data.

Here is an example command to run a validator that connects to the Creditcoin Testnet:

docker run \
-p 30333:30333 \
-v ~/chain_data:/data \
gluwa/creditcoin3:3.48.0-testnet \
--bootnodes "/dns4/cc3-test-bootnode.creditcoin.network/tcp/30333/p2p/12D3KooWAxmsWr6iEjFyLqQBzfLvbCRTAhYBeszyr8UWgQx6Zu7K" \
--chain testnet \
--validator \
--base-path /data \
--port 30333

Last updated