Solana Staking Lootbox UI(Solana NFT ステーキング&ルートボックス フロントエンド)

Web

概要

Solana 上で動作する NFT コレクションのフロントエンド DApp。ユーザーは NFT をミントし、それをステーキングして報酬トークン $PINK を獲得、獲得した $PINK を使ってランダムな Lootbox(報酬箱)を開き、Pink Floyd の楽曲コレクション等の特典と交換できます。フロントエンドは TypeScript で実装され、別レポジトリの Staking & Lootbox プログラム(スマートコントラクト)と通信してステーキングや報酬の処理を行います。NodeJS v16 以上を前提にローカルでの開発・動作確認が可能です(約300字)。

GitHub

リポジトリの統計情報

  • スター数: 16
  • フォーク数: 0
  • ウォッチャー数: 16
  • コミット数: 30
  • ファイル数: 18
  • メインの言語: TypeScript

主な特徴

  • NFT のミント、ステーキング、報酬請求までの一連の UX を提供
  • 獲得した報酬 ($PINK) を Lootbox と交換しランダム報酬を付与
  • フロントエンドは TypeScript ベースで静的型付けにより保守性を確保
  • 別レポジトリのスマートコントラクト(Staking & Lootbox Program)と連携

技術的なポイント

本リポジトリは Solana のオンチェーンプログラム(Staking & Lootbox)と対話するフロントエンド実装に注力しています。一般的な実装要素として、ウォレット接続(Phantom 等のブラウザウォレット)、トランザクション生成・送信、トークン(SPL)や NFT(Metaplex 準拠)の取り扱いが含まれます。UI 側は TypeScript で型安全を担保しており、Babel や ESLint 設定ファイルが含まれていることからビルドとコード品質の管理が行われています。環境変数用の .env.sample があり、RPC エンドポイントやプログラム ID、コレクションのメタデータ URL 等を外部設定できる設計です。

フロントエンドはバックエンドのプログラム IDL(もしくは API エンドポイント)を参照し、ミントやステーキング時に必要なアカウントや PDA の計算、署名付きトランザクションを作成します。ルートボックス(Lootbox)はランダム性を伴う UX のため、オンチェーンの乱数ソースやオフチェーンの引当ロジックに依存しますが、UI はその結果表示と報酬交換フロー($PINK 消費→報酬割当→NFT/楽曲付与)を扱います。開発上の注意点としては、ローカル・テストネットでの動作検証、ウォレットの権限管理、トランザクション失敗時のリトライとユーザー通知、そしてメタデータ取得(IPFS 等)に起因する遅延対策が挙げられます。README に NodeJS v16 の要件があるため、依存パッケージの互換性にも留意する必要があります。(約700字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .babelrc: file
  • .editorconfig: file
  • .env.sample: file
  • .eslintignore: file
  • .eslintrc.json: file

…他 13 ファイル

(補足).env.sample をコピーして環境変数を設定し、パッケージインストール(npm または yarn)→ 開発サーバ起動、という標準的なワークフローが想定されます。public ディレクトリにステーキング動作を示すデモ画像(stake-demo.png)が含まれており、UI のビジュアルを確認できます。

まとめ

Solana の NFT ステーキングと報酬交換を分かりやすく扱う TypeScript ベースのフロントエンド実装です。(50字)

リポジトリ情報:

READMEの抜粋:

Solana DApp - NFTs, Staking and Lootbox

Mint NFT, Stake it and win $PINK as Reward. Change reward token for a random Lootbox.
A Pink Floyd NFT collection. Win $PINK and change it for Pink Floyd’s SONGs collection.

Stake NFT Demo

Use at least NodeJS v16

Create NFT Collection With C…