使用 @mysten/seal 构建去中心化加密:开发者教程
隐私正在成为公共基础设施。在 2025 年,开发者需要让加密变得如存储数据一样简单的工具。Mysten Labs 的 Seal 正好提供了这样的解决方案——具有链上访问控制的去中心化密钥管理。本教程将教您如何使用基于身份的加密、门限安全和可编程访问策略构建安全的 Web3 应用程序。
简介:为什么 Seal 对 Web3 很重要
传统的云应用程序依赖于中心化的密钥管理系统,其中单一提供商控制对加密数据的访问。虽然方便,但这创造了危险的单点故障。如果提供商被攻击、离线或决定限制访问,您的数据将变得无法访问或易受攻击。
Seal 完全改变了这种模式。由 Mysten Labs 为 Sui 区块链构建,Seal 是一个去中心化密钥管理(DSM)服务,支持:
- 基于身份的加密,内容在离开您的环境之前就受到保护
- 门限加密,将密钥访问分布在多个独立节点上
- 链上访问控制,具有时间锁、代币门控和自定义授权逻辑
- 存储无关设计,可与 Walrus、IPFS 或任何存储解决方案配合使用
无论您是在构建安全消息应用程序、门控内容平台还是时间锁定资产转移,Seal 都提供了您需要的加密原语和访问控制基础设施。
开始使用
前提条件
在深入学习之前,确保您具有:
- 安装了 Node.js 18+
- 对 TypeScript/JavaScript 的基本了解
- 用于测试的 Sui 钱包(如 Sui Wallet)
- 对区块链概念的理解
安装
通过 npm 安装 Seal SDK:
npm install @mysten/seal
您还需要 Sui SDK 进行区块链交互:
npm install @mysten/sui
项目设置
创建一个新项目并初始化它:
mkdir seal-tutorial
cd seal-tutorial
npm init -y
npm install @mysten/seal @mysten/sui typescript @types/node
创建一个简单的 TypeScript 配置:
// tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
}
}
核心概念:Seal 的工作原理
在编写代码之前,让我们了解 Seal 的架构:
1. 基于身 份的加密 (IBE)
与传统的加密方式不同(您加密到公钥),IBE 让您加密到一个身份(如电子邮件地址或 Sui 地址)。接收者只有在能够证明他们控制该身份时才能解密。
2. 门限加密
Seal 使用 t-of-n 门限方案,而不是信任单个密钥服务器。您可以配置 3-of-5 密钥服务器,这意味着任何 3 个服务器可以合作提供解密密钥,但 2 个或更少的服务器不能。
3. 链上访问控制
访问策略由 Sui 智能合约强制执行。在密钥服务器提供解密密钥之前,它会验证请求者是否满足链上策略要求(代币所有权、时间约束等)。
4. 密钥服务器网络
分布式密钥服务器验证访问策略并生成解密密钥。这些服务器由不同的方运营,以确保没有单一控制点。