@seams/wallet

中文文档
0.41.1发布于 2026/11/02Apache-2.0TypeScriptES Module构建来源已验证

为NEAR和evm家族钱包提供web和运行时TypeScript SDK

中文使用文档
文档目录12 节
  1. 安装
  2. 当前的API
  3. 申请会议和新业主批准
  4. 带上自己的谷歌身份验证
  5. 反应快速启动
  6. 签名和生命周期
  7. 钱包设置
  8. 接待边界和区域家庭
  9. 初次装载和登记
  10. 公共entrypoints
  11. 从源头发展
  12. 许可和支持

接缝钱包SDK

@seams/wallet 0.41.1 提供浏览器钱包生命周期,NEAR和evm家族 阈值签名、React组件和托管钱包运行时资产。

安装

pnpm add @seams/[email protected]

React和React DOM是可选的对等体 >=19.0.0,包括未来的主要版本。 SDK开发使用精确的 [email protected] 和 [email protected]. 应用程序锁定文件选择已安装的React版本。从中导入提供程序和UI @seams/wallet/react 和它的样式表 @seams/wallet/react/styles. 保留应用程序包、钱包源资产和 @seams/[email protected] 在匹配的释放上。钱包iframe协议 是 23.0.0. 应用程序和钱包主机必须使用相同的协议版本。

当前的API

公共API将调用分组在下面 auth, connection, config, events, registration,以及链命名空间。看到 浏览器的参考. 使用 auth.lock() 结束会话,同时保留有效的持久预签名。

自定义电子邮件解锁使用主机拥有的挑战:

const requested = await seams.auth.requestEmailCode({
  method: 'google',
  idToken,
  target: { kind: 'wallet', walletId },
});
if (!requested.ok) throw new Error(requested.error.message);
const result = await seams.auth.unlockWithEmailCode({
  challenge: requested.value,
  code,
});
if (!result.ok) throw new Error(result.error.message);

对于现有的本地电子邮件方法,请使用 { method: 'email', walletId, email }. 挑战支持 resend() 和 cancel(). 使用成功重发后返回的替换挑战。 SDK选择签名者并在内部完成待激活。

只有在用户选择该方法后才请求电子邮件代码。主机拥有的钱包 挑战和它的到期。应用程序接收类型化质询句柄。

申请会议和新业主批准

SDK 0.41.1接受来自显式信任的应用程序后端的切换。 谷歌和app-passkey登录可以使用相同的稳定应用用户ID。 使用 registration.registerOwnerWallet 使用NEAR-only密码登机和 near.prepareOwnerTransaction 重新批准每笔交易。 这些操作不创建可重用的签名授权。 React读连接将所有者操作句柄与可重用的签名者分开公开。 看到 应用程序会话指导.

带上自己的谷歌身份验证

SDK 0.41.1可以重用应用程序的b谷歌ID令牌来打开相关的钱包设置。 配置环境的谷歌客户端ID,并让所有者将他们的钱包关联一次。 然后在应用程序现有的谷歌登录后传递令牌:

const result = await seams.auth.authenticate({ method: 'google', walletId, idToken });
if (!result.ok) throw new Error(result.code);

保留令牌的应用程序在后端使用 prepareExternalAuth 以及浏览器绑定的切换。 呼叫 seams.auth.lock() 当应用程序注销或切换帐户时。 这些会话授予设置读取。签名、导出、恢复和安全更改保留其所有者身份验证要求。 看到 谷歌单点登录指南 对于交换路径、关联、到期和撤销。

反应快速启动

三个必需的值是钱包来源、网关/中继器URL和 管理注册可发布密钥。从您的项目中获取它们并允许 您的应用程序在该环境中的源。浏览器配置是公开的。

import {
  HostedSeamsAuthMenu,
  SeamsWebProvider,
  seamsTestnetConfig,
  type HostedAuthMenuOutcome,
} from '@seams/wallet/react';
import '@seams/wallet/react/styles';

const config = seamsTestnetConfig({
  walletOrigin: import.meta.env.VITE_WALLET_ORIGIN,
  relayerUrl: import.meta.env.VITE_RELAYER_URL,
  publishableKey: import.meta.env.VITE_SEAMS_PUBLISHABLE_KEY,
});

function handleOutcome(outcome: HostedAuthMenuOutcome): void {
  console.log('Wallet authentication:', outcome);
}

export function App() {
  return (
    <SeamsWebProvider config={config}>
      <HostedSeamsAuthMenu onOutcome={handleOutcome} />
    </SeamsWebProvider>
  );
}

seamsTestnetConfig 选择NEAR和Tempo测试网。使用 defineSeamsConfig 对于另一个链集。evm家族链记录需要数字 chainId. 一个可选的 projectEnvironmentId 交叉检查拒绝a的可发布密钥 不同的环境。

托管菜单拥有注册,登录,OTP提示,恢复代码备份, 还有用户的存在感。供应 externalAuthBroker 当您的应用程序获得 谷歌钱包主机的身份证明。保密证书和 从应用配置和日志中恢复材料。

签名和生命周期

useSeams() 公开身份验证操作、生命周期状态和当前 wallet. 注销时钱包为空。经过身份验证的钱包提供 near, evm, tempo 签名者受其身份约束。 wallet.near 在NEAR帐户准备好之前为空。检查注册是否未完成 分支和用途 registration.waitForNearAccount 签署NEAR之前。

const { unlock, lock, wallet } = useSeams();

解锁在随后的React渲染中更新钱包。使用经过身份验证的 在签名处理程序中渲染钱包。 wallet.walletId 识别钱包。

这个体系的中立者 SeamsWeb 下的客户端组操作 registration, auth, near, evm, tempo, recovery, devices, keys。签名可以 一次操作使用新授权; unlock 供应有限 可重复使用钱包会话。evm系列签名或导出呼叫需要 chainTarget 命名已配置的链。

keys.exportKey 打开钱包源查看器并返回 { kind: 'exported' }. 它不向应用程序返回私钥。 recovery.syncAccount 同步已知钱包的账户状态;托管菜单处理恢复 代码和新因素验证。

看到 编制示例 用于 注册、解锁、签名、链接设备、导出、恢复和主题化。

钱包设置

WalletSettingsPage 提供帐户,密钥导出,恢复代码, 认证方法、设备链接、链接设备和事务 偏好。已注销用户可查看托管身份验证菜单。

import {
  SeamsWebProvider,
  WalletSettingsPage,
  type SeamsConfigsInput,
} from '@seams/wallet/react';
import '@seams/wallet/react/styles';

export function WalletSettingsApp({ config }: { config: SeamsConfigsInput }) {
  return (
    <SeamsWebProvider config={config}>
      <WalletSettingsPage />
    </SeamsWebProvider>
  );
}

保持配置 /wallet-service 端点。裸服务HTML 资产需要部署的引导和配置,然后才能提供服务 完成设置应用程序。

接待边界和区域家庭

专用钱包原点服务 /wallet-service 和 /sdk/*,包括 工人、WASM和导出查看器。SDK iframe委托WebAuthn 该源的权限。在那里执行凭据创建和断言; 没有应用程序源凭据桥接。

区域托管部署在注册时为每个钱包分配一个home。 一个项目中的钱包可以有不同的家,而所有设备都是一个 钱包使用同一个家。旅行不会改变它。钱包的主人可以移动钱包 到另一个具有钱包区域设置的区域。自动区域重新定位 未来的能力。

对于亚太地区,注册和搬迁申请东南亚安置通过 apac-se。提示不保证城市或移动现有对象。运营商 必须验证实际的对象位置和数据库主。

遵循 升级指南 在更改应用程序、钱包资产或后端之前。不相容的开放 客户端在重试之前必须重新加载匹配的资产。

初次装载和登记

当钱包原点没有存储钱包时,主机回答连接读取 它的引导代码。它在操作需要时加载运行时。呼叫 seams.authMenu.prepare() 在登录时,打算提前下载登录代码。 越来越多 HostedSeamsAuthMenu 无需额外呼叫即可开始下载。

打开托管的注册视图准备它的钱包和密钥挑战。 authMenu.prepare() 只下载代码。一个直接 registerWallet() 电话开始 该调用中的注册设置。看到 编译的托管菜单示例.

注册可以在控制台目录中显示其完成之前进行签名。 网关重新尝试挂起的目录发布。在得到承认之前, 钱包可以从控制台列表中缺席,并且在区域移动时不可用。

公共entrypoints

  • @seams/wallet -浏览器客户端,配置构建器,公共结果和值。
  • @seams/wallet/react -提供程序、钩子、组件、事务审查和主题。
  • @seams/wallet/external-evm -浏览器EVM扩展连接器。
  • @seams/wallet/advanced -精确的身份生成器,RPC和编码助手。
  • @seams/wallet/threshold -会话策略助手、PRF盐和意图摘要。
  • @seams/wallet/runtime -明确的平台端口和自定义签名运行时。

使用文档化的包导出。代理通道的发行仍在计划中。 VoiceID审批原型是可选择的:

import { defineSeamsConfig } from '@seams/wallet';
import { voiceIdAuthMethod } from '@seams/voiceid';

const config = defineSeamsConfig({
  walletOrigin,
  relayerUrl,
  publishableKey,
  authMethods: [voiceIdAuthMethod()],
});

VoiceID是一个单独的可选包。钱包主机运营商必须部署其 钱包主机旁边的资产。描述符本身不下载实现 或模型。VoiceID支持注册,钱包会话解锁和审查NEAR 和Arc测试网签约。看到 @seams/voiceid 为安装。

从源头发展

从存储库根目录:

pnpm install
pnpm build
pnpm -C packages/wallet dev
pnpm test:wallet-browser
pnpm -C packages/wallet type-check

已经构建了所需的WASM和服务器构件,只需重新构建SDK 与 pnpm -C packages/wallet build:sdk。请参阅存储库README以获取完整的 本地栈和控制台Lite示例。

许可和支持

apache - 2.0。请看包装的 LICENSE.md 和 THIRD_PARTY_NOTICES.md.

版本与发布记录

@seams/wallet 共发布 82 个版本,首次发布于 2026/09/13;过去 12 个月发布了 82 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.41.1latest2026/11/021 天前
0.41.02026/11/011 天前
0.40.02026/11/012 天前
0.39.02026/11/012 天前
0.37.02026/11/012 天前
0.36.02026/10/312 天前

关于 @seams/wallet 的常见问题

@seams/wallet 是什么?

为NEAR和evm家族钱包提供web和运行时TypeScript SDK

如何安装 @seams/wallet?

在项目目录运行 npm install @seams/wallet,或使用 pnpm add / yarn add / bun add。

@seams/wallet 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@seams/wallet 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@seams/wallet 可以商用吗?

@seams/wallet 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@seams/wallet 还在维护吗?

最新版本 0.41.1 发布于 2026/11/02(1 天前);至今共发布 82 个版本,其中过去 12 个月发布了 82 个;首次发布于 2026/09/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。