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
```