ECCP

分層文件

提供給協議實作者、節點營運者與客戶端團隊的參考資料。

ECCP 將訊息基礎、伺服器營運、協議概念與實作指南分開呈現,讓每一層都能清楚被理解。

可直接靜態部署

以靜態匯出為前提的 MDX 指南、Shiki 程式碼區塊、側欄導覽,以及英文與繁體中文雙語路由。

訊息基礎

建立 ECCP 帳號、連接客戶端,並驗證第一則端對端加密訊息。

更新於 2026-04-08/zh-hant/docs/getting-started

快速開始

當四個層次保持清楚時,ECCP 最容易理解:Layer 1 定義契約,Layer 2 承載節點,Layer 3 提供使用者體驗,Layer 4 則加入可選的生態系延伸能力。

需要準備什麼

  • 一個支援 ECCP 的 homeserver,可由團隊自架或由可信任的營運者提供
  • 一個客戶端,例如適合一般使用者的 PrivChat,或偏向營運者工作流的 exine
  • 穩定的裝置身分,讓端對端金鑰在 session 更新後仍可延續

建立第一個帳號

ECCP 帳號永遠附屬於某個 homeserver 命名空間。提供者可以是公開、私有、邀請制,或完全自託管。

Bash snippet

Bash

1
2
3
4
5
6
7
8
curl -X POST https://chat.example.org/_eccp/client/v1/register \
  -H "Content-Type: application/json" \
  -d '{
    "username": "ada",
    "display_name": "Ada",
    "password": "replace-me",
    "device_name": "Ada Laptop"
  }'

驗證裝置身分

建立帳號時,客戶端會產生裝置金鑰並啟動第一個 X25519 握手。ECCP 將帳號憑證與裝置身分分離,讓密碼輪替不會暗中替換掉你的密碼學狀態。

傳送第一則加密事件

TypeScript snippet

TypeScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { ECCPClient } from "@eccp/sdk";

const client = new ECCPClient({
  baseUrl: "https://chat.example.org",
  accessToken: process.env.ECCP_ACCESS_TOKEN!
});

const room = await client.rooms.create({
  visibility: "private",
  name: "第一個加密房間"
});

await client.rooms.send(room.id, {
  type: "m.room.encrypted",
  algorithm: "eccp.megolm.v1",
  body: "Handshake complete."
});

檢查跨裝置同步

在第二個客戶端上登入同一帳號,確認:

  1. 房間不需手動匯入就會出現。
  2. 裝置清單可以被看見。
  3. 金鑰交換完成後,訊息歷史能成功解密。

下一步

  • 前往 私人房間 了解日常房間管理。
  • 在建置 Layer 1 能力前,先閱讀 協議概念
  • 當你準備好讓節點與其他伺服器互連時,請閱讀 聯邦指南