mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 15:16:43 +00:00
* use atomic pointer * golang version * golang version * go1.19 * linters * Bump golangci-lint * linters * linters * linters after merge * generic logger * generic logger * logger * logger * linters * bump toml * linters1 * linters * linters * linter * linter * linters * linters * linters
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package heimdallgrpc
|
|
|
|
import (
|
|
"context"
|
|
|
|
proto "github.com/maticnetwork/polyproto/heimdall"
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
"github.com/ethereum/go-ethereum/consensus/bor/clerk"
|
|
)
|
|
|
|
func (h *HeimdallGRPCClient) StateSyncEvents(ctx context.Context, fromID uint64, to int64) ([]*clerk.EventRecordWithTime, error) {
|
|
eventRecords := make([]*clerk.EventRecordWithTime, 0)
|
|
|
|
req := &proto.StateSyncEventsRequest{
|
|
FromID: fromID,
|
|
ToTime: uint64(to),
|
|
Limit: uint64(stateFetchLimit),
|
|
}
|
|
|
|
var (
|
|
res proto.Heimdall_StateSyncEventsClient
|
|
events *proto.StateSyncEventsResponse
|
|
err error
|
|
)
|
|
|
|
res, err = h.client.StateSyncEvents(ctx, req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
for {
|
|
events, err = res.Recv()
|
|
if err != nil {
|
|
break
|
|
}
|
|
|
|
for _, event := range events.Result {
|
|
eventRecord := &clerk.EventRecordWithTime{
|
|
EventRecord: clerk.EventRecord{
|
|
ID: event.ID,
|
|
Contract: common.HexToAddress(event.Contract),
|
|
Data: common.Hex2Bytes(event.Data[2:]),
|
|
TxHash: common.HexToHash(event.TxHash),
|
|
LogIndex: event.LogIndex,
|
|
ChainID: event.ChainID,
|
|
},
|
|
Time: event.Time.AsTime(),
|
|
}
|
|
eventRecords = append(eventRecords, eventRecord)
|
|
}
|
|
}
|
|
|
|
return eventRecords, err
|
|
}
|