Skip to main content

📇 Validator Contacts

If you run a validator in the pool, you can tell JagPool how to reach you — and decide, contact by contact, what appears on your public validator page. You prove it's really you by signing a short message with your validator's identity key, on your own machine. No wallet, no account, nothing to install.


⚡ TL;DR

  • The form lives on your validator's page on jagpool.xyz"Operator? Update contacts".
  • X, Discord, Telegram: each has its own publish switch, off by default. Unmarked contacts are held so the pool can reach you and are shown to nobody else.
  • Email is never shown — there is no switch for it. It exists so the pool can write to you.
  • You sign with solana sign-offchain-message using the identity keypair. It's a message, never a transaction — it cannot move funds.
  • Your contacts are removed when your validator leaves the pool, and you can erase them yourself at any time.

Not in the pool yet? Contacts are collected as part of the application process — this form is for members.


🔒 What is published, what is not

you mark it "Shown on the validator page"?

yes ─────────┴───────── no
│ │
appears on your "Pool contact only":
public validator page held by pool operators
on jagpool.xyz to reach you directly —
shown to nobody else

email: no switch exists — never published, ever

Nothing is published unless you turn it on. The choice travels inside the message you sign, so what you granted is exactly as provable as the contact itself.

How long is it kept? As long as your validator is in the pool. When it leaves, your contacts are deleted with it. Want them gone sooner? See Removing everything below.


✍️ Updating your contacts, step by step

  1. Open the form — your validator page on jagpool.xyz → Operator? Update contacts.

  2. Fill in your contacts and flip the publish switch for the ones that should appear publicly. The page then shows the exact message you will sign, something like:

    jagpool.xyz asks you to sign this with your validator identity key.

    Purpose: contacts
    Vote account: <your vote account>
    Issued at: 2026-09-01T20:38:33Z

    Contacts:
    x: https://x.com/example (public)
    telegram: https://t.me/example (private)
    email: ops@example.com (private)

    Signing confirms these contacts are yours. JagPool keeps them to reach you
    about the pool. Only contacts marked public are shown on jagpool.xyz; the
    others are never published, and an email never is. They are removed when
    your validator leaves the pool. To remove them sooner, sign and submit this
    form with no contacts.
  3. Copy the message to a file on the machine that holds your identity keypair — the page suggests a name like jagpool-contacts-jag77EXc.txt. Copy it exactly as displayed: a re-wrapped or edited copy produces a signature the pool will refuse.

  4. Sign it with the command the page shows — complete except for your keypair path:

    solana sign-offchain-message -k /path/to/validator-identity-keypair.json "$(cat jagpool-contacts-jag77EXc.txt)"

    It prints one line: the signature, base58.

  5. Paste the signature back into the form and submit. Done — the links you marked public appear on your validator page, the rest stay with the pool.

Why signing with the identity key is safe

An off-chain message carries a prefix that makes it structurally impossible to interpret as a transaction — no matter what you sign here, it cannot move funds, change your vote account, or touch your validator. And the key never leaves your machine: you paste back only the signature. If you change identity keys (failover), just re-sign — the pool always checks against your vote account's current identity on-chain.


🧭 If your submission is refused

Each refusal names its problem — here is where each one sends you:

The site saysWhat it means, what to do
the signature does not match the messageThe signature is not over this exact text. Sign the message as displayed — a re-wrapped copy, or a regenerated message, will not match.
not this vote account's current identityThe signature is fine, but the key isn't your validator's current identity. You have probably pointed -k at the wrong keypair file.
already supersededA newer submission was already accepted. Regenerate the message and sign again.
is on …, not on … (host not allowed)A link doesn't point where its type expects (X on x.com, Discord on discord.gg/discord.com, Telegram on t.me). Fix the named entry and sign again.

Discord: which URL names you? The only URL that points at a person is https://discord.com/users/<your numeric user ID> — a username alone is not a URL, and a discord.gg invite points at a server, not at you. To get your ID: in Discord, User Settings → Advanced → enable Developer Mode, then right-click your avatar → Copy User ID.

Also worth knowing: editing any field after copying regenerates the message and clears the signature — that's the page saving you from signing a stale text.


🌐 Your website is not part of this form

The website shown on jagpool.xyz comes from what you publish on-chain with validator-info — signed by the same identity key, the way the whole network already knows you:

solana validator-info publish "YourName" --website https://your-site.example

The pool follows your on-chain value at the next ingestion, with no action on our side. If the site displayed for your validator ever looks wrong or outdated, that is the value to update — there is no override on JagPool's side, on purpose: one source of truth, yours.


🗑️ Removing everything

The form has a named control: "Remove every contact the pool holds for this validator." It builds the same message with no contacts — the text says in words that it removes everything — and you sign it exactly like any other submission.

After erasure, the pool keeps exactly one thing: the time of your last submission, and nothing else. That timestamp is what prevents someone from replaying an older signed message of yours to restore what you just removed.