Compare commits

...

2 Commits

Author SHA1 Message Date
cachalots
56dac04a2a fix culimit 2026-02-12 10:11:29 +08:00
cachalots
852ad4b382 cu limit 2026-02-11 17:49:43 +08:00
5 changed files with 22 additions and 13 deletions

View File

@@ -27,10 +27,11 @@ func budgetParser(tx *Tx, instr Instruction, _ InnerInstructions, offset [2]uint
} }
} }
func computeUnitLimitParser(offset [2]uint, _ *Tx, decodedData []byte) ([2]uint, error) { func computeUnitLimitParser(offset [2]uint, tx *Tx, decodedData []byte) ([2]uint, error) {
if len(decodedData) < 8 { if len(decodedData) < 4 {
return increaseOffset(offset), nil return increaseOffset(offset), nil
} }
tx.CuLimit = binary.LittleEndian.Uint32(decodedData[:4])
return increaseOffset(offset), nil return increaseOffset(offset), nil
} }

View File

@@ -31,6 +31,7 @@ func main() {
continue continue
} }
ptx := msg.Tx ptx := msg.Tx
fmt.Println("consume", ptx.ComputeUnitsConsumed, "limit", ptx.CuLimit, "hash", ptx.GetTxHash())
//data, _ := json.Marshal(tx) //data, _ := json.Marshal(tx)
//fmt.Println(string(data)) //fmt.Println(string(data))
//continue //continue

View File

@@ -91,6 +91,7 @@ func (tx *Tx) Parser() error {
tx.BlockAt = tx.rawTx.BlockTime tx.BlockAt = tx.rawTx.BlockTime
tx.CuFee = decimal.NewFromUint64(tx.rawTx.Meta.Fee) tx.CuFee = decimal.NewFromUint64(tx.rawTx.Meta.Fee)
tx.ComputeUnitsConsumed = tx.rawTx.Meta.ComputeUnitsConsumed
tx.BeforeSolBalance = decimal.NewFromUint64(tx.rawTx.Meta.PreBalances[0]).Div(decimal.NewFromInt(1e9)) tx.BeforeSolBalance = decimal.NewFromUint64(tx.rawTx.Meta.PreBalances[0]).Div(decimal.NewFromInt(1e9))
tx.AfterSOLBalance = decimal.NewFromUint64(tx.rawTx.Meta.PostBalances[0]).Div(decimal.NewFromInt(1e9)) tx.AfterSOLBalance = decimal.NewFromUint64(tx.rawTx.Meta.PostBalances[0]).Div(decimal.NewFromInt(1e9))

View File

@@ -146,16 +146,17 @@ func (tb *TokenBalance) ParseAccount() {
} }
type Meta struct { type Meta struct {
Err interface{} `json:"err"` Err interface{} `json:"err"`
Fee uint64 `json:"fee"` Fee uint64 `json:"fee"`
InnerInstructions []InnerInstructions `json:"innerInstructions"` InnerInstructions []InnerInstructions `json:"innerInstructions"`
LoadedAddresses LoadedAddresses `json:"loadedAddresses"` LoadedAddresses LoadedAddresses `json:"loadedAddresses"`
LogMessages []string `json:"logMessages"` LogMessages []string `json:"logMessages"`
PostBalances []uint64 `json:"postBalances"` PostBalances []uint64 `json:"postBalances"`
PostTokenBalances []TokenBalance `json:"postTokenBalances"` PostTokenBalances []TokenBalance `json:"postTokenBalances"`
PreBalances []uint64 `json:"preBalances"` PreBalances []uint64 `json:"preBalances"`
PreTokenBalances []TokenBalance `json:"preTokenBalances"` PreTokenBalances []TokenBalance `json:"preTokenBalances"`
Rewards []interface{} `json:"rewards"` Rewards []interface{} `json:"rewards"`
ComputeUnitsConsumed uint64 `json:"computeUnitsConsumed"`
} }
type Header struct { type Header struct {
NumReadonlySignedAccounts int `json:"numReadonlySignedAccounts"` NumReadonlySignedAccounts int `json:"numReadonlySignedAccounts"`
@@ -805,7 +806,7 @@ func ConvertYellowstoneGrpcTransactionToSolanaTransaction(y *pb.SubscribeUpdateT
} }
sTx.Meta.Fee = meta.Fee sTx.Meta.Fee = meta.Fee
//sTx.Meta.InnerInstructions = meta.InnerInstructions //sTx.Meta.InnerInstructions = meta.InnerInstructions
sTx.Meta.ComputeUnitsConsumed = *meta.ComputeUnitsConsumed
for _, innerInstr := range meta.InnerInstructions { for _, innerInstr := range meta.InnerInstructions {
var instrs []Instruction var instrs []Instruction
for _, instr := range innerInstr.Instructions { for _, instr := range innerInstr.Instructions {

5
tx.go
View File

@@ -47,6 +47,8 @@ type Swap struct {
StartBinId int32 StartBinId int32
EndBinId int32 EndBinId int32
BinChanges []DlmmBinLiquidityChange BinChanges []DlmmBinLiquidityChange
ConsumeUnit uint64
} }
type DlmmBinLiquidityChange struct { type DlmmBinLiquidityChange struct {
@@ -98,6 +100,9 @@ type Tx struct {
// update tokenInfo // update tokenInfo
Token map[solana.PublicKey]TokenMeta `gorm:"-"` Token map[solana.PublicKey]TokenMeta `gorm:"-"`
ComputeUnitsConsumed uint64 `json:"compute_units_consumed"`
CuLimit uint32 `json:"cu_limit"`
// todo pool info ?? // todo pool info ??
} }