code.vegaprotocol.io/vega@v0.79.0/commands/validator_heartbeat.go (about) 1 // Copyright (C) 2023 Gobalsky Labs Limited 2 // 3 // This program is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU Affero General Public License as 5 // published by the Free Software Foundation, either version 3 of the 6 // License, or (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU Affero General Public License for more details. 12 // 13 // You should have received a copy of the GNU Affero General Public License 14 // along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16 package commands 17 18 import ( 19 "encoding/hex" 20 21 commandspb "code.vegaprotocol.io/vega/protos/vega/commands/v1" 22 ) 23 24 func CheckValidatorHeartbeat(cmd *commandspb.ValidatorHeartbeat) error { 25 return checkValidatorHeartbeat(cmd).ErrorOrNil() 26 } 27 28 func checkValidatorHeartbeat(cmd *commandspb.ValidatorHeartbeat) Errors { 29 errs := NewErrors() 30 31 if cmd == nil { 32 return errs.FinalAddForProperty("validator_heartbeat", ErrIsRequired) 33 } 34 35 if len(cmd.NodeId) == 0 { 36 errs.AddForProperty("validator_heartbeat.node_id", ErrIsRequired) 37 } else { 38 if !IsVegaPublicKey(cmd.NodeId) { 39 errs.AddForProperty("validator_heartbeat.node_id", ErrShouldBeAValidVegaPublicKey) 40 } 41 } 42 43 if cmd.EthereumSignature == nil || len(cmd.EthereumSignature.Value) == 0 { 44 errs.AddForProperty("validator_heartbeat.ethereum_signature.value", ErrIsRequired) 45 } else { 46 _, err := hex.DecodeString(cmd.EthereumSignature.Value) 47 if err != nil { 48 errs.AddForProperty("validator_heartbeat.ethereum_signature.value", ErrShouldBeHexEncoded) 49 } 50 } 51 52 if cmd.VegaSignature == nil || len(cmd.VegaSignature.Value) == 0 { 53 errs.AddForProperty("validator_heartbeat.vega_signature.value", ErrIsRequired) 54 } else { 55 _, err := hex.DecodeString(cmd.VegaSignature.Value) 56 if err != nil { 57 errs.AddForProperty("validator_heartbeat.vega_signature.value", ErrShouldBeHexEncoded) 58 } 59 } 60 61 if len(cmd.VegaSignature.Algo) == 0 { 62 errs.AddForProperty("validator_heartbeat.vega_signature.algo", ErrIsRequired) 63 } 64 65 return errs 66 }