将 Phantom 连接到 Web App 改变了我对“登录”的看法

发布: (2026年4月28日 GMT+8 09:05)
3 分钟阅读
原文: Dev.to

Source: Dev.to

概览

#100DaysOfSolana 的第 4 天,我构建了一个小型 Vite 应用,用于连接浏览器钱包。该功能本身只有约 30 行代码,但它引发的思维方式转变却难以量化。

最小化 Web 应用

一个最小化的 Web 应用具备以下功能:

  • 使用 @wallet-standard/app 中的 getWallets() 检测已安装的钱包
  • 通过检查 wallet.chains 过滤出兼容 Solana 的钱包
  • 只需一次按钮点击即可提示 Phantom 进行连接
  • 显示已连接的地址和 devnet 余额
import { getWallets } from "@wallet-standard/app";

const { get } = getWallets();
const solanaWallets = get().filter(wallet =>
  wallet.chains.some(chain => chain.startsWith("solana:"))
);

无需 API 密钥。无需后端。无需会话管理。钱包自行处理所有这些。

信任模型对比

在 Web 2 中,“使用 Google 登录”更像是一种便利功能:你把身份交给 Google,Google 为应用颁发令牌。应用信任 Google,你也信任 Google。一切都通过 Google 流转。

而使用 Phantom 时,应用永远看不到你的私钥,也不与任何中心化的认证服务器通信。它向你的钱包扩展发送连接请求,钱包弹出提示让你批准。如果你批准,应用仅收到你的公共地址——仅此而已。之后所有需要你签名的操作,都通过同样的批准流程进行。

信任模型被完全颠倒:

  • 应用 对你进行身份验证。
  • 对自己进行身份验证,应用仅观察结果。

“使用 Phantom 登录”并不是 “Web 3 版的使用 Google 登录”。它更像是出示护照:应用看到的是你身份的证明,但它永远不持有护照本身。

展望

挑战的第 2 周将聚焦于编写交易并在链上转移代币。我期待看到整个签名流程的端到端实现——从用户点击按钮、Phantom 提示批准、到交易落地 devnet。

征求反馈

如果你正在跟随我的进度,请在下方分享你的钱包设置体验。浏览器钱包模型有没有让你感到意外的地方?

我的 #100DaysOfSolana 之旅的一部分。

0 浏览
Back to Blog

相关文章

阅读更多 »