Question on pool registration certificate with multiple relay node

Hi,

Regarding the generation of registration-certificate. Below is the command:

cardano-cli shelley stake-pool registration-certificate
–cold-verification-key-file cold.vkey
–vrf-verification-key-file vrf.vkey
–pool-pledge
–pool-cost
–pool-margin
–pool-reward-account-verification-key-file stake.vkey
–pool-owner-stake-verification-key-file stake.vkey
–mainnet
–pool-relay-ipv4
–pool-relay-port
–metadata-url https://git.io/JJWdJ
–metadata-hash
–out-file pool-registration.cert

My question is if I have 2 or more relay pools and 1 core node, how would I register these relay nodes in the command.

Thanks for the answer.

Best Regards

Hello,

I have three relay nodes and created multiple (x3) separate A records pointing each relay IP to subdomain “tadpole.adafrog.io

In the pool registration, I used the following:

–single-host-pool-relay tadpole.adafrog.io
–pool-relay-port xxxx \

4 Likes

I’ve tried to find any published example of cardano-cli shelley stake-pool registration-certificate with more than one relay specified. Specifically, nothing confirming or denying we could simply duplicate the relay argument for each of our relays, e.g.:

cardano-cli shelley stake-pool registration-certificate
...
--single-host-pool-relay relay1.ourdomain.com
--pool-relay-port 3001
--single-host-pool-relay relay2.ourdomain.com
--pool-relay-port 3001
...

So we are stuck with trial and error in our registration until we answer the bulk of these questions:

  1. I appreciate the suggestion & syntax in @ADAfrog’s comment, but I can’t find where it comes from or why it would work. Is the defined behaviour to look up all A records for a subdomain provided to –single-host-pool-relay (e.g. tadpole.adafrog.io) and register every one of them as a relay with --pool-relay-port? If the answer is “yes”, how can we verify this?

  2. Has anyone tried specifying more than one relay on the command line— either by repeating the --single-host-pool-relay option or the other 2 options for an IP address or an SRV record— as in this comment?

  3. If we do specify our two relays separately, with the repeated --single-host-pool-relay option, and the registration request is accepted, how can we confirm that the registration request has been submitted with both our relays, rather than just the first or last one?

  4. If we move our relays into a subdomain like @ADAfrog suggests, and submit our registration details that way, how would we confirm it has registered both relays?

  5. If it’s truly recommended that we group our relay hosts into their own subdomain, then why are the relay servers for long standing pools like LOVE registered as A records at the top level domain, rather than a subdomain? i.e. what would be the exact command line options for registering a pool with these two servers?

{ "addr": "node1.stakelove.com", "port": 6000, "valency": 1 },
{ "addr": "node2.stakelove.com", "port": 6000, "valency": 1 },

Sorry to bother @papa_carp but maybe he could chime in on this? :pray:

1 Like

Hi there,

I pretty much find myself in the same situation. I like the idea of using SRV records and --multi-host-pool-relay but the missing details in the documentation in this case don’t really help.

Regarding point 1. is the behavior of cardano-node concerning DNS lookups documented here? AFAIK typically a single client wont use all DNS A entries if they are multiple but just chose one at random.

I’ll play around with the SRV thing now…

2 Likes

If you would like to use our python tools, you can add them as a list to the registration data as outlined here. https://viperstaking.com/ada-tools/stake-pool-registration/

2 Likes

@Viper_Stake-Pool if you are passing args->pool_relays as an array rather than a single relay host, and if your comment above is confirming (as it sounds) that this works for more than one relay host in that array, then we have a simple answer.

shelley.register_stake_pool() (at this time, line 581) defines pool_relays from an input like this example:

"pool_relays": [
{
"port": "3001",
"host": "relay1.yourstakingbusinesswebsit.com",
"host-type": "single"
}
],

which (for relay in pool_relays, here) just adds each of these, in order (and currently the order is important; see bug #1358) , for each of the pool_relays:

--single-host-pool-relay {relay['host']}"
--pool-relay-port {relay['port']}"

So this function is based on the undocumented feature that cardano-cli shelley stake-pool registration-certificate takes a sequence of relay arguments, rather than just 1 as shown in the documentation & cardano-cli help.

But the confirmation by @Viper_Stake-Pool that his python function works in this case is good enough for me to go ahead with my proposed syntax in comment #3, and also suggests it’s not necessary to set up either SRV records or relay subdomains to register multiple relay hosts.

1 Like