SDK Extension

This extensions is meant as a fallback option that uses only existing Portaldot RPC methods. However, it is important to note that this fallback implementation is significantly inefficient, and it is encouraged to utilize third-party search indices where possible for optimal search performance.


Initialization

from substrateinterface import SubstrateNodeExtension

portaldot = SubstrateInterface(
  url="wss://mainnet.portaldot.io",
  ss58_format=42,
  type_registry_preset='default'
)

# Provide maximum block range (bigger range descreases performance)
portaldot.register_extension(SubstrateNodeExtension(max_block_range=100))

Implemented extension calls

# filter_events
# Returns all `Balances.Transfer` events in block range #3 until #6
events = portaldot.extensions.filter_events(pallet_name="Balances", event_name="Transfer",  block_start=3, block_end=6)
# filter_extrinsics
# All TransferKeepAlive extrinsics in block range #3 until #6
extrinsics = portaldot.extensions.filter_extrinsics(pallet_name="Timestamp", call_name="transfer_keep_alive", block_start=3, block_end=6)

Search block number

# Search for block number corresponding a specific datetime
block_datetime = datetime(2020, 7, 12, 0, 0, 0)

block_number = portaldot.extensions.search_block_number(block_datetime=block_datetime)

Get block timestamp

# Get timestamp for specific block number
block_timestamp = portaldot.extensions.get_block_timestamp(block_number)