CNTools, core node starts as relay

I just can’t get my core node to start as a core node, it starts as relay no matter what I do.

env -file:
seems OK I have only uncommented the POOL_NAME and CNODE_PORT
Works, I can view pool and wallet and submit transactions.
I do get warning about KES keys are out of date every time I start it. I have rotated keys but still is like this.

systemctl status cnode:
Shows that the node is started as relay (no args for keys) So I guess the cannot find my keys.
But all pool keys are in /opt/cardano/cnode/priv/pool/Sigma_Stake/ with correct permissions and owner.

I saw something strange in the env script:

[[ -z ${POOL_FOLDER} ]] && POOL_FOLDER="${CNODE_HOME}/priv/pool"

Why does it say “CHANGE_ME”??
I edited the toppologyupdater script for the relay from “CHANGE_ME” to “Sigma_Stake” but the core should not even use this script?

So confused by now why it’s not working. It shows up on

I get the [[ -z ${POOL_NAME} ]] && POOL_NAME=“CHANGE_ME” now.
and when I run sLiveView it says that the name is indeed CHANGE_ME so it seems that the default is used even though I changed POOL_NAME in the env file. I am not using the default port for CNODE_PORT, so that is apparently working but not the POOL_NAME …

the pool name from env it is case sensitive so
go to cd $CNODE_HOME/priv/pool and type ls -l
then copy the folder name and paste it to pool name inside the env file (and don’t forget to uncomment the line - delete # from the beginning)


Thank you for reply, but I think that is already as it should be?
The folder is:


and in the env script:

The folder was generated by CNTools when I created the pool I think?

yes the folder was generated auto by cntools, now how it looks the node in gLiveView? can u share the output? is it 100% synced?

Both relay and core are synched.

journalctl -e -f -u cnode

do you see any errors?
also can u share the files located inside the Sigma_Stake folder?

No errors, see entry for latest restart:

Dec 03 10:41:08 core systemd[1]: cnode.service: Failed with result 'signal'.
Dec 03 10:41:08 core systemd[1]: Stopped Cardano Node.
Dec 03 10:41:08 core systemd[1]: Started Cardano Node.
Dec 03 10:41:09 core cnode[2974448]: WARN: A prior running Cardano node was not cleanly shutdown, socket file still exists. Cleaning up.
Dec 03 10:41:10 core cnode[2974599]: Node configuration: NodeConfiguration {ncNodeIPv4Addr = Just, ncNodeIPv6Addr = Nothing, ncNodePortNumber = Just 3099, ncConfigFile = "/opt/cardano/cnode/files/config.json", ncTopologyFile = "/opt/cardano/cnode/files/topology.json", ncDatabaseFile = "/opt/cardano/cnode/db", ncProtocolFiles = ProtocolFilepaths {byronCertFile = Nothing, byronKeyFile = Nothing, shelleyKESFile = Nothing, shelleyVRFFile = Nothing, shelleyCertFile = Nothing, shelleyBulkCredsFile = Nothing}, ncValidateDB = False, ncShutdownIPC = Nothing, ncShutdownOnSlotSynced = NoMaxSlotNo, ncProtocolConfig = NodeProtocolConfigurationCardano (NodeByronProtocolConfiguration {npcByronGenesisFile = "/opt/cardano/cnode/files/byron-genesis.json", npcByronGenesisFileHash = Nothing, npcByronReqNetworkMagic = RequiresMagic, npcByronPbftSignatureThresh = Nothing, npcByronApplicationName = ApplicationName {unApplicationName = "cardano-sl"}, npcByronApplicationVersion = 1, npcByronSupportedProtocolVersionMajor = 3, npcByronSupportedProtocolVersionMinor = 0, npcByronSupportedProtocolVersionAlt = 0}) (NodeShelleyProtocolConfiguration {npcShelleyGenesisFile = "/opt/cardano/cnode/files/shelley-genesis.json", npcShelleyGenesisFileHash = Nothing}) (NodeAlonzoProtocolConfiguration {npcAlonzoGenesisFile = "/opt/cardano/cnode/files/alonzo-genesis.json", npcAlonzoGenesisFileHash = Nothing}) (NodeHardForkProtocolConfiguration {npcTestEnableDevelopmentHardForkEras = False, npcTestShelleyHardForkAtEpoch = Nothing, npcTestShelleyHardForkAtVersion = Nothing, npcTestAllegraHardForkAtEpoch = Nothing, npcTestAllegraHardForkAtVersion = Nothing, npcTestMaryHardForkAtEpoch = Nothing, npcTestMaryHardForkAtVersion = Nothing, npcTestAlonzoHardForkAtEpoch = Nothing, npcTestAlonzoHardForkAtVersion = Nothing}), ncSocketPath = Just "/opt/cardano/cnode/sockets/node0.socket", ncDiffusionMode = InitiatorAndResponderDiffusionMode, ncSnapshotInterval = DefaultSnapshotInterval, ncTestEnableDevelopmentNetworkProtocols = False, ncMaxConcurrencyBulkSync = Nothing, ncMaxConcurrencyDeadline = Listening on

Oh and files:

/opt/cardano/cnode/priv/pool/Sigma_Stake$ ls -a
.  ..  cold.vkey  hot.skey  hot.vkey  kes.start  op.cert  pool.cert  pool.config  poolmeta.json  vrf.vkey

I can’t see the vrf.skey file

the node (to work as a Producer) should have:

  • hot.skey
  • vrf.skey
  • op.cert

If you will copy it from other device don’t forget to change the permision
chmod 400 vrf.skey

Aha OK, so you need that secret key too. I will try that. I setup in offline mode and used the backup/restore but it only backed up my wallet keys. So I copied the pool keys manually to USB and moved to my core machine {hot.vkey,hot.skey,op.cert,kes.start,cold.vkey,vrf.vkey} I will add vrf.skey too, is that enough? I want to expose as few keys as I can.

YES! Thank you so much! Working now, could not figure this out since there was no error or warning about that file missing. Good thing I started on testnet and not mainnet :laughing:

I had to do chown too for the file, before I did the service would not start

1 Like

you are welcome

PS: if the node can find those 3 files it will not start as a Producer and also it will not generate errors.

Glade it’s working now

U will need only those 3 files on your live Producer