Dragon's Arcade

Identity · linking

One player, both places

Prove that the Discord or Telegram account you play from and the identity your 24 words derive are the same human. The boards then rank you once instead of twice.

No identity on this browser yet

You can still link from here: the ceremony reads your 24 words, not this browser's cookie, so it works on a device that has never seen us. If you have not claimed an identity at all, start there: linking needs a phrase to link TO.


Link an account

  1. Discord. In any server the bot is in (or a DM with it), run /cipherclerk link-web. The reply is only visible to you.
  2. Telegram. DM the bot and send /link-web. The reply is only visible to you.
  3. On a phone, just tap the link in the bot's reply: it opens this page with the code already filled in, so the only thing left is your 24 words. Otherwise copy the whole code (it looks like 1234567:AbCd…) and paste it below. A code is good for 15 minutes and works once.

Nothing here asks for your 24 words yet. We check the code first and tell you which account it is really for; only then is there a box for your words. If the account we name is not yours, you can close the page having given away nothing, and the code is not used up.

Back to your record

What a link gives you, and what it does not change

Your two keys stay two keys.
Nothing is imported and nothing is re-keyed. Your web identity is still the key your 24 words derive; your Discord identity is still the key the bot derives. A link is a signed statement that the same human holds both, recorded so the boards can group them.
Your Discord identity is still CUSTODIAL, and linking does not change that.
The bot's key for you is BLAKE3(bot_secret, your account id). Whoever operates the bot holds bot_secret, so they can derive your Discord key and sign as you there (before this link, and after it). That is what running a chat bot means, and no link ceremony can take it away. Only your 24 words are self-held; only they are yours in the sense that nobody else can reproduce them.
So the two halves of "you" are not equally yours.
If you want the version of you that only you can act as, that is the phrase, and turns signed with it through a tool that holds it (the dregg CLI, on /act-signed) are the only turns on this surface that carry a real signature. Everything you press in this browser, on either side of the link, is still attributed rather than signed.
What the link is actually FOR.
One row on the Descent board instead of two strangers, and a /you page that counts both sides' tables and runs. It is a view, and it is honest about being one.
Who can read the record.
The operator. The link is stored in plaintext as "this key and that account are one human". The private version, proving you are one human across several platforms without revealing which accounts, exists in the tree and is not what this page does.

What this does and does not protect

Where the key lives: nowhere.
Your 24 words are turned into a keypair inside the one request that needs it, and every byte of secret material is wiped before the response goes out. Nothing is stored: not on the server, and not in this browser.
The words pass through the server once, each time you use them.
They are generated here, and typed back here whenever a request needs the key they derive: restoring this identity on a device, or signing a cross-platform link. We never write them to disk or to a log, but that is a promise about this code, not a guarantee the shape of the system gives you. Generating them entirely inside your browser is the next step and is not what these pages do today.
Your browser holds a cookie, not a key.
It is HttpOnly, so page scripts, including an injected one, cannot read it. That is why the identity lives in a cookie rather than in localStorage, which any script on the page can read. It is still a bearer token: whoever has it can play as you until it expires, so treat a link containing ?user=dregg-id-… the way you would treat a password.
And nobody else can put an identity INTO this browser.
Theft is not the only direction. A hostile page can also try to give you an identity, quietly submitting its own 24 words to this site so that everything you play afterwards is filed under a name somebody else holds the words to, with nothing on screen looking wrong. Claiming, confirming, restoring, releasing and linking therefore only work from a page on this site: a request that cannot show it came from here is refused before anything is derived or set, including when it says nothing at all about where it came from. And a phrase we have just shown can only be taken up by the browser it was shown to, so a token glimpsed on somebody else's screen is not a way in.
Pressing a button here is not a signature.
Turns you play in the browser are attributed to your public key, not signed by it; the server has no key to sign with and neither does this page. A tool that holds your phrase (the dregg CLI, the browser extension) can sign turns as this identity through /act-signed, and only those turns carry a real signature.
A server restart may sign you out.
Unless the deployment pins its identity key, restarting re-rolls it and your cookie stops verifying. You come back as a fresh anonymous visitor and re-enter your words, never as somebody else.