-
Notifications
You must be signed in to change notification settings - Fork 345
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Updates tests for btwallet 3.0.0 * fix get_delegates result decoding * Feat/use tx pool for set weights (#2534) * use the tx pool for setting/committing weights * add supports rpc method with cache * handle when state call is not possible (unlikely) * increment next index by one for correct nonce * use for set sync set weights also * oops, define in subtensor for sync methods * make tests less specific * try e2e test for commit weights * modify comments on test * add root set test helper * try upping submit timeout * add set weights e2e test * use high timeout on tests * add awaits and log netuid * chore: ruff * use sudo_set_admin_utils instead * don't increment next index for nonce * dont await sudo_set_admin_utils * lower test ext timeout to 12 * enable reg during test * use set hyp values instead * sleep after setting reg allowed * fix test_set_weights_uses_next_nonce * Use asyncstdlib for lru_cache of `AsyncSubstrateInterface.supports_rpc_method` * Increases sleep for txs in test_set_weights_uses_next_nonce --------- Co-authored-by: Benjamin Himes <[email protected]> Co-authored-by: ibraheem-opentensor <[email protected]> Co-authored-by: Benjamin Himes <[email protected]> * fix tests * add connection limit error handler * add test * Backmerge master to staging post 851 (#2557) Bumps version and changelog * improve handler * add async commit reveal impl * add new logic to async_subtensor * add unit tests * ruff * add uid check before processing * fix test * Use apt-get instead of apt for scripts (#2571) apt --> apt-get * fix _do_stake incorrect arguments error in staking.py add_stake sdk (after pybytes error is fixed in delegate_info.py) another error occurs, because _do_stake is incorrectly called on line 124 in staking.py returning an invalid arguments error, must add self (subtensor) param to fix this error. * Updates subtensor branch for e2e * tests fix * Bumps cr3 ffi * Bumps version and changelog * Updates changelog --------- Co-authored-by: Roman <[email protected]> Co-authored-by: Cameron Fairchild <[email protected]> Co-authored-by: Benjamin Himes <[email protected]> Co-authored-by: Benjamin Himes <[email protected]> Co-authored-by: Roman <[email protected]> Co-authored-by: Assh-codes <[email protected]>
- Loading branch information
1 parent
cd2ccc2
commit 313521d
Showing
27 changed files
with
1,121 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
8.5.1 | ||
8.5.2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
from typing import Optional, Union, TYPE_CHECKING | ||
|
||
import numpy as np | ||
from bittensor_commit_reveal import get_encrypted_commit | ||
from numpy.typing import NDArray | ||
|
||
from bittensor.core.settings import version_as_int | ||
from bittensor.utils import format_error_message | ||
from bittensor.utils.btlogging import logging | ||
from bittensor.utils.weight_utils import convert_weights_and_uids_for_emit | ||
|
||
if TYPE_CHECKING: | ||
from bittensor_wallet import Wallet | ||
from bittensor.core.async_subtensor import AsyncSubtensor | ||
from bittensor.utils.registration import torch | ||
|
||
|
||
async def _do_commit_reveal_v3( | ||
subtensor: "AsyncSubtensor", | ||
wallet: "Wallet", | ||
netuid: int, | ||
commit: bytes, | ||
reveal_round: int, | ||
wait_for_inclusion: bool = False, | ||
wait_for_finalization: bool = False, | ||
) -> tuple[bool, Optional[str]]: | ||
""" | ||
Executes the commit-reveal phase 3 for a given netuid and commit, and optionally waits for extrinsic inclusion or finalization. | ||
Arguments: | ||
subtensor: An instance of the Subtensor class. | ||
wallet: Wallet An instance of the Wallet class containing the user's keypair. | ||
netuid: int The network unique identifier. | ||
commit bytes The commit data in bytes format. | ||
reveal_round: int The round number for the reveal phase. | ||
wait_for_inclusion: bool, optional Flag indicating whether to wait for the extrinsic to be included in a block. | ||
wait_for_finalization: bool, optional Flag indicating whether to wait for the extrinsic to be finalized. | ||
Returns: | ||
A tuple where the first element is a boolean indicating success or failure, and the second element is an optional string containing error message if any. | ||
""" | ||
logging.info( | ||
f"Committing weights hash [blue]{commit.hex()}[/blue] for subnet #[blue]{netuid}[/blue] with " | ||
f"reveal round [blue]{reveal_round}[/blue]..." | ||
) | ||
|
||
call = await subtensor.substrate.compose_call( | ||
call_module="SubtensorModule", | ||
call_function="commit_crv3_weights", | ||
call_params={ | ||
"netuid": netuid, | ||
"commit": commit, | ||
"reveal_round": reveal_round, | ||
}, | ||
) | ||
extrinsic = await subtensor.substrate.create_signed_extrinsic( | ||
call=call, | ||
keypair=wallet.hotkey, | ||
) | ||
|
||
response = await subtensor.substrate.submit_extrinsic( | ||
subtensor=subtensor, | ||
extrinsic=extrinsic, | ||
wait_for_inclusion=wait_for_inclusion, | ||
wait_for_finalization=wait_for_finalization, | ||
) | ||
|
||
if not wait_for_finalization and not wait_for_inclusion: | ||
return True, "Not waiting for finalization or inclusion." | ||
|
||
if await response.is_success: | ||
return True, None | ||
|
||
return False, format_error_message(await response.error_message) | ||
|
||
|
||
async def commit_reveal_v3_extrinsic( | ||
subtensor: "AsyncSubtensor", | ||
wallet: "Wallet", | ||
netuid: int, | ||
uids: Union[NDArray[np.int64], "torch.LongTensor", list], | ||
weights: Union[NDArray[np.float32], "torch.FloatTensor", list], | ||
version_key: int = version_as_int, | ||
wait_for_inclusion: bool = False, | ||
wait_for_finalization: bool = False, | ||
) -> tuple[bool, str]: | ||
""" | ||
Commits and reveals weights for given subtensor and wallet with provided uids and weights. | ||
Arguments: | ||
subtensor: The Subtensor instance. | ||
wallet: The wallet to use for committing and revealing. | ||
netuid: The id of the network. | ||
uids: The uids to commit. | ||
weights: The weights associated with the uids. | ||
version_key: The version key to use for committing and revealing. Default is version_as_int. | ||
wait_for_inclusion: Whether to wait for the inclusion of the transaction. Default is False. | ||
wait_for_finalization: Whether to wait for the finalization of the transaction. Default is False. | ||
Returns: | ||
tuple[bool, str]: A tuple where the first element is a boolean indicating success or failure, and the second element is a message associated with the result. | ||
""" | ||
try: | ||
# Convert uids and weights | ||
if isinstance(uids, list): | ||
uids = np.array(uids, dtype=np.int64) | ||
if isinstance(weights, list): | ||
weights = np.array(weights, dtype=np.float32) | ||
|
||
# Reformat and normalize. | ||
uids, weights = convert_weights_and_uids_for_emit(uids, weights) | ||
|
||
current_block = await subtensor.substrate.get_block_number(None) | ||
subnet_hyperparameters = await subtensor.get_subnet_hyperparameters(netuid) | ||
tempo = subnet_hyperparameters.tempo | ||
subnet_reveal_period_epochs = ( | ||
subnet_hyperparameters.commit_reveal_weights_interval | ||
) | ||
|
||
# Encrypt `commit_hash` with t-lock and `get reveal_round` | ||
commit_for_reveal, reveal_round = get_encrypted_commit( | ||
uids=uids, | ||
weights=weights, | ||
version_key=version_key, | ||
tempo=tempo, | ||
current_block=current_block, | ||
netuid=netuid, | ||
subnet_reveal_period_epochs=subnet_reveal_period_epochs, | ||
) | ||
|
||
success, message = await _do_commit_reveal_v3( | ||
subtensor=subtensor, | ||
wallet=wallet, | ||
netuid=netuid, | ||
commit=commit_for_reveal, | ||
reveal_round=reveal_round, | ||
wait_for_inclusion=wait_for_inclusion, | ||
wait_for_finalization=wait_for_finalization, | ||
) | ||
|
||
if success is not True: | ||
logging.error(message) | ||
return False, message | ||
|
||
logging.success( | ||
f"[green]Finalized![/green] Weights commited with reveal round [blue]{reveal_round}[/blue]." | ||
) | ||
return True, f"reveal_round:{reveal_round}" | ||
|
||
except Exception as e: | ||
logging.error(f":cross_mark: [red]Failed. Error:[/red] {e}") | ||
return False, str(e) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.