bittensor-drand


Namebittensor-drand JSON
Version 1.0.0 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2025-08-11 17:06:55
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords substrate scale codec bittensor commit reveal drand tle
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Usage
Python package `bittensor_drand` has one function.

```python
from bittensor_drand import get_encrypted_commit
```

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_drand 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-drand",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "Cortex Team <cortex@opentensor.dev>",
    "keywords": "substrate, scale, codec, bittensor, commit reveal, drand, TLE",
    "author": null,
    "author_email": "Roman Chkhaidze <r@latent.to>",
    "download_url": "https://files.pythonhosted.org/packages/59/2e/7994f0d84945837fd9cd027ad93aba00e1936021d79a862133f0e1c25555/bittensor_drand-1.0.0.tar.gz",
    "platform": null,
    "description": "# Usage\r\nPython package `bittensor_drand` has one function.\r\n\r\n```python\r\nfrom bittensor_drand import get_encrypted_commit\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_drand 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": "1.0.0",
    "project_urls": {
        "Repository": "https://github.com/opentensor/bittensor-drand"
    },
    "split_keywords": [
        "substrate",
        " scale",
        " codec",
        " bittensor",
        " commit reveal",
        " drand",
        " tle"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e2f68a0cd01ad40b6c0afeebc11f46852e7871ec489e11eda298e5bdcd621a81",
                "md5": "bc298973697d5f8824fcb8250473eb5d",
                "sha256": "a173a64cd8e10c56feb75e8f32357ea25dec02a64044055b1dbe6627e3408160"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp310-cp310-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bc298973697d5f8824fcb8250473eb5d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1931545,
            "upload_time": "2025-08-11T17:06:48",
            "upload_time_iso_8601": "2025-08-11T17:06:48.479812Z",
            "url": "https://files.pythonhosted.org/packages/e2/f6/8a0cd01ad40b6c0afeebc11f46852e7871ec489e11eda298e5bdcd621a81/bittensor_drand-1.0.0-cp310-cp310-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ef692d0bee0efdd4ce24075f4b4b10bbd537a3eedf6d01e133a9e4499ac12308",
                "md5": "7d9c4eae7e2efa546a2ba1bd97a1c192",
                "sha256": "27693bbe739e7483d322fcc1ba135bbe09793153041d8f99278ba97044fed657"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7d9c4eae7e2efa546a2ba1bd97a1c192",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1835003,
            "upload_time": "2025-08-11T17:06:42",
            "upload_time_iso_8601": "2025-08-11T17:06:42.545272Z",
            "url": "https://files.pythonhosted.org/packages/ef/69/2d0bee0efdd4ce24075f4b4b10bbd537a3eedf6d01e133a9e4499ac12308/bittensor_drand-1.0.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "804e86111ac9f7f2b56d0a59c7861a93107f047c4f2f4247831afa7628a34fb3",
                "md5": "959a3f63f0a7f9eb13433eb017dab462",
                "sha256": "b51e2ba66a3f6a565e7d42356b4d390952849604cd8ade924fa78d30dc68995d"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "959a3f63f0a7f9eb13433eb017dab462",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 2066584,
            "upload_time": "2025-08-11T17:06:17",
            "upload_time_iso_8601": "2025-08-11T17:06:17.783767Z",
            "url": "https://files.pythonhosted.org/packages/80/4e/86111ac9f7f2b56d0a59c7861a93107f047c4f2f4247831afa7628a34fb3/bittensor_drand-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "71fa117b99cd6b4595cf1a95b74b4a2f516ed7c97ce9800628eb7f8f63b9a2d8",
                "md5": "6b252f40c3208689325e8e955adb108a",
                "sha256": "5df483bf36107cfb8179e73f32e7cb881aad6693d8055624830617d60a7539e0"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "6b252f40c3208689325e8e955adb108a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 2172524,
            "upload_time": "2025-08-11T17:06:24",
            "upload_time_iso_8601": "2025-08-11T17:06:24.300241Z",
            "url": "https://files.pythonhosted.org/packages/71/fa/117b99cd6b4595cf1a95b74b4a2f516ed7c97ce9800628eb7f8f63b9a2d8/bittensor_drand-1.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "08a3099b13f39cc1ed00de97b91474d3647466c2965fef8cb4e48c3bf28f1bdf",
                "md5": "5f6074a4f9d4039bd54ebc25da6aaff3",
                "sha256": "fd0c8bbcd7034cacdc60ad7e30fcf2ef0d8f3d9df4ae77d568dccb085cb6c1c0"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5f6074a4f9d4039bd54ebc25da6aaff3",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 2105045,
            "upload_time": "2025-08-11T17:06:33",
            "upload_time_iso_8601": "2025-08-11T17:06:33.615298Z",
            "url": "https://files.pythonhosted.org/packages/08/a3/099b13f39cc1ed00de97b91474d3647466c2965fef8cb4e48c3bf28f1bdf/bittensor_drand-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "831d019f9bc0dc62518fe5ec884a956206ae5d0d0dddb32b13e9b0adba285a91",
                "md5": "c7be83bcac4d628da0a3820cca8465d8",
                "sha256": "6c4eb6707fa3ed541a7cb7eec749c3ed16d2ea2e5f0617abb5f9f669ab84e291"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c7be83bcac4d628da0a3820cca8465d8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1931464,
            "upload_time": "2025-08-11T17:06:49",
            "upload_time_iso_8601": "2025-08-11T17:06:49.547183Z",
            "url": "https://files.pythonhosted.org/packages/83/1d/019f9bc0dc62518fe5ec884a956206ae5d0d0dddb32b13e9b0adba285a91/bittensor_drand-1.0.0-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f4cf4b8edb83d7a802b94f33cfb823ade5517316cf409be6bc922161cf25b0be",
                "md5": "d7cdd9005b170bb56cfac6e3bc010f7f",
                "sha256": "afb29ba126313f16e9637cd6ce3c45dff1484536d3d0a73a9ebada4fd2568ffa"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d7cdd9005b170bb56cfac6e3bc010f7f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1834894,
            "upload_time": "2025-08-11T17:06:43",
            "upload_time_iso_8601": "2025-08-11T17:06:43.702482Z",
            "url": "https://files.pythonhosted.org/packages/f4/cf/4b8edb83d7a802b94f33cfb823ade5517316cf409be6bc922161cf25b0be/bittensor_drand-1.0.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "83188256905df075e64a28c84f63a62c39e3e26c2943ad45946093a333648a57",
                "md5": "9d46ee2bc2f7a00ed29cf873dceeecd8",
                "sha256": "bd27a7e906c9fd58e4d158e7eb7c56c7026255516510223f4e964142b8f8010b"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "9d46ee2bc2f7a00ed29cf873dceeecd8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 2066528,
            "upload_time": "2025-08-11T17:06:19",
            "upload_time_iso_8601": "2025-08-11T17:06:19.428719Z",
            "url": "https://files.pythonhosted.org/packages/83/18/8256905df075e64a28c84f63a62c39e3e26c2943ad45946093a333648a57/bittensor_drand-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "88d4b088bc7bfba0841e8df53b22ef67c05eee89f7c7c35a89ca0139be4b2cf9",
                "md5": "1e60dacb8066c62fd2cb198cc11d5983",
                "sha256": "4af4d55d1ac9e8c050ea4884afa6350f631b92673afa0b8fe65711f126d853bc"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "1e60dacb8066c62fd2cb198cc11d5983",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 2172674,
            "upload_time": "2025-08-11T17:06:25",
            "upload_time_iso_8601": "2025-08-11T17:06:25.729068Z",
            "url": "https://files.pythonhosted.org/packages/88/d4/b088bc7bfba0841e8df53b22ef67c05eee89f7c7c35a89ca0139be4b2cf9/bittensor_drand-1.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fdc5f30ac01e2b1f2ea70ad90a567a91449f33c6bd4fcfd4b9423527b384363c",
                "md5": "84eab619d53fd1f85ddd1e2cad45fb5c",
                "sha256": "ac06a66b9435229befb54f7f7a6d22a16e179e8cbc26c3fab816d371bc17f41e"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "84eab619d53fd1f85ddd1e2cad45fb5c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 2104748,
            "upload_time": "2025-08-11T17:06:35",
            "upload_time_iso_8601": "2025-08-11T17:06:35.852146Z",
            "url": "https://files.pythonhosted.org/packages/fd/c5/f30ac01e2b1f2ea70ad90a567a91449f33c6bd4fcfd4b9423527b384363c/bittensor_drand-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6e607f67116ff0479e4800853aa0ac4a2114442be65f98c6531e131ce23df090",
                "md5": "5eefd5289135bf5b8b107784a1f99ce2",
                "sha256": "2f3a7f878689f4c996db33ba3a8a336dd4c4f797fb4cd69176f75da13e770794"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp312-cp312-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5eefd5289135bf5b8b107784a1f99ce2",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1930096,
            "upload_time": "2025-08-11T17:06:50",
            "upload_time_iso_8601": "2025-08-11T17:06:50.716699Z",
            "url": "https://files.pythonhosted.org/packages/6e/60/7f67116ff0479e4800853aa0ac4a2114442be65f98c6531e131ce23df090/bittensor_drand-1.0.0-cp312-cp312-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6adb58ac7d01e26a787247e5dbde26903f6ae3755304bf1429c2d4a8b6ed0bb2",
                "md5": "a338b5a7a2ca5265417db8ebb62d09e0",
                "sha256": "eddf11a9e352e06558435f5938b3f859ff38a41ef947547d461d07221e2c0ba7"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "a338b5a7a2ca5265417db8ebb62d09e0",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1834271,
            "upload_time": "2025-08-11T17:06:44",
            "upload_time_iso_8601": "2025-08-11T17:06:44.808663Z",
            "url": "https://files.pythonhosted.org/packages/6a/db/58ac7d01e26a787247e5dbde26903f6ae3755304bf1429c2d4a8b6ed0bb2/bittensor_drand-1.0.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "455a5050328a65c8ea0af44eb508a3a9d1e31587ed6814a62b18de979a7e384b",
                "md5": "492fe672a3162fb721dd94ff5768f02b",
                "sha256": "d3c1a78034ea4a9eb3c5b607ed4746c85051107fc742c782d3291574a249a83d"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "492fe672a3162fb721dd94ff5768f02b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 2065877,
            "upload_time": "2025-08-11T17:06:20",
            "upload_time_iso_8601": "2025-08-11T17:06:20.546811Z",
            "url": "https://files.pythonhosted.org/packages/45/5a/5050328a65c8ea0af44eb508a3a9d1e31587ed6814a62b18de979a7e384b/bittensor_drand-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7d0ab3284b9acdd377b065233296b8fcd8703bfcef2a5f64b52dc67b7b869e9e",
                "md5": "e9df7611c79652963eceb9801f586cf6",
                "sha256": "56436a880567f83c12f7fbd4ea4806b73487fa3c723c376694f966ab1311bfc9"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "e9df7611c79652963eceb9801f586cf6",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 2169956,
            "upload_time": "2025-08-11T17:06:27",
            "upload_time_iso_8601": "2025-08-11T17:06:27.295703Z",
            "url": "https://files.pythonhosted.org/packages/7d/0a/b3284b9acdd377b065233296b8fcd8703bfcef2a5f64b52dc67b7b869e9e/bittensor_drand-1.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "971cee1602728fffeafcc6b22a5f6d3da7c51d11777a6a28773ba4dcc485f1b8",
                "md5": "bec836f784582cfc92147ceb15073837",
                "sha256": "2d9f4960acabcb494de74790bf94c8b0d36efed4f21f5388690a25ecb48b1b8a"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bec836f784582cfc92147ceb15073837",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 2106980,
            "upload_time": "2025-08-11T17:06:37",
            "upload_time_iso_8601": "2025-08-11T17:06:37.767770Z",
            "url": "https://files.pythonhosted.org/packages/97/1c/ee1602728fffeafcc6b22a5f6d3da7c51d11777a6a28773ba4dcc485f1b8/bittensor_drand-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "835bc399e2510bc26a4b8611ca4d65efd91a45c041655772ebe1d474c339d835",
                "md5": "9144933cdead1dc00a7d202dd3073b09",
                "sha256": "67ddbb91192f5321d18e9e9df622d110b74fcf35fa5d4faf3adcd19472a3c6d1"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp313-cp313-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9144933cdead1dc00a7d202dd3073b09",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1929385,
            "upload_time": "2025-08-11T17:06:52",
            "upload_time_iso_8601": "2025-08-11T17:06:52.716821Z",
            "url": "https://files.pythonhosted.org/packages/83/5b/c399e2510bc26a4b8611ca4d65efd91a45c041655772ebe1d474c339d835/bittensor_drand-1.0.0-cp313-cp313-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "228b9e679bb9870a9cf6ef6280defb4c251e2a6915e2f4bc49845c4fcfefe41b",
                "md5": "60ffe5bea13a8202217b041b1df30bb2",
                "sha256": "bd4349e7e60f7fa016db7681e66edaced1fad53dfce988ee9451f2a1bbf206da"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "60ffe5bea13a8202217b041b1df30bb2",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1834022,
            "upload_time": "2025-08-11T17:06:46",
            "upload_time_iso_8601": "2025-08-11T17:06:46.227318Z",
            "url": "https://files.pythonhosted.org/packages/22/8b/9e679bb9870a9cf6ef6280defb4c251e2a6915e2f4bc49845c4fcfefe41b/bittensor_drand-1.0.0-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5cb260f7adcaa5d1fabde0c7db5de8523b633280d8946ed1dde7b15b0f382a05",
                "md5": "95fc4b1377c1f9d1d86f034379b690fe",
                "sha256": "3666af0efdceaccb4964bbdf6b6223bfed8e8e12ced4d8038f7b653ce62e88e7"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "95fc4b1377c1f9d1d86f034379b690fe",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 2065494,
            "upload_time": "2025-08-11T17:06:21",
            "upload_time_iso_8601": "2025-08-11T17:06:21.717706Z",
            "url": "https://files.pythonhosted.org/packages/5c/b2/60f7adcaa5d1fabde0c7db5de8523b633280d8946ed1dde7b15b0f382a05/bittensor_drand-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fee0a46a89d69f87d6f431f437ba63ef0c61d6e7fbb4a983cbb9cf5f66200660",
                "md5": "3ad372647b9e8fd5ac6f88b1e6c6d954",
                "sha256": "63842f256c187e808271a491e59419a68574580e555bd230c75fa4259957774c"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "3ad372647b9e8fd5ac6f88b1e6c6d954",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 2168963,
            "upload_time": "2025-08-11T17:06:28",
            "upload_time_iso_8601": "2025-08-11T17:06:28.700068Z",
            "url": "https://files.pythonhosted.org/packages/fe/e0/a46a89d69f87d6f431f437ba63ef0c61d6e7fbb4a983cbb9cf5f66200660/bittensor_drand-1.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d63d0eb52250acc953f97c0bef4f6d28a1cebd463ee0fd5a603fbff8cf6eeac8",
                "md5": "acf07e4ab0000ae6b02ac4eb3b1a52e8",
                "sha256": "c4513b5543c1c16691d64f37ae2dc43f51b4d11f9d15da56884d5db9ffcc9a17"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "acf07e4ab0000ae6b02ac4eb3b1a52e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 2106029,
            "upload_time": "2025-08-11T17:06:39",
            "upload_time_iso_8601": "2025-08-11T17:06:39.086594Z",
            "url": "https://files.pythonhosted.org/packages/d6/3d/0eb52250acc953f97c0bef4f6d28a1cebd463ee0fd5a603fbff8cf6eeac8/bittensor_drand-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "548d2f0cd53654c9f409ca446b320114b56a6fa115f2c930cabbbdf703287e27",
                "md5": "5a5d9522ea90e3f9a4766af96c90fe65",
                "sha256": "479faef0e35bea8e8edc8a7f11fb6c5df081549ceed0f1808d1f6e978654b792"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp39-cp39-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5a5d9522ea90e3f9a4766af96c90fe65",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1931374,
            "upload_time": "2025-08-11T17:06:53",
            "upload_time_iso_8601": "2025-08-11T17:06:53.812759Z",
            "url": "https://files.pythonhosted.org/packages/54/8d/2f0cd53654c9f409ca446b320114b56a6fa115f2c930cabbbdf703287e27/bittensor_drand-1.0.0-cp39-cp39-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bbe5e45d01887cd4f45ba7e38ea395b95f6a82af436264ac9987cb8edd0680eb",
                "md5": "95c5677409a93f084692c031021a1961",
                "sha256": "7241196dbc62d61a2f7a9cf40d5538c56cb71dfb3b8b8370d1e8c432ccb88c52"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "95c5677409a93f084692c031021a1961",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1834792,
            "upload_time": "2025-08-11T17:06:47",
            "upload_time_iso_8601": "2025-08-11T17:06:47.371767Z",
            "url": "https://files.pythonhosted.org/packages/bb/e5/e45d01887cd4f45ba7e38ea395b95f6a82af436264ac9987cb8edd0680eb/bittensor_drand-1.0.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "385d640a9b2fae15dad871ff062e46d662bf1f02f73b8d041c72eef417c5dfad",
                "md5": "686c4e260116f0d07a66d20007acd2ee",
                "sha256": "23561eda2fd3486e3423a4ad1dfbc2b20cd3d5185f1478286490ffc020e34658"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "686c4e260116f0d07a66d20007acd2ee",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 2066375,
            "upload_time": "2025-08-11T17:06:22",
            "upload_time_iso_8601": "2025-08-11T17:06:22.915927Z",
            "url": "https://files.pythonhosted.org/packages/38/5d/640a9b2fae15dad871ff062e46d662bf1f02f73b8d041c72eef417c5dfad/bittensor_drand-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "31d131ebcb43983cd7913e5fa620ab6ef86320efded30458e4be5a22b6d0abe8",
                "md5": "765bf7005829da165d64c485d5a1c8f2",
                "sha256": "49c9976ea35217c22599a2cfc1b45dca632b6f53d5b19b77dae5490a6cddf1f3"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "765bf7005829da165d64c485d5a1c8f2",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 2172565,
            "upload_time": "2025-08-11T17:06:31",
            "upload_time_iso_8601": "2025-08-11T17:06:31.684356Z",
            "url": "https://files.pythonhosted.org/packages/31/d1/31ebcb43983cd7913e5fa620ab6ef86320efded30458e4be5a22b6d0abe8/bittensor_drand-1.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bdef88933079bcb3095f06bdad388d15948e506cd42dcc145506e0ccfbfa3850",
                "md5": "578588627061bf323fe3d71a77abe87a",
                "sha256": "93e0d9c92c5c769cdcbc6e77ee4b7d4e0ffa22e80aaf2abaf2a50a195b80dac4"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "578588627061bf323fe3d71a77abe87a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 2104208,
            "upload_time": "2025-08-11T17:06:40",
            "upload_time_iso_8601": "2025-08-11T17:06:40.893438Z",
            "url": "https://files.pythonhosted.org/packages/bd/ef/88933079bcb3095f06bdad388d15948e506cd42dcc145506e0ccfbfa3850/bittensor_drand-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "592e7994f0d84945837fd9cd027ad93aba00e1936021d79a862133f0e1c25555",
                "md5": "edf94bdece6ae1f335f3aa856ecebec9",
                "sha256": "d309a19981d69e2bfc0ac27770c63531173fc4bb2a41483c9c60b6677c44a501"
            },
            "downloads": -1,
            "filename": "bittensor_drand-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "edf94bdece6ae1f335f3aa856ecebec9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 44924,
            "upload_time": "2025-08-11T17:06:55",
            "upload_time_iso_8601": "2025-08-11T17:06:55.042089Z",
            "url": "https://files.pythonhosted.org/packages/59/2e/7994f0d84945837fd9cd027ad93aba00e1936021d79a862133f0e1c25555/bittensor_drand-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-11 17:06:55",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "opentensor",
    "github_project": "bittensor-drand",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "circle": true,
    "lcname": "bittensor-drand"
}
        
Elapsed time: 2.09871s