adminverify.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package guardiand
  2. import (
  3. "github.com/certusone/wormhole/bridge/pkg/vaa"
  4. "io/ioutil"
  5. "log"
  6. "github.com/davecgh/go-spew/spew"
  7. "github.com/spf13/cobra"
  8. "google.golang.org/protobuf/encoding/prototext"
  9. nodev1 "github.com/certusone/wormhole/bridge/pkg/proto/node/v1"
  10. )
  11. var AdminClientGovernanceVAAVerifyCmd = &cobra.Command{
  12. Use: "governance-vaa-verify",
  13. Short: "Verify governance vaa in prototxt format (offline)",
  14. Run: runGovernanceVAAVerify,
  15. Args: cobra.ExactArgs(1),
  16. }
  17. func runGovernanceVAAVerify(cmd *cobra.Command, args []string) {
  18. path := args[0]
  19. b, err := ioutil.ReadFile(path)
  20. if err != nil {
  21. log.Fatalf("failed to read file: %v", err)
  22. }
  23. var msg nodev1.InjectGovernanceVAARequest
  24. err = prototext.Unmarshal(b, &msg)
  25. if err != nil {
  26. log.Fatalf("failed to deserialize: %v", err)
  27. }
  28. var (
  29. v *vaa.VAA
  30. )
  31. switch payload := msg.Payload.(type) {
  32. case *nodev1.InjectGovernanceVAARequest_GuardianSet:
  33. v, err = adminGuardianSetUpdateToVAA(payload.GuardianSet, msg.CurrentSetIndex, msg.Timestamp)
  34. case *nodev1.InjectGovernanceVAARequest_ContractUpgrade:
  35. v, err = adminContractUpgradeToVAA(payload.ContractUpgrade, msg.CurrentSetIndex, msg.Timestamp)
  36. }
  37. if err != nil {
  38. log.Fatalf("invalid update: %v", err)
  39. }
  40. digest, err := v.SigningMsg()
  41. if err != nil {
  42. panic(err)
  43. }
  44. log.Printf("VAA with digest %s: %+v", digest.Hex(), spew.Sdump(v))
  45. }