Skip to main content

Rust-backed Python library for generating timelock-encrypted weight commitments for Bittensor's commit-reveal mechanism using drand randomness.

Project description

bittensor-drand

Drand timelock encryption for Bittensor commit-reveal weights and general-purpose commitments. Rust core with Python bindings via PyO3.

What's new in 2.0

  • get_encrypted_commit is replaced by get_encrypted_commit_v2. The old modulo-based epoch math ((block + netuid + 1) / (tempo + 1)) is gone. The chain now uses a stateful epoch counter (SubnetEpochIndex), owner-triggered pending epochs, and configurable tempo. The new function simulates the chain's block_step pipeline to predict the exact reveal block.
  • Breaking change: get_encrypted_commit_v2 requires epoch schedule state instead of tempo + current_block + netuid. The SDK (bittensor>=11.0.0) provides this via subtensor.get_epoch_schedule_state(netuid).
  • Added encrypt_mlkem768 and mlkem_kdf_id for ML-KEM-768 + XChaCha20Poly1305 encryption.

Quick start

from bittensor_drand import get_encrypted_commit_v2

Installation

pip install bittensor-drand

For development (build from source):

git clone https://github.com/opentensor/bittensor-drand.git
cd bittensor-drand
python3 -m venv venv
. venv/bin/activate
pip install maturin bittensor
maturin develop

Usage: commit-reveal weights

Using the SDK (recommended)

The Bittensor SDK handles all the epoch state plumbing internally. You just call set_weights:

import bittensor as bt

sub = bt.Subtensor("local")  # or "finney" for mainnet
wallet = bt.Wallet()

result, message = sub.set_weights(
    wallet=wallet,
    netuid=1,
    uids=[0, 1, 2],
    weights=[0.5, 0.3, 0.2],
    wait_for_inclusion=True,
    wait_for_finalization=True,
)
print(f"Success: {result}, message: {message}")

Using bittensor_drand directly

If you need lower-level control (custom clients, miners, tooling):

import bittensor as bt
from bittensor_drand import get_encrypted_commit_v2

sub = bt.Subtensor("local")
netuid = 1
current_block = sub.get_current_block()

# Fetch epoch schedule state from chain
schedule = sub.get_epoch_schedule_state(netuid, block=current_block)
reveal_period = sub.get_subnet_reveal_period_epochs(netuid=netuid)

uids = [1, 3]
weights = [100, 200]  # u16 values after convert_weights_and_uids_for_emit
version_key = 843000
wallet = bt.Wallet()

commit_bytes, reveal_round = get_encrypted_commit_v2(
    uids=uids,
    weights=weights,
    version_key=version_key,
    last_epoch_block=schedule.last_epoch_block,
    pending_epoch_at=schedule.pending_epoch_at,
    subnet_epoch_index=schedule.subnet_epoch_index,
    tempo=schedule.tempo,
    blocks_since_last_step=schedule.blocks_since_last_step,
    current_block=current_block,
    subnet_reveal_period_epochs=reveal_period,
    block_time=12.0,
    hotkey=wallet.hotkey.public_key,
)

print(f"Encrypted commit: {len(commit_bytes)} bytes, reveal round: {reveal_round}")

General-purpose encryption

Encrypt a string for N blocks into the future

from bittensor_drand import get_encrypted_commitment

encrypted, reveal_round = get_encrypted_commitment(
    "my secret data",
    blocks_until_reveal=10,
    block_time=12.0,
)
print(f"Encrypted: {len(encrypted)} bytes, reveal at round {reveal_round}")

Encrypt / decrypt binary data (round-trip)

from bittensor_drand import encrypt, decrypt

encrypted, reveal_round = encrypt(b"binary payload", n_blocks=5, block_time=12.0)

# Later, after the reveal round has passed:
decrypted = decrypt(encrypted, no_errors=False)

Encrypt for a specific Drand round

from bittensor_drand import encrypt_at_round

encrypted, reveal_round = encrypt_at_round(b"payload", reveal_round=17200000)

Batch decryption with a pre-fetched signature

When decrypting multiple ciphertexts for the same round, fetch the signature once:

from bittensor_drand import decrypt_with_signature, get_signature_for_round

sig = get_signature_for_round(reveal_round=17200000)
plaintext = decrypt_with_signature(encrypted, sig)

ML-KEM-768 encryption

For post-quantum key encapsulation (used by the chain's NextKey rotation):

from bittensor_drand import encrypt_mlkem768, mlkem_kdf_id

# pk_bytes: 1184-byte ML-KEM-768 public key from NextKey storage
blob = encrypt_mlkem768(pk_bytes, b"plaintext", include_key_hash=True)

# Blob format (include_key_hash=True):
#   [key_hash(16)][u16 kem_len LE][kem_ct][nonce24][aead_ct]

kdf = mlkem_kdf_id()  # b"v1" — raw shared secret, no HKDF

Testing on a local subnet

  1. Start a local subtensor node with configurable tempo support:
LOCALNET_IMAGE_NAME=ghcr.io/opentensor/subtensor-localnet:pr-2638 ./scripts/localnet.sh
  1. Create a subnet and configure hyperparameters:

    • Set commit_reveal_weights_enabled to True
    • Set tempo to your desired value (e.g. 360)
    • Set weights_rate_limit to 0 (for faster testing)
  2. Register a wallet to the subnet.

  3. Run a weight-setting script:

import bittensor as bt
from bittensor import logging

logging.set_info()

sub = bt.Subtensor("local")
wallet = bt.Wallet()

result, message = sub.set_weights(
    wallet=wallet,
    netuid=1,
    uids=[0],
    weights=[1.0],
    wait_for_inclusion=True,
    wait_for_finalization=True,
)
logging.info(f"Result: {result}, message: {message}")
  1. Wait for the reveal epoch, then verify weights were applied:
import bittensor as bt

sub = bt.Subtensor("local")
print(sub.weights(netuid=1))

API reference

Function Description
get_encrypted_commit_v2(...) Encrypt weights for commit-reveal using stateful epoch model
get_encrypted_commitment(data, blocks, block_time) Timelock-encrypt a string
encrypt(data, n_blocks, block_time) Timelock-encrypt binary data
encrypt_at_round(data, reveal_round) Encrypt for a specific Drand round
decrypt(data, no_errors=True) Decrypt (auto-fetches Drand signature)
decrypt_with_signature(data, sig_hex) Decrypt with a pre-fetched signature
get_signature_for_round(round) Fetch Drand BLS signature for a round
get_latest_round() Get the latest Drand round number
encrypt_mlkem768(pk, plaintext, hash) ML-KEM-768 + XChaCha20Poly1305 encryption
mlkem_kdf_id() Returns KDF identifier (b"v1")

Build & test

pip install maturin
maturin develop
cargo test
pytest tests/ -v

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bittensor_drand-2.0.0.tar.gz (53.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

bittensor_drand-2.0.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

bittensor_drand-2.0.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (2.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

bittensor_drand-2.0.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

bittensor_drand-2.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

bittensor_drand-2.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (2.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

bittensor_drand-2.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

bittensor_drand-2.0.0-cp313-cp313-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

bittensor_drand-2.0.0-cp313-cp313-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

bittensor_drand-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

bittensor_drand-2.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (2.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

bittensor_drand-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

bittensor_drand-2.0.0-cp312-cp312-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

bittensor_drand-2.0.0-cp312-cp312-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

bittensor_drand-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

bittensor_drand-2.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (2.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

bittensor_drand-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

bittensor_drand-2.0.0-cp311-cp311-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

bittensor_drand-2.0.0-cp311-cp311-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

bittensor_drand-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

bittensor_drand-2.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (2.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

bittensor_drand-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

bittensor_drand-2.0.0-cp310-cp310-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

bittensor_drand-2.0.0-cp310-cp310-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file bittensor_drand-2.0.0.tar.gz.

File metadata

  • Download URL: bittensor_drand-2.0.0.tar.gz
  • Upload date:
  • Size: 53.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.14.0

File hashes

Hashes for bittensor_drand-2.0.0.tar.gz
Algorithm Hash digest
SHA256 517cd8cabb4634a980e26aaf85ac0a8481f62fefadc0499ddbadb6467ae030c7
MD5 c4d2e86bdeab5daee28c1770d3967d44
BLAKE2b-256 70c8f1fdee0f0f5088585d6804a0099554f66834fd6d7347b921a0fedfc18e73

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a7c529fbcf8671bb4135bf8873d71f40dd6fdc70ba063daaf68311a1a923d6b3
MD5 973c6dd8b23f2dbb603b69e4b719ebc8
BLAKE2b-256 c7e8e1af3b9291be5d3190e327496874979d42f1bdd9d21dac1c2c3faee08ec9

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 de155b230d8b054d6b2f806b9bc4bfe1e07b20bcde5a9634bb03e2c4ada98240
MD5 5fb23e7e72dbf3d8e7ec73b19292c4fb
BLAKE2b-256 eca130084716f90ddd90bdc9b71108a0579197d5e0706b2427a9a37970147a08

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 41f948f6f44ce93040d43f1fd2a1c50398a9631e0577225b3966e4eb789ea9e4
MD5 ab31e278d26c665800eced7dd1635093
BLAKE2b-256 26abd6a5170945f94986c3ae93a0511186983e5dcc6cb31e39fe789955168a96

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d1c96a56bfedd7ce534414761b6067a3ee41c317b7034f3ee24c753170bed10
MD5 bf3ef0ce398b92dbc68bd33ea6d09900
BLAKE2b-256 dee6cfd0a3d0a8d78f9355af6d28125406f42e7ccd25ffebcc3c71e6321be9d0

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fdb890fd763d826d5e521c5f48106e45220e2d4ae99e237ba605ca5dd7b6f185
MD5 a7958d845d6b8f08a8967189e3e97f5f
BLAKE2b-256 361b2df62decb435f8d47183f87f167dc395a4501365a165f60f77035e465822

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1809d01fedffc40484df10c57f7713984ba80fb436e2aaed734a39684dc54e74
MD5 5c8c738f944f8e31a2757ef66aa99b50
BLAKE2b-256 f2336ccc89677aa5f83865ef1782d4672b9f34ea038e78e1242534dbf1a22518

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6811e7a272e88a5a2f864efdac5a00f50f692d77c9e1124a477af4f33b1fca08
MD5 d111c8becf775355f9b8e94b8b27a619
BLAKE2b-256 2b2ae90c48c234ab3984f70cf2c5d4c3787dfd211fd42cef288109223cb82774

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e76222d927c18eaa7bf28fa3130bbe55d9d88d8146233182b1d8e5209dce2d86
MD5 f7673dc1d7ea98bc8f4dd0b8515b17ad
BLAKE2b-256 167358a286ce03e9c01184064140417acff848384d90b7b0fbe0c9342022ef6a

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 867fa67a2971f925119215c6c75b8c707984d01516edec4c5e1f3cb224acd665
MD5 0aebb83a94f0835bc33caf60941b22d2
BLAKE2b-256 bfb0e9aa90650f538a9e594f3aa1b1d7da2a6fd636777be7984e24fc5cc2283c

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0e000eea5b2908357e70992fbed081fbc7ce55349a7dc2a6d22bc30f5a57b257
MD5 cb5315793327bf4730976720213f600f
BLAKE2b-256 8d6c3183802e40b61ec11768a023c3cf9de4fd81091e7910049daa7792b876c3

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 579f6209c902f012b2bdaa6a55aebc95d8937fb47183482233ea75d0cbae90ca
MD5 88ac091184337489c085ea9d740f20cd
BLAKE2b-256 cdc519214245ca3f43dfd1bf5d37f5dedad0207ea607c5bd86269289d2ce5713

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 77e4b605b513db5a02056358f1697ea5bda5debf35530d97f6dd35b063ee8d2d
MD5 a720eeb1de15e80576fa1921adde6453
BLAKE2b-256 5ea7221beaea41ba74d27061f9057df336b373fbc1f42cf564af969f642233de

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f492650fe5fb9c70eb612f886d687c010faddde10f1557d1a598b486bd6dcaf6
MD5 99201c8eb3bac8d68ebc1ea447e2a485
BLAKE2b-256 f8cc67d5a2718b1c26774fde2a24eb58686c41d4947229fe504ffa84c1f86143

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7cbb1319723267aca8d3f301553c8d3bf9dc16eda78993f8058b46e3ef47031
MD5 4b0f70de7d445acc9ae8b4122823be86
BLAKE2b-256 35b43d8c390398b8dd397182208e53daea30f5f7ef5305f98fb4ef0aa052f36d

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5d9ef322362482e17c2077cfbc1c220cc37c8765b1a90f6d80f7fc85048aa05e
MD5 8d5f935f10534ed1c91ed4b2a1a85b89
BLAKE2b-256 f073fe8cd26bccf7961ad43a0143a57c508c4810207c1282dec1c810ed966da1

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 32c2f091c22a654158696318df151aa305368002c339eff0b6f3e572f4abb135
MD5 742e5dabfe2c9c9cba3707aa5ce5d0cc
BLAKE2b-256 100bb9aa83003db19b9c7835b80d70b535651a6081d177b4b91ba07c929e2270

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ae23da52d290e37869bc2558bb6850fc659641078bbaf192619373007a50579
MD5 e3b6768a3ef1d064773e6196aac17596
BLAKE2b-256 261ca212178630706eea1aa6f15a03bfe834356f42cc6968ca1d98bffbbc3819

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c640fe4bc0244be6d5a515574eab6cc9b1f9b4139790b4562bf66aaff43d7b42
MD5 5457e9f854e1e36c64e347d67025e702
BLAKE2b-256 955a625544a75e5252715197b9fadfc049b9473a0a0bf3601994324f5a273905

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dfa69a38a9dd7b66304062929193e32825439c17bb518aec4e04562209c116f4
MD5 ff15c59a305476a65db158c0ed17acd3
BLAKE2b-256 ccf7c40ee4ae641b645871a71b9bafbc0a717d98b28232cd6f4fac3332823192

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e2efdd10cd53e883424d262a9df2149adacbd69eb16886bb930f4800447529ff
MD5 01599612471fdc58f7ab50596a253f91
BLAKE2b-256 a106f8d6f00ad066a0eb0fc36d9af45813e6f71d5002a9ff5cb60bffccd78034

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 04510b38f7e7db2cc52ec3ac3861315a2b2df8a67231b6082f85252083eea1c3
MD5 74977d9853b986b6aa3f0d0d4400d91c
BLAKE2b-256 10023e7afe90c6b2540a8e01d06e9a0f13383ae4b2fbb2a415d33b7322b31b62

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 78491ebc4e2c4b3624b3e5e0490bd71559641138bb37a789cb6d3c1cf826c6ec
MD5 0010936892ece9149fa55f70d10b9bd7
BLAKE2b-256 bce98d8ba7626ca2d02da5302964f8d35d1dec9514d81d4d065a683a83303cbb

See more details on using hashes here.

File details

Details for the file bittensor_drand-2.0.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for bittensor_drand-2.0.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0c7fda87f64acf8e9fa0381c510b384b8fdd1aae2abde3ceb445cd61591623e3
MD5 c307b0a33401293e90c10c63863f6c60
BLAKE2b-256 0c7cbbbfc79fb900d83b22b9b798f0b7811f1e5bd25d35437edccbfddf1538eb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page