What you need
- A dedicated mining Cortex account. Reports, conversations and logs on it may be read for research, to fix bugs, and to remunerate you, so do not use a private personal account. See Accounts and sign-in.
- The Cortex CLI installed. The binary is
cortex. See Install the CLI. - Your hotkey’s SS58 address, and a wallet tool that can sign an arbitrary string with it. btcli and polkadot-js both do this.
Accept the terms
The terms version in force isbounty-research-v1. It is shown to you at pairing, and your acceptance is stored as three things: your account id, that version, and a timestamp.
Acceptance is blocking rather than advisory. Until the terms are accepted, pairing is refused and so is marking a conversation as a miner session. You accept them as part of the pairing command, with --accept-terms.
Pair the hotkey
1
Run the pairing command
Pass the SS58 address of the hotkey you want to link.
2
Sign in with your Cortex account
The CLI signs you in. If you already have an access token you can supply it to the CLI with
--token instead of signing in. See Sign in to the CLI.3
Read the payload the CLI prints
The CLI asks the challenge backend for a nonce, then prints the exact string to sign. It has four parts separated by a vertical bar: a fixed prefix, your account id, the nonce, and an expiry.Sign that string exactly as printed, byte for byte. Do not reformat it, do not trim it, and do not sign the address or a hash of your own making.
4
Sign it with your wallet tool
Use btcli or polkadot-js to sign the string with the hotkey named in the command. The signature is produced entirely on your side.
5
Return the signature to the CLI
Hand the signature back to the CLI. When it is accepted, the hotkey is linked to the account and pairing is done.
6
Keep what the CLI prints next
Pairing prints two things you need in Chat: the command that marks a conversation as a miner session, and a one-time session code. Keep both. The command is a secret and must not be shared or posted anywhere.
What pairing gives you
The Chat command is configured by an operator, which is why the CLI prints it for you rather than this page naming it. Treat it as a credential: anyone holding it can mark a conversation.
/miner is not that command, is not a command at all, and never will be.
Many hotkeys per account, one account per hotkey
One Cortex account can hold as many hotkeys as you pair to it. Run the command again with another SS58 for each one. The reverse does not hold. A hotkey belongs to exactly one account, and a second account cannot claim a hotkey that is already paired. The practical consequence is worth stating plainly: you cannot move a hotkey between accounts by pairing it again elsewhere. Decide which account is your mining account before you pair, because pairing is not a way to migrate one later.If pairing does not go through
The command refuses before it prints anything to sign
The command refuses before it prints anything to sign
The usual cause is the terms. Pairing is refused until
bounty-research-v1 is accepted, which is what --accept-terms does. Run the command with that flag.The hotkey is reported as already held
The hotkey is reported as already held
That hotkey is paired to another Cortex account. Nothing you can do from this account changes that, and a second claim is refused by design. Use a hotkey that is not yet paired, or sign in to the account that holds it.
The signature is rejected
The signature is rejected
The string has to be signed exactly as printed, and the payload carries an expiry as its last part. If that expiry has passed, run the pairing command again and sign the new payload without editing it. Check also that you signed with the hotkey named in the command rather than another key in your wallet.
An error card or a problem code comes back
An error card or a problem code comes back
Every Cortex failure has one shape and a stable code, and it carries a reference id that is safe to quote. See Errors.