关于 OpenTTT Proof of Time
这是一个为 AI Agent 提供 OpenTTT 时间证明工具的 MCP 服务,用于验证交易顺序。它结合多个独立时间源、完整性分片和 Ed25519 签名来生成与验证证明。
主要功能
- 01生成交易时间证明
- 02使用哈希和 GRG 分片验证证明
- 03查询证明历史
- 04查看时段统计数据
- 05检查时间源和系统健康状况
适用场景
- 01确认两笔交易中哪笔先发生
- 02验证交易的时间证明
- 03查看证明历史和时段统计
- 04检查时间源状态与同步情况
MCP 相关
向 MCP 客户端提供五种 OpenTTT 时间证明工具:生成、验证、历史查询、统计和健康检查。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
8收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| eventId | string | 否 | 工作流步骤标识符(Claude Code)。例如:'refactor_auth_step1' |
| prevEventId | string | 否 | 上一步的 eventId——将步骤关联成因果链 |
| txHash | string | 否 | 交易哈希(DeFi,带 0x 前缀的十六进制值) |
| chainId | number | 否 | EVM 链 ID(DeFi,例如,Base 的 ID 为 8453) |
| poolAddress | string | 否 | DEX 池合约地址(DeFi) |
| contentDigest | string | 否 | 此记录所证明内容的 SHA-256 摘要(小写十六进制,64 个字符)。由调用方计算,服务器永远不会看到内容本身。提供此值后,如果本地时间合成满足 draft-08 自身的要求(>=3 个独立来源、可表示的误差界限),响应除通常的 potHash 字段外,还会包含符合规范的 potRecordV08 二进制记录(十六进制编码);否则 potRecordV08Error 会说明无法生成的原因。 |
| ctxId | string | 否 | draft-08 §3.3 上下文标识符(Commitment 的域分隔符)。省略时默认为固定的服务器值;MAY 为公开值。 |
详细介绍
@helm-protocol/ttt-mcp
draft-helmprotocol-tttps 的参考实现(IETF Experimental)
适用于 OpenTTT 的 MCP 服务 — 面向 AI Agent 的时间证明工具
AI Agent A 和 Agent B 同时触发了一笔付款。 谁先触发?
OpenTTT 使用加密时间证明来回答这个问题 — 时间戳由多个独立时间源合成,通过 GRG 完整性分片验证,并使用 Ed25519 签名以实现不可否认性。
快速开始
npm install @helm-protocol/ttt-mcp
// claude_desktop_config.json
{
"mcpServers": {
"ttt": {
"command": "npx",
"args": ["@helm-protocol/ttt-mcp"]
}
}
}
就这么简单。现在,你的 AI Agent 可以使用 5 个时间证明工具。
工具
| 工具 | 描述 |
|---|---|
pot_generate | 为一笔交易生成时间证明 |
pot_verify | 使用哈希和 GRG 分片验证时间证明 |
pot_query | 从本地日志和链上子图查询 PoT 历史记录 |
pot_stats | 获取指定时间段的 turbo/full 模式统计信息 |
pot_health | 检查系统健康状况:时间源、子图同步状态、运行时间 |
工具参数
pot_generate
为一笔交易生成时间证明。返回 potHash、时间戳、stratum 和 GRG 完整性分片。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| txHash | string | 是 | 交易哈希(带 0x 前缀的十六进制字符串) |
| chainId | number | 是 | 链 ID(例如,Base 为 8453,Base Sepolia 为 84532) |
| poolAddress | string | 是 | DEX 池合约地址 |
pot_verify
使用哈希和 GRG 分片验证时间证明。返回有效性、模式(turbo/full)和时间戳。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| potHash | string | 是 | 要验证的 PoT 哈希(带 0x 前缀的十六进制字符串) |
| grgShards | string[] | 是 | 十六进制编码的 GRG 完整性分片数组 |
| chainId | number | 是 | EVM 链 ID(例如,Base Sepolia 为 84532) |
| poolAddress | string | 是 | Uniswap V4 池地址(带 0x 前缀) |
pot_query
从本地日志和链上子图查询时间证明历史记录。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| startTime | number | 否 | 开始时间(Unix 毫秒)。默认值:24 小时前 |
| endTime | number | 否 | 结束时间(Unix 毫秒)。默认值:现在 |
| limit | number | 否 | 返回的最大条目数。默认值:100,最大值:1000 |
pot_stats
获取 PoT 统计信息:指定时间段内的交换总数、turbo/full 模式计数及 turbo 占比。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| period | "day" | "week" | "month" | 是 | 统计时间段 |
pot_health
检查 PoT 系统健康状况:时间源状态、子图同步状态、服务运行时间和当前模式。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| (无) | — | — | 此工具不接受任何参数 |
示例:生成并验证 PoT
// In your AI agent's tool call:
const pot = await pot_generate({
txHash: "0xabc123...",
chainId: 84532,
poolAddress: "0xdef456..."
});
// pot.potHash — unique Proof of Time hash
// pot.grgShards — GRG integrity shards for verification
// pot.timestamp — synthesized nanosecond timestamp
// pot.mode — "turbo" (honest) or "full" (requires full verification)
const verification = await pot_verify({
potHash: pot.potHash,
grgShards: pot.grgShards
});
// verification.valid — true if integrity shards reconstruct correctly
工作原理
- 时间合成 — 通过 HTTPS/NTP 查询多个独立时间源(NIST、Google、Cloudflare),合成带有不确定性界限的中位数时间戳
- GRG 流程 — 通过多层完整性流程编码交易数据,生成可验证的分片
- Ed25519 签名 — 对 PoT 哈希签名,以实现不可否认性
- 自适应模式 — 诚实的构建者可使用
turbo模式(快速且有利可图);被篡改的序列则使用full模式(缓慢且成本高昂)— 自然经济选择
Claude Desktop 配置
将以下内容添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"ttt": {
"command": "npx",
"args": ["@helm-protocol/ttt-mcp"]
}
}
}
配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
要求
- Node.js >= 18
- 访问网络以进行时间合成(通过 HTTPS 连接 time.nist.gov、time.google.com、time.cloudflare.com)
Learn More
- OpenTTT SDK — The underlying SDK
- IETF Draft: draft-helmprotocol-tttps — TTTPS Protocol Specification
- Helm Protocol — GitHub
License
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。