Files
solana-streamer/README.md
T

100 lines
2.9 KiB
Markdown
Raw Normal View History

2024-12-31 16:51:58 +08:00
# PumpFun Rust SDK
A comprehensive Rust SDK for seamless interaction with the PumpFun Solana program. This SDK provides a robust set of tools and interfaces to integrate PumpFun functionality into your applications.
# Explanation
2025-04-02 14:03:56 +08:00
1. Add `create, buy, sell` for pump.fun.
2. Add `logs_subscribe` to subscribe the logs of the PumpFun program.
3. Add `yellowstone grpc` to subscribe the logs of the PumpFun program.
4. Add `jito` to send transaction with Jito.
5. Add `nextblock` to send transaction with nextblock.
6. Add `0slot` to send transaction with 0slot.
7. Submit a transaction using Jito, Nextblock, and 0slot simultaneously; the fastest one will succeed, while the others will fail.
2025-01-03 11:14:39 +08:00
## Usage
2025-04-02 14:25:30 +08:00
```shell
cd `your project root directory`
git clone https://github.com/MiracleAI-Labs/pumpfun-sdk
```
```toml
# add to your Cargo.toml
pumpfun-sdk = { path = "./pumpfun-sdk", version = "2.4.3" }
```
2025-01-03 11:14:39 +08:00
### logs subscription for token create and trade transaction
```rust
2025-04-02 14:18:52 +08:00
use std::sync::{Arc, OnceLock};
use pumpfun_sdk::grpc::YellowstoneGrpc;
2025-01-03 11:14:39 +08:00
2025-04-02 14:03:56 +08:00
// create grpc client
let grpc_url = "http://127.0.0.1:10000";
let client = YellowstoneGrpc::new(grpc_url);
2025-01-03 11:14:39 +08:00
// Define callback function
2025-04-02 14:03:56 +08:00
let callback = |event: PumpfunEvent| {
2025-01-03 11:14:39 +08:00
match event {
2025-04-02 14:03:56 +08:00
PumpfunEvent::NewToken(token_info) => {
2025-01-03 11:14:39 +08:00
println!("Received new token event: {:?}", token_info);
},
2025-04-02 14:03:56 +08:00
PumpfunEvent::NewDevTrade(trade_info) => {
println!("Received dev trade event: {:?}", trade_info);
},
PumpfunEvent::NewUserTrade(trade_info) => {
2025-01-03 11:14:39 +08:00
println!("Received new trade event: {:?}", trade_info);
},
2025-04-02 14:03:56 +08:00
PumpfunEvent::NewBotTrade(trade_info) => {
2025-01-03 17:06:19 +08:00
println!("Received new bot trade event: {:?}", trade_info);
}
2025-04-02 14:03:56 +08:00
PumpfunEvent::Error(err) => {
2025-01-03 11:14:39 +08:00
println!("Received error: {}", err);
}
}
};
2025-04-02 14:03:56 +08:00
let payer_keypair = Keypair::from_base58_string("your private key");
let client = GrpcClient::get_instance();
client.subscribe_pumpfun(callback, Some(payer_keypair.pubkey())).await?;
2025-01-03 11:14:39 +08:00
```
### pumpfun Create, Buy, Sell
```rust
2025-04-02 14:18:52 +08:00
use std::sync::{Arc, OnceLock};
use solana_sdk::{
signature::Keypair,
commitment_config::CommitmentConfig,
};
2025-04-02 14:25:30 +08:00
use pumpfun_sdk::PumpFun;
2025-04-02 14:18:52 +08:00
use pumpfun_sdk::common::{Cluster, PriorityFee};
2025-01-23 17:48:10 +08:00
2025-04-02 14:03:56 +08:00
let payer = Keypair::from_base58_string(&settings.dex.payer.clone());
let cluster = Cluster::new(
rpc_url.clone(),
jito_url.clone(),
nextblock_url.clone(),
nextblock_auth_token.clone(),
zeroslot_url.clone(),
zeroslot_auth_token.clone(),
priority_fee,
CommitmentConfig::processed(),
use_jito,
use_nextblock,
use_zeroslot,
);
2025-01-03 11:14:39 +08:00
2025-04-02 14:03:56 +08:00
// create pumpfun instance
let pumpfun = PumpFun::new(Arc::new(payer), &cluster).await;
2025-01-03 11:14:39 +08:00
// Mint keypair
2025-04-02 14:03:56 +08:00
let mint_pubkey: Keypair = Keypair::new();
2025-01-03 11:14:39 +08:00
2025-04-02 14:03:56 +08:00
// buy token with tip
pumpfun.buy_with_tip(mint_pubkey, 10000, None).await?;
2025-01-03 11:14:39 +08:00
2025-04-02 14:03:56 +08:00
// sell token by percent with tip
pumpfun.sell_by_percent_with_tip(mint_pubkey, 100, None).await?;
2025-01-03 11:14:39 +08:00
```