跳到主要内容

密钥与服务

管理员上传链上操作私钥,绑定到 oracle / liquidator / hedger / bridge 组件。 私钥经 ECIES(secp256k1 + HKDF + AES-256-GCM)加密传输;解密后明文写入 SQLite,API 永不回传私钥。

服务取值:oracle · liquidator · hedger · bridge_deposit · bridge_withdraw

GET /api/keys/encryption-key

无鉴权。 返回本进程启动时生成的 ECIES 公钥(重启即变)。

{
"public_key": "0x04…",
"algorithm": "ecies-secp256k1"
}

客户端用该公钥加密私钥 hex,再 POST /api/keys

GET /api/keys

Bearer。列表(无私钥)。

{
"keys": [{
"id": "uuid",
"label": "oracle-hot",
"address": "0x…",
"created_at": "…",
"used_by": ["oracle"]
}]
}

POST /api/keys

Bearer。上传一把密钥。

Body:

{
"label": "oracle-hot",
"address": "0x…",
"ephemeral_public_key": "0x…",
"iv": "…",
"ciphertext": "…"
}

服务端解密后从私钥推导地址,须与 address 忽略大小写一致。

201: 密钥条目(无 private_key)。

HTTP说明
400JSON / 解密失败 / 地址不匹配
503无数据库

DELETE /api/keys/{id}

Bearer。仍被服务绑定时 409;不存在 404

200: { "ok": true }

GET /api/service-config

Bearer。各服务当前绑定。

{
"services": {
"oracle": { "key_id": "uuid", "address": "0x…", "enabled": true },
"liquidator": { "key_id": null, "address": null, "enabled": false }
}
}

PUT /api/service-config

Bearer。绑定或开关。key_id 有值时会热重启对应组件。

Body: { "service": "oracle", "key_id": "uuid" | null, "enabled": true }

service 非法 → 400

200: { "ok": true }