solana本地开发

开启本地验证器在本地测试验证器比在开发网络(devnet)上进行测试更可靠,并且可以帮助你在开发网络上运行之前进行测试。你可以通过安装[solana工具套件]并运行以下命令来设置本地测试验证器:solana-test-validator使用本地测试验证器的好处包括:无RPC速

<!--StartFragment-->

开启本地验证器

在本地测试验证器比在开发网络(devnet)上进行测试更可靠,并且可以帮助你在开发网络上运行之前进行测试。

你可以通过安装 [solana工具套件] 并运行以下命令来设置本地测试验证器: <!--EndFragment-->

solana-test-validator

<!--StartFragment-->

使用本地测试验证器的好处包括:

  • 无RPC速率限制
  • 无空投限制
  • 直接在链上部署程序(--bpf-program ...
  • 从公共集群克隆账户,包括程序(--clone ...
  • 可配置的事务历史保留(--limit-ledger-size ...
  • 可配置的纪元长度(--slots-per-epoch ...
  • 跳转到任意槽位(--warp-slot ...

<!--EndFragment--> <!--StartFragment-->

连接到不同环境

当你进行Solana开发时,你需要连接到特定的RPC API端点。

<!--EndFragment-->

const connection = new Connection(clusterApiUrl("mainnet-beta"), "confirmed");

<!--StartFragment-->

最后,你还可以连接到私有集群,无论是本地的还是远程运行的,使用以下方式:

<!--EndFragment-->

const connection = new Connection("http://127.0.0.1:8899", "confirmed");

<!--StartFragment-->

订阅事件

Websockets提供了一种发布/订阅接口,你可以在其中监听特定的事件。与在固定时间间隔内对典型的HTTP端点进行轮询以获取频繁的更新不同,你可以仅在事件发生时才接收这些更新。

Solana的web3[连接open in new window] 在底层生成一个websocket端点,并在创建新的Connection实例时注册一个websocket客户端(请参阅 [此处open in new window]) 的源代码)。

Connection类提供了发布/订阅方法,它们都以on开头,类似于事件发射器。当您调用这些监听器方法时,它会在该Connection实例的websocket客户端中注册一个新的订阅。下面我们使用的示例发布/订阅方法是[onAccountChangeopen in new window]。 回调函数将通过参数提供更新的状态数据(例如,查看A[AccountChangeCallbackopen in new window] 作为示例)。 <!--EndFragment-->

// Establish new connect to devnet - websocket client connected to devnet will also be registered here
const connection = new Connection(clusterApiUrl("devnet"), "confirmed");

// Create a test wallet to listen to
const wallet = Keypair.generate();

// Register a callback to listen to the wallet (ws subscription)
connection.onAccountChange(
  wallet.publicKey(),
  (updatedAccountInfo, context) =>
    console.log("Updated account info: ", updatedAccountInfo),
  "confirmed"
);

<!--StartFragment-->

获取测试用的SOL

你在本地工作时,为了发送交易,你需要一些 SOL。在非主网环境中,你可以向你的地址空投 SOL,获取SOL。

<!--EndFragment-->

const airdropSignature = await connection.requestAirdrop(
  keypair.publicKey,
  LAMPORTS_PER_SOL
);

await connection.confirmTransaction(airdropSignature);

<!--StartFragment-->

使用主网 (Mainnet) 账户和程序

本地测试通常依赖于仅在主网上可用的程序和账户。Solana CLI 提供了以下两个功能:

*下载程序和账户 *将程序和账户加载到本地验证器中

如何从主网加载账户

可以将SRM代币的铸造(mint)账户下载到文件中: <!--EndFragment-->

solana account -u m --output json-compact --output-file SRM_token.json SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt

<!--StartFragment--> 然后,通过在启动验证器时传递该账户文件和目标地址(在本地集群上)你可以将其加载到本地网络: <!--EndFragment-->

solana-test-validator --account SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt SRM_token.json --reset

<!--StartFragment-->

如何从主网加载程序

同样地,我们可以下载Serum Dex v3程序: <!--EndFragment-->

solana program dump -u m 9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin serum_dex_v3.so

<!--StartFragment-->

然后,在启动验证器时,通过传递程序的文件和目标地址(在本地集群上)来将其加载到本地网络: <!--EndFragment-->

solana-test-validator --bpf-program 9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin serum_dex_v3.so --reset

作者:https://t.me/+P3Z7P_xQxbNlZWZl 来源:https://www.fabipingtai.com

  • 原创
  • 学分: 6
  • 分类: Solana
  • 标签:
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
加密女士
加密女士
无代码发币平台