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

Protocol Overview

Makechain is a realtime decentralized protocol for ordering and storing git-like messages — project creation, commits, ref updates, access control — with permissionless publishing and cryptographic attribution.

Design Goals

  1. High throughput — 10,000+ messages per second with sub-second finality
  2. Permissionless publishing — anyone can create projects and push code
  3. Self-authenticating messages — every message verifiable without external lookups
  4. Thin consensus — consensus orders metadata and ref pointers; file blobs live in a separate DA layer

Message Envelope

Every message on the network is wrapped in a self-authenticating envelope:

Message {
  data: MessageData       // The operation
  hash: bytes(32)         // BLAKE3(data)
  signature: bytes(64)    // Ed25519 signature over hash
  signer: bytes(32)       // Ed25519 public key
}

Verification: check that signer is a registered key for data.mid with sufficient scope for the message type.

Message Semantics

Every message type follows one of two paradigms:

1P (One-Phase)

The message creates or updates state unilaterally. No paired "undo" message exists.

Sub-typeBehaviorExamples
SingletonCreates a new resource, irreversibleFORK
LWW RegisterLast-write-wins per conflict keyPROJECT_METADATA, ACCOUNT_DATA
Append-onlyAdds entries to a growing setCOMMIT_BUNDLE
State transitionMoves resource to terminal statePROJECT_ARCHIVE

2P (Two-Phase)

Add and Remove pairs operating on a set. On a timestamp tie, remove wins.

Sub-typeBehaviorExamples
SetStandard add/remove with remove-winsProject, Collaborator, Key, Verification sets
CAS-orderedCompare-and-swap for sequencingREF_UPDATE / REF_DELETE

Content-Addressed IDs

Project IDs are content-addressed — the project_id is the BLAKE3 hash of the PROJECT_CREATE message itself (i.e., Message.hash). Forked project IDs are the hash of the FORK message. This means two projects with the same name get different IDs because the hash includes MID, timestamp, etc.