Files
2026-04-22 11:10:46 +08:00

61 lines
1.5 KiB
Go

package main
import (
"context"
"fmt"
"github.com/gagliardetto/solana-go"
"github.com/gagliardetto/solana-go/rpc"
solana_parser "github.com/thloyi/pump-parser"
)
var ()
func main() {
var slot uint64 = 414696178
client := rpc.New("https://staked.helius-rpc.com?api-key=5adcf1f9-5719-43d1-bf3f-c2d4e1e5f94d")
var rewards = false
var version uint64 = 0
blocks, err := client.GetBlockWithOpts(context.Background(), slot, &rpc.GetBlockOpts{
TransactionDetails: rpc.TransactionDetailsFull,
Rewards: &rewards,
Commitment: rpc.CommitmentFinalized,
Encoding: solana.EncodingBase64,
MaxSupportedTransactionVersion: &version,
})
if err != nil {
slot++
fmt.Println("get block error:", err)
return
}
solana_parser.EnableAllParsers()
var txs []solana_parser.Tx
for i, tx := range blocks.Transactions {
var blockTime uint64
if blocks.BlockTime != nil {
blockTime = uint64(*blocks.BlockTime)
}
rawTx, err := solana_parser.FromRpcTransactionWithMeta(tx, &blockTime, slot, int64(i))
if err != nil {
fmt.Println("from rpc tx error:", i, err)
break
}
//if rawTx.Meta.Err != nil {
// continue
//}
parsedTx, err := solana_parser.ParseRawTx(rawTx)
if err != nil {
fmt.Println("parse tx error:", i, rawTx.TxHash(), err)
break
}
txs = append(txs, *parsedTx)
}
_, err = solana_parser.EncodeTxsBinary(txs)
if err != nil {
fmt.Println("EncodeTxsBinary err", err)
}
}