def setUpClass(cls): cls.kusama_substrate = SubstrateInterface( url=settings.KUSAMA_NODE_URL, ss58_format=2, type_registry_preset='kusama') cls.polkadot_substrate = SubstrateInterface( url=settings.POLKADOT_NODE_URL, ss58_format=0, type_registry_preset='polkadot') cls.substrate_v13 = SubstrateInterface(url=settings.POLKADOT_NODE_URL, ss58_format=0, type_registry_preset='polkadot') module_path = os.path.dirname(__file__) cls.metadata_fixture_dict = load_type_registry_file( os.path.join(module_path, 'fixtures', 'metadata_hex.json')) cls.metadata_v13_obj = cls.substrate_v13.runtime_config.create_scale_object( 'MetadataVersioned', data=ScaleBytes(cls.metadata_fixture_dict['V13'])) cls.metadata_v13_obj.decode() cls.substrate_v13.init_runtime() cls.substrate_v13.metadata_decoder = cls.metadata_v13_obj # Create new keypair mnemonic = Keypair.generate_mnemonic() cls.keypair = Keypair.create_from_mnemonic(mnemonic)
def setUpClass(cls): cls.runtime_config = RuntimeConfigurationObject() cls.runtime_config.update_type_registry(load_type_registry_preset("metadata_types")) module_path = os.path.dirname(__file__) cls.metadata_fixture_dict = load_type_registry_file( os.path.join(module_path, 'fixtures', 'metadata_hex.json') )
def connect(): ws = create_connection("wss://2.dcb.my", sslopt={"cert_reqs": ssl.CERT_NONE}) custom_type_registry = load_type_registry_file("api/custom.json") substrate = SubstrateInterface( websocket=ws, ss58_format=42, type_registry_preset='substrate-node-template', type_registry=custom_type_registry) return substrate
def setUpClass(cls): module_path = os.path.dirname(__file__) cls.metadata_fixture_dict = load_type_registry_file( os.path.join(module_path, 'fixtures', 'metadata_hex.json')) RuntimeConfiguration().update_type_registry( load_type_registry_preset("metadata_types")) cls.metadata_decoder = RuntimeConfiguration().create_scale_object( 'MetadataVersioned', data=ScaleBytes(cls.metadata_fixture_dict['V10'])) cls.metadata_decoder.decode()
def setUpClass(cls): module_path = os.path.dirname(__file__) cls.metadata_fixture_dict = load_type_registry_file( os.path.join(module_path, 'fixtures', 'metadata_hex.json')) cls.runtime_config = RuntimeConfigurationObject( implements_scale_info=True) cls.runtime_config.update_type_registry( load_type_registry_preset("metadata_types")) cls.metadata_obj = cls.runtime_config.create_scale_object( 'MetadataVersioned', data=ScaleBytes(cls.metadata_fixture_dict['V14'])) cls.metadata_obj.decode()
def connect_to_substrate_node(): try: substrate = SubstrateInterface( url="ws://127.0.0.1:9944", type_registry_preset="default", type_registry=load_type_registry_file("custom_types.json"), ) return substrate except ConnectionRefusedError: print( "⚠️ No local Substrate node running, try running 'start_local_substrate_node.sh' first" ) return None
def __init__(self, db_session, type_registry='default', type_registry_file=None): self.db_session = db_session if type_registry_file: custom_type_registry = load_type_registry_file(type_registry_file) else: custom_type_registry = None self.substrate = SubstrateInterface( url=settings.SUBSTRATE_RPC_URL, type_registry=custom_type_registry, type_registry_preset=type_registry ) self.metadata_store = {}
def setUpClass(cls): cls.kusama_substrate = SubstrateInterface( url=settings.KUSAMA_NODE_URL, ss58_format=2, type_registry_preset='kusama') cls.polkadot_substrate = SubstrateInterface( url=settings.POLKADOT_NODE_URL, ss58_format=0, type_registry_preset='polkadot') module_path = os.path.dirname(__file__) cls.metadata_fixture_dict = load_type_registry_file( os.path.join(module_path, 'fixtures', 'metadata_hex.json')) # Create new keypair mnemonic = Keypair.generate_mnemonic() cls.keypair = Keypair.create_from_mnemonic(mnemonic)
def setUpClass(cls): module_path = os.path.dirname(__file__) # scale_info_defaults = load_type_registry_file(os.path.join(module_path, 'fixtures', 'scale_info_defaults.json')) cls.runtime_config = RuntimeConfigurationObject(ss58_format=42) cls.runtime_config.update_type_registry( load_type_registry_preset("metadata_types")) # cls.runtime_config.update_type_registry(scale_info_defaults) cls.metadata_fixture_dict = load_type_registry_file( os.path.join(module_path, 'fixtures', 'metadata_hex.json')) cls.metadata_obj = cls.runtime_config.create_scale_object( 'MetadataVersioned', data=ScaleBytes(cls.metadata_fixture_dict['V14'])) cls.metadata_obj.decode() cls.runtime_config.add_portable_registry(cls.metadata_obj)
def init_type_registry(self, custom_type_registry=None): if settings.TYPE_REGISTRY_FILE: type_registry = load_type_registry_file(settings.TYPE_REGISTRY_FILE) else: type_registry = {} if custom_type_registry: type_registry.update(custom_type_registry) self.substrate = SubstrateInterface( url=settings.SUBSTRATE_RPC_URL, ss58_format=settings.SUBSTRATE_ADDRESS_TYPE, type_registry_preset=settings.TYPE_REGISTRY, type_registry=custom_type_registry ) if settings.DEBUG: print('Custom types at init: ', custom_type_registry) self.substrate.debug = True
from scalecodec.type_registry import load_type_registry_file from substrateinterface import SubstrateInterface substrate = SubstrateInterface( url='ws://161.97.148.207:7949', type_registry=load_type_registry_file( 'app/type_registry/custom_types.json'), ) # block_hash = substrate.get_chain_finalised_head() block_hash = '0x3a00e167626324048e63034906df81b8a6c1402abcdc5f8ffa1b3ed045e3c048' extrinsics = substrate.get_block_extrinsics(block_hash=block_hash) print('Extrinsics:', [extrinsic.value for extrinsic in extrinsics]) events = substrate.get_events(block_hash) print("Events:", events) #print("Metadata: ",substrate.get_block_metadata(block_hash=block_hash)) print("Metadata: ", substrate.get_block_runtime_version(block_hash))
import json from scalecodec.type_registry import load_type_registry_file from substrateinterface import SubstrateInterface substrate = SubstrateInterface( url='wss://ws.sora2.soramitsu.co.jp', type_registry_preset='default', type_registry=load_type_registry_file('custom_types.json'), ) block_hash = substrate.get_block_hash(block_id=184001) print(block_hash) # Retrieve extrinsics in block result = substrate.get_runtime_block(block_hash=block_hash, ignore_decoding_errors=True) events = substrate.get_events(block_hash) groupedEvents = {} for event in events: event = str(event) eventdict = eval(event) idx = eventdict['extrinsic_idx'] if idx in groupedEvents.keys(): groupedEvents[idx].append(eventdict) else: groupedEvents[idx] = [eventdict] # print(len(result['block']['extrinsics'])) # print(len(groupedEvents))
import json import csv from substrateinterface import SubstrateInterface, Keypair, SubstrateRequestException from scalecodec.type_registry import load_type_registry_file file_path = "./sample.json" froot = './data/2ndclaim' write_path = "./data/2ndclaim/summary.csv" custom_type_registry = load_type_registry_file("types/plasm.json") substrate = SubstrateInterface(url="wss://rpc.plasmnet.io", address_type=5, type_registry_preset='plasm', type_registry=custom_type_registry) def get_claim_id(params): return params[0]["value"] def write_csv(event): with open(write_path, 'a') as f: writer = csv.writer(f) writer.writerow(event) def get_claim_call(claim_id): print('get_claim_info', claim_id) try: claim_info = substrate.get_runtime_state(module='PlasmLockdrop',
def __init__(self): RuntimeConfiguration().update_type_registry(load_type_registry_preset('default')) if TYPE_REGISTRY_PATH: RuntimeConfiguration().update_type_registry(load_type_registry_file(TYPE_REGISTRY_PATH)) super(AccountDetailResource, self).__init__()
import json from scalecodec.type_registry import load_type_registry_file from substrateinterface import SubstrateInterface substrate = SubstrateInterface( url='wss://mof3.sora.org/', type_registry_preset='default', type_registry=load_type_registry_file( '../harvester/app/type_registry/custom_types.json'), ) block_hash = substrate.get_block_hash(block_id=3332543) extrinsics = substrate.get_block(block_hash=block_hash)['extrinsics'] print('Extrinsincs:', json.dumps([e.value for e in extrinsics], indent=4)) events = substrate.get_events(block_hash) print("Events:", json.dumps([e.value for e in events], indent=4))
def setUpClass(cls): cls.substrate = SubstrateInterface(url='dummy', ss58_format=42, type_registry_preset='kusama') cls.metadata_fixture_dict = load_type_registry_file( os.path.join(os.path.dirname(__file__), 'fixtures', 'metadata_hex.json')) metadata_decoder = cls.substrate.runtime_config.create_scale_object( 'MetadataVersioned') metadata_decoder.decode( ScaleBytes(cls.metadata_fixture_dict[cls.test_metadata_version])) cls.substrate.get_block_metadata = MagicMock( return_value=metadata_decoder) def mocked_request(method, params): if method == 'chain_getRuntimeVersion': return { "jsonrpc": "2.0", "result": { "specVersion": 2023 }, "id": 1 } elif method == 'chain_getHeader': return { "jsonrpc": "2.0", "result": { "digest": { "logs": [] }, "extrinsicsRoot": "0xa94148d938c7b7976abf4272dca95724d7a74da2f3649ec0bd53dc3daaedda44", "number": "0x4abaaa", "parentHash": "0xe1781813275653a970b4260298b3858b36d38e072256dad674f7c786a0cae236", "stateRoot": "0xb6aa468385c82d15b343a676b3488d9f141ac100fc548bb8a546f27a7241c44a" }, "id": 1 } elif method == 'chain_getHead': return { "jsonrpc": "2.0", "result": "0xe1781813275653a970b4260298b3858b36d38e072256dad674f7c786a0cae236", "id": 1 } raise NotImplementedError(method) cls.substrate.rpc_request = MagicMock(side_effect=mocked_request) cls.empty_substrate = SubstrateInterface(url='dummy', ss58_format=42, type_registry_preset='kusama') def mocked_request(method, params): return {'jsonrpc': '2.0', 'result': None, 'id': 1} cls.empty_substrate.rpc_request = MagicMock(side_effect=mocked_request) cls.error_substrate = SubstrateInterface( url='wss://kusama-rpc.polkadot.io', ss58_format=2, type_registry_preset='kusama')