From a2ff5ca73cb7dd55d31f29644d8dcb4309d39e95 Mon Sep 17 00:00:00 2001 From: Leo Date: Mon, 8 Mar 2021 21:26:40 +0100 Subject: [PATCH] bridge/debug: add post-vaa-solana command Co-authored-by: Hendrik Hofstadt Change-Id: I482487f39eae1a3aebd1c7fdbe10e5b9c2dd44ad --- bridge/cmd/debug/solana.go | 62 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 bridge/cmd/debug/solana.go diff --git a/bridge/cmd/debug/solana.go b/bridge/cmd/debug/solana.go new file mode 100644 index 00000000..d749232b --- /dev/null +++ b/bridge/cmd/debug/solana.go @@ -0,0 +1,62 @@ +package debug + +import ( + "context" + "encoding/hex" + "github.com/certusone/wormhole/bridge/pkg/solana" + "github.com/certusone/wormhole/bridge/pkg/supervisor" + "github.com/certusone/wormhole/bridge/pkg/vaa" + "github.com/spf13/cobra" + "go.uber.org/zap" + "log" + "strings" +) + +var ( + agentRPC *string +) + +func init() { + agentRPC = postVaaSolanaCmd.Flags().String("agentRPC", "", "Solana agent sidecar gRPC socket path") + DebugCmd.AddCommand(postVaaSolanaCmd) +} + +var postVaaSolanaCmd = &cobra.Command{ + Use: "post-vaa-solana [DATA]", + Short: "Submit a hex-encoded VAA to Solana using the specified agent sidecar", + Run: func(cmd *cobra.Command, args []string) { + vaaQueue := make(chan *vaa.VAA) + logger, err := zap.NewDevelopment() + if err != nil { + panic(err) + } + supervisor.New(context.Background(), logger, func(ctx context.Context) error { + if err := supervisor.Run(ctx, "solvaa", + solana.NewSolanaVAASubmitter(*agentRPC, vaaQueue).Run); err != nil { + return err + } + + select { + case <-ctx.Done(): + return nil + } + }) + + for _, arg := range args { + arg = strings.TrimPrefix(arg, "0x") + b, err := hex.DecodeString(arg) + if err != nil { + log.Fatal(err) + } + + v, err := vaa.Unmarshal(b) + if err != nil { + log.Fatal(err) + } + + vaaQueue <- v + } + + select {} + }, +}