Exemplo n.º 1
0
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