Home

Awesome

Solnet.Pumpfun

C# SDK & Client for Pump.fun on Solana

Dependencies - Use NET8 tag on nuget to find latest versions of solnet

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());
    }
}