# 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"
}