跳转到主要内容

快速入口

如果你想直接进入代码:

GitHub

Rust Counter 的测试

GitHub

Pinocchio Counter 的测试

Guide

本地开发

分步指南

构建能够调用程序中 delegation 和 undelegation instruction 的有效交易。 该项目的完整测试可以在 Typescript 测试脚本 中找到。
1

导入 SDK 并初始化 Connection

设置 connection 和账户
2

在 Base Layer 上 Delegate PDA

测试在 Base Layer 上委托状态账户的 CPI hook

这些公共验证器可用于开发环境。请确保在你的委托指令中添加对应的 ER 验证器:

主网
  • 亚洲 (as.magicblock.app): MAS1Dt9qreoRMQ14YQuhg8UTZMMzDdKhmkZMECCzk57
  • 欧盟 (eu.magicblock.app): MEUGGrYPxKk17hCr7wpT6s8dtNokZj5U2L57vjYMS8e
  • 美国 (us.magicblock.app): MUS3hc9TCw4cGC12vHNoYcCGzJG1txjgQLZWVoeNHNd
  • TEE (mainnet-tee.magicblock.app): MTEWGuqxUpYZGFJQcp8tLN7x5v9BSeoFHYWQQ3n3xzo
开发网
  • 亚洲 (devnet-as.magicblock.app): MAS1Dt9qreoRMQ14YQuhg8UTZMMzDdKhmkZMECCzk57
  • 欧盟 (devnet-eu.magicblock.app): MEUGGrYPxKk17hCr7wpT6s8dtNokZj5U2L57vjYMS8e
  • 美国 (devnet-us.magicblock.app): MUS3hc9TCw4cGC12vHNoYcCGzJG1txjgQLZWVoeNHNd
  • TEE (devnet-tee.magicblock.app): FnE6VJT5QNZdedZPnCoLsARgBwoE6DeJNjBs2H1gySXA
本地网络
  • 本地 ER (localhost:7799): mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev
3

在 ER 上 Commit PDA

测试在 ER 上提交状态账户的 CPI hook
4

在 ER 上 Undelegate PDA

测试在 ER 上取消委托状态账户的 CPI hook

Counter 示例

你可能需要以下软件包,其他版本也可能兼容:
软件版本安装指南
Solana2.3.13安装 Solana
Rust1.85.0安装 Rust
Node24.10.0安装 Node

代码片段

导入 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