Devnet 总轮次计算

问题描述 投票:0回答:1

我需要在智能合约中做的一件事是计算当前纪元的轮次。我需要它的原因是我的智能合约不应该在一个 epoch 的前 5-10 分钟内执行任何操作(所以前 50-100 轮?)。

为此,我认为我可以使用当前的区块轮数,将其除以每个纪元的轮数,最后就是当前纪元中的当前轮次。

到目前为止还好吗?但这不起作用。 以 devnet 为例:

轮次:5017252 每个时期的轮数:1200 纪元 = 5017252 / 1200 = ~4181.04333 但实际纪元是:4150

在主网上,这个计算确实有效。 大家有更好的主意吗?

blockchain smartcontracts multiversx
1个回答
0
投票

简短回答:开发网络上每个周期有 2400 轮,而不是 1200。

说明

在 devnet 上,一个 epoch 持续 4 小时(旧 devnet 上为 2 小时)而不是 24 小时,因此 devnet 上每个 epoch 的轮数并不等于主网上的轮数。

要检查一个纪元中有多少轮,您可以查询:https://devnet-gateway.multiversx.com/network/config

回应:

{
  "data": {
    "config": {
      "erd_adaptivity": "false",
      "erd_chain_id": "D",
      "erd_denomination": 18,
      "erd_extra_gas_limit_guarded_tx": 50000,
      "erd_gas_per_data_byte": 1500,
      "erd_gas_price_modifier": "0.01",
      "erd_hysteresis": "0.200000",
      "erd_latest_tag_software_version": "D1.6.13.2-hf1",
      "erd_max_gas_per_transaction": 600000000,
      "erd_meta_consensus_group_size": 58,
      "erd_min_gas_limit": 50000,
      "erd_min_gas_price": 1000000000,
      "erd_min_transaction_version": 1,
      "erd_num_metachain_nodes": 58,
      "erd_num_nodes_in_shard": 58,
      "erd_num_shards_without_meta": 3,
      "erd_rewards_top_up_gradient_point": "2000000000000000000000000",
      "erd_round_duration": 6000,
      "erd_rounds_per_epoch": 2400,
      "erd_shard_consensus_group_size": 21,
      "erd_start_time": 1694000000,
      "erd_top_up_factor": "0.500000"
    }
  },
  "error": "",
  "code": "successful"
}

您可以在开发网络上看到每个 epoch 有 2400 轮。

现在让我们通过查询在主网上执行相同的操作 https://gateway.multiversx.com/network/config

回应:

{
  "data": {
    "config": {
      "erd_adaptivity": "false",
      "erd_chain_id": "1",
      "erd_denomination": 18,
      "erd_extra_gas_limit_guarded_tx": 50000,
      "erd_gas_per_data_byte": 1500,
      "erd_gas_price_modifier": "0.01",
      "erd_hysteresis": "0.200000",
      "erd_latest_tag_software_version": "v1.6.13.0",
      "erd_max_gas_per_transaction": 600000000,
      "erd_meta_consensus_group_size": 400,
      "erd_min_gas_limit": 50000,
      "erd_min_gas_price": 1000000000,
      "erd_min_transaction_version": 1,
      "erd_num_metachain_nodes": 400,
      "erd_num_nodes_in_shard": 400,
      "erd_num_shards_without_meta": 3,
      "erd_rewards_top_up_gradient_point": "2000000000000000000000000",
      "erd_round_duration": 6000,
      "erd_rounds_per_epoch": 14400,
      "erd_shard_consensus_group_size": 63,
      "erd_start_time": 1596117600,
      "erd_top_up_factor": "0.500000"
    }
  },
  "error": "",
  "code": "successful"
}

您可以看到主网上每个时期有 14400 轮。

请注意,在未来的网络升级中,回合持续时间可能会发生变化。所以要小心,不要在你的合约中硬编码它,特别是如果它不可升级的话

© www.soinside.com 2019 - 2024. All rights reserved.