From de1b212636bb9ee40b536c5aeffa58fea12a94cf Mon Sep 17 00:00:00 2001 From: Felipe Madero Date: Tue, 3 Dec 2024 12:46:09 -0300 Subject: [PATCH] use blockchain timestamp to calculate expiry --- cmd/blockchaincmd/add_validator.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/cmd/blockchaincmd/add_validator.go b/cmd/blockchaincmd/add_validator.go index ada28db60..790e6d606 100644 --- a/cmd/blockchaincmd/add_validator.go +++ b/cmd/blockchaincmd/add_validator.go @@ -241,7 +241,11 @@ func CallAddValidator( return fmt.Errorf("failure parsing BLS info: %w", err) } - expiry := uint64(time.Now().Add(constants.DefaultValidationIDExpiryDuration).Unix()) + blockchainTimestamp, err := getBlockchainTimestamp(network) + if err != nil { + return fmt.Errorf("failed to get blockchain timestamp: %w", err) + } + expiry := uint64(blockchainTimestamp.Add(constants.DefaultValidationIDExpiryDuration).Unix()) chainSpec := contract.ChainSpec{ BlockchainName: blockchainName, @@ -589,7 +593,6 @@ func getMaxValidationTime(network models.Network, nodeID ids.NodeID, startTime t defer cancel() platformCli := platformvm.NewClient(network.Endpoint) vs, err := platformCli.GetCurrentValidators(ctx, avagoconstants.PrimaryNetworkID, nil) - cancel() if err != nil { return 0, err } @@ -601,6 +604,13 @@ func getMaxValidationTime(network models.Network, nodeID ids.NodeID, startTime t return 0, errors.New("nodeID not found in validator set: " + nodeID.String()) } +func getBlockchainTimestamp(network models.Network) (time.Time, error) { + ctx, cancel := utils.GetAPIContext() + defer cancel() + platformCli := platformvm.NewClient(network.Endpoint) + return platformCli.GetTimestamp(ctx) +} + func getTimeParameters(network models.Network, nodeID ids.NodeID, isValidator bool) (time.Time, time.Duration, error) { defaultStakingStartLeadTime := constants.StakingStartLeadTime if network.Kind == models.Devnet {