Attestation Payload Spec
This document explains what Morpheus currently stores in
, what users should verify, and how the built-in verifier works.1. Current Hash Model
Today, Morpheus uses the following rule across Oracle, Compute, Feed, and VRF flows:
Important:
- TDX is 64 bytes.
- Morpheus uses the first 32 bytes as the application binding.
- The remaining 32 bytes are usually zero padding and must be ignored for app-level verification.
2. What Is The Canonical Payload?
The hash is not computed over the entire HTTP response body. It is computed over the canonical business payload for that execution path.
- Oracle fetch / smart-fetch:
- Compute builtin / script:
- the compute result object returned by the worker, for example or
- Pricefeed sync:
- the canonical quote object, including , , , , , , , , , , ,
- VRF:
3. How Users Verify
A. Oracle / Compute callback verification
If your contract receives a callback result envelope like:
verify it in this order:
- Read .
- Read .
- Confirm they are equal.
- Read .
- Take the first 32 bytes of .
- Confirm that first 32-byte prefix equals .
- If you know the canonical result payload, compute and confirm it also equals .
- Optionally confirm , , and against the published Morpheus deployment metadata.
B. Pricefeed on-chain verification
If you read a feed record from the on-chain datafeed contract:
the chain only stores the compact
, not the full quote.To verify that hash:
- Fetch the matching feed publication record from Morpheus operational logs / audit logs.
- Rebuild the canonical quote payload for that exact publication.
- Compute .
- Confirm the computed hash equals the on-chain .
- If the publication log includes , confirm the first 32 bytes of equal the same hash.
Without the off-chain publication record, you can verify chain consistency of the stored hash, but you cannot fully reconstruct the original TEE quote from the chain record alone.
4. Built-In Verifier
The web verifier is available at:
It accepts:
- full worker responses
- compact callback envelopes
- raw objects
- stored attestation lookups by
- optional expected payload JSON
- optional expected
- optional expected or on-chain
- optional , , and
The verifier returns:
-
- , , and prefix are consistent
-
- same as above, plus a full quote and event log were attached
5. Scope
The built-in verifier is an application-level verifier.
It does:
- verify
- verify
- verify first-32-byte binding
- verify / / when supplied
It does not:
- fully validate Intel / TDX certificate chains
- independently validate platform trust roots
6. Published Morpheus CVM Explorers
The current production topology is role-split, not network-split:
- Oracle request/response CVM:
- app id
- explorer
- DataFeed CVM:
- app id
- explorer
Both mainnet and testnet Oracle traffic now terminate at the Oracle CVM and differ only by the network selected in the request path or payload. Feed synchronization runs on the dedicated DataFeed CVM.
中文说明
1. 当前 的含义
目前系统里:
- 的前 32 字节等于这个 hash
注意:
- 总长度通常是 64 字节
- 真正要比对的是前 32 字节
- 后 32 字节一般是补零,不能拿整段直接和 32 字节 hash 比
2. 用户应该怎么验
Oracle / Compute 回调
拿到链上 callback 的
JSON 后:- 读取
- 读取
- 确认两者相等
- 读取
- 截取前 32 字节
- 确认这个前缀等于
- 如果你能拿到规范结果载荷,就自己重新做
- 确认算出来的值也等于
Pricefeed 链上记录
链上的 datafeed record 只保存了
,没有保存完整 quote。因此要验证它:
- 从 Morpheus 的操作日志 / 审计日志里拿到对应那次发布的完整 quote 记录
- 用同样的规范序列化方式重建 quote payload
- 计算
- 和链上的 比较
- 如果日志里有 ,再确认 前 32 字节也等于这个 hash
只看链上 record 本身,只能验证“链上存了什么 hash”,不能单独还原完整 TEE quote。
3. 前端 verifier 能做什么
现在支持直接粘贴:- 完整 worker 响应
- 链上 callback 的紧凑 envelope
- 原始 JSON
并且支持额外输入:
- 期望的
- 期望的 / 链上的
4. 当前 verifier 的边界
当前 verifier 是“应用层验证”,不是完整的 TDX 证书链验证。
5. 当前公开的 Phala Explorer
当前生产拓扑是按角色拆分,不是按网络拆分:
- Oracle 请求/响应 CVM
- 名称:
- app id:
- explorer:
- DataFeed CVM
- 名称:
- app id:
- explorer: