| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package main
- import (
- "context"
- "flag"
- "fmt"
- "github.com/certusone/wormhole/node/pkg/common"
- nodev1 "github.com/certusone/wormhole/node/pkg/proto/node/v1"
- "github.com/certusone/wormhole/node/pkg/vaa"
- "google.golang.org/grpc"
- "log"
- )
- var (
- adminRPC = flag.String("adminRPC", "/run/guardiand/admin.socket", "Admin RPC address")
- shouldBackfill = flag.Bool("backfill", true, "Backfill missing sequences")
- onlyChain = flag.String("only", "", "Only check this chain")
- )
- func getAdminClient(ctx context.Context, addr string) (*grpc.ClientConn, error, nodev1.NodePrivilegedServiceClient) {
- conn, err := grpc.DialContext(ctx, fmt.Sprintf("unix:///%s", addr), grpc.WithInsecure())
- if err != nil {
- log.Fatalf("failed to connect to %s: %v", addr, err)
- }
- c := nodev1.NewNodePrivilegedServiceClient(conn)
- return conn, err, c
- }
- func main() {
- flag.Parse()
- ctx := context.Background()
- conn, err, admin := getAdminClient(ctx, *adminRPC)
- defer conn.Close()
- if err != nil {
- log.Fatalf("failed to get admin client: %v", err)
- }
- var only vaa.ChainID
- if *onlyChain != "" {
- only, err = vaa.ChainIDFromString(*onlyChain)
- if err != nil {
- log.Fatalf("failed to parse chain id: %v", err)
- }
- }
- for _, emitter := range common.KnownEmitters {
- if only != vaa.ChainIDUnset {
- if emitter.ChainID != only {
- continue
- }
- }
- log.Printf("requesting missing sequences for %v %s", emitter.ChainID, emitter.Emitter)
- msg := nodev1.FindMissingMessagesRequest{
- EmitterChain: uint32(emitter.ChainID),
- EmitterAddress: emitter.Emitter,
- RpcBackfill: *shouldBackfill,
- BackfillNodes: common.PublicRPCEndpoints,
- }
- resp, err := admin.FindMissingMessages(ctx, &msg)
- if err != nil {
- log.Fatalf("failed to run find FindMissingMessages RPC: %v", err)
- }
- for _, id := range resp.MissingMessages {
- fmt.Println(id)
- }
- }
- }
|