Documentation Index
Fetch the complete documentation index at: https://docs.magicblock.gg/llms.txt
Use this file to discover all available pages before exploring further.
为什么使用本地环境?
在测试 Solana 程序中的 delegation 和实时行为时,快速反馈循环 至关重要。
运行 本地 Ephemeral Rollup Validator 可以让你:
- 在没有网络延迟或速率限制的情况下快速测试 delegation 和行为。
- 在本地模拟 Solana runtime 交易。
- 根据自身需求自定义验证器设置。
快速开始:本地 Ephemeral Validator
查看适用于 Anchor 和 Native Rust 的 delegation 与测试脚本:
Native Rust
与 Native Rust 程序集成
本地设置选项
你可以通过三种方式在本地运行 Ephemeral Rollups:
- 使用
mb-test-validator 作为基础层并搭配本地 ephemeral-validator 的完整本地栈。
- 使用本地 Surfpool 作为基础层替代方案,同时仍在本地运行 rollup。
- 让本地
ephemeral-validator 直接连接到如 Devnet 这样的公共基础层。
如果你希望所有组件都运行在自己的机器上,就选择完整本地方案。若你想保留 Surfpool 工作流,同时对本地 Ephemeral Rollup 进行测试,就选择 Surfpool。若你想在不运行本地 Solana validator 的情况下使用本地 rollup 进程,就选择 Devnet 方案。
重要:使用正确的验证器身份升级程序
使用本地 ER 验证器时,应将其连接到账户发生委托的那个基础层。如果你将 PDA 委托给某个特定的 ER 验证器身份,请更新程序中的 delegation 配置,以确保 commit 和 undelegation 能在基础层上正确完成。
这些公共验证器可用于开发环境。请确保在你的委托指令中添加对应的
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):
MTEWGuqxUpYZGFJQcp8tLN7x5v9BSeoFHYWQQ3n3xzo
本地网络- 本地 ER (localhost:7799):
mAGicPQYBMvcYveUZA5F5UNNwyHvfYh5xkLS2Fr1mev
安装 Ephemeral Validator CLI
npm install -g @magicblock-labs/ephemeral-validator@latest
启动本地 Solana 基础层
mb-test-validator 会启动一个本地 Solana validator,可作为完整本地环境的基础层。mb-test-validator --reset
该设置使用 http://localhost:8899 作为 RPC,ws://localhost:8900 作为 WebSocket 连接地址。在 localhost 上部署或升级程序
cargo build-sbf
solana config set --url localhost
solana program deploy YOUR_PROGRAM_PATH
anchor build && anchor deploy \
--provider.cluster localnet
启动本地 ephemeral validator
将本地 Ephemeral Rollup 连接到本地 Solana validator:ephemeral-validator --remotes "http://localhost:8899" --remotes "ws://localhost:8900" -l "7799" --lifecycle ephemeral
针对本地 rollup 运行测试
本地 rollup 的 RPC 地址为 http://localhost:7799,WebSocket 地址为 ws://localhost:7800。EPHEMERAL_PROVIDER_ENDPOINT=http://localhost:7799 \
EPHEMERAL_WS_ENDPOINT=ws://localhost:7800 \
PROVIDER_ENDPOINT=http://localhost:8899 \
WS_ENDPOINT=ws://localhost:8900 \
yarn test
EPHEMERAL_PROVIDER_ENDPOINT="http://localhost:7799" \
EPHEMERAL_WS_ENDPOINT="ws://localhost:7800" \
anchor test \
--provider.cluster localnet \
--skip-local-validator \
--skip-build \
--skip-deploy
安装 Surfpool
curl -sL https://run.surfpool.run/ | bash
安装 Ephemeral Validator CLI
npm install -g @magicblock-labs/ephemeral-validator@latest
启动 Surfpool
这个示例会保持 Surfpool 在本地运行,同时将 Solana Devnet 作为上游基础层:surfpool start --rpc-url https://api.devnet.solana.com
Surfpool 会暴露本地 RPC 和 WebSocket 端点,供 ephemeral validator 连接。 启动 ephemeral validator
将 validator 指向 Surfpool 的本地 RPC 和 WebSocket 端点:ephemeral-validator --remotes "http://localhost:8899" --remotes "ws://localhost:8900" -l "7799" --lifecycle ephemeral
向 rollup 发送测试交易
solana transfer <your address> 0 -u "http://localhost:7799"
在 Devnet 上部署或升级程序
为程序加入 MagicBlock delegation,并将其部署到 Devnet:cargo build-sbf
solana config set --url devnet
solana program deploy YOUR_PROGRAM_PATH
anchor build && anchor deploy \
--provider.cluster devnet
安装并运行本地 ephemeral validator
npm install -g @magicblock-labs/ephemeral-validator@latest
RUST_LOG=info ephemeral-validator \
--lifecycle ephemeral \
--remote-url "https://rpc.magicblock.app/devnet" \
--rpc-port 7799
针对本地 rollup 运行测试
EPHEMERAL_PROVIDER_ENDPOINT=http://localhost:7799 \
EPHEMERAL_WS_ENDPOINT=ws://localhost:7800 \
yarn test
EPHEMERAL_PROVIDER_ENDPOINT="http://localhost:7799" \
EPHEMERAL_WS_ENDPOINT="ws://localhost:7800" \
anchor test \
--provider.cluster devnet \
--skip-local-validator \
--skip-build \
--skip-deploy
在本地运行 VRF Oracle
如果你还需要端到端测试 VRF,可以让本地 vrf-oracle 对接本地测试队列运行。
安装最新的 Ephemeral Validator CLI
npm install -g @magicblock-labs/ephemeral-validator@latest
启动本地 Solana validator
mb-test-validator --reset
启动 ephemeral validator
ephemeral-validator --remote-url "http://localhost:8899" --rpc-port 7799 --lifecycle ephemeral
启动本地 VRF 预言机
这个预言机会把请求加入本地测试队列:VRF_ORACLE_SKIP_PREFLIGHT="true" RPC_URL="http://localhost:8899" WEBSOCKET_URL="ws://localhost:8999" RUST_LOG=info vrf-oracle
如果你的本地 validator 暴露了不同的 WebSocket 端口,请相应更新 WEBSOCKET_URL。