From 3af47fc94c7126440a15c08d6111e491f397e493 Mon Sep 17 00:00:00 2001 From: Benjamin Himes Date: Wed, 9 Apr 2025 16:20:16 +0200 Subject: [PATCH 1/3] Fix calculation for childkey set completion block --- bittensor_cli/src/commands/stake/children_hotkeys.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/bittensor_cli/src/commands/stake/children_hotkeys.py b/bittensor_cli/src/commands/stake/children_hotkeys.py index 12f52658c..9218d19a4 100644 --- a/bittensor_cli/src/commands/stake/children_hotkeys.py +++ b/bittensor_cli/src/commands/stake/children_hotkeys.py @@ -30,21 +30,19 @@ async def get_childkey_completion_block( """ Calculates the block at which the childkey set request will complete """ + bh = await subtensor.substrate.get_chain_head() blocks_since_last_step_query = subtensor.query( - "SubtensorModule", - "BlocksSinceLastStep", - params=[netuid], + "SubtensorModule", "BlocksSinceLastStep", params=[netuid], block_hash=bh ) tempo_query = subtensor.get_hyperparameter( - param_name="Tempo", - netuid=netuid, + param_name="Tempo", netuid=netuid, block_hash=bh ) block_number, blocks_since_last_step, tempo = await asyncio.gather( - subtensor.substrate.get_block_number(), + subtensor.substrate.get_block_number(block_hash=bh), blocks_since_last_step_query, tempo_query, ) - cooldown = block_number + 1 + cooldown = block_number + 7200 blocks_left_in_tempo = tempo - blocks_since_last_step next_tempo = block_number + blocks_left_in_tempo next_epoch_after_cooldown = (cooldown - next_tempo) % tempo + cooldown From 035bf47d4a85edf977a2be1fc5e13aec86967341 Mon Sep 17 00:00:00 2001 From: BD Himes <37844818+thewhaleking@users.noreply.github.com> Date: Wed, 9 Apr 2025 17:26:59 +0200 Subject: [PATCH 2/3] Update bittensor_cli/src/commands/stake/children_hotkeys.py Co-authored-by: Cameron Fairchild --- bittensor_cli/src/commands/stake/children_hotkeys.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bittensor_cli/src/commands/stake/children_hotkeys.py b/bittensor_cli/src/commands/stake/children_hotkeys.py index 9218d19a4..7ad94f131 100644 --- a/bittensor_cli/src/commands/stake/children_hotkeys.py +++ b/bittensor_cli/src/commands/stake/children_hotkeys.py @@ -45,7 +45,7 @@ async def get_childkey_completion_block( cooldown = block_number + 7200 blocks_left_in_tempo = tempo - blocks_since_last_step next_tempo = block_number + blocks_left_in_tempo - next_epoch_after_cooldown = (cooldown - next_tempo) % tempo + cooldown + next_epoch_after_cooldown = (cooldown - next_tempo) % (tempo + 1) + cooldown return block_number, next_epoch_after_cooldown From b2e208bb7b2ccf97d27a1754607f1901e82ba92d Mon Sep 17 00:00:00 2001 From: Benjamin Himes Date: Wed, 9 Apr 2025 17:46:52 +0200 Subject: [PATCH 3/3] Adds test --- tests/e2e_tests/test_children_hotkeys.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 tests/e2e_tests/test_children_hotkeys.py diff --git a/tests/e2e_tests/test_children_hotkeys.py b/tests/e2e_tests/test_children_hotkeys.py new file mode 100644 index 000000000..f286012fd --- /dev/null +++ b/tests/e2e_tests/test_children_hotkeys.py @@ -0,0 +1,15 @@ +import pytest + +from bittensor_cli.src.bittensor.subtensor_interface import SubtensorInterface +from bittensor_cli.src.commands.stake.children_hotkeys import ( + get_childkey_completion_block, +) + + +@pytest.mark.asyncio +async def test_get_childkey_completion_block(local_chain): + async with SubtensorInterface("ws://127.0.0.1:9945") as subtensor: + current_block, completion_block = await get_childkey_completion_block( + subtensor, 1 + ) + assert (completion_block - current_block) >= 7200