協定白皮書:EIP 1.0 規約
蛋蛋插槽協定 (EIP) 是蛋蛋村跨界冒險的基石。任何外部遊戲 (容器) 只要實現此協定,即可讓蛋蛋寵物自由進駐並維持冒險連續性。
1. 核心數據架構 (Universal Pet Schema)
開發者必須確保處理的 EIP_PAYLOAD JSON 對象符合以下嚴格規格。
數據結構範例 (TypeScript Definition)
interface EIP_PAYLOAD {
version: "1.0.0";
homeUUID: string; // 寵物唯一的原始 ID (不可變)
origin: { // 本次遷移的來源容器資訊 (必填)
containerID: string; // 發起端容器的識別碼 (例如: DUNGEON_01)
tier: 1 | 2 | 3; // 發起端容器的等級
timestamp: string; // ISO8601 格式時間戳記 (例如: 2026-04-20T10:00:00Z)
signature: string; // 數位簽章,確保數據未被竄改
};
dna: {
seed: string; // 64字元隨機字串,用於決定外觀細節
element: "WIND" | "WATER" | "FIRE" | "WOOD" | "LIGHT" | "DARK";
vocation: "WARRIOR" | "MAGE" | "ARCHER" | "ASSASSIN" | "NONE";
};
progress: {
level: number;
xp: number;
stamina: {
current: number; // 當前體力值
max: number; // 最大體力上限
lastUpdate: string; // 體力最後變動時間 (ISO8601),用於計算離線恢復
};
affinity: number; // 親密度 (0-100)
vault: { // 經濟相關
balance: number; // 可信金幣餘額
pending: number; // 待核心容器核銷的虛擬金額
};
};
status: {
effects: Array<{
id: string; // 狀態 ID (如: POISON, PARALYSIS)
intensity: number; // 影響強度 (如: 每回合扣血量)
remaining: number; // 剩餘回合或秒數
}>;
buffs: any[]; // 正向狀態池
};
skills: string[]; // 寵物已學會的固有技能 ID 列表
inventory: any[]; // 攜帶的卡牌實例列表
}
數據欄位詳細說明
| 類別 | 欄位 | 類型 | 說明 | 約束 / 範例 |
|---|---|---|---|---|
| 元數據 | version | string | EIP 協定版本 | 固定為 "1.0.0" |
homeUUID | string | 寵物原生裝置 ID | 全域唯一且不可變,格式如 home-xyz123 | |
| 來源安全 | origin.containerID | string | 發起端容器識別碼 | 必須在核心註冊表內,如 DUNGEON_01 |
origin.tier | number | 容器安全等級 | 1: 核心, 2: 認證小遊戲, 3: 公開小遊戲 | |
origin.signature | string | Ed25519 數位簽章 | 對排除 signature 欄位後的 JSON 進行簽署 | |
| 遺傳特徵 | dna.seed | string | 核心基因種子 | 64 字元 Hex 字串,決定外觀與初始屬性 |
dna.vocation | string | 職業類別 | 影響升級時的屬性成長權重 | |
| 成長進度 | progress.level | number | 寵物當前等級 | 初始值為 1 |
progress.stamina | object | 體力/能量系統 | 包含 current, max 與離線恢復基準時間 | |
| 經濟資產 | vault.balance | number | 已認證金幣餘額 | 僅能由核心容器 (Core) 進行增減 |
vault.pending | number | 待核銷金幣金額 | 外部容器產出的金幣先存入此處,回 Core 核銷 | |
| 持久狀態 | status.effects | array | 持續性異常狀態 | 遷移時保留,如中毒 (POISON) 的剩餘回合數 |
| 能力與卡包 | skills | string[] | 固有技能 ID 列表 | 角色本身學會的被動或主動天賦 |
inventory | array | 屬性卡牌實例 | 角色目前持有的 10 張戰鬥卡牌詳細數據 |
2. 安全性與數位簽章 (Security Implementation)
為了確保去中心化環境下的數據可信度,開發者必須完整實作 Ed25519 簽章驗證流程。
A. 金鑰標準 (Key Standard)
- 演算法: Ed25519 (Edwards-curve Digital Signature Algorithm)。
- 公鑰格式: 標準 SPKI Base64 字串。
- 簽章格式: Base64 序列化字串。
B. 驗證演算法步驟 (The Verification Logic)
無論使用何種程式語言,請遵循以下邏輯對傳入的寵物進行「身分與存檔」校驗:
// 跨語言實作偽代碼
fn verify_pet(payload: JSON) -> bool {
// 1. 提取元數據
let container_id = payload.origin.containerID;
let signature = payload.origin.signature;
// 2. 獲取公鑰 (從開發者註冊表獲取)
let public_key = get_public_key_for(container_id);
// 3. 準備待簽署字串 (Canonicalization)
// 拷貝整個 JSON 並刪除 "signature" 鍵值
let mut data_to_verify = payload.clone();
data_to_verify.origin.remove("signature");
// 4. 執行 Ed25519 驗證
return ed25519::verify(public_key, signature, data_to_verify.to_string());
}
3. 回傳數據規格 (Expedition Handback)
當遠征結束或寵物需要「回家」時,外部容器必須將最新的數據封裝回傳。回傳包必須包含最新的冒險進度,並重新計算簽章。
回傳包 (Handback Payload) 必須包含:
- 更新後的
progress: 包含本次獲得的 XP 與金幣。 - 最新的
status: 包含在冒險中染上的異常狀態。 - 更新後的
inventory: 若在遊戲中獲得卡牌或道具。 - 容器簽章: 外部容器必須用自己的私鑰對整個回傳包重新簽名。
4. 容器分層與准入機制 (Tiered Access Control)
EIP 定義了三種容器等級,其資產移動規則如下:
| 等級 | 描述 | 准入要求 (Entry Requirement) | 資產可信任度 |
|---|---|---|---|
| Core | 核心容器 (Master) | 無限制。 | 最高 (金幣權威來源) |
| Tier 1 | 經濟特區 (Mall) | 必須持有 Core 簽發的 Visa 標籤。 | 高 (受嚴格監管) |
| Tier 2/3 | 開放容器 (Games) | 接受來自任何容器的寵物。 | 中 (金幣需回 Core 核銷) |
簽證機制 (The Visa Label)
欲進入 Tier 1 (商城) 的寵物,其 EIP_PAYLOAD 必須在 origin 欄位包含由 Core 簽發的短效期 (有效 300 秒) 簽證資訊。簽證內容必須包含 targetUUID 以防止跨角色盜用。
5. 開發者測試套件 (Sandbox Kit)
為了方便開發者快速接入,我們提供以下測試用參數(僅限開發調試):
- 測試容器 ID:
SANDBOX_GAME_01 - 測試公鑰 (SPKI Base64):
MCowBQYDK2VwAyEA...(請向管理員獲取完整長度測試金鑰) - 驗證重點: 確保您的系統能在本地成功解開帶有此 ID 的數據包。
透過這套嚴謹的規約,我們確保每一位跨界而來的蛋蛋寵物,都能在各個世界中展現最真實、最連續的自我。