Skip to main content

Subtensor API package for bittensor

Project description

Subtensor API Python package

A python wrapper around the @polkadot/api node library to query the bittensor chain.

Install from pypi

pip install subtensorapi==1.1.0

Running the CLI

Usage

View usage
python3 -m subtensorapi --help

Specify chain endpoint url
python3 -m subtensorapi [sync_and_save|blockAtReg_and_save|sync_and_save_historical|sync_and_save_historical_difficulty] --endpoint_url ENDPOINT_URL
Specify filename to save to python3 -m subtensorapi [sync_and_save|blockAtReg_and_save|sync_and_save_historical|sync_and_save_historical_difficulty] --filename FILENAME.json
Specify blockhash to sync the chain at, default "latest" python3 -m subtensorapi [sync_and_save|blockAtReg_and_save|sync_and_save_historical|sync_and_save_historical_difficulty] --block_hash BLOCK_HASH

Sync And Save Metagraph

Pulls the neurons storage map and saves it to a JSON file.
View usage
python3 -m subtensorapi sync_and_save --help
Run sync of metagraph and save to JSON file
python3 -m subtensorapi sync_and_save -f metagraph.json

Sync And Save Neurons from Metagraph at historical blocks

Pulls the neurons storage map at each block for each UID and saves it to a JSON file.
View usage
python3 -m subtensorapi sync_and_save_historical --help
Run sync of metagraph at blocks 2706651 2706652 2706653 and UIDs 1 2 3 and save to JSON file
python3 -m subtensorapi sync_and_save_historical -i 1 2 3 -b 2706651 2706652 2706653 -f history.json

Grab blockAtRegistration

Pulls the blockAtRegistration storage map and saves it to a JSON file.
View usage python3 -m subtensorapi blockAtReg_and_save --help

Sync And Save Difficulty at historical blocks

Pulls the difficulty storage value at each block and saves it to a JSON file.
View usage
python3 -m subtensorapi sync_and_save_historical_difficulty --help
Run sync of metagraph at blocks 2706651 2706652 2706653 and save to JSON file
python3 -m subtensorapi sync_and_save_historical_difficulty -b 2706651 2706652 2706653 -f history_diff.json

Using the library

FastSync class

Setup of a FastSync instance

from subtensorapi import FastSync

# check if fast sync is available on the platform
FastSync.verify_fast_sync_support() 

# specify the chain endpoint_url  
fast_sync: FastSync = FastSync(endpoint_url)

Run the metagraph sync

Pulls the neurons storage map.

# specify block_hash to sync at. Default is "latest"
block_hash = "0xb2fa081[...]"
# run the sync command and save to JSON file at block_hash
fast_sync.sync_and_save(block_hash)
# load neurons in from JSON file
neurons = fast_sync.load_neurons()

Run the historical metagraph sync

Pulls the neurons storage map for each block and each UID

# specify blockNumbers to sync at. Default is "latest"
blockNumbers = ["latest", 2706652]
# specify UIDs to sync
UIDs = [1, 2, 3, 4095]
# run the sync command and save to JSON file at block_hash
fast_sync.sync_and_save_historical(blockNumbers, UIDs)
# load neurons in from JSON file
historical_neurons = fast_sync.load_historical_neurons()

Run the historical difficulty sync

Pulls the difficulty storage value for each block

# specify blockNumbers to sync at. Default is "latest"
blockNumbers = ["latest", 2706652]
# run the sync command and save to JSON file at block_hash
fast_sync.sync_and_save_historical_difficulty(blockNumbers)
# load neurons in from JSON file
historical_diff = fast_sync.load_historical_difficulty()

Run blockAtRegistration pull

Pulls the blockAtRegistration storage map.

# specify block_hash to sync at. Default is "latest"
block_hash = "0xb2fa081[...]"
# run the pull command and save to JSON file at block_hash
fast_sync.get_blockAtRegistration_for_all_and_save(block_hash)
# load blockAtRegistration_all from JSON file
blockAtRegistration_all = fast_sync.load_blockAtRegistration_for_all()

Using the FastSync class without writing to a file

You can redirect the file writing to a pipe instead of a file.
This removes the need to write to disk and provides a speedup.

Example:

# all neurons
all_neurons: List[SimpleNamespace] = fast_sync.sync_fd(block_hash)
# historical neurons
historical_neurons: Dict[str, Dict[str, SimpleNamespace]] = fast_sync.sync_historical_fd(blockNumbers, UIDs)
# blockAtRegistration_all
blockAtRegistration_all: List[int] = fast_sync.get_blockAtRegistration_for_all_fd(block_hash)
# historical difficulty
historical_diff: Dict[str, int] = fast_sync.sync_historical_difficulty_fd(blockNumbers)

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

subtensorapi-1.1.0-py3-none-manylinux_2_17_x86_64.whl (21.4 MB view hashes)

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

subtensorapi-1.1.0-py3-none-macosx_10_15_universal2.whl (21.4 MB view hashes)

Uploaded Python 3 macOS 10.15+ universal2 (ARM64, x86-64)

Supported by

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