Problem register pool in hybrid mode (cntools)

I am trying to register my pool in hybrid mode but I get this error at the end of the process:

Pool operational certificate not generated in hybrid mode,
                                                                                                                       │please use 'Pool >> Rotate' in offline mode to generate new hot keys, op cert and KES start period and transfer to on
                                                                                                                       │line node!
                                                                                                                       │Files generated when running 'Pool >> Rotate' to be transferred:
                                                                                                                       │/opt/cardano/cnode/priv/pool/Sigma_Stake/hot.vkey
                                                                                                                       │/opt/cardano/cnode/priv/pool/Sigma_Stake/hot.skey
                                                                                                                       │/opt/cardano/cnode/priv/pool/Sigma_Stake/op.cert
                                                                                                                       │/opt/cardano/cnode/priv/pool/Sigma_Stake/kes.start

All those keys are present, I did the rotate keys twice in offline mode just to be sure. Both nodes are synched.

Note: every time I start cntools its says that my pool KES are out of date and need to be rotated. I did not have any problems like this setting up on testnet using same procedure

U need pool.cert

It means the node is not running as a Producer, how glive looks?

I have op.cert and pool.id, cntools did no create any pool.cert?

I have not set the core up as producer yet, I though you should register the pool first?

Then, that’s why u see that error with KES expired.
where did u created the pool.cert? On live server or on offline one?

did u registered the pool? Did u paid 500 ADA?

I created the pool in offline mode. Then moved the files to online node and used Pool->Register->Hybrid

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

CNTools did not generate any pool.cert ony op.cert

ok, understand, then u must create it manually

I tried to register the pool, it never completed, at the end after I selected pledge wallet, ip addres, port etc I get this error that “Pool operational certificate not generated in hybrid mode”.

I could try to copy over all files from offline (except cold.skey) to see if that works.

But what is op.cert then? It was generated by offline cntools Pool->New

Operational certificate, so for pool certificate u will need to type this, but before, update the pledge, cost, etc

If u will give me the details I can provide u the command


cardano-cli stake-pool registration-certificate \
    --cold-verification-key-file $HOME/cold-keys/node.vkey \
    --vrf-verification-key-file vrf.vkey \
    --pool-pledge 100000000 \
    --pool-cost 345000000 \
    --pool-margin 0.15 \
    --pool-reward-account-verification-key-file stake.vkey \
    --pool-owner-stake-verification-key-file stake.vkey \
    --mainnet \
    --single-host-pool-relay <dns based relay, example ~ relaynode1.myadapoolnamerocks.com> \
    --pool-relay-port 6000 \
    --metadata-url <url where you uploaded poolMetaData.json> \
    --metadata-hash $(cat poolMetaDataHash.txt) \
    --out-file pool.cert

  • node.vkey is cold.vkey in your case (adapt the path where the file is located)
  • same for vrf.vkey - adapt the path
  • stake.key - same adapt the path

That looks like the command that CNTools Pool->Register should run? Generating pool.cert, so why would it need pool.cert before running that command? Im getting confused by now

cntools - pool - register yes

But question… why in hybrid… it must be on online for the live node
U must use hybrid mode only on server where the wallet/pool files are kept

let me understand… u have 2 different servers? One offline and one online?

and wallet/pool files are stored on offline node right?

then use the hybrid mode on offline to create and sign the transaction then use online mode on live server to submit the transaction

I have read the guild-operators/cntools.md at alpha · cardano-community/guild-operators · GitHub

There they say to register in hybrid mode on the online node.

Note over Online: Register pool in hybrid mode

I will try to register hybrid on offline instead, it makes sense.

1 Like

But it did not work.
ERROR: CNTools started in offline mode, option not available

Yes

and wallet/pool files are stored on offline node right?

Yes

then use the hybrid mode on offline to create and sign the transaction then use online mode on live server to submit the transaction

When I try this (Pool->Register) I get this error:
ERROR: CNTools started in offline mode, option not available

Yeah I need break :wink: I tried moving all files from offline (except cold.skey) to online but same thing happens.

I look at the source code:

if [[ ${SUBCOMMAND} = "register" ]]; then
                if [[ ${op_mode} = "online" ]]; then
                  current_kes_period=$(getCurrentKESperiod)
                  echo "${current_kes_period}" > ${pool_saved_kes_start}
                  println ACTION "${CCLI} node issue-op-cert --kes-verification-key-file ${pool_hotkey_vk_file} --cold-signing-key-file ${pool_coldkey_sk_file} --operational-certificate-issue-counter-file ${pool_opcert_counter_file} --kes-period ${current_kes_period} --out-file ${pool_opcert_file}"
                  ${CCLI} node issue-op-cert --kes-verification-key-file "${pool_hotkey_vk_file}" --cold-signing-key-file "${pool_coldkey_sk_file}" --operational-certificate-issue-counter-file "${pool_opcert_counter_file}" --kes-period "${current_kes_period}" --out-file "${pool_opcert_file}"
                else
                  println DEBUG "\n${FG_YELLOW}Pool operational certificate not generated in hybrid mode,"
                  println DEBUG "please use 'Pool >> Rotate' in offline mode to generate new hot keys, op cert and KES start period and transfer to online node!${NC}"
                  println DEBUG "Files generated when running 'Pool >> Rotate' to be transferred:"
                  println DEBUG "${FG_LGRAY}${pool_hotkey_vk_file}${NC}"
                  println DEBUG "${FG_LGRAY}${pool_hotkey_sk_file}${NC}"
                  println DEBUG "${FG_LGRAY}${pool_opcert_file}${NC}"
                  println DEBUG "${FG_LGRAY}${pool_saved_kes_start}${NC}"
                  waitForInput "press any key to continue"
                fi
              fi

And to me that looks like you will always get this error since you are in HYBRID mode…

And also “Pool operational certificate not generated in hybrid mode” no it is not generated in hybrid mode, you cannot do that only offline mode or online mode, there is no Hybrid option for that.

but why you can try on offline mode on your live node
then move the transaction to the offline machine to sign in then submit the transaction from online node

Thank you very much for your help, I really appreciate it. I asked the guys over at guild-operators and they say that this message should be shown, it is just information, and that I was doing it the right way. So I can just ignore the message and continue with the registration. It is a really confusing message and the message will pop regardless if you have the correct keys or not (I think its very misleading though, obviously)

1 Like