mcpField
P
phantom-connect

phantom-connect

github.com/sendaifun开发130115 次安装13 周前更新
代码仓库

关于 phantom-connect

phantom-connect 是 Phantom Connect SDK 生态的集成指南,面向构建 Solana 钱包连接应用的开发者,涵盖 React、React Native 和浏览器 SDK,以及社交登录和扩展钱包接入。

主要功能

  1. 01支持 React、React Native 和浏览器 SDK
  2. 02接入 Google、Apple 或 Phantom 扩展
  3. 03连接钱包并签署、发送交易
  4. 04提供支付、代币门控和 NFT 铸造参考

适用场景

  1. 01为 React 应用加入 Phantom 钱包连接
  2. 02在 Expo 应用中接入嵌入式钱包
  3. 03实现 SOL 或 USDC 支付流程
  4. 04构建代币门控页面或 NFT 铸造页

MCP 相关

README 提及 MCP Server 可用于 AI 文档访问,但未说明具体操作方式。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sendaifun/skills --skill phantom-connect

安装后在 Claude Code 中输入/phantom-connect确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
browser-sdk.md
nft-minting.md
payments.md
react-native-sdk.md
react-sdk.md
token-gating.md
transactions.md

详细介绍

Phantom Connect SDK

使用 Phantom Connect SDK 生态系统构建连接钱包的 Solana 应用。

SDK 选择

平台SDK包
React Web 应用React SDK@phantom/react-sdk
React Native / ExpoReact Native SDK@phantom/react-native-sdk
Vanilla JS / Vue / AngularBrowser SDK@phantom/browser-sdk

前提条件

  1. Phantom Portal 账户 — 在 phantom.com/portal 注册
  2. App ID — 在 Portal → App → Set Up 中获取
  3. 允许列表中的 URL — 在 Portal 中添加域名和重定向 URL

身份验证提供方

提供方说明是否需要 appId
"injected"Phantom 浏览器扩展否
"google"Google OAuth(嵌入式钱包)是
"apple"Apple ID(嵌入式钱包)是

重要规则

  1. 始终使用 signAndSendTransaction — 嵌入式钱包不支持 signTransaction 和 signAllTransactions
  2. 始终使用 @solana/web3.js 中的 LAMPORTS_PER_SOL 进行金额转换 — 切勿将 1000000000 硬编码
  3. 将所有异步 SDK 调用放在 try-catch 中 — 用户随时可以拒绝提示
  4. 签名之前检查 isConnected — 在执行任何操作之前确认钱包已连接
  5. React Native:react-native-get-random-values 必须是第一个导入项 — 放在所有其他导入项之前
  6. BrowserSDK 必须是单例 — 每个应用创建一个实例,切勿创建多个实例
  7. 仅从 @phantom/browser-sdk 导入 AddressType
  8. 测试时使用 devnet,生产环境使用 mainnet-beta — 切勿使用真实资金在 mainnet 上测试
  9. 切勿泄露私钥 — 所有签名均由 Phantom 在内部处理
  10. 嵌入式钱包消费限额:每个应用、每位用户每天 1,000 美元
  11. 社交登录会话从上次身份验证事件起保留 7 天 — 请妥善处理会话过期

快速开始

React SDK
import { PhantomProvider, useModal, usePhantom, darkTheme } from "@phantom/react-sdk";
import { AddressType } from "@phantom/browser-sdk";

function App() {
  return (
    <PhantomProvider
      config={{
        providers: ["google", "apple", "injected"],
        appId: "your-app-id",
        addressTypes: [AddressType.solana],
        authOptions: { redirectUrl: "https://yourapp.com/callback" },
      }}
      theme={darkTheme}
    >
      <YourApp />
    </PhantomProvider>
  );
}
React Native SDK
// CRITICAL: Must be first import
import "react-native-get-random-values";
import { PhantomProvider, AddressType, darkTheme } from "@phantom/react-native-sdk";

// Requires app.json: { "expo": { "scheme": "myapp", "plugins": [...] } }
Browser SDK
import { BrowserSDK, AddressType } from "@phantom/browser-sdk";

const sdk = new BrowserSDK({
  providers: ["google", "apple", "injected"],
  appId: "your-app-id",
  addressTypes: [AddressType.solana],
  autoConnect: true,
});

参考文档

如需了解详细实现模式,请阅读以下文件:

常见问题

问题解决方案
"appId required"使用 google/apple 提供方时,请添加来自 Phantom Portal 的 appId
重定向不起作用在 Phantom Portal 中将 redirectUrl 添加到允许列表
React Native 崩溃将 react-native-get-random-values 作为第一个导入项
未检测到扩展使用 waitForPhantomExtension() 并设置超时时间
signTransaction 错误改用 signAndSendTransaction — 嵌入式钱包不支持 signTransaction

资源

评论

支持 Markdown