8 个版本
0.2.1 | 2024年6月21日 |
---|---|
0.2.0 | 2024年6月4日 |
0.1.5 | 2024年5月29日 |
#52 in #cryptocurrency
86 个月下载量
170KB
3K SLoC
Helius SDK
一个异步的 Helius Rust SDK,用于构建 Solana 的未来
文档
最新文档可以在 docs.rs 这里 找到
贡献
想要为 Helius Rust SDK 做贡献?在提交 pull request 之前,请阅读以下 贡献指南!
安装
要在项目中使用 Helius Rust SDK,请通过 cargo
将其添加为依赖项。打开您的项目 Cargo.toml
并在以下位置添加以下行:
helius = "x.y.z"
其中 x.y.z
是您希望使用的版本。或者,使用 cargo add helius
直接通过命令行添加依赖项。这将自动查找与您的项目兼容的最新版本并将其添加到您的 Cargo.toml
。
请记住定期运行 cargo update
以获取 SDK 的最新版本。
用法
Helius
SDK 提供了一个可配置 API 密钥和给定 Solana 集群的 Helius
实例。开发人员可以在 Helius 开发者仪表板 上生成新的 API 密钥。此实例充当 SDK 交互的主入口点,通过提供访问不同 Solana 和 RPC 客户端功能的方法。以下代码是使用 SDK 获取 Mad Lad #8420 信息的示例
use helius::error::Result;
use helius::types::{Cluster, DisplayOptions, GetAssetRequest, GetAssetResponseForAsset};
#[tokio::main]
async fn main() -> Result<()> {
let api_key: &str = "YOUR_API_KEY";
let cluster: Cluster = Cluster::MainnetBeta;
let helius: Helius = Helius::new(api_key, cluster).unwrap();
let request: GetAssetRequest = GetAssetRequest {
id: "F9Lw3ki3hJ7PF9HQXsBzoY8GyE6sPoEZZdXJBsTTD2rk".to_string(),
display_options: None,
};
let response: Result<Option<GetAssetResponseForAsset>> = helius.rpc().get_asset(request).await;
match response {
Ok(Some(asset)) => {
println!("Asset: {:?}", asset);
},
Ok(None) => println!("No asset found."),
Err(e) => println!("Error retrieving asset: {:?}", e),
}
Ok(())
}
HeliusFactory
此SDK还配备了用于创建Helius
实例的工厂HeliusFactory
。这个工厂允许集中配置和创建Helius
客户端,以便同时跨多个集群工作。使用工厂简化了客户端代码,并通过确保所有Helius
客户端配置一致来提高可维护性。它具有以下功能:
- 用于创建一个能够生成
Helius
客户端的新HeliusFactory
的new
方法。请注意,此方法不会创建reqwest
客户端 - 用于为使用
new
方法创建的给定HeliusFactory
提供其自己的reqwest
客户端的with_client
方法 - 用于以线程安全的方式创建多个
Helius
客户端的create
方法
嵌入式Solana客户端
Helius
客户端有一个嵌入的Solana客户端,可以通过helius.connection().request_name()
访问,其中request_name()
是一个给定的RPC方法。所有Solana RPC HTTP方法的完整列表可以在这里找到。
请注意,此Solana客户端默认为同步。可以使用new_with_async_solana
方法代替new
方法来创建异步客户端。异步客户端可以通过helius.async_connection().some_async_method().await?
访问,其中some_async_method()
是给定的异步RPC方法。
增强型WebSockets
还可以使用new_with_ws()
方法代替new
方法来创建Helius
客户端。这将创建一个WebSocket客户端,并增加对Geyser增强WebSocket方法 transactionSubscribe
和accountSubscribe
的支持
示例
有关如何使用SDK的更多示例可以在examples
目录中找到。
错误处理
常见错误代码
在使用Helius Rust SDK时,您可能会遇到几个错误代码。下面是一个表格,详细介绍了其中一些常见错误代码以及一些额外的信息,以帮助您进行故障排除。
错误代码 | 错误信息 | 更多信息 |
---|---|---|
401 | 未授权 | 当提供无效的API密钥或访问受限时发生此情况 |
429 | 请求过多 | 这表明用户在给定时间框架内超过了请求限制或信用不足 |
5XX | 内部服务器错误 | 这是服务器端问题的通用错误消息。请联系Helius支持以获得帮助 |
如果您遇到这些错误中的任何一种
结果类型别名
SDK 还有一个方便的类型别名,用于 Result
,其中 Result<(某种类型), HeliusError>
并简化为 Result<(某种类型)>
方法
我们的 SDK 设计用于在 Solana 上构建时提供无缝的开发者体验。我们将核心功能分为多个部分
DAS API
get_asset
- 根据其ID获取资产get_asset_batch
- 根据其ID获取多个资产get_asset_proof
- 根据其ID获取压缩资产的默克尔证明get_asset_proof_batch
- 根据其ID获取多个资产证明get_assets_by_owner
- 获取特定地址拥有的资产列表get_assets_by_authority
- 获取特定权威机构的资产列表get_assets_by_creator
- 获取特定创建者的资产列表get_assets_by_group
- 根据组键和值获取资产列表search_assets
- 根据传入的定制搜索标准获取资产get_signatures_for_asset
- 获取特定资产的交易签名get_token_accounts
- 获取特定铸币或所有者的所有代币账户信息get_nft_edition
- 获取与特定主NFT关联的所有NFT版本get_rwa_asset
- 根据其铸币地址获取真实世界资产(RWA)
铸币API
mint_compressed_nft
- 铸造压缩NFT(cNFT)的最简单方式
增强事务API
parse_transactions
- 解析给定事务ID数组的交易parsed_transaction_history
- 获取特定地址的解析交易历史
Webhooks
append_addresses_to_webhook
- 将一组地址追加到指定的Webhookcreate_webhook
- 根据账户地址创建Webhookdelete_webhook
- 通过编程方式删除给定的Helius Webhookedit_webhook
- 通过编程方式编辑Helius Webhookget_all_webhooks
- 通过编程方式检索所有Helius Webhookget_webhook_by_id
- 根据Webhook ID获取Webhook配置remove_addresses_from_webhook
- 通过ID从现有的Webhook中删除地址列表
智能交易
create_smart_transaction
- 根据提供的配置创建优化交易get_compute_units
- 模拟交易以获取消耗的总计算单元数poll_transaction_confirmation
- 以5秒间隔检查交易是否在15秒超时内被确认send_smart_transaction
- 构建、发送优化交易,并处理其确认状态
Jito智能交易和辅助方法
add_tip_instruction
- 向提供的指令中添加小费指令create_smart_transaction_with_tip
- 创建带有Jito小费的智能交易get_bundle_statuses
- 获取Jito捆绑包的状态send_jito_bundle
- 向Jito区块链引擎发送事务捆绑包send_smart_transaction_with_tip
- 将智能交易作为带小费的Jito捆绑包发送
辅助方法
get_priority_fee_estimate
- 获取使交易更快处理所需的优先级费用的估算deserialize_str_to_number
- 将String
反序列化为Number
is_valid_solana_address
- 返回给定的字符串切片是否为有效的 Solana 地址make_keypairs
- 生成指定数量的密钥对
依赖项
~76MB
~1.5M SLoC