内容
<p align="center">
<img src="assets/banner.png" alt="WaxSeal SDK" width="100%" />
</p>
<h1 align="center">WaxSeal SDK</h1>
<p align="center">
<strong>适用于开放网络和人工智能代理的加密身份。</strong><br/>
一个Ed25519密钥对。一个64字符的指纹。永久的链上记录。
</p>
<p align="center">
<a href="https://waxseal.id">waxseal.id</a> ·
<a href="https://waxseal.id/developers">开发者文档</a> ·
<a href="https://waxseal.id/create">获取您的印章</a>
</p>
<p align="center">
<img src="https://img.shields.io/badge/license-MIT-crimson.svg" alt="MIT License" />
<img src="https://img.shields.io/badge/TypeScript-ready-blue.svg" alt="TypeScript" />
<img src="https://img.shields.io/badge/REST%20API-no%20key%20required-green.svg" alt="REST API" />
<img src="https://img.shields.io/npm/v/@waxseal/verify?color=blue&label=%40waxseal%2Fverify" alt="@waxseal/verify on npm" />
<img src="https://img.shields.io/npm/v/@waxseal/mcp?color=crimson&label=%40waxseal%2Fmcp" alt="@waxseal/mcp on npm" />
<a href="https://glama.ai/mcp/servers/degenlegion-com/waxseal-sdk"><img src="https://glama.ai/mcp/servers/degenlegion-com/waxseal-sdk/badges/score.svg" alt="Glama MCP score" /></a>
</p>
---
## 软件包
| 软件包 | 描述 | 安装 |
|---------|-----------|---------|
| [`@waxseal/verify`](#waxsealverify) | 浏览器 + Node SDK — 验证身份、验证签名、嵌入徽章、验证Webhook | `npm install @waxseal/verify` |
| [`@waxseal/mcp`](./mcp) | 用于Claude、Cursor、Windsurf和VS Code的MCP服务器 — 验证身份、签名文件、用人批准控制AI操作 | `npx @waxseal/mcp` |
---
## `@waxseal/mcp` — 用于人工智能代理
<a href="https://smithery.ai/servers/degenlegion-com/waxseal"><img src="https://smithery.ai/badge/degenlegion-com/waxseal" alt="Smithery" /></a>
<img src="https://img.shields.io/npm/v/@waxseal/mcp?color=crimson&label=npm" alt="npm" />
在两分钟内为Claude、Cursor、Windsurf或VS Code Copilot添加加密身份层。
```json
{
"mcpServers": {
"waxseal": {
"command": "npx",
"args": ["-y", "@waxseal/mcp"],
"env": {
"WAXSEAL_PRIVATE_KEY_PEM": "-----BEGIN PRIVATE KEY-----\n<your key>\n-----END PRIVATE KEY-----"
}
}
}
}
```
> **无需安装。** 在任何支持HTTP的MCP客户端中使用托管服务器:
> `https://api.waxseal.id/mcp`
**6种工具为您的人工智能代理提供以下功能:**
| 工具 | 功能 | 是否需要密钥 |
|------|-------------|:-----------:|
| `waxseal.info` | 平台概述、层级和工具指南 | 否 |
| `waxseal.identity.verify` | 查询指纹 → 名称、链、钱包、状态 | 否 |
| `waxseal.signature.verify` | 验证Ed25519签名是否与链上密钥匹配 | 否 |
| `waxseal.approval.verify` | 在执行前验证人类批准令牌 | 否 |
| `waxseal.document.sign` | 使用您的WaxSeal私钥签名任何内容 | **是** |
| `waxseal.approval.create` | 创建签名、限时的批准令牌 | **是** |
仅需验证的工具无需配置即可使用。签名工具需要`WAXSEAL_PRIVATE_KEY_PEM`。
→ [完整MCP文档](./mcp/README.md) · [Smithery列表](https://smithery.ai/servers/degenlegion-com/waxseal) · [npm](https://www.npmjs.com/package/@waxseal/mcp)
---
## `@waxseal/verify` — 用于应用程序和后端 {#waxsealverify}
<img src="https://img.shields.io/npm/v/@waxseal/verify?color=blue&label=npm" alt="npm" />
```bash
npm install @waxseal/verify
```
适用于 **React**、**Vue**、**Node.js**、**n8n**、无服务器函数以及任何具有`fetch`功能的运行时。
<p align="center">
<img src="assets/seals.png" alt="WaxSeal examples" width="80%" />
</p>
### 两种模式,一个指纹
#### 模式1 · 徽章验证
> *"此WaxSeal是否存在且真实?"*
确认印章在链上。无需用户交互 — 仅需指纹。
**用例**
- ✦ 已验证作者徽章,适用于博客帖子和文章
- ✦ GitHub样式工具上的贡献者身份
- ✦ CMS平台上的发布者验证
- ✦ 证明您在AI之前创建了某些内容
```ts
import { verifySeal } from "@waxseal/verify";
const seal = await verifySeal({ fingerprint: "a1b2c3d4..." });
if (seal.valid && seal.onChain) {
console.log(seal.displayName, "·", seal.chain);
// "Ada Lovelace · base"
}
```
---
#### 模式2 · 登录和操作批准
> *"此人是否签署了此内容,当前?"*
签名挑战证明密钥持有者存在 — 完全取代密码、OTP和电子邮件循环。
**用例**
- ✦ 无密码登录 — 无电子邮件、无OTP、无凭证可泄露
- ✦ 批准文件或高价值交易
- ✦ 将评论、帖子或投票限制在已验证的身份后面
- ✦ 仅向已验证的印章持有者颁发API密钥
- ✦ 在n8n / Make.com / Zapier中自动身份验证
```ts
const seal = await verifySeal({
fingerprint: "a1b2c3d4...",
message: "I approve this transfer.",
signature: "base64url...",
});
if (seal.valid && seal.onChain && seal.signatureValid) {
// 加密证明 — 无密码、无会话令牌
}
```
---
### React徽章
```tsx
import { WaxSealBadge } from "@waxseal/verify/badge";
<WaxSealBadge fingerprint="a1b2c3d4..." />
```
或自行构建:
```tsx
import { useEffect, useState } from "react";
import { verifySeal, type VerifyResult } from "@waxseal/verify";
export function SealBadge({ fingerprint }: { fingerprint: string }) {
const [seal, setSeal] = useState<VerifyResult | null>(null);
useEffect(() => {
let active = true;
verifySeal({ fingerprint }).then((r) => active && setSeal(r));
return () => { active = false; };
}, [fingerprint]);
if (!seal?.valid || !seal.onChain) return null;
return (
<a href={`https://waxseal.id/seal/${seal.fingerprint}`} target="_blank" rel="noopener noreferrer">
✦ {seal.displayName ?? seal.fingerprint.slice(0, 8)}
</a>
);
}
```
---
### HTML嵌入(无需构建步骤)
```html
<script src="https://waxseal.id/embed.js"></script>
<span data-wax-seal="YOUR_64_CHAR_FINGERPRINT"></span>
```
> **电子邮件** — 邮件客户端会阻止脚本标签。请改用纯链接:
> `<a href="https://waxseal.id/seal/YOUR_FINGERPRINT">验证我的Wax Seal</a>`
---
### Webhook验证
```ts
import { verifyWebhookSignature, isWaxSealWebhookEvent } from "@waxseal/verify/webhooks";
app.post("/webhook/waxseal", express.raw({ type: "*/*" }), (req, res) => {
const valid = verifyWebhookSignature({
body: req.body,
signature: String(req.headers["x-waxseal-signature"]),
secret: process.env.WAXSEAL_WEBHOOK_SECRET,
});
if (!valid) return res.status(401).send("Invalid signature");
const event = JSON.parse(req.body.toString());
if (isWaxSealWebhookEvent(event, "seal.minted")) {
console.log("New seal:", event.data.fingerprint, "on", event.data.chain);
}
res.sendStatus(200);
});
```
**Webhook事件**
| 事件 | 触发时机 |
|---|---|
| `seal.verified` | 通过API验证了一个印章 |
| `seal.minted` | 在链上铸造了一个新的印章NFT |
| `seal.updated` | 印章名称、头像或元数据已更改 |
| `seal.subscription.started` | 印章持有者开始了一项付费订阅 |
| `seal.subscription.ended` | 订阅到期或被取消 |
| `challenge.approved` | 登录挑战已验证 — 用户已认证 |
---
### REST API — 无需SDK,无需密钥
```
POST https://api.waxseal.id/v1/verify
Content-Type: application/json
{
"fingerprint": "<64-char hex>",
"message": "...",
"signature": "..."
}
```
```json
{
"valid": true,
"onChain": true,
"chain": "base",
"displayName": "Ada Lovelace",
"walletAddress": "0x…",
"signatureValid": true,
"verifiedAt": "2026-01-01T00:00:00Z"
}
```
---
### 适用于所有平台
| 技术栈 | 方法 |
|---|---|
| **React / Vue / Svelte** | `npm install @waxseal/verify` |
| **Node.js / Express** | 相同软件包 + Webhook助手 |
| **n8n** | HTTP请求节点 → REST API,或代码节点中的npm软件包 |
| **Make.com** | HTTP模块 → REST API |
| **Zapier** | Webhook by Zapier触发器 |
| **PHP / Python / Go** | 直接向REST API发送纯HTTP POST请求 |
| **静态HTML / CMS** | 两行`embed.js`代码片段 |
| **Claude / Cursor / Windsurf / VS Code** | [`@waxseal/mcp`](./mcp) |
---
### VerifyResult类型
```ts
type VerifyResult = {
valid: boolean;
fingerprint: string;
onChain: boolean;
chain?: "ethereum" | "base" | "bnb";
walletAddress?: string;
displayName?: string;
publicKeyConfirmed?: boolean;
signatureValid?: boolean;
verifiedAt?: string;
error?: string;
};
```
---
MIT © [Wax Seal](https://waxseal.id)