mcpField
P
phantom-connect

phantom-connect

github.com/sendaifun開発130115 回インストール13 週間前に更新
リポジトリ

phantom-connect について

phantom-connectは、Phantom Connect SDKエコシステムの導入ガイドです。React、React Native、ブラウザーでSolanaウォレット対応アプリを構築する開発者向けに、ソーシャルログインや拡張機能ウォレットも扱います。

主な機能

  1. 01React、React Native、ブラウザー向けSDK
  2. 02Google、Apple、Phantom拡張機能プロバイダー
  3. 03ウォレット接続とトランザクション署名
  4. 04決済、トークンゲーティング、NFTミントの参考資料

活用シーン

  1. 01ReactアプリへのPhantomウォレット接続の追加
  2. 02Expoアプリでの埋め込みウォレット導入
  3. 03SOLまたはUSDCの決済フロー構築
  4. 04トークンゲートページやNFTミントページの作成

MCP 対応

READMEではAIによるドキュメント参照用のMCP Serverに触れていますが、具体的な機能は記載されていません。

インストール

コマンドをコピーしてターミナルで実行します。

$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 ウェブアプリ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 はシングルトンである必要があります — アプリごとにインスタンスを 1 つ作成し、複数作成しないでください
  7. AddressType は @phantom/browser-sdk からのみインポートしてください
  8. テストには devnet、本番環境には mainnet-beta を使用してください — 実際の資金を使って mainnet でテストしないでください
  9. 秘密鍵を公開しないでください — 署名はすべて Phantom が内部で処理します
  10. 埋め込みウォレットの利用限度額:アプリごと、ユーザーごとに 1 日あたり 1,000 USD
  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 をサポートしていません

リソース

コメント