From 57a31996d3890aa31a4a8834bee0ee80696470d9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 9 May 2023 17:04:00 +0200 Subject: [PATCH] app/ship_processor.go: Make sure we set act.Data to a go object and not json byte slice. --- app/ship_processor.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/ship_processor.go b/app/ship_processor.go index 8ced813..09cd146 100644 --- a/app/ship_processor.go +++ b/app/ship_processor.go @@ -1,12 +1,15 @@ package app import ( + "encoding/json" + "github.com/eosswedenorg/thalos/api" "github.com/eosswedenorg/thalos/api/message" "github.com/eosswedenorg/thalos/app/abi" log "github.com/sirupsen/logrus" + "github.com/eoscanada/eos-go" "github.com/eoscanada/eos-go/ship" shipclient "github.com/eosswedenorg-go/antelope-ship-client" ) @@ -64,6 +67,14 @@ func (processor *ShipProcessor) encodeQueue(channel api.Channel, v interface{}) return false } +func decode(abi *eos.ABI, act *ship.Action, v any) error { + jsondata, err := abi.DecodeAction(act.Data, act.Name) + if err != nil { + return err + } + return json.Unmarshal(jsondata, v) +} + func (processor *ShipProcessor) processBlock(block *ship.GetBlocksResultV0) { if block.ThisBlock.BlockNum%100 == 0 { log.Infof("Current: %d, Head: %d", block.ThisBlock.BlockNum, block.Head.BlockNum) @@ -127,11 +138,9 @@ func (processor *ShipProcessor) processBlock(block *ship.GetBlocksResultV0) { ABI, err := processor.abi.GetAbi(act_trace.Act.Account) if err == nil { - data, err := ABI.DecodeAction(act_trace.Act.Data, act_trace.Act.Name) - if err != nil { + if err = decode(ABI, act_trace.Act, &act.Data); err != nil { log.WithError(err).Warn("Failed to decode action") } - act.Data = data } else { log.WithError(err).Errorf("Failed to get abi for contract %s", act_trace.Act.Account) }