メインコンテンツへスキップ

クイックアクセス

すぐにコードを見たい場合はこちらです。

GitHub

Rust Counter のテスト

GitHub

Pinocchio Counter のテスト

Guide

ローカル開発

ステップバイステップガイド

delegation と undelegation 用 instruction を呼び出す有効なトランザクションを組み立てます。 このプロジェクトの完全なテストは Typescript Test Script にあります。
1

SDK をインポートし Connection を初期化する

connection とアカウントをセットアップする
2

Base Layer で PDA を Delegate する

Base Layer 上で状態アカウントを委任する CPI hook をテストする

これらの公開バリデータは開発用として利用できます。委任命令には、 対象となる ER バリデータを必ず追加してください。

メインネット
  • アジア (as.magicblock.app): MAS1Dt9qreoRMQ14YQuhg8UTZMMzDdKhmkZMECCzk57
  • EU (eu.magicblock.app): MEUGGrYPxKk17hCr7wpT6s8dtNokZj5U2L57vjYMS8e
  • 米国 (us.magicblock.app): MUS3hc9TCw4cGC12vHNoYcCGzJG1txjgQLZWVoeNHNd
  • TEE (mainnet-tee.magicblock.app): MTEWGuqxUpYZGFJQcp8tLN7x5v9BSeoFHYWQQ3n3xzo
Devnet
  • アジア (devnet-as.magicblock.app): MAS1Dt9qreoRMQ14YQuhg8UTZMMzDdKhmkZMECCzk57
  • EU (devnet-eu.magicblock.app): MEUGGrYPxKk17hCr7wpT6s8dtNokZj5U2L57vjYMS8e
  • 米国 (devnet-us.magicblock.app): MUS3hc9TCw4cGC12vHNoYcCGzJG1txjgQLZWVoeNHNd
  • TEE (devnet-tee.magicblock.app): FnE6VJT5QNZdedZPnCoLsARgBwoE6DeJNjBs2H1gySXA
ローカルネット
  • ローカル ER (localhost:7799): mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev
3

ER で PDA を Commit する

ER 上で状態アカウントをコミットする CPI hook をテストする
4

ER で PDA を Undelegate する

ER 上で状態アカウントを委任解除する CPI hook をテストする

Counter 例

以下のソフトウェアパッケージが必要になる場合があります。ほかのバージョンでも互換性がある可能性があります。
ソフトウェアバージョンインストールガイド
Solana2.3.13Solana をインストール
Rust1.85.0Rust をインストール
Node24.10.0Node をインストール

コードスニペット

SDK をインポートして Connection を作成する

@magicblock-labs/ephemeral-rollups-sdk または @magicblock-labs/ephemeral-rollups-kit をインポートし、テストやトランザクション送信の前に connection を初期化します。
yarn add @magicblock-labs/ephemeral-rollups-kit@latest
これらの公開 RPC エンドポイントは現在無料で、開発用途に利用できます:
Magic Router Devnet: https://devnet-router.magicblock.app
Solana Devnet: https://api.devnet.solana.com
ER Devnet: https://devnet.magicblock.app
TEE Devnet: https://devnet-tee.magicblock.app/
詳細は こちら をご覧ください。
import {
  Instruction,
  getAddressEncoder,
  getProgramDerivedAddress,
  AccountRole,
  createKeyPairFromBytes,
  getAddressFromPublicKey,
  address,
  createTransactionMessage,
  appendTransactionMessageInstructions,
  pipe,
  setTransactionMessageFeePayer,
} from "@solana/kit";

import {
  Connection,
  DELEGATION_PROGRAM_ID,
  delegationRecordPdaFromDelegatedAccount,
  delegationMetadataPdaFromDelegatedAccount,
  delegateBufferPdaFromDelegatedAccountAndOwnerProgram,
  MAGIC_CONTEXT_ID,
  MAGIC_PROGRAM_ID,
} from "@magicblock-labs/ephemeral-rollups-kit";

// Set up a base and ephemeral connection (alternatively use router, see Magic Router)
const connection = await Connection.create(
  process.env.PROVIDER_ENDPOINT || "https://api.devnet.solana.com",
  process.env.WS_ENDPOINT || "wss://api.devnet.solana.com"
);
const ephemeralConnection = await Connection.create(
  process.env.EPHEMERAL_PROVIDER_ENDPOINT || "https://devnet-as.magicblock.app",
  process.env.EPHEMERAL_WS_ENDPOINT || "wss://devnet-as.magicblock.app"
);

// Prepare user
const userKeypair = await initializeSolSignerKeypair();
const userPubkey = await getAddressFromPublicKey(userKeypair.publicKey);

// Get PDA
const addressEncoder = getAddressEncoder();
const [counterPda, bump] = await getProgramDerivedAddress({
  programAddress: PROGRAM_ID,
  seeds: [Buffer.from("counter_account"), addressEncoder.encode(userPubkey)],
});
⬆️ Back to Top

Solana エクスプローラー

Solana 上のトランザクションとアカウントの情報を確認できます。

Solana エクスプローラー

公式 Solana エクスプローラー

Solscan

Solana ブロックチェーンを探索する

Solana RPC プロバイダー

既存の RPC プロバイダーを通じてトランザクションやリクエストを送信します。

Solana

Free Public Nodes

Helius

Free Shared Nodes

Triton

Dedicated High-Performance Nodes

Solana バリデータダッシュボード

Solana バリデータインフラのリアルタイム更新を確認できます。

Solana Beach

Get Validator Insights

Validators App

Discover Validator Metrics

サーバーステータス

Solana と MagicBlock のサーバーステータスを確認しましょう。

Solana Status

Subscribe to Solana Server Updates

MagicBlock Status

Subscribe to MagicBlock Server Status