Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bifrost-technologies/solnet.pumpfun

C# SDK & Client for Pump.fun on Solana
https://github.com/bifrost-technologies/solnet.pumpfun

bot csharp pump-fun solana solnet trading

Last synced: about 2 months ago
JSON representation

C# SDK & Client for Pump.fun on Solana

Awesome Lists containing this project

README

        

# Solnet.Pumpfun
C# SDK & Client for Pump.fun on Solana

#### Dependencies - Use NET8 tag on nuget to find latest versions of solnet
- NET8.0
- Solnet.RPC
- Solnet.Wallet
- Solnet.Programs

How to use the library to perform a 10 second buy/sell
```
using Solnet.Programs;
using Solnet.Pumpfun;
using Solnet.Rpc;
using Solnet.Wallet;

Account _trader = Account.FromSecretKey("ENTER SECRET KEY HERE");
IRpcClient connection = ClientFactory.GetClient("RPC LINK HERE");
PumpfunClient pumpFun = new PumpfunClient(connection, _trader);

//Buy the token. Token Address - Sol Amount - Slippage Percent
await pumpFun.Buy("CA/MINT ADDRESS HERE", 0.001m, 10);

await Task.Delay(10000);

PublicKey associatedUser = AssociatedTokenAccountProgram.DeriveAssociatedTokenAccount(_trader, new PublicKey("CA/MINT ADDRESS HERE"));
var tokenbalance = await connection.GetTokenAccountBalanceAsync(associatedUser);

await Task.Delay(1000);

await pumpFun.Sell("CA/MINT ADDRESS HERE", tokenbalance.Result.Value.AmountDecimal);
```

Quickstart AI logic template
```
using Solnet.Programs;
using Solnet.Pumpfun;
using Solnet.Rpc;
using Solnet.Wallet;

Account _trader = Account.FromSecretKey("ENTER SECRET KEY HERE");
IRpcClient connection = ClientFactory.GetClient("RPC LINK HERE");
PumpfunClient pumpFun = new PumpfunClient(connection, _trader);

bool living = true;
while (living)
{

//THINK
//Add logic here to determine what you should buy next then execute the code below to have your bot trade the tokens
//if (foundGoodToken)
//{

//DO
try
{
//Swap the token. Token Address - Sol Amount
await PerformTenSecondTrade("TOKEN ADDRESS", 0.001m, pumpFun, _trader);

}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
//Freeze the loop in the example. you can remove this once you add logic to determine when to buy/sell
await Task.Delay(1000000000);
//}
}

static async Task PerformTenSecondTrade(string tokenAddress, decimal sol_amount, PumpfunClient pumpFun, Account _trader)
{
try
{
//Buy the token. Token Address - Sol Amount - Slippage Percent
await pumpFun.Buy(tokenAddress, 0.001m, 10);

await Task.Delay(10000);

PublicKey associatedUser = AssociatedTokenAccountProgram.DeriveAssociatedTokenAccount(_trader, new PublicKey(tokenAddress));
var tokenbalance = await pumpFun.RpcClient.GetTokenAccountBalanceAsync(associatedUser);

await Task.Delay(1000);

await pumpFun.Sell(tokenAddress, tokenbalance.Result.Value.AmountDecimal);

}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
```