3 个不稳定版本
0.2.0 | 2023 年 12 月 11 日 |
---|---|
0.1.1 | 2023 年 5 月 10 日 |
0.1.0 | 2023 年 5 月 2 日 |
#76 in #details
55KB
1.5K SLoC
使用 Rust 编写的非官方 Helius SDK
有关 Helius 功能的更多详细信息,请参阅 官方 Typescript SDK
本 README 主要介绍此实现中可用的功能
免责声明
我尚未准备好承诺不进行破坏性更改,因此目前将发布 0.x.x
版本
入门
安装和使用
cargo add helius-sdk
use helius_sdk::*;
fn main() {
let client = Helius::new(env::var("API_KEY").unwrap(), Cluster::MainnetBeta);
}
Other
枚举变体
此 crate 中的大多数枚举都有一个 Other(String)
选项,如果 helius API 中已添加但尚未包含在此 crate 中的新变体。当使用这些变体时,请注意,如果您有关于接收此类响应的逻辑,则升级到新版本可能会破坏您的代码。因为它们将在枚举中具有适当的唯一值进行反序列化。
网络钩子
创建网络钩子
let hook = client.create_webhook(&CreateWebhookRequest {
data: WebhookData {
webhook_url: "insert url here".to_string(),
transaction_types: vec![TransactionType::NftBid, TransactionType::NftBidCancelled],
account_addresses: vec!["M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K".to_string()],
webhook_type: Some(WebhookType::Discord),
auth_header: None,
txn_status: None,
encoding: None
},
});
获取所有网络钩子
检索当前用户帐户的所有网络钩子
let hooks = client.get_all_webhooks();
通过 ID 获取网络钩子
let hook = client.get_webhook_by_id("insert webhook id here"));
编辑网络钩子
let mut hook = client.get_webhook_by_id(hook.webhook_id.as_str()).unwrap();
hook.webhook_data.webhook_type = WebhookType::Discord.into();
let ehook = client.edit_webhook(EditWebhookRequest{
webhook_id: hook.webhook_id,
data: hook.webhook_data,
});
删除网络钩子
client.delete_webhook("insert webhook id here");
创建集合网络钩子
一个便捷方法,实际上不是 Helius REST 接口的一部分。
let res = client.create_collection_webhook(&CreateCollectionWebhookRequest {
data: WebhookData {
webhook_url: "insert url here".to_string(),
transaction_types: vec![TransactionType::NftSale],
account_addresses: vec![],
webhook_type: Some(WebhookType::Discord),
auth_header: None,
txn_status: None,
encoding: None
},
collection_query: CollectionIdentifier::FirstVerifiedCreators(vec!["GVkb5GuwGKydA4xXLT9PNpx63h7bhFNrDLQSxi6j5NuF".to_string()]),
});
增强的交易 API-
解析交易
let res = client.parse_transaction(
&ParseTransactionsRequest{
transactions: vec!["insert txn id here".to_string()]
}
);
NFT API
获取集合的所有代币
let res = client.get_mintlist(MintlistRequest {
query: CollectionIdentifier::FirstVerifiedCreators(vec!["GVkb5GuwGKydA4xXLT9PNpx63h7bhFNrDLQSxi6j5NuF".into()]),
options: HeliusOptions {limit: 1000.into(), pagination_token: None}.into()
});
代币元数据 API
获取代币元数据
let res = client.get_token_metadata(&TokenMetadataRequest{
mint_accounts: vec!["insert token mint address"],
include_off_chain: true,
disable_cache: false
});
RPC 抽象
常见 RPC 操作的辅助方法
获取 Solana TPS
client.rpc.get_tps();
请求空投
let key = Pubkey::new_unique();
client.rpc.airdrop(&key, 10 * LAMPORTS_PER_SOL).expect();
访问 Solana 连接
用户还可以访问底层的 solana_sdk rpc 客户端以执行其他标准 rpc 调用。
let conn = client.rpc.connection();
let inflation = conn.get_inflation_rate();
待办事项
- 测试/预测试端点?
依赖项
~56–76MB
~1.5M SLoC