If you operate a self-hosted Solana validator and you have decided to move to a managed provider, the only thing that actually matters is the cutover. Every other detail — pricing, SLA, dashboard — can be renegotiated. A botched cutover that drops vote credits, slashes your stake, or strands your delegators is not a thing you can come back from this quarter.
This is the playbook AllenHark runs every time we onboard a validator that was previously self-hosted. It is engineered around one constraint: two nodes must never sign for the same vote-slot range. Hit that constraint and the migration is safe; miss it and you risk slashing.
The constraint that drives everything
Solana validators vote on every slot they observe. The vote transaction is signed by the validator's vote key. If two physical nodes both hold a copy of the vote key and both vote on the same slot, they will produce two signed vote transactions over the same range — which the network reads as a double-vote and slashes.
Slashing on Solana is currently soft (your validator is marked, your delegators leave), but the engineering posture is "treat slashing as a hard event you will not survive operationally." The playbook below is designed so that, by construction, two nodes cannot vote on overlapping ranges.
The mechanism: slashing protection bookkeeping. Every node tracks the highest slot it has voted on. A node refuses to vote on a slot at or below its bookkeeping high-water mark. When you move the vote key to a new node, you hand off that bookkeeping record. The new node starts with the old node's high-water mark; the old node is retired before the new one signs.
That single invariant — slashing-protection bookkeeping is handed off, not copied — is what makes the cutover safe.
Step 1: Pre-flight checklist
Two to three days. The goal: walk the existing validator and produce a deliverable that documents exactly what is being migrated.
Audit the validator:
- Identity and vote keys: where they live, how access is controlled, who has copies.
- Stake accounts: every active delegation. Sample the largest by stake.
- MEV client: is Jito active? What block-engine is it pointed at? What are the bundle-acceptance parameters?
- Monitoring: what alerts fire when, who is on-call, what is the runbook on each.
- SLA exposure: does the existing operation have a contractual SLA to anyone? If yes, that becomes a hard constraint on the cutover window.
- Hardware retirement plan: what happens to the old box after migration.
Pick the cutover window. Off-peak Solana hours. Not during a known network event (upgrade, snapshot rotation). Not during your team's busy window.
Define rollback. "If post-cutover validation shows X, we promote the old node back." Write this down before cutover, not after.
Step 2: Vote-key handover
Half a day. The vote identity is transferred from the existing hardware to the new managed hardware via a secure, documented channel. This is the only step in the playbook where the vote key is physically moved.
The handover includes:
- The vote private key
- The slashing-protection bookkeeping record (high-water mark of voted slots)
- A signed and timestamped attestation from the existing operator that the key has been moved (and that the existing host will not be brought back online without explicit re-coordination)
The new managed node imports the key, imports the bookkeeping, and does not vote yet. It will refuse to vote until step 4.
Step 3: Snapshot + warm catchup
One to three days, depending on how far behind the new node starts. The new node is brought up on a recent ledger snapshot, then runs Solana's catchup to head. During this entire window:
- The old node is still primary; it is still voting; it is still producing blocks when it is leader.
- The new node is silent. It is reading the ledger, tracking head, and validating its own state against the canonical chain.
Catchup is verified end-to-end. We confirm:
- Slot height matches network head.
- Bank hash at recent confirmed slots matches the canonical hash.
- No fork-choice anomalies (the new node has converged on the same fork as the rest of the network).
- All required entrypoints, gossip peers, and RPC endpoints respond correctly.
The new node is, at this point, a fully-functional non-voting Solana validator. The only thing keeping it from being primary is the slashing-protection record telling it not to sign.
Step 4: Hot-standby cutover
Minutes. The most consequential step.
The sequence, in order:
- Old node stops voting. Vote process is halted on the existing host; the validator binary is stopped; the host is taken off the network for the vote-signing role. (We typically leave it running RPC for a day or two so any client traffic that was hitting it can drain cleanly.)
- Old node's final slashing-protection record is exported and reconciled with the record the new node already holds. The high-water mark on the new node is updated to be the maximum of the two values. This is the moment that guarantees the new node will not sign for a slot the old node has already signed.
- New node begins voting. The validator binary on the new managed host comes up with
--voteenabled. First vote lands within seconds — well inside the slot-skip tolerance. - Observability. We watch the next 100 slots in real time. Vote credits accruing on the validator's vote account? Good. Leader slots being produced when it is the validator's turn? Good. MEV tips routing to the expected tip account? Good.
If anything in those first 100 slots looks wrong, the rollback plan from step 1 fires: the new node halts, the old node is brought back online, slashing-protection is reconciled again the other direction, and we retry.
In practice we have not had to roll back, but the plan exists because the cost of having it and not needing it is rounding error compared to the cost of needing it and not having it.
Step 5: Post-migration validation
One epoch. The validator runs in production on managed infrastructure for at least one full epoch (~2.5 days on mainnet) before we sign off. Validation:
- Vote credits accrued at expected rate (compare to historical baseline of the same validator).
- Leader-slot production performing at or above the historical baseline.
- MEV tips collected and distributed per Jito's expected behavior.
- Dashboard reporting accurate.
- SLA metrics green.
- No anomalies in the audit log.
- Old hardware fully decommissioned only after sign-off.
If everything is green, the migration is done. If any signal shows regression, we triage before declaring complete.
Common pitfalls
A few things we have seen go wrong on other operators' migrations that this playbook engineers around:
- Operators copy the vote key instead of moving it. Two hosts then hold the key. As long as both hosts have a vote process running, you are one mis-click from a double-vote. The fix is the slashing-protection handoff, not a key copy.
- Operators migrate during a Solana upgrade window. Then they cannot tell whether a cutover artifact is the new node's fault or the upgrade's fault. Pick a clean window.
- Operators forget about the Jito client. Plain Agave catchup is not the same as Agave+Jito catchup. The MEV path needs to be verified separately.
- Operators skip the warm-catchup verification. A node that is mostly caught up but has a fork-choice disagreement with the network will, on cutover, fork. Validate the bank hash before promoting.
The unit economics of migrating
Why operators migrate, in our experience:
- The infrastructure tax is real. Bare-metal + on-call + upgrades + Jito plumbing + monitoring is a low-six-figures cost per year minimum, before any engineering opportunity cost.
- Managed pricing is below break-even for nearly every operator with under 500k SOL of delegated stake.
- The opportunity cost is bigger than the line-item cost. The engineering hours that disappear into validator ops are hours not spent on whatever is supposed to be the operator's actual product.
Migrating is not the right move for a validator-as-a-business operator. It is the right move for everyone else.
How AllenHark runs this
AllenHark Managed Validator runs this exact playbook on every onboarding that involves a previously self-hosted validator. Walkthrough page with the per-step detail: /managed-validator/migration.
Typical timeline end-to-end: 5–10 business days. Cutover window: minutes. Vote credits lost in the process: zero, on every migration we have run.
If you are evaluating, send us the validator pubkey and a contact. We will return a pre-flight checklist, a proposed cutover window, and a flat-fee quote inside one business day. Start the conversation.
Related reading: