bittensor-commit-reveal


Namebittensor-commit-reveal JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2024-12-13 00:01:30
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords substrate scale codec bittensor commit reveal
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Usage
Python package `bittensor_commit_reveal` has one function.

```python
from bittensor_commit_reveal import get_encrypted_commit
```

## Function docstring
The function could be considered like this:
```python
def get_encrypted_commit(
        uids: Union[NDArray[np.int64], "torch.LongTensor"], 
        weights: Union[NDArray[np.float32], "torch.FloatTensor"], 
        version_key: int, 
        tempo: int, 
        current_block: int, 
        netuid: int, 
        subnet_reveal_period_epochs: int, 
        block_time: int = 12
) -> tuple[bytes, int]:
"""Returns encrypted commit and target round for `commit_crv3_weights` extrinsic.

    Arguments:
        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 `bittensor.core.settings.version_as_int`.
        tempo: Number of blocks in one epoch.
        current_block: The current block number in the network.
        netuid: The network unique identifier (NetUID) for the subnet.
        subnet_reveal_period_epochs: Number of epochs after which the reveal will be performed. Corresponds to the hyperparameter `commit_reveal_weights_interval` of the subnet. In epochs.
        block_time: Amount of time in seconds for one block. Defaults to 12 seconds.

    Returns:
        commit (bytes): Raw bytes of the encrypted, and compressed uids & weights values for setting weights.
        target_round (int): Drand round number when weights have to be revealed. Based on Drand Quicknet network.
    """
# function logic
return commit, target_round
```


To test the function in your terminal:
1. Spin up a local subtensor branch which includes CR3
2. Create a subnet with netuid 1 (or replace the netuid with the one you create)
```bash
mkdir test
cd test
python3 -m venv venv
. venv/bin/activate
pip install maturin bittensor ipython
cd ..

maturin develop
ipython

```

then copy-past to ipython
```python
import numpy as np
import bittensor_commit_reveal as crv3
from bittensor.utils.weight_utils import convert_weights_and_uids_for_emit
import bittensor as bt

uids = [1, 3]
weights = [0.3, 0.7]
version_key = 843000
netuid = 1

subtensor = bt.Subtensor("local")

subnet_reveal_period_epochs = subtensor.get_subnet_reveal_period_epochs(
        netuid=netuid
    )
tempo = subtensor.get_subnet_hyperparameters(netuid).tempo
current_block = subtensor.get_current_block()

if isinstance(uids, list):
    uids = np.array(uids, dtype=np.int64)
if isinstance(weights, list):
    weights = np.array(weights, dtype=np.float32)

uids, weights = convert_weights_and_uids_for_emit(uids, weights)

print(crv3.get_encrypted_commit(uids, weights, version_key, tempo, current_block, netuid, subnet_reveal_period_epochs))
```
expected result
```python
(b'\xb9\x96\xe4\xd1\xfd\xabm\x8cc\xeb\xe3W\r\xc7J\xb4\xea\xa9\xd5u}OG~\xae\xcc\x9a@\xdf\xee\x16\xa9\x0c\x8d7\xd6\xea_c\xc2<\xcb\xa6\xbe^K\x97|\x16\xc6|;\xb5Z\x97\xc9\xb4\x8em\xf1hv\x16\xcf\xea\x1e7\xbe-Z\xe7e\x1f$\n\xf8\x08\xcb\x18.\x94V\xa3\xd7\xcd\xc9\x04F::\t)Z\xc6\xbey \x00\x00\x00\x00\x00\x00\x00\xaaN\xe8\xe97\x8f\x99\xbb"\xdf\xad\xf6\\#%\xca:\xc2\xce\xf9\x96\x9d\x8f\x9d\xa2\xad\xfd\xc73j\x16\xda \x00\x00\x00\x00\x00\x00\x00\x84*\xb0\rw\xad\xdc\x02o\xf7i)\xbb^\x99e\xe2\\\xee\x02NR+-Q\xcd \xf7\x02\x83\xffV>\x00\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00*\x13wXb\x93\xc5"F\x17F\x05\xcd\x15\xb0=\xe2d\xfco3\x16\xfd\xe9\xc6\xbc\xd1\xb3Y\x97\xf9\xb9!\x01\x0c\x00\x00\x00\x00\x00\x00\x00X\xa2\x8c\x18Wkq\xe5\xe6\x1c2\x86\x08\x00\x00\x00\x00\x00\x00\x00AES_GCM_', 13300875)
```

To test this in a local subnet:
1. Spin up a local node based on the subtensor branch `spiigot/add-pallet-drand` using command `./scripts/localnet.sh False`
2. Create a subnet
3. Change the following hyperparameters:
    - `commit_reveal_weights_enabled` -> `True`
    - `tempo` -> 10 (keep in mind that you need to provide this as `tempo` argument to `get_encrypted_commit` function. Use polkadot website for this action.)
    - `weights_rate_limit` -> 0 (Reduces the limit when you can set weights.)
4. Register 1 or more wallets to the subnet
5. Create and activate python virtual environment (`python3 -m venv venv && . venv/bin/activate`)
6. Checkout bittensor `feat/roman/cr-v-3` branch.
7. Install bittensor `pip install -e .`
8. Cd to directory you cloned `https://github.com/opentensor/bittensor-commit-reveal/tree/staging` (FFI for CRv3).
9. Install the `maturin` python package and build/install `bittensor-commit-reveal` package to your env using the command `pip install maturin && maturin develop`
10. Run the following script within your python environment:
```python
import requests
import time

from bittensor import Subtensor, logging, Wallet

DRAND_API_BASE_URL_Q = "https://api.drand.sh/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"

logging.set_info()


def get_drand_info(uri):
    """Fetch Drand network information."""
    url = f"{uri}/info"
    response = requests.get(url)
    response.raise_for_status()
    return response.json()


def get_current_round(info):
    """Calculate the current round based on genesis_time and period."""
    current_time = int(time.time())
    genesis_time = info["genesis_time"]
    period = info["period"]
    return (current_time - genesis_time) // period + 1


def main():
    sub = Subtensor("local")

    uids = [0]
    weights = [0.7]

    wallet = Wallet()  # corresponds the subnet owner wallet

    result, message = sub.set_weights(
        wallet=wallet,
        netuid=1,
        uids=uids,
        weights=weights,
        wait_for_inclusion=True,
        wait_for_finalization=True,
    )
    logging.info(f">>> Success, [blue]{result}[/blue], message: [magenta]{message}[/magenta]")

    reveal_round = int(message.split(":")[-1])
    # Fetch Drand network info
    for uri in [DRAND_API_BASE_URL_Q]:
        print(f"Fetching info from {uri}...")
        info = get_drand_info(uri)
        print("Info:", info)

        while True:
            time.sleep(info["period"])
            current_round = get_current_round(info)
            logging.console.info(f"Current round: [yellow]{current_round}[/yellow]")
            if current_round == reveal_round:
                logging.console.warning(f">>> It's time to reveal the target round: [blue]{reveal_round}[/blue]")

                break


if __name__ == "__main__":
    main()
```
11. Wait until your target_round comes.

12. Check your weights with the following code:

```python
import bittensor as bt

sub = bt.Subtensor(network="local")

netuid = 1  # your created subnet's netuid

print(sub.weights(netuid=netuid))
```
13. You can now see the same weights which you committed earlier

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "bittensor-commit-reveal",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "Cortex Team <cortex@opentensor.dev>",
    "keywords": "substrate, scale, codec, bittensor, commit reveal",
    "author": null,
    "author_email": "Roman Chkhaidze <roman@opentensor.dev>",
    "download_url": "https://files.pythonhosted.org/packages/01/93/f6361d6d617f1620f1b642308384d7f22c7917c169b821ddb3a90856a0c9/bittensor_commit_reveal-0.1.0.tar.gz",
    "platform": null,
    "description": "# Usage\r\nPython package `bittensor_commit_reveal` has one function.\r\n\r\n```python\r\nfrom bittensor_commit_reveal import get_encrypted_commit\r\n```\r\n\r\n## Function docstring\r\nThe function could be considered like this:\r\n```python\r\ndef get_encrypted_commit(\r\n        uids: Union[NDArray[np.int64], \"torch.LongTensor\"], \r\n        weights: Union[NDArray[np.float32], \"torch.FloatTensor\"], \r\n        version_key: int, \r\n        tempo: int, \r\n        current_block: int, \r\n        netuid: int, \r\n        subnet_reveal_period_epochs: int, \r\n        block_time: int = 12\r\n) -> tuple[bytes, int]:\r\n\"\"\"Returns encrypted commit and target round for `commit_crv3_weights` extrinsic.\r\n\r\n    Arguments:\r\n        uids: The uids to commit.\r\n        weights: The weights associated with the uids.\r\n        version_key: The version key to use for committing and revealing. Default is `bittensor.core.settings.version_as_int`.\r\n        tempo: Number of blocks in one epoch.\r\n        current_block: The current block number in the network.\r\n        netuid: The network unique identifier (NetUID) for the subnet.\r\n        subnet_reveal_period_epochs: Number of epochs after which the reveal will be performed. Corresponds to the hyperparameter `commit_reveal_weights_interval` of the subnet. In epochs.\r\n        block_time: Amount of time in seconds for one block. Defaults to 12 seconds.\r\n\r\n    Returns:\r\n        commit (bytes): Raw bytes of the encrypted, and compressed uids & weights values for setting weights.\r\n        target_round (int): Drand round number when weights have to be revealed. Based on Drand Quicknet network.\r\n    \"\"\"\r\n# function logic\r\nreturn commit, target_round\r\n```\r\n\r\n\r\nTo test the function in your terminal:\r\n1. Spin up a local subtensor branch which includes CR3\r\n2. Create a subnet with netuid 1 (or replace the netuid with the one you create)\r\n```bash\r\nmkdir test\r\ncd test\r\npython3 -m venv venv\r\n. venv/bin/activate\r\npip install maturin bittensor ipython\r\ncd ..\r\n\r\nmaturin develop\r\nipython\r\n\r\n```\r\n\r\nthen copy-past to ipython\r\n```python\r\nimport numpy as np\r\nimport bittensor_commit_reveal as crv3\r\nfrom bittensor.utils.weight_utils import convert_weights_and_uids_for_emit\r\nimport bittensor as bt\r\n\r\nuids = [1, 3]\r\nweights = [0.3, 0.7]\r\nversion_key = 843000\r\nnetuid = 1\r\n\r\nsubtensor = bt.Subtensor(\"local\")\r\n\r\nsubnet_reveal_period_epochs = subtensor.get_subnet_reveal_period_epochs(\r\n        netuid=netuid\r\n    )\r\ntempo = subtensor.get_subnet_hyperparameters(netuid).tempo\r\ncurrent_block = subtensor.get_current_block()\r\n\r\nif isinstance(uids, list):\r\n    uids = np.array(uids, dtype=np.int64)\r\nif isinstance(weights, list):\r\n    weights = np.array(weights, dtype=np.float32)\r\n\r\nuids, weights = convert_weights_and_uids_for_emit(uids, weights)\r\n\r\nprint(crv3.get_encrypted_commit(uids, weights, version_key, tempo, current_block, netuid, subnet_reveal_period_epochs))\r\n```\r\nexpected result\r\n```python\r\n(b'\\xb9\\x96\\xe4\\xd1\\xfd\\xabm\\x8cc\\xeb\\xe3W\\r\\xc7J\\xb4\\xea\\xa9\\xd5u}OG~\\xae\\xcc\\x9a@\\xdf\\xee\\x16\\xa9\\x0c\\x8d7\\xd6\\xea_c\\xc2<\\xcb\\xa6\\xbe^K\\x97|\\x16\\xc6|;\\xb5Z\\x97\\xc9\\xb4\\x8em\\xf1hv\\x16\\xcf\\xea\\x1e7\\xbe-Z\\xe7e\\x1f$\\n\\xf8\\x08\\xcb\\x18.\\x94V\\xa3\\xd7\\xcd\\xc9\\x04F::\\t)Z\\xc6\\xbey \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xaaN\\xe8\\xe97\\x8f\\x99\\xbb\"\\xdf\\xad\\xf6\\\\#%\\xca:\\xc2\\xce\\xf9\\x96\\x9d\\x8f\\x9d\\xa2\\xad\\xfd\\xc73j\\x16\\xda \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x84*\\xb0\\rw\\xad\\xdc\\x02o\\xf7i)\\xbb^\\x99e\\xe2\\\\\\xee\\x02NR+-Q\\xcd \\xf7\\x02\\x83\\xffV>\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00*\\x13wXb\\x93\\xc5\"F\\x17F\\x05\\xcd\\x15\\xb0=\\xe2d\\xfco3\\x16\\xfd\\xe9\\xc6\\xbc\\xd1\\xb3Y\\x97\\xf9\\xb9!\\x01\\x0c\\x00\\x00\\x00\\x00\\x00\\x00\\x00X\\xa2\\x8c\\x18Wkq\\xe5\\xe6\\x1c2\\x86\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\x00AES_GCM_', 13300875)\r\n```\r\n\r\nTo test this in a local subnet:\r\n1. Spin up a local node based on the subtensor branch `spiigot/add-pallet-drand` using command `./scripts/localnet.sh False`\r\n2. Create a subnet\r\n3. Change the following hyperparameters:\r\n    - `commit_reveal_weights_enabled` -> `True`\r\n    - `tempo` -> 10 (keep in mind that you need to provide this as `tempo` argument to `get_encrypted_commit` function. Use polkadot website for this action.)\r\n    - `weights_rate_limit` -> 0 (Reduces the limit when you can set weights.)\r\n4. Register 1 or more wallets to the subnet\r\n5. Create and activate python virtual environment (`python3 -m venv venv && . venv/bin/activate`)\r\n6. Checkout bittensor `feat/roman/cr-v-3` branch.\r\n7. Install bittensor `pip install -e .`\r\n8. Cd to directory you cloned `https://github.com/opentensor/bittensor-commit-reveal/tree/staging` (FFI for CRv3).\r\n9. Install the `maturin` python package and build/install `bittensor-commit-reveal` package to your env using the command `pip install maturin && maturin develop`\r\n10. Run the following script within your python environment:\r\n```python\r\nimport requests\r\nimport time\r\n\r\nfrom bittensor import Subtensor, logging, Wallet\r\n\r\nDRAND_API_BASE_URL_Q = \"https://api.drand.sh/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971\"\r\n\r\nlogging.set_info()\r\n\r\n\r\ndef get_drand_info(uri):\r\n    \"\"\"Fetch Drand network information.\"\"\"\r\n    url = f\"{uri}/info\"\r\n    response = requests.get(url)\r\n    response.raise_for_status()\r\n    return response.json()\r\n\r\n\r\ndef get_current_round(info):\r\n    \"\"\"Calculate the current round based on genesis_time and period.\"\"\"\r\n    current_time = int(time.time())\r\n    genesis_time = info[\"genesis_time\"]\r\n    period = info[\"period\"]\r\n    return (current_time - genesis_time) // period + 1\r\n\r\n\r\ndef main():\r\n    sub = Subtensor(\"local\")\r\n\r\n    uids = [0]\r\n    weights = [0.7]\r\n\r\n    wallet = Wallet()  # corresponds the subnet owner wallet\r\n\r\n    result, message = sub.set_weights(\r\n        wallet=wallet,\r\n        netuid=1,\r\n        uids=uids,\r\n        weights=weights,\r\n        wait_for_inclusion=True,\r\n        wait_for_finalization=True,\r\n    )\r\n    logging.info(f\">>> Success, [blue]{result}[/blue], message: [magenta]{message}[/magenta]\")\r\n\r\n    reveal_round = int(message.split(\":\")[-1])\r\n    # Fetch Drand network info\r\n    for uri in [DRAND_API_BASE_URL_Q]:\r\n        print(f\"Fetching info from {uri}...\")\r\n        info = get_drand_info(uri)\r\n        print(\"Info:\", info)\r\n\r\n        while True:\r\n            time.sleep(info[\"period\"])\r\n            current_round = get_current_round(info)\r\n            logging.console.info(f\"Current round: [yellow]{current_round}[/yellow]\")\r\n            if current_round == reveal_round:\r\n                logging.console.warning(f\">>> It's time to reveal the target round: [blue]{reveal_round}[/blue]\")\r\n\r\n                break\r\n\r\n\r\nif __name__ == \"__main__\":\r\n    main()\r\n```\r\n11. Wait until your target_round comes.\r\n\r\n12. Check your weights with the following code:\r\n\r\n```python\r\nimport bittensor as bt\r\n\r\nsub = bt.Subtensor(network=\"local\")\r\n\r\nnetuid = 1  # your created subnet's netuid\r\n\r\nprint(sub.weights(netuid=netuid))\r\n```\r\n13. You can now see the same weights which you committed earlier\n",
    "bugtrack_url": null,
    "license": null,
    "summary": null,
    "version": "0.1.0",
    "project_urls": {
        "Repository": "https://github.com/opentensor/bittensor-commit-reveal"
    },
    "split_keywords": [
        "substrate",
        " scale",
        " codec",
        " bittensor",
        " commit reveal"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "765377d8490726b253e06a9c29a89e3a117494c73a02e05230bbb8f9fa157a58",
                "md5": "0441f1f8a06511ab8bee00a7d13701c6",
                "sha256": "2e628b052ebdbd6893eb996a0d03b4c5e0823e42ee410ff5066018700a35539a"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "0441f1f8a06511ab8bee00a7d13701c6",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 711939,
            "upload_time": "2024-12-13T00:00:56",
            "upload_time_iso_8601": "2024-12-13T00:00:56.501889Z",
            "url": "https://files.pythonhosted.org/packages/76/53/77d8490726b253e06a9c29a89e3a117494c73a02e05230bbb8f9fa157a58/bittensor_commit_reveal-0.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "567a6cc644423a9e0ac13327b3ff38b168042f85406151e436f8f67485a5be04",
                "md5": "79ff7ce6970a6e5d334dc4b4d6d5dba8",
                "sha256": "245a7e0defb79f6a45c243f72739ee5c58840cba51342d28322c6d7a73f475b9"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "79ff7ce6970a6e5d334dc4b4d6d5dba8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 552388,
            "upload_time": "2024-12-13T00:01:08",
            "upload_time_iso_8601": "2024-12-13T00:01:08.902652Z",
            "url": "https://files.pythonhosted.org/packages/56/7a/6cc644423a9e0ac13327b3ff38b168042f85406151e436f8f67485a5be04/bittensor_commit_reveal-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2dcffcc202fb07594933f759287ceea9e891cbb8ce779f24cc84311af2b50802",
                "md5": "f83b597e476000da0044fcb0a33f0bf5",
                "sha256": "2bb23935ac60a981bfb3d83397b83e858c0b69a11806969cf56486f5ebc90943"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f83b597e476000da0044fcb0a33f0bf5",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 493021,
            "upload_time": "2024-12-13T00:01:25",
            "upload_time_iso_8601": "2024-12-13T00:01:25.404037Z",
            "url": "https://files.pythonhosted.org/packages/2d/cf/fcc202fb07594933f759287ceea9e891cbb8ce779f24cc84311af2b50802/bittensor_commit_reveal-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c6bd0e438e505036fda9370f352dc9a8f1ff7fa777a8b07479b9874f5742e7b4",
                "md5": "7161610af9877d45380577f0bbfb9335",
                "sha256": "4917b215c24b10bd80c84db921113b9cd1346ca7dcaca75e286905ede81a3b18"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7161610af9877d45380577f0bbfb9335",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 493236,
            "upload_time": "2024-12-13T00:01:20",
            "upload_time_iso_8601": "2024-12-13T00:01:20.209567Z",
            "url": "https://files.pythonhosted.org/packages/c6/bd/0e438e505036fda9370f352dc9a8f1ff7fa777a8b07479b9874f5742e7b4/bittensor_commit_reveal-0.1.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2b7acded935634bf0a077e8f7454b47164e1b3e45064234eaf9722e6a35c1cbf",
                "md5": "9e7f8d77d1e87ec0769f9e8824a6c025",
                "sha256": "c46cee3e5fa5fc9e6f6a444793062855f40495c1a00b52df6508e4449ac5e89f"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "9e7f8d77d1e87ec0769f9e8824a6c025",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 711674,
            "upload_time": "2024-12-13T00:00:58",
            "upload_time_iso_8601": "2024-12-13T00:00:58.198291Z",
            "url": "https://files.pythonhosted.org/packages/2b/7a/cded935634bf0a077e8f7454b47164e1b3e45064234eaf9722e6a35c1cbf/bittensor_commit_reveal-0.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "06abea0f20581a786ec4b497bdaab8fb4a046c81d125820fc1ec4bfe79854f96",
                "md5": "e6efec5b3a03620c3460a1c8827aef4b",
                "sha256": "7d56407b879dcf82bdde5eaefede43c8891e122fefc03a32c77a063dfc52e0c8"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e6efec5b3a03620c3460a1c8827aef4b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 552162,
            "upload_time": "2024-12-13T00:01:11",
            "upload_time_iso_8601": "2024-12-13T00:01:11.547665Z",
            "url": "https://files.pythonhosted.org/packages/06/ab/ea0f20581a786ec4b497bdaab8fb4a046c81d125820fc1ec4bfe79854f96/bittensor_commit_reveal-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a83a7705ea18c3d61c8affc4696b8ab483bdb7e3d0bfdfb61ca1583a787ef1e0",
                "md5": "fab8898a91fb00af22f7dac6b9c79c68",
                "sha256": "8509250549b6f5c475a9150e941b28fc66e82f30b27fe078fd80fa840943bb7b"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fab8898a91fb00af22f7dac6b9c79c68",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 491259,
            "upload_time": "2024-12-13T00:01:28",
            "upload_time_iso_8601": "2024-12-13T00:01:28.178165Z",
            "url": "https://files.pythonhosted.org/packages/a8/3a/7705ea18c3d61c8affc4696b8ab483bdb7e3d0bfdfb61ca1583a787ef1e0/bittensor_commit_reveal-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "802102b400750c7d1d5ed081dc22c740e21e22fd72fbb18b72517d5687eca8bd",
                "md5": "0d10a76890adbedd446aa5a1f48bc722",
                "sha256": "bed04f82f162121747cfd7f51bb5d625dda0bf763a0699054565f255d219a9c2"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "0d10a76890adbedd446aa5a1f48bc722",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 492612,
            "upload_time": "2024-12-13T00:01:21",
            "upload_time_iso_8601": "2024-12-13T00:01:21.499955Z",
            "url": "https://files.pythonhosted.org/packages/80/21/02b400750c7d1d5ed081dc22c740e21e22fd72fbb18b72517d5687eca8bd/bittensor_commit_reveal-0.1.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9a82bf02fda4c7bfbe6830709476cf1893ad4e7b591c4e1f62eab2abbfcd0106",
                "md5": "880486d15da84bbdd27d242206430943",
                "sha256": "25af2d9c82cacc4278095460493430d36070cb2843c0aa54b1c563788d0742eb"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "880486d15da84bbdd27d242206430943",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 712159,
            "upload_time": "2024-12-13T00:00:59",
            "upload_time_iso_8601": "2024-12-13T00:00:59.599191Z",
            "url": "https://files.pythonhosted.org/packages/9a/82/bf02fda4c7bfbe6830709476cf1893ad4e7b591c4e1f62eab2abbfcd0106/bittensor_commit_reveal-0.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "31d17e41e52251c277bf0bebe0fcb3f700e6faf6a488c9cefa8b8fb2bae42cee",
                "md5": "36050318cde60e20ab325379e6813dc2",
                "sha256": "f8f530793274698aaf4ac7cc8f24e915749d8156df8302c9e1e16446177b429d"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "36050318cde60e20ab325379e6813dc2",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 551180,
            "upload_time": "2024-12-13T00:01:13",
            "upload_time_iso_8601": "2024-12-13T00:01:13.890023Z",
            "url": "https://files.pythonhosted.org/packages/31/d1/7e41e52251c277bf0bebe0fcb3f700e6faf6a488c9cefa8b8fb2bae42cee/bittensor_commit_reveal-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fa20272b35206c52db8b385ff7f2a6579ca700fa996c147e4533cd4d323446a7",
                "md5": "792890d0107736f216725b3f937569dc",
                "sha256": "e52955d652b61f091310e2b9b232d26b9e586a928e3b414a09a1b6615e9cc7a0"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "792890d0107736f216725b3f937569dc",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 491231,
            "upload_time": "2024-12-13T00:01:29",
            "upload_time_iso_8601": "2024-12-13T00:01:29.554131Z",
            "url": "https://files.pythonhosted.org/packages/fa/20/272b35206c52db8b385ff7f2a6579ca700fa996c147e4533cd4d323446a7/bittensor_commit_reveal-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ee0502329c66db0970569a31779c0effcee67a1f6bb20a12ccbd667123d89f3f",
                "md5": "6c424ae2864f41c79c1a7ad09b675b22",
                "sha256": "7be8c8f79dea2e137f5add6ee4711447c4f5d43668be26616ab7c1cacf317e07"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "6c424ae2864f41c79c1a7ad09b675b22",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 492469,
            "upload_time": "2024-12-13T00:01:22",
            "upload_time_iso_8601": "2024-12-13T00:01:22.903857Z",
            "url": "https://files.pythonhosted.org/packages/ee/05/02329c66db0970569a31779c0effcee67a1f6bb20a12ccbd667123d89f3f/bittensor_commit_reveal-0.1.0-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f447ca9a347273e6993b8775a2a04e9d3df5569aaab46dc95247bf0c1f1b5ea1",
                "md5": "66deeff5f87f184428122815d7715f47",
                "sha256": "b88ecb6a0989c2200486e29419a8e7d3b3f7918bdbde4ec04dbb4464abdee08f"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "66deeff5f87f184428122815d7715f47",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 711920,
            "upload_time": "2024-12-13T00:01:03",
            "upload_time_iso_8601": "2024-12-13T00:01:03.001946Z",
            "url": "https://files.pythonhosted.org/packages/f4/47/ca9a347273e6993b8775a2a04e9d3df5569aaab46dc95247bf0c1f1b5ea1/bittensor_commit_reveal-0.1.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fe87cbef0fa4b4d3159030d61d09da5a09181c0ca8f25bbb451437cb50627ac7",
                "md5": "07a2963afc9adef6ed2362d0b9b99aaa",
                "sha256": "4ac015f9eefa9dbddd2875cd7214e3a0bc2e394a2915772e655bdcc5c0af67de"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "07a2963afc9adef6ed2362d0b9b99aaa",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 551137,
            "upload_time": "2024-12-13T00:01:15",
            "upload_time_iso_8601": "2024-12-13T00:01:15.080516Z",
            "url": "https://files.pythonhosted.org/packages/fe/87/cbef0fa4b4d3159030d61d09da5a09181c0ca8f25bbb451437cb50627ac7/bittensor_commit_reveal-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "be09e3aef17e44b95953060f9c7ceefd90f5eaee739991e789f688b479ab5291",
                "md5": "69af8fad4cdd4914347eb9584ba6271e",
                "sha256": "18062ccab9bd8c66eee741bab9c047ec302eede563b16d4a960bcef6ef4ab368"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "69af8fad4cdd4914347eb9584ba6271e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 712098,
            "upload_time": "2024-12-13T00:01:04",
            "upload_time_iso_8601": "2024-12-13T00:01:04.371317Z",
            "url": "https://files.pythonhosted.org/packages/be/09/e3aef17e44b95953060f9c7ceefd90f5eaee739991e789f688b479ab5291/bittensor_commit_reveal-0.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6daeebd02e24c66d400684db9534000d0108aa48d3474e6af2b26864acaac141",
                "md5": "aed75f3a44c441d25e6a8ba86c970354",
                "sha256": "957eff5b5b760dd8267d5f3c23c1aab4155505aa15bc06e044ffca483979f3d1"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "aed75f3a44c441d25e6a8ba86c970354",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 552565,
            "upload_time": "2024-12-13T00:01:16",
            "upload_time_iso_8601": "2024-12-13T00:01:16.412713Z",
            "url": "https://files.pythonhosted.org/packages/6d/ae/ebd02e24c66d400684db9534000d0108aa48d3474e6af2b26864acaac141/bittensor_commit_reveal-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "11a498ad5a74461960ec4c33334fd65c9445b38a57f2a07a2b3805355cf7039e",
                "md5": "8d8db110e379d4ba3c8a2115dadbb1ef",
                "sha256": "df0ef502f07804bff843a7e6318f95b9a9ca5bcc9c75e501040202b38d09d8b5"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "8d8db110e379d4ba3c8a2115dadbb1ef",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.9",
            "size": 712315,
            "upload_time": "2024-12-13T00:01:05",
            "upload_time_iso_8601": "2024-12-13T00:01:05.649762Z",
            "url": "https://files.pythonhosted.org/packages/11/a4/98ad5a74461960ec4c33334fd65c9445b38a57f2a07a2b3805355cf7039e/bittensor_commit_reveal-0.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "be7ea4381b45757a67fc61cf7cf16b17c235f64962013d692a78c777140330a9",
                "md5": "c558fa70ab5e14647a685521ddb9fe83",
                "sha256": "a8706ae43e3455913d210c7ab5fc0110595e45b8fa3964441e2842fc7975aec3"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c558fa70ab5e14647a685521ddb9fe83",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.9",
            "size": 553449,
            "upload_time": "2024-12-13T00:01:18",
            "upload_time_iso_8601": "2024-12-13T00:01:18.969942Z",
            "url": "https://files.pythonhosted.org/packages/be/7e/a4381b45757a67fc61cf7cf16b17c235f64962013d692a78c777140330a9/bittensor_commit_reveal-0.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0193f6361d6d617f1620f1b642308384d7f22c7917c169b821ddb3a90856a0c9",
                "md5": "75256b8f788628b606308b2e28a15d2e",
                "sha256": "1c8bb8d77f6279988902c5c28361cc460167829c63ffa8d788209f8810933211"
            },
            "downloads": -1,
            "filename": "bittensor_commit_reveal-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "75256b8f788628b606308b2e28a15d2e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 23249,
            "upload_time": "2024-12-13T00:01:30",
            "upload_time_iso_8601": "2024-12-13T00:01:30.681580Z",
            "url": "https://files.pythonhosted.org/packages/01/93/f6361d6d617f1620f1b642308384d7f22c7917c169b821ddb3a90856a0c9/bittensor_commit_reveal-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-13 00:01:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "opentensor",
    "github_project": "bittensor-commit-reveal",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "circle": true,
    "lcname": "bittensor-commit-reveal"
}
        
Elapsed time: 1.02246s