From 5d715b8ffff8712e176bbb0ebf6c282f3579a331 Mon Sep 17 00:00:00 2001 From: felipemadero Date: Tue, 3 Dec 2024 13:23:52 -0300 Subject: [PATCH] use blockchain timestamp to calculate expiry (#2391) --- 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 cb45f755b..c090a7cf8 100644 --- a/cmd/blockchaincmd/add_validator.go +++ b/cmd/blockchaincmd/add_validator.go @@ -245,7 +245,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, @@ -593,7 +597,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 } @@ -605,6 +608,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 {