From d393a7e9a7426d2decd0c85ce320483cb31e04f3 Mon Sep 17 00:00:00 2001 From: hopeyen <60078528+hopeyen@users.noreply.github.com> Date: Fri, 3 Jan 2025 04:52:51 +0000 Subject: [PATCH] fix: properly read filtered logs for params --- core/eth/state.go | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/core/eth/state.go b/core/eth/state.go index bdf6144dec..497e4b3877 100644 --- a/core/eth/state.go +++ b/core/eth/state.go @@ -148,7 +148,7 @@ func (cs *ChainState) indexSocketMap(ctx context.Context) error { return nil } - var socketUpdates []*socketUpdateInput + var socketUpdates []*socketUpdateParams // logs are in order of block number, so we can just iterate through them for _, log := range logs { @@ -174,15 +174,31 @@ func (cs *ChainState) indexSocketMap(ctx context.Context) error { if err != nil { return err } - input := inputs[0].(socketUpdateInput) - socketUpdates = append(socketUpdates, &input) + var socket string + if method.Name == "registerOperator" { + socket = inputs[1].(string) + } else if method.Name == "updateOperatorSocket" { + socket = inputs[0].(string) + } else { + return fmt.Errorf("unknown method filtered for socket update event: %s", method.Name) + } + operatorAddr := gcommon.BytesToAddress(log.Topics[1].Bytes()) + operatorId, err := core.OperatorIDFromHex(operatorAddr.Hex()) + if err != nil { + return err + } + + socketUpdates = append(socketUpdates, &socketUpdateParams{ + Socket: socket, + OperatorID: operatorId, + }) } cs.socketMu.Lock() defer cs.socketMu.Unlock() for _, socketUpdate := range socketUpdates { - cs.SocketMap[core.OperatorID(socketUpdate.OperatorID.Bytes())] = &socketUpdate.Socket + cs.SocketMap[core.OperatorID(socketUpdate.OperatorID)] = &socketUpdate.Socket } cs.socketPrevBlockNumber = uint32(currentBlockNumber) @@ -224,7 +240,7 @@ func getOperatorState(operatorsByQuorum core.OperatorStakes, blockNumber uint32, return state, nil } -type socketUpdateInput struct { - OperatorID gcommon.Address "json:\"operatorId\"" - Socket string "json:\"socket\"" +type socketUpdateParams struct { + OperatorID core.OperatorID + Socket string }