Skip to content

MaoLiii/solparser

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

solparser

Solparser is a Go library designed to parse Solana swap transactions. It supports aggregator's swap transaction parsing. Plus, a Solana RPC client is required to use this library.

Usage

package main

import (
    "context"
    "fmt"
    "github.com/Umiiii/solparser"
    "github.com/gagliardetto/solana-go"
    "github.com/gagliardetto/solana-go/rpc"
)

func main() {
    // Initialize RPC client
    client := rpc.New("https://api.mainnet-beta.solana.com")
    uint64One := uint64(1)

    // Create parser instance
    p := parser.NewSolParser(client)
    
    // Transaction signature to parse
    sig := solana.MustSignatureFromBase58("5zrZnZa1bNawuJofcdPUu7ZnHF13xTuyeixoVS8Ev8MmfVZtZ5kNmxaSaiB9URxp57WAwzSV9zuma9KD5eHcxyvU")
    
    // Get parsed transaction
    opts := &rpc.GetParsedTransactionOpts{
        MaxSupportedTransactionVersion: &uint64One,
        Commitment: rpc.CommitmentConfirmed,
    }
    
    parsedTx, err := client.GetParsedTransaction(context.Background(), sig, opts)
    if err != nil {
        panic(err)
    }
    
    // Parse swap events
    events, err := p.ParseSwapEvent(parsedTx)
    if err != nil {
        panic(err)
    }
    
    // Process swap events
    for _, event := range events {
        fmt.Printf("Swap Event:\n")
        fmt.Printf("  Pool: %s\n", event.PoolAddress)
        fmt.Printf("  Market: %s\n", consts.ProgramToString(event.MarketProgramId))
        fmt.Printf("  Input Token: %s Amount: %s\n", event.InToken.Code, event.InToken.Amount)
        fmt.Printf("  Output Token: %s Amount: %s\n", event.OutToken.Code, event.OutToken.Amount)
    }
}

Example output:

Swap Event:
  Pool: 4sB6mY3veRfRtszdVL4Lg8GHuz4NKwxZvxvhr3P22xBb
  Market: Raydium V4
  Input Token: G7BJzg55Afx6Tn6J9CJfA444jMf6QJbVjgQAevNTpump Amount: 10000000000
  Output Token: So11111111111111111111111111111111111111112 Amount: 160644272
Swap Event:
  Pool: 4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
  Market: Pump Fun
  Input Token: So11111111111111111111111111111111111111112 Amount: 159037830
  Output Token: Go1d8YwLymjETPqxj4ybDg6JuAMCX1cQQULErYtgpump Amount: 2755053211659

Supported DEXs

Raydium

  • V4 AMM (675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8)
  • CLMM (CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK)
  • CPMM (CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C)

Orca

  • Whirlpool (whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc)
  • Token Swap V1 (DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1)
  • Token Swap V2 (9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP)

Other DEXes

  • Pump.fun (6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P)
  • Meteora DLMM (LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo)
  • Phoenix (PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY)
  • Lifinity V2 (2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c)

Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contact

For any questions or support, please open an issue on the GitHub repository.

About

Parse solana swap transaction

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%