61 lines
1.5 KiB
Go
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)
|
|
}
|
|
|
|
}
|