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  }