I believe we are missing something. Earlier I asked a question on how to reregister the stake pool from the new hosts. However, apparently I had not asked the entire question - which is, how do you go about moving the node? As in, what are the steps? The documentation on this has been pretty hard to find. What I did was to set up the node on the new hosts, transfer the keys, and then re-register the stake pool using the SPOS scripts. But, the IP addresses of the relays aren't being updated on the net - so how do I update the topology file? I found a Topology Updater script, but I can't just download and run it - it appears that a set of very specific prerequisites needs to be set up, and I don't see where that is documented. So how exactly do I take my updated topology file and submit it to the network to supersede the old one?

3 Answers 3


In general, there's nothing in the protocol itself that cares where your node made blocks, but here's some best practices on what you would do:

  1. Create your new relays in the new hosting center
  2. Setup bi-directional connections between your old/new relays in your topology files
  3. Notify any pools you're pairing with of your new relays so they can add them to their topology files as well
  4. Re-register the new relays for your pool so IOHK and other pools getting information from db-sync to generate their topology files can find your relays
  5. Sync a new "relay" against your new relays in your new hosting center. This will eventually become your block producing node
  6. Identify a time when your node will not produce a block that's a good maintenance window (ideally a few hours in case anything goes wrong)
  7. cleanly stop both the old block producing node and the new one (that's currently a relay) with a SIGINT signal so the database is cleanly shutdown.
  8. (optional but good practice) generate a new KES key an opcert
  9. restart your new block producing node with the VRF skey and new KES/opcert.
  10. Ensure your relays have adequate incoming relay connections from outside prior to shutting down your old relays.
  11. remove old relays from your new relay topology and restart them
  • This to me sounds like a good, comprehensive set of steps. Forgive my ignorance as a first-time SPO, maybe I could confirm details of some of the steps. 2) Bi-directional connections meaning what, I add each of the old/new relays in each of the relay topology files? 4) Re-register, meaning run SPOS 05c script? Or is there a specific cardano-cli command or such? 10) Adequate relay conxs - how do I do this, is this a cardano-cli query? Feb 1, 2022 at 21:33

First thing: you can re-register the stake pool from any host in the world. You don't have to do it from one of the stake pool nodes.

Second thing: the only keys you need on the block producer node are: kes.skey, vrf.skey and the operational certificate (node.cert or oper.cert, depending on what guide you were using). It is not advised to have the payment keys on a server connected to the Internet. Maybe it is a requirement for the scripts you are using, but I would not do that.

If the new relays are in sync, you should install the topology updater script. You have some requirements to install, but you can use the documentation. https://cardano-community.github.io/guild-operators/basics/#pre-requisites

Once you are running the topology updated script on the new relays and you have incoming connections, you can re-register the stake pool with the new relays. I assume you already have the new block producer connected to the new relays (both directions connections between relays and block producer). But you should not run both block producers in the same time, if you have blocks scheduled. You can also connect the new block producer to both old relays and new relays, and stop the old block producer even before updating the stake pool registration certification.

  • When I run the prereqs, don't forget I have an already-installed, running node. I enter the path to the install folder, and it says I have to give it an empty path. I don't know what it is going to do, and the documentation isn't clear on my question. Do I create an empty folder and run the script to that? Feb 1, 2022 at 21:28
  • I think the prereqs.sh will only install some packages that you need to run the scripts. You may already have them. You can try to run topology updater without running the prereqs.sh, but if it is not working correctly, take a look to the script to see what it is doing and maybe you can see what's missing. I know for sure I have issues with gLiveView.sh for example because I did not have jq and bc packages installed. Feb 1, 2022 at 22:06
  • I definitely have jq, not sure about bc - jq is used by SPOS... I also had issues with gLiveView hanging the node, back on 1.29.0 when I got started with cnode. I think I will try the topologyUpdater script, run the prereqs to an empty folder and see what happens. Take a snapshot of the host first. Feb 2, 2022 at 0:27
  • OK, I configured and ran the topologyUpdate script, set it up to run every hour. However, when I looked at the Cardano centralized topology file (explorer.mainnet.cardano.org/relays/topology.json), our relays are not there after 24 hours. How do we get our relays on that list? Feb 3, 2022 at 15:43

i think you are missing something and you make more complicated your question.

every pool needs only one BP (second one for redudancy, but never run 2 BPs at the same time) and you also need Relays, more than 2 for the redudancy.

the BP (block producer) need his settings and only connections to your relays. no other connection to any other Relay in the network. that is for your security. this node, the BP, need 3 files so that runs as BP. that is the only different to the Relays.

which means now, the IPs which are known and used in public, are the IPs from your relays.

now to your point. if you want to install new node, what ever it is (either BP or Relay), you need a normal installation as it was for any other old Node.

if you want to use this new Node a Relay,

  1. prepare it as relay,
  2. connect it with your BP only
  3. register the pool with your new public IPs

if you notice here, in importan key_step is to register again the pool with your new IPs (from Relays)

in case now you want new installation for your BP,

then please just install new node, connect it with your Relays, and add the proper files to run as BP.

please let me know, if that is what you exactly want to make it clear.

for any further support, let us know and we are happy to assist you. TTS17

  • thank you so much for your answer! I want to make sure I understand. When you say "register the pool with your new public IPs" I ran the SPOS registration script 05c to register the stake pool with REREG as a command line parameter, from one of the new nodes. I believe this submitted the topology file with the new IP addresses, right? Or, maybe more to the point - how do I update the Cardano network topology file with my new relay IP addresses? Feb 1, 2022 at 21:25
  • do you use cntools? - here is a great guidance from cool operator - forum.cardano.org/t/… - i speak for the "STEP 8 - register the pool" -/- in your case you have to go >> POOL >> MODIFY
    – TTS17
    Feb 1, 2022 at 21:41
  • to update the topology file, you need a script to run everyone ,which s called "topologyUpdater"
    – TTS17
    Feb 1, 2022 at 21:56
  • OK I will have a look. I didn't download cntools, and like I said in my post, I tried the topologyUpdater.sh, but it didn't work, and I had to run the prereqs.sh, but that asked for an empty folder, so I didn't understand what it was going to do. Feb 2, 2022 at 0:25
  • OK, now it goes to be more complicated, as we open more tickets, if you need further support, find telegram group : t.me/CardanoStakePoolWorkgroup - or open tickets in : forum.cardano.org - we are huge community and happy to support you. welcome mate
    – TTS17
    Feb 2, 2022 at 19:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.