Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Register a Make ID – Makechain
Skip to content

Register a Make ID

Every identity on Makechain starts with a Make ID — a unique uint64 assigned by the onchain registry. You generate an Ed25519 keypair, register it onchain, and the registry relays a KEY_ADD message into the consensus layer. From that point, validators can verify your signatures without querying the chain.

Demo

Register a new accountdemo
Generate Ed25519 keypair
AlgorithmEd25519
Public key (32 bytes)d4f7a2c8e1b39f0e6d2a8c4b75301fa8 92e6d1c7b4a3f0e8d5c2b9a6f3e0d7c4
Key file~/.makechain/keys/default.json

The private key is generated locally and never leaves your machine. Deterministic signing — no nonce reuse risk.

Register on the onchain registry
Registry transaction
{
  "contract": "MakechainRegistry",
  "method": "register(bytes32 publicKey)",
  "args": {
    "publicKey": "0xd4f7a2c8e1b39f0e6d2a8c4b75301fa892e6d1c7b4a3f0e8d5c2b9a6f3e0d7c4"
  }
}
Registry transaction submittedBlock N
Transaction confirmedBlock N+1
Make ID assigned: 42
Make ID (MID)42
KEY_ADD relayed into consensus
KEY_ADD message (relayed from registry)
{
  "type": "KEY_ADD",
  "mid": 42,
  "timestamp": 1740000000,
  "body": {
    "public_key": "d4f7a2c8e1b3...9f0e6d2a8c4b",
    "scope": "OWNER"
  }
}

The registry event is relayed into the Makechain consensus layer as a KEY_ADD message. This is the bridge between the onchain registry and the protocol — validators learn about your key without querying the chain directly.

Account active in consensus state
KEY_ADD enters mempoolT+0ms
Included in block #1,000 (account pre-pass)T+195ms
Block notarizedT+287ms
Finalized — account is liveT+301ms
Account state
{
  "mid": 42,
  "key_count": 1,
  "project_count": 0,
  "storage_units": 1,
  "verification_count": 0
}
Registry: onchain contractRelay: KEY_ADD into consensus

Add more keys

Once your account is active, you can register additional keys with different scopes.

Register a SIGNING keydemo
Generate a second keypair
Public keya8b9c0d1e2f3...4a5b6c7d8e9f
Submit KEY_ADD with SIGNING scope
KEY_ADD message
{
  "type": "KEY_ADD",
  "mid": 42,
  "timestamp": 1740000010,
  "body": {
    "public_key": "a8b9c0d1e2f3...4a5b6c7d8e9f",
    "scope": "SIGNING"
  }
}
OWNER scope required — verifiedKey count: 2 / 50
Register an AGENT key for CI/CDdemo
Generate an agent keypair
Public keyf1e2d3c4b5a6...9f0e1d2c3b4a
Submit KEY_ADD with AGENT scope
KEY_ADD message
{
  "type": "KEY_ADD",
  "mid": 42,
  "timestamp": 1740000020,
  "body": {
    "public_key": "f1e2d3c4b5a6...9f0e1d2c3b4a",
    "scope": "AGENT"
  }
}

AGENT keys can push commits and update refs but cannot manage collaborators or account settings. Ideal for CI/CD pipelines and AI agents.

Set your profile

Set account metadatademo
Submit ACCOUNT_DATA messages
ACCOUNT_DATA — username
{
  "type": "ACCOUNT_DATA",
  "mid": 42,
  "timestamp": 1740000030,
  "body": {
    "field": "username",
    "value": "alice"
  }
}
ACCOUNT_DATA — bio
{
  "type": "ACCOUNT_DATA",
  "mid": 42,
  "timestamp": 1740000030,
  "body": {
    "field": "bio",
    "value": "Building the future of decentralized code hosting"
  }
}

ACCOUNT_DATA uses LWW Register semantics — the most recent message by consensus order wins per (mid, field) conflict key.

Account profile live
GetAccount response
{
  "mid": 42,
  "username": "alice",
  "bio": "Building the future of decentralized code hosting",
  "key_count": 3,
  "project_count": 0,
  "storage_units": 1,
  "verification_count": 0
}

CLI equivalent

# Generate a keypair
makechain keygen
 
# Register on the onchain registry (assigns MID)
makechain register
 
# Add a SIGNING key (requires OWNER key to sign)
makechain register-key --scope signing
 
# Add an AGENT key
makechain register-key --scope agent
 
# Set profile metadata
makechain set-account --field username --value alice
makechain set-account --field bio --value "Building the future..."

What happened

  1. Key generation — An Ed25519 keypair is generated locally. The public key is 32 bytes, the private key never leaves your machine. Ed25519 uses deterministic signing, so there is no nonce reuse risk.

  2. Onchain registration — You submit a transaction to the Makechain registry contract with your public key. The registry assigns a unique Make ID (uint64) and emits an event.

  3. Relay into consensus — The registry event is picked up and relayed into the Makechain consensus layer as a KEY_ADD message with OWNER scope. This is processed in the account pre-pass (Phase 1, serial) because it modifies shared account state.

  4. Account live — After finalization (~300ms), your account exists in consensus state. You can now create projects, push commits, add collaborators, and verify external addresses.

Key scopes

ScopeWhat it can doTypical use
OWNEREverything — manage keys, transfer projects, delete accountYour primary key
SIGNINGPush commits, update refs, manage collaborators, set metadataDay-to-day development
AGENTPush commits and update refs onlyCI/CD, AI agents, automation

Each account can have up to 50 keys. Keys are a 2P set — use KEY_REMOVE to revoke a compromised key. On a timestamp tie, remove wins.