def result_handler(result): if result.get("method", "") == "chain_newHead": number = result['params']['result']['number'] substrate_connection = SubstrateInterface(url=rpc_url) block_hash = substrate_connection.get_block_hash(number) block_events = substrate_connection.get_runtime_events( block_hash=block_hash).get('result') print(int(number, 16), block_hash) for block_event in block_events: module_id = block_event['module_id'] event_id = block_event['event_id'] if module_id == "Staking" and event_id == "EraPayout": print(f"{module_id}.{event_id}") publisher.publish(topic_path, b' ')
def get_extrinsic_events(extrinsic_time_point): substrate = SubstrateInterface( url=settings.NODE_URL, address_type=2, type_registry_preset="kusama", ) extrinsic_events = [] block_hash = substrate.get_block_hash(extrinsic_time_point[0]) block_events = substrate.get_runtime_events(block_hash).get("result") for event in block_events: if event["extrinsic_idx"] == extrinsic_time_point[1]: # Todo, only get required event data # Perhaps just event_id and params? extrinsic_events.append(event) return extrinsic_events