Un Bot para extraer la cuentas que delegan a un usuario de Hive - Parte de Aliento Pay

in Alientolast year

image.png

He estado desarrollando un bot que me permite extraer información sobre las delegaciones de HP en la blockchain de Hive. Para ello, he utilizado la biblioteca beem para interactuar con la API de Hive, y he creado una serie de funciones que me permiten obtener y procesar los datos de la cadena de bloques.

Esto lo hice por solicitud de @manuphotos de Hive Cuba porque no ha podido conectarse a Hive SQL y me apoyé de inteligencia artificial para poder aclarar algunas cosas.

El bot me permite especificar una cuenta de Hive y un número de días de antigüedad, y luego obtiene todas las delegaciones de HP que han ocurrido para esa cuenta en los últimos X días (donde X es el número de días de antigüedad especificado por mí). Para ello, uso la biblioteca datetime para calcular la fecha de corte a partir del número de días de antigüedad.

El bot cambia automáticamente de API cada 1000 operaciones para evitar sobrecargar cualquier nodo API en particular. Para ello, he utilizado la una lista de nodos API, y he creado una función que me permite cambiar de nodo cada vez que se alcanza el límite de operaciones.

def get_next_api_url():
    node_list = nodes
    while True:
        for api_url in node_list:
            yield api_url

next_api_url = get_next_api_url()


all_results_obtained = False
def switch_hive_node():
    global all_results_obtained
    if not all_results_obtained:
        api_url = next(next_api_url)
        print(f"Switching to new Hive API node: {api_url}")
        hive_instance = Hive(node=api_url)
        set_shared_blockchain_instance(hive_instance)

switch_hive_node()


Una vez que he obtenido los datos de la cadena de bloques, he procesado los resultados para asegurarme de que solo se incluyan las delegaciones más recientes de cada delegador (basándome en la fecha de la delegación), y he convertido los montos de vesting shares a HP usando lo siguiente:

'                vests = float(operation["vesting_shares"]["amount"])
                vests = round(float(vests), 4)
                mvests = vests / 1000000'


Finalmente, he almacenado los resultados en una base de datos SQLite utilizando la biblioteca sqlite3, y he utilizado un archivo de configuración config.ini para permitirme configurar varias variables, como la cuenta de Hive a analizar, el número de días de antigüedad y el número máximo de operaciones a recuperar por solicitud.

Hice el ejemplo con @hivecuba

image.png


El propósito de esto es poder crear actualizar el bot de delegación de @aliento, que pueda cualquier comunidad realizar pagos a los usuarios de Hive que le delegan

Código Abierto

El código en Github: https://github.com/enrique89ve/bot_hive_delegacion

Asi que puedes contribuir al desarrollo de este bot

Sort:  


The rewards earned on this comment will go directly to the people sharing the post on Twitter as long as they are registered with @poshtoken. Sign up at https://hiveposh.com.

Se ve interesante ese bot y será de gran utilidad. Buen aporte a la comunidad👏🏽👏🏽

Excelente la idea de ir cambiando de nodo cada 1000 operaciones, no se me hubiera ocurrido.

Te has rifado con tu bot, 10/10

Entiendo para que sirve, pero no entiendo el código 😅🤣... tengo que darle a la programación este año.

Justo, lo que necesitaba, para avanzar en el conocimiento desde el punto de vista informático, la verdad, en la época que estudie, no existían los API

Qué lenguajes de programación usastes para tal fin, Lenguaje C++?