Skip to main content

Support access and address disputes

Two things in this page are about Ziklag acting on your account rather than you acting on it. Both are rare. Both are things you should be able to check rather than take on trust, which is why they are documented here with the controls named.

When a Ziklag engineer opens a support session

To investigate an issue, a support engineer can open a time-boxed session that shows them your account as you see it. Every session:

  • is announced. The account owner receives an email when it starts, naming the engineer and the reason they gave. There is no version of this that happens quietly.
  • appears in your own audit log, alongside everything else that happens on your account. Look for support_session_started in Settings → Audit.
  • expires. Thirty minutes by default, two hours at the very most. An extension requires a fresh reason and produces a second entry in your log.
  • is read-only by default. Write access is a separate grant inside Ziklag, issued per incident, and it expires on its own.

What a support session cannot do

These are refused by the platform, not hidden in an internal screen — the refusal happens in the same service that would have carried out the action, so there is nothing for an engineer to click past:

BlockedWhy
Read your extended public keys beyond the masked xpub6CUG…f5d5 previewThe full key reveals your entire transaction graph
Send a transaction or broadcast oneMoving your funds is never a support action
Trigger a consolidationSame — it moves real balances
Schedule a destructive wipeIrreversible, and owner-only
Approve an identity rotationA security decision that belongs to you
Rotate your API keyIt would lock your integration out
Register or revoke an Edge credentialThose live on your hardware
Archive an addressArchiving stops monitoring, which risks unseen funds
Change your capacity bandBilling goes through a path that emails you

A support engineer who needs one of these will ask you to do it. That is the intended answer, not a workaround.

Cancelling a scheduled wipe is deliberately not blocked. If an engineer finds a wipe scheduled by mistake, they can stop it immediately — waiting for you to wake up is the worse failure.

Address conflicts

Addresses in ChainOS are unique per account, not globally. Two accounts deriving from the same mnemonic — or one customer running two accounts — will legitimately hold the same address, so this is not, by itself, an error.

It becomes one when the two accounts are not the same customer. If an import or an address registration collides with an address another account already holds, you will see:

{
"error": {
"code": "CONFLICT",
"message": "This address is already registered on the platform. Contact support with reference IMP-CONFLICT-imb_01J9K2L3M."
}
}

You will not be told who the other party is, and they will not be told about you. An address book is the most commercially sensitive asset a payments business has, and a dispute-resolution process that hands one over is not one worth having. Both sides see only the reference.

Proving control

Ziklag asks both parties the same question: sign a nonce with the key that controls the address. Whoever holds the key can; whoever does not, cannot. Nobody has to be believed.

You will receive an email with a nonce that looks like this:

chainos-proof-ESC-01J9R2S3T-1755600000-8f14e45fceea167a

Run this on the machine holding your mnemonic:

chainos-edge prove-control \
--address=0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD \
--nonce=chainos-proof-ESC-01J9R2S3T-1755600000-8f14e45fceea167a

It prints a signature. Paste it into Settings → Proof of control in the portal, or POST it:

POST /v1/settings/proof-of-control
{ "nonce": "chainos-proof-…", "signature": "0x967e08…" }

Four properties of that command are worth knowing, because they are what make it safe to run:

  • Your key never leaves the machine. What you send is a signature over a string Ziklag chose. A signature over a fixed string is useful for nothing else.
  • It searches for the address. You name an address and the Edge finds the key behind it — the gas tank, the treasury wallet, then the first thousand deposit addresses. You cannot accidentally sign with the wrong key, because a key that does not produce that address is not used.
  • It refuses to sign anything that is not a ChainOS nonce. "Sign this message to verify your identity", where the message is a transaction, is the oldest attack in this space. This command will not sign arbitrary text.
  • It needs no network access. Read the mnemonic, sign, print. You can run it on an air-gapped machine and carry the signature out by hand.

The response to a submission is always the same, whatever you send. That is deliberate: an API that confirmed a nonce was valid would let somebody discover that an address is under dispute without being party to it. Support tells you the outcome.

Which chains this works on

Today: Ethereum, BNB Smart Chain, Polygon, Avalanche, Base and TRON — the chains with a signed-message convention ChainOS can verify (EIP-191 personal_sign).

Bitcoin, Solana, Stellar and XRP each have their own convention and none is verified automatically yet. On those chains prove-control refuses rather than producing a signature nobody can check, and the dispute is settled by an engineer on other evidence. A receipt for a conversation that never happened is worse than no receipt.

What happens then

OutcomeMeaning
You proved control and the other party did notThe address is awarded to you
Neither proved controlAn engineer decides on the remaining evidence — key sources, derivation paths, registration history
Both proved controlOne customer is operating two accounts. Both keep it; nothing is taken away
Your nonce expired unansweredThe claim is not granted. Ask support for a new one

A nonce is single-use and carries the reference of the dispute it belongs to, so a signature obtained for one cannot be submitted as the answer to another.

Changes Ziklag makes to your account

Anything Ziklag changes about your account — your capacity band, your capability tier, a temporary capacity grant, a suspension — emails your account owners and is written to your own audit log. If you find a change you were not told about, that is a bug worth reporting.

Suspension

If your account is suspended, the API is closed and returns:

{ "error": { "code": "ACCOUNT_SUSPENDED", "message": "This account is suspended: …" } }

Monitoring does not stop. Your Edge stays enrolled, deposits to your existing addresses are still detected and credited, and your balances are unchanged. A commercial dispute must never make your money invisible — the same principle that keeps a superseded xpub monitored.

You can still sign in, read the reason, see your balances and settle up. /v1/auth, /v1/billing, /v1/organizations and the whole Edge plane stay open throughout.

Temporary capacity

A grant adds to your band's limit rather than replacing it, and it expires — the email tells you when. If you need the capacity permanently, move up a band before then. Going over a limit stops new addresses being issued; it does not stop monitoring the ones you already have.