智慧合約概覽¶
Sera 的結算層由部署在 Ethereum 上的開源智慧合約組成。所有合約均已驗證,已獨立審計。
合約地址¶
Ethereum 主網¶
地址在不同部署間可能變更;請透過 GET /config 取得實時值,避免硬編碼。
原始碼¶
所有合約在 GitHub 上開源,已獨立審計。以下連結指向已審計版本。
| 合約 | 原始碼 |
|---|---|
| Sera.sol | src/Sera.sol |
| SeraSOR.sol | src/SeraSOR.sol |
| SeraBatcher.sol | src/SeraBatcher.sol |
| Vault.sol | src/Vault.sol |
架構¶
flowchart TD
User["User / API"] --> Sera["Sera.sol<br/><i>Core Settlement</i>"]
User --> SOR["SeraSOR.sol<br/><i>Multi-Leg Routing</i>"]
SOR --> Sera
Batcher["SeraBatcher.sol<br/><i>Batch Execution</i>"] --> Sera
Batcher --> SOR
Sera --> Vault["Vault.sol<br/><i>Asset Custody</i>"] 合約角色¶
Vault.TRADER_ROLE授予 Sera,僅撮合引擎可移動帳本餘額。Sera.EXECUTOR_ROLE授予鏈下執行者、SeraSOR 與 SeraBatcher。Sera.PAUSER_ROLE與DEFAULT_ADMIN_ROLE由協議管理方持有。- 所有管理員角色均由 Timelock 合約持有,而 Timelock 由多簽錢包所有。
Sera.trustedRouter設定為目前活躍的 SeraSOR 部署地址。
合約¶
Sera.sol¶
核心結算合約。處理訂單撮合、存款和提取。
matchOrders()— 結算已撮合的訂單對depositFund()/depositFundWithPermit()— 將代幣存入 VaultemergencyWithdraw()— 兩步驟延遲提取(24 小時延遲)executeInstantWithdrawDualSig()— 雙重簽名即時提取
SeraSOR.sol¶
智慧訂單路由器。執行多段原子兌換。
executeIntent()— 根據已簽署的 Intent 執行多段路由
SeraBatcher.sol¶
批次執行包裝器。可在單筆交易中執行多筆撮合。
batchMatchOrders()— 盡力批次(單筆失敗不影響後續)batchMatchOrdersAtomic()— 全有或全無批次batchMatchMixed()— 組合原子批次、單筆撮合和 SOR intent
Vault.sol¶
資產託管合約。以每位使用者的帳本餘額持有使用者資金。
deposit()— 接受代幣存款withdraw()— 轉出代幣transferLedger()— 內部帳本轉帳(無代幣移動)balanceOf()— 查詢使用者餘額
結算流程¶
sequenceDiagram
participant User
participant Sera as Sera.sol
participant Vault as Vault.sol
Note over User: Deposit tokens
User->>Sera: depositFund(token, user, amount)
Sera->>Vault: deposit(user, token, amount)
Vault-->>Sera: Balance credited
Note over Sera: Orders are matched
Sera->>Vault: transferLedger(from, to, token, amount)
Note over Vault: Internal ledger swap
Note over User: Withdraw proceeds
User->>Sera: executeInstantWithdrawDualSig(intent, sigs)
Sera->>Vault: withdraw(user, token, amount, recipient)
Vault-->>User: Tokens transferred EIP-712 Domain¶
所有合約使用相同的 EIP-712 domain 進行簽名驗證:
const domain = {
name: 'Sera',
version: '1',
chainId: 1,
verifyingContract: '0xB5C50C5D5f038404F85970b7f5B7259C4AC0E198' // Sera.sol
};
安全特性¶
- 非託管 — 所有操作都需要使用者簽名;平台無法在未經授權的情況下移動資金
- 緊急提取 — 即使 API 停機,使用者仍可直接在鏈上提取(24 小時延遲)
- 重入保護 — 所有敏感函式使用瞬態重入防護
- 可暫停 — 管理員的緊急暫停機制
- 基於角色的存取 — 執行者、管理員和暫停者角色分離
下一步¶
-
核心結算合約參考
-
智慧訂單路由器參考
-
批次執行參考
-
資產託管參考