adminverify.go 1.6 KB

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