La libreria de Software GenericSuite

La libreria de Software GenericSuite

La librería de software GenericSuite

GenericSuite es una librería de software diseñada para el desarrollo de aplicaciones backend y frontend en Python y React.js, incluyendo funcionalidades de IA.

https://genericsuite.carlosjramirez.com/

 

¿Para qué sirve GenericSuite?

GenericSuite es un conjunto de utilidades frontend y backend creadas con ReactJS y Python para ayudar a desarrollar aplicaciones ágilmente.

Funciones:

  • Editor CRUD genérico: al tener un código central de creación-lectura-actualización-eliminación que se puede parametrizar y extender, no hay necesidad de reescribir el código para cada editor de tablas.
  • Menú genérico y generador de Endpoints.
  • Abstractor de base de datos: el backend puede utilizar DynamoDB o MongoDB como almacenamiento persistente. El acceso a DynamoDB se puede hacer mediante una sintaxis de estilo MongoDB.
  • Abstractor de Framework: para desarrollar Apps con FastAPI, Chalice o Flask indistintamente.

Click aqui para ver los Repositorios

 

GenericSuite para desarrollos de Inteligencia Artificial

GenericSuite AI es un conjunto de utilidades frontend y backend creadas con ReactJS y Python para ayudar a desarrollar aplicaciones que implementan AI.

Funciones:

  • Endpoint ai_chatbot para implementar conversaciones de NLP (Procesamiento de Lenguaje Natural) basadas en las API de OpenAI o Langchain.
  • Manejo de modelos OpenAI, Google Gemini, Anthropic, Ollama y Hugging Face.
  • Manipulación de modelos e incrustaciones Clarifai.
  • Visión artificial (OpenAI GPT4 Vision, Google Gemini Vision, Clarifai Vision).
  • Procesamiento de voz a texto (OpenAI Whisper, Clarifai Audio Models).
  • Procesamiento de texto a voz (OpenAI TTS-1, Clarifai Audio Models).
  • Generador de imágenes (OpenAI DALL-E 3, Google Gemini Image, Clarifai Image Models).
  • Indexadores vectoriales (FAISS, Chroma, Clarifai, Vectara, Weaviate, MongoDBAtlasVectorSearch)
  • Incrustadores (embeddings  de OpenAI, Hugging Face, Clarifai, Bedrock, Cohere y Ollama)
  • Herramienta de búsqueda web para los agentes de AI.
  • Herramienta de Web Scrapping y análisis de páginas web para los agentes de AI.
  • Lectores JSON, PDF, Git y YouTube.
  • Herramientas de traducción de idiomas para los agentes de AI.
  • Chats almacenados en la Base de Datos.
  • Atributos del plan de usuario, la clave API de OpenAI y el nombre del modelo en el perfil de usuario, para permitir que los usuarios del plan gratuito utilicen sus propios créditos de OpenAI.

Click aqui para ver los Repositorios

 

Un poco de Historia

Esta idea del editor CRUD genérico y los demás elementos generados con programación genérica a partir de configuraciones estructuradas lo aprendí a mediados de los años 80, trabajando para una empresa que ya manejaba esa idea utilizando los lenguajes y bases de datos de moda de la época (Clipper y dBase III), con las configuraciones generadas por un sistema llamado System Maker y almacenadas en la base de datos. Un concepto que -en mi opinión- estaba muy adelantado para su época.

En los años 1999 y 2000 hice mi propia versión del editor CRUD genérico en Microsoft ASP (Active Server Pages) para un CMS (Content Management System), algo como lo que se hace WordPress.

Durante la pandemia del año 2020, se me ocurrió crear una nueva App (FynApp) y comencé el desarrollo del editor genérico para frontend en React.js basado en Componentes de Clases, (más información aquí) y el backend en Python (más información aquí), con las configuraciones en estructuras especificadas en el mismo código.

A principio de 2023 comencé a convertir el editor genérico a React.js basado en Componentes Funcionales y Hooks, y las configuraciones en archivos JSON.

Durante la PyCon Colombia en junio de 2023, se me ocurrió la idea de llevar la programación genérica al backend, y desde ese momento comencé el desarrollo de los Helpers para manejar los CRUD y la generación automática de Endpoints y Menús desde las mismas configuraciones utilizadas por el editor CRUD genérico del frontend, en archivos JSON almacenadas en un repositorio común al frontend y backend.

La aparición de ChatGPT a finales de 2022 y todo el boom de la AI (Artificial Intelligence / Inteligencia Artificial) que eso desencadenó, me provocó mucha curiosidad y  ganas de incluir algo de eso en FynApp.

En julio de 2023 participé en el Google Vertex AI Hackathon de lablab.ai y eso me dio las ideas para crear FynBot: el asistente de inteligencia artificial para FynApp, basado en las API de OpenAI y posteriormente usando GPT Functions.

Entre agosto y noviembre de 2023 exploré e incluí la generación de imágenes y audio en el App.

En diciembre de 2023 decidí implementar la programación genérica utilizando las librerías de Langchain para Python, abrir la posibilidad de utilizar cualquier modelo LLM / NLP / Embeddings en mis desarrollos y no estar atado a un solo proveedor.

En febrero de 2024 comencé a extraer toda la programación genérica de FynApp y allí nació The GenericSuite. La primera versión se publicó a principio de marzo de 2024 y las librerías ya funcionales se publicaron en NPMJS y Pypi a principios de abril de 2024.

Click aqui para ver las Librerías

Esta es mi primera contribución a la comunidad Open Source.

FynApp: un App para lograr Deficit Calorico

FynApp: un App para lograr Deficit Calorico

FynApp: un App para lograr Deficit Calorico

FynApp es tener la nutrición en su bolsillo. Es un App para lograr Deficit Calorico, alcanzar los objetivos de pérdida de peso y mantener un mejor estilo de vida, basado en una nutrición adecuada y la toma de consciencia sobre los hábitos alimenticios.

Especificaciones Técnicas

En el Frontend destaca el Editor CRUD Genérico [GCE] es un componente de React para ayudar a desarrollar aplicaciones de back-office más rápido.

Al tener un código básico Create-Read-Update-Delete que se puede parametrizar y ampliar, no hay necesidad de reescribir el código para cada editor de tablas.

Lo hice antes en otros lenguajes de programación a lo largo de los años, como Microsoft ASP a principios de 2000.

La intención es transformarlo en un paquete NPM y Pypi.

El Backend puede usar DynamoDB o MongoDB como almacenamiento persistente.

Se utilizan algunos patrones de diseño de software, tales como método de fábrica, fachada, iterador, método de plantilla y decorador.

Lo más notable fue implementar el acceso a DynamoDB mediante una sintaxis de estilo MongoDB.

En la parte de Gitops/Devops, se hicieron Scripts y configuraciones para realizar despliegues en diferentes plataformas (servidores de desarrollo local, VPS, entre otros), con tecnologías de orquestación como Kubernetes, artefactos y gestión de repositorios con Jfrog, Docker, Gitlab y Gitlab Runners

Herramientas Utilizadas

 Esta aplicación fue construida usando:

Frontend

  • Python 3, Chalice, JWT
  • MongoDB Atlas, AWS DynamoDB
  • GenericSuite

GitOps / DevOps

  • AWS
  • Kubernetes, Docker
  • Gitlab CI/CD, Github
  • Jfrog
  • Linux, Bash

Mobile (próximamente)

  • Flutter

Live Demo

🔗 Enlace a la demo en vivo:

https://app-demo.fynapp.com/

 

Generación de un programa Rust y un BOT Telegram con ChatGPT

Generación de un programa Rust y un BOT Telegram con ChatGPT

En este artículo comparto mi experiencia con la generación de un programa Rust y un BOT Telegram con ChatGPT.

Terminé mi 2022 como debe ser: programando y aprendiendo.

En esta última semana decidí probar la tan cacareada AI de ChatGPT para aprender a programar algunos de los propósitos que me planteado para el 2023, por ejemplo: Rust y un BOT para Telegram.

¿Qué es ChatGPT?

«AI» es el acrónimo de Artificial Intelligence o Inteligencia Artificial en español.

ChatGPT es una Inteligencia Artificial desarrollada por OpenAI que ha causado mucho revuelo desde el 30 de noviembre de 2022 por la madurez de sus modelos de ML (Machine Learning): GPT-3, que realiza una variedad de tareas de lenguaje natural, Codex, que traduce el lenguaje natural a código de programación, y DALL·E, que crea y edita imágenes originales.

El objetivo de OpenAI es desarrollar y promover una IA segura y “amigable”.
El empresario estadounidense Sam Altman (ex presidente de la aceleradora de startups Y Combinator) cofundó OpenAI en 2015 con Elon Musk, quien abandonó el proyecto en 2020. Sam Altman se desempeña como CEO de la empresa con sede en San Francisco.

ChatGPT no es la primera, ni la única, ni la mas avanzada AI. Su mérito radica en ponerla en manos del público general de forma gratuita, aunque limitada, como un abrebocas de la revolución que se nos viene encima.

Generación de un programa en Lenguaje Rust con ChatGPT

Al intentar hacer un API en Rust para el manejo de una tabla de usuarios en una base de datos MongoDB, el resultado fue un poco frustrante.

Generé con ChatGPT prácticamente la totalidad de la API. El resultado fue bueno para animarme a aprender Rust, pero el programa generado a partir de la consulta a ChatGPT no funcionó.

Le pedí un programa completo que implementa operaciones CRUD (acrónimo de «Crear, Leer, Actualizar y Borrar», del original en inglés: Create, Read, Update and Delete) en una tabla de usuarios en MongoDB desde Rust, con cada operación en una función separada y la función main, todo en un único archivo .rs

Esto lo tuve que ir haciendo poco a poco para luego poder ir armando todas las partes.

Luego pedí implementar una API en Rust que maneje una tabla de usuarios en MongoDB con Endpoints para todas las operaciones CRUD y que siga el estilo REST, y que pueda ser llamada mediante Ajax en Javascript.

Lo hizo para una vieja versión de la dependencia de MongoDb para Rust, no me dio completamente la configuración del archivo Cargo.toml (en especial los `features` necesarios por ejemplo para el `serde`), no incluyó los `use` de todos los elementos necesarios (por ejemplo, para `tokio`), no incluyo los `struct` para los Form y Query en los `warp` que definen los Endpoints, entre otras muchas cosas.

Pase horas intentando arreglarlo para que fuera un PMV (producto mínimo viable) y al final me bloquee en la parte final del Endpoint para consultar un documento de la base de datos MongoDb.

Entendí algo importante: para un lenguaje de programación altamente tipado, que pudiera ser el sustituto de Lenguaje C, no es recomendable intentar aprender al estilo Learning-by-Example, en mi caso es necesario hacer algún curso, y luego meterle al Rust.

Generación de un Telegram BOT en Lenguaje Python con ChatGPT

Acá si obtuve un resultado muy satisfactorio por dos razones: ya sabía programar en Python y algunos años atrás intenté hacer este trabajo en PHP (más o menos en 2018, basado en este repo de Eleirbag89 y este artículo de Stackoverflow de how to get price from bitcoin to USD with PHP api) y de alguna manera ya sabía como iniciar el desarrollo del BOT, aunque en el tiempo cambiaron algunas cosas menores.

Según la Wikipedia, Un BOT es un programa informático que efectúa automáticamente tareas reiterativas mediante Internet a través de una cadena de comandos o funciones autónomas previas para asignar un rol establecido; y que posee capacidad de interacción, cambiando de estado para responder a un estímulo.

Inicialmente el proyecto tenía el objetivo de dar las cotizaciones del Bitcoin para luego llegar a tener un mecanismo de avisar cuando la criptomoneda llegara a un valor mínimo específico, enviando una alerta por medio del mismo Telegram.

Lo que me gusto de este ejercicio fue que un proyecto dormido por 4 años, al que le había invertido muchas horas de trabajo para finalmente dejarlo a un lado (y hasta perdí el código fuente por varias mudanzas de un país a otro, cambio de computadoras y no ponerlo en un repositorio Github) a poder desarrollarlo desde cero en 21 horas (2 días de trabajo prácticamente).

El resultado final se resume en estos elementos:

Repositorio en Github:

https://github.com/tomkat-cr/market_alert_bot

URL del Telegram BOT:

https://t.me/ocr_marketalert_bot

Y el Telegram BOT se ve algo así como:

Tips de la conversación con ChatGPT

Poco a poco me he ido haciendo amigo de esta AI…

La conversación fue en español completamente y ChatGPT lo habla muy bien.

Inicialmente le pedí una información general del desarrollo.

Como la versión gratuita de ChatGPT tiene limitaciones en el tamaño de las respuestas, poco a poco le voy pidiendo el resto de las cosas que se cortan.

Cuando se le pide el código en un lenguaje de programación específico, al final o en algún momento se le debe pedir también los archivos de configuración, los procedimientos de instalación, entre otras cosas, para evitar -por ejemplo- conflictos de versiones de dependencias.

Lo otro es que inicialmente le pedí que me diera el procedimiento para poner a trabajar el BOT en el servicio gratuito de Vercel, y hasta el momento no logré ponerlo a funcionar. Me di por vencido y me tocó poner una pregunta en StackOverflow a ver si alguien me ayuda a solucionar un problema con el forwarding de puertos entre el BOT en Phyton y la instancia Serverless de Vercel.

Al final fue una buena experiencia (no hay mal que por bien no venga), porque aprendí los dos modos de trabajo de los Telegram BOTs, el Polling y el WebHook, aprendí a desplegar aplicaciones en Fly.io, y lo más importante: al sentirme bloqueado, minimizado, derrotado por no poder hacer el despliegue en Vercel, en cuestión de horas busqué una solución viable con algo nuevo, aunque eso implique invertir tiempo en aprender y aprender y aprender más! Eso mismo me paso cuando Heroku finalizó su capa gratuita y me tocó mudar el backend de FynApp a Vercel y frontend a Github Pages.

CONCLUSION

fue una experiencia muy interesante y enriquecedora. Definitivamente el proceso creativo inicial de desarrollo se agiliza y me retó a terminarlo en tiempo record.

Sin embargo aun no voy a perder mi empleo al ser sustituido por una AI.

A esto le falta bastante. Mientras tanto, aprendamos a desarrollar Inteligencia Artificial y Machine Learning.

Acá les dejo dos artículos interesantes:

La cereza del pastel fue las correcciones que hizo mi mamá faltando media hora para terminar el 2022 cuando le mostré este Post. Fue algo hermoso e inesperado, además de quedar contratada para hacer la revisión de todos los Post para mi proyecto de Marca Personal.

Extracto de la Interacción con la AI

La conversación con ChatGPT para generar el Telegram BOT fue así:

Carlos:

dame la programacion necesaria para un bot de telegram en python

Para crear un bot de Telegram en Python, necesitarás hacer lo siguiente:

Asegúrate de tener Python instalado en tu computadora. Si aún no lo tienes, puedes descargarlo desde el sitio oficial de Python (https://www.python.org/downloads/).

Instala la biblioteca de Python para el API de Telegram llamada python-telegram-bot. Puedes hacer esto ejecutando el siguiente comando en tu consola:

Copy code

pip install python-telegram-bot

Crea una cuenta de desarrollador y un bot en el BotFather de Telegram.

El BotFather es un bot en Telegram que te permite crear y gestionar bots. Para crear un bot, debes hablar con el BotFather en Telegram y seguir las instrucciones que te da. Al final de este proceso, el BotFather te dará un token de acceso para tu bot. Guarda este token, ya que lo necesitarás más adelante.

Crea un nuevo archivo de Python y coloca el siguiente código en él:

Copy code

import logging

from telegram.ext import Updater, CommandHandler

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)

def start(update, context):
    update.message.reply_text('Hola! Soy un bot de Telegram')

def main():
    # Creamos el Updater y le pasamos el token de acceso
    updater = Updater('TOKEN', use_context=True)
    # Añadimos un manejador para el comando /start
    updater.dispatcher.add_handler(CommandHandler('start', start))
    # Iniciamos el bot
    updater.start_polling()
    updater.idle()

if name == 'main':
    main()

Reemplaza la cadena 'TOKEN' en la línea updater = Updater('TOKEN', use_context=True) por el token de acceso que obtuviste del BotFather.

Ahora, puedes ejecutar el archivo de Python para iniciar tu bot. Si todo ha ido bien, tu bot debería estar en línea y responder a los comandos que envíes a través de Telegram.

Espero que esto te ayude a empezar a crear tu bot de Telegram en Python. Si tienes alguna pregunta o necesitas más ayuda, no dudes en preguntar.

…

Carlos:

agrega un handler para leer una api rest y devolver el resultado al usuario

Para agregar un manejador que lea una API REST y devuelva el resultado al usuario, puedes hacer lo siguiente:

Importa la biblioteca requests al principio de tu archivo de Python:

Copy code

import requests

Define una función que haga la llamada a la API REST y procese el resultado. En este ejemplo, asumimos que la API devuelve un objeto JSON y que queremos mostrar al usuario el valor del campo 'mensaje' del objeto:

Copy code

def leer_api(update, context):
    # Hacemos la llamada a la API
    response = requests.get('https://mi-api.com/recurso')
    # Procesamos el resultado
    if response.status_code == 200:
        # Si la llamada fue exitosa, obtenemos el objeto JSON
        resultado = response.json()
        mensaje = resultado['mensaje']
        update.message.reply_text(mensaje)
    else:
        # Si la llamada no fue exitosa, informamos al usuario
        update.message.reply_text('Ha ocurrido un error al leer la API')

Añade un manejador para el comando /leer_api que llame a la función leer_api cuando se ejecute el comando:

Copy code

updater.dispatcher.add_handler(CommandHandler('leer_api', leer_api))

Ahora, cuando el usuario envíe el comando /leer_api a través de Telegram, el bot hará una llamada a la API REST y enviará al usuario el valor del campo 'mensaje' del objeto JSON que recibió.

Espero que esto te ayude a añadir la funcionalidad que necesitas. Si tienes alguna pregunta o necesitas más ayuda, no dudes en preguntar.

…

Carlos:

agrega un handler para leer una api rest del weather ppara una ciudad y devolver el resultado al usuario

Para agregar un manejador que lea una API REST del tiempo para una ciudad y devuelva el resultado al usuario, puedes hacer lo siguiente:

Importa la biblioteca requests al principio de tu archivo de Python:

Copy code

import requests

Define una función que haga la llamada a la API REST y procese el resultado. En este ejemplo, asumimos que la API del tiempo que estamos usando es OpenWeatherMap y que queremos mostrar al usuario la temperatura actual en grados Celsius de la ciudad que se le indique:

Copy code

def obtener_tiempo(update, context):
    # Obtenemos el nombre de la ciudad del usuario
    ciudad = " ".join(context.args)
    # Validamos que se haya especificado una ciudad
    if ciudad:
        # Hacemos la llamada a la API del tiempo
        API_KEY = 'TU_API_KEY'  # Reemplaza por tu API key de OpenWeatherMap
        url = f'https://api.openweathermap.org/data/2.5/weather?q={ciudad}&units=metric&appid={API_KEY}'
        response = requests.get(url)
        # Procesamos el resultado
        if response.status_code == 200:
            # Si la llamada fue exitosa, obtenemos el objeto JSON
            resultado = response.json()
            temperatura = resultado['main']['temp']
            update.message.reply_text(f'La temperatura actual en {ciudad} es de {temperatura:.1f}°C')
        else:
            # Si la llamada no fue exitosa, informamos al usuario
            update.message.reply_text('Ha ocurrido un error al leer la API del tiempo')
    else:
        # Si no se especificó una ciudad, informamos al usuario
        update.message.reply_text('Por favor, especifica una ciudad')

Añade un manejador para el comando /tiempo que llame a la función obtener_tiempo cuando se ejecute el comando:

Copy code

updater.dispatcher.add_handler(CommandHandler('tiempo', obtener_tiempo))

Ahora, cuando el usuario envíe el comando /tiempo seguido del nombre de una ciudad a través de Telegram, el bot hará una llamada a la API del tiempo de OpenWeatherMap y enviará al usuario la temperatura actual en grados Celsius de la ciudad especificada.

Espero que esto te ayude a añadir la funcional

…

Carlos:
agrega un handler para leer tomar varios parametros del usuario y luego llamar a una api rest y devolver el resultado al usuario

Para agregar un manejador que lea varios parámetros del usuario, haga una llamada a una API REST y devuelva el resultado al usuario, puedes hacer lo siguiente:

Importa la biblioteca requests al principio de tu archivo de Python:

Copy code

import requests

Define una función que procese los parámetros del usuario y haga la llamada a la API REST. En este ejemplo, asumimos que queremos que el usuario nos proporcione dos parámetros: valor_1 y valor_2, y que queremos hacer una llamada a una API que multiplica estos dos valores y devuelve el resultado:

Copy code

def multiplicar(update, context):
    # Obtenemos los parámetros del usuario
    try:
        valor_1 = int(context.args[0])
        valor_2 = int(context.args[1])
    except (ValueError, IndexError):
        update.message.reply_text('Por favor, proporciona dos valores numéricos')
        return

    # Hacemos la llamada a la API
    url = 'https://mi-api.com/multiplicar'
    data = {'valor_1': valor_1, 'valor_2': valor_2}
    response = requests.post(url, json=data)

    # Procesamos el resultado
    if response.status_code == 200:
        # Si la llamada fue exitosa, obtenemos el resultado
        resultado = response.json()['resultado']
        update.message.reply_text(f'El resultado de multiplicar {valor_1} y {valor_2} es {resultado}')
    else:
        # Si la llamada no fue exitosa, informamos al usuario
        update.message.reply_text('Ha ocurrido un error al llamar a la API')

Añade un manejador para el comando /multiplicar que llame a la función multiplicar cuando se ejecute el comando:

Copy code

updater.dispatcher.add_handler(CommandHandler('multiplicar', multiplicar))

Ahora, cuando el usuario envíe el comando /multiplicar seguido de dos valores numéricos a través de Telegram, el bot hará una llamada a la API que multiplica estos valores y enviará al usuario el resultado de la multiplicación.

Espero que esto te ayude a añadir la funcionalidad que necesitas. Si tienes alguna pregunta o necesitas más ayuda, no dudes en preguntar.

…

Carlos:

como hago para hacer deploy de este programa en vercel y que responda al BotFather de Telegram

Para hacer deploy de tu programa de Python en Vercel y que responda al BotFather de Telegram, debes seguir estos pasos:

Asegúrate de tener una cuenta en Vercel y de haber instalado la CLI de Vercel en tu computadora. Si aún no tienes una cuenta en Vercel, puedes crearla en https://vercel.com/. Si aún no has instalado la CLI de Vercel, puedes hacerlo ejecutando el siguiente comando en tu consola:

Copy code

npm install -g vercel

Inicia sesión en Vercel desde la consola usando el comando:

$ vercel login.

Crea un archivo vercel.json en el directorio raíz de tu proyecto con el siguiente contenido:

Copy code

{
  "version": 2,
  "builds": [
    { "src": "*.py", "use": "@vercel/python" }
  ]
}

Este archivo indica a Vercel qué archivos deben ser procesados y con qué runtime. En este caso, estamos indicando que todos los archivos con extensión .py deben ser procesados con el runtime de Python de Vercel.

Crea un archivo .env en el directorio raíz de tu proyecto con el siguiente contenido:

Copy code

TOKEN=TU_TOKEN

Reemplaza TU_TOKEN por el token de acceso que obtuviste del BotFather cuando creaste tu bot. Este archivo contiene las variables de entorno de tu proyecto. En este caso, estamos definiendo la variable de entorno TOKEN que luego podremos usar en nuestro código para acceder al token de acceso del bot.

Ejecuta el comando vercel en la consola para hacer deploy de tu proyecto. Vercel te pedirá que selecciones un nombre para tu proyecto y que confirmes la configuración de deploy.

$ vercel

Una vez que el deploy haya finalizado, Vercel te proporcionará una URL.

Copia esta URL y pégala en la sección "Webhook URL" del menú de configuración del BotFather.

Luego, envía el comando /setwebhook al BotFather para que comience a enviar actualizaciones a tu bot.

$ curl -X POST https://api.telegram.org/bot/setWebhook -H "Content-type: application/json" -d '{"url": "https://project-name.username.vercel.app/api/webhook"}'

Con estos pasos, tu bot debería estar configurado y listo para recibir actualizaciones a través de Vercel. Si tienes alguna pregunta o necesitas más ayuda, no dudes en preguntar.

…

Carlos:

cuales comandos necesito para poder instalar telegram.ext y el programa anterior

Para instalar la biblioteca telegram.ext y ejecutar el programa de Python que te proporcioné anteriormente, necesitarás hacer lo siguiente:

Asegúrate de tener Python instalado en tu computadora. Si aún no lo tienes, puedes descargarlo desde el sitio oficial de Python (https://www.python.org/downloads/).

Instala la biblioteca de Python para el API de Telegram llamada python-telegram-bot. Puedes hacer esto ejecutando el siguiente comando en tu consola:

Copy code

pip install python-telegram-bot

Crea un archivo de Python y coloca el siguiente código en él:

Copy code

import logging

from telegram.ext import Updater, CommandHandler

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)

def start(update, context):
    update.message.reply_text('Hola! Soy un bot de Telegram')

def main():
    # Creamos el Updater y le pasamos el token de acceso
    updater = Updater('TOKEN', use_context=True)
    # Añadimos un manejador para el comando /start
    updater.dispatcher.add_handler(Command

…

Carlos:

como hago para crear un pipenv con todo esto

Para crear un pipenv con la biblioteca python-telegram-bot y el código que te proporcioné anteriormente, debes seguir estos pasos:

Asegúrate de tener pipenv instalado en tu computadora. Si aún no lo tienes, puedes instalarlo ejecutando el siguiente comando en tu consola:

Copy code

pip install pipenv

Crea un directorio para tu proyecto y accede a él a través de la consola.

Ejecuta el siguiente comando para crear un pipenv y especificar que quieres usar Python 3.8:

Copy code

pipenv --python 3.8

Una vez que el pipenv haya sido creado, instala la biblioteca python-telegram-bot ejecutando el siguiente comando:

Copy code

pipenv install python-telegram-bot

Crea un archivo de Python y coloca el siguiente código en él:

Copy code

import logging

from telegram.ext import Updater, CommandHandler

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)

def start(update, context):
    update.message.reply_text('Hola! Soy un bot de Telegram')

def main():
    # Creamos el Updater y le pasamos el token de acceso
    updater = Updater('TOKEN', use_context=True)
    # Añadimos un manejador para el comando /start
    updater.dispatcher.add_handler(CommandHandler('start', start))
    # Iniciamos el bot
    updater.start_polling()
    updater.idle()

if name == 'main':
    main()

Reemplaza TOKEN por el token de acceso que obtuviste del BotFather cuando creaste tu bot.

Crea un archivo Pipfile en el directorio raíz de tu proyecto con el siguiente contenido:

Copy code

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
python-telegram-bot = "*"

[requires]
python_version = "3.8"

…

MINE: NFT MarketPlace de bienes muebles físicos

MINE: NFT MarketPlace de bienes muebles físicos

MINE: MarketPlace de NFT para títulos de propiedad de bienes muebles físicos (vehículos, motos, botes, entre otros).

MINE es una plataforma que permite hacer transacciones sin necesidad de presencia física de los compradores y vendedores en las localidades o países donde se realice la operación, con transacciones de compra/ventas pagadas en criptomonedas, con compras protegidas para el resguardo de la seguridad tanto del comprador como del vendedor.

Esta solución está basada en tecnologías de la Web3, mediante la creación de una DApp desplegada en la Blockchain de Ethereum.

Hecho en conjunto con el GOF5 (Gang of Five) durante el Ethereum Developer Program 2022 de Platzi.

Características

  • Los Usuarios (compradores, vendedores) deben conectar su Wallet para:
    • Registrarse.
    • Autenticarse.
    • Registrar nuevos bienes para la venta.
    • Comprar bienes.
  • Adicionalmente deben tener datos de contacto para negociar bienes y los precios:
    • DNI / Cédula.
    • Nombre.
    • Apellido.
    • Teléfono.
    • Correo electrónico.
  • Habrá una exhibición pública de los bienes. Los observadores también necesitan una Wallet para consultar y ver.
  • Los Bienes serán mostrados por categorías.
  • La moneda para mostrar los precios de los Bienes será US Dollar y la de intercambio oficial será el ETH.
  • Inicialmente estará solamente disponible en Medellín, Colombia.
  • Se asociará una comisión a cada uno de los NFT registrados en la DApp para que cada vez que se transfiera este NFT envíe un porcentaje al propietario del Smart Contract.
  • Se cobrará una comisión por cada venta realizada.

¿Cuál problema soluciona el proyecto?

¿Te ha pasado que quieres comprar o vender un vehículo fuera de tu localidad y no encuentras las personas o herramientas necesarias para poder realizar la transacción?

¿Estás cansado de los Marketplaces en redes sociales que no entregan la información verdadera de lo que buscas, y si ofreces un producto no se le da la suficiente visibilidad?

¿Estás cansado de pagar altas comisiones por transferencias bancarias para pagar bienes?

¿Cómo solucionarlo?

MINE: Una plataforma que permite hacer transacciones sin necesidad de presencia física de los compradores y vendedores en las localidades o países donde se realice la operación, con transacciones de compra/venta pagadas en criptomonedas, con compras protegidas para el resguardo de la seguridad tanto del comprador como del vendedor.

Esta solución está basada en tecnologías de la web3, mediante la creación de una DApp desplegada en la Blockchain de Ethereum.

Impacto para la Sociedad

  • En Latinoamérica no hay un Marketplace de NFT de bienes físicos como este.
  • Ahorro de Tiempo: comprador y vendedor pueden hacer las transacciones sin salir de casa/oficina.
  • Confianza y credibilidad entre las partes: porque los Bienes son auditados por peritos certificados, y estos Peritos pueden ser escogidos por los compradores.
  • No pasar por bancos: evitando así intermediarios.
  • Evitar altos “fees” de grandes transacciones y/o transferencias internacionales.

Valor Agregado respecto a la Web2

  • Descentralización:
    • La lógica de negocios es un Smart Contract.
    • El Frontend del App no puede ser censurado.
    • Los datos no están bajo control de los desarrolladores.
    • La Blockchain donde está desplegado el Smart Contract es Ethereum.
    • El Frontend está construido un de código abierto.
  • Trazabilidad de bienes, transacciones, firmas de involucrados.
  • Transparencia.

Actores

Comprador:

  • Pone el dinero de la compra del Bien.
  • Debe tener los fondos en su Wallet.
  • Paga el impuesto.

Vendedor:

  • Dueño del Bien.
  • Debe cubrir los gastos de la publicación del contrato y minteo (emisión) del NFT, con las características especificadas más adelante.
  • Paga el fee (comisión) del Perito o la certificación.

Peritos / Certificadores:

  • Certificar la validez del Bien, luego podrá venderse.
  • Firma la transacción cuando se cambia el Bien de dueño en el mundo real.
  • Cobrar fee de transacciones.
  • Servicio de creación de documentos digitales: si un producto no tiene título de propiedad, se genera.
  • El perito es el responsable legal de la transacción.

Notario:

  • A nivel físico-legal, realiza el cambio de los documentos.
  • A nivel digital, firma la transacción con su dirección / Wallet.
  • Recibe los impuestos.

Administrador (nuestra Wallet):

  • Cobrar comisiones.
  • Manda a ejecutar transferFrom de la cuenta del comprador a la del vendedor.

Características del NFT

El NFT va a ser una foto del Bien.

Metadata:

  • Descripción, categorías, arreglo de fotos.
  • Aparte de la foto principal, puede haber fotos adicionales (ejemplo: moto, vehículo, bote: desde distintos ángulos).
  • Un apartado de fotos solo visible para el vendedor y el comprador que ya de su visto bueno de intención de compra, y de los peritos, en donde estará el documento de propiedad.

Posibles Problemas

  • Conversión de ETH a USD/COP u otra moneda, y viceversa.
  • NFT duplicados (que se publique el mismo Bien para la venta varias veces).
  • Más de un dueño.
  • Penalizaciones en caso de fraude en las propiedades.

Arquitectura

Planes a Futuro

  • Los bienes solamente podrán ser vendidos siempre que estén verificados por un Perito certificado. Los Peritos deben tener una certificación oficial para ejercer sus funciones, validados por las entidades reguladoras a nivel de la región donde ejerzan sus actividades. Para esto aparecerá una insignia al mostrar el Bien que indique tal condición.
  • Los Peritos serán los encargados de auditar y certificar que los Bienes existan y estén en regla. Sobre ellos recaerá la responsabilidad legal de legitimidad de los Bienes. Podrán interactuar con el sistema usando sus Wallets y ganando una comisión por las compras y las ventas.
  • Compra/venta de bienes inmuebles: propiedades raíz, locales comerciales, entre otros agregando a la Metadata dirección, coordenadas GPS, fotos de exteriores e interiores.
  • Compra/venta de activos virtuales: parcelas en el Metaverso, obras de arte NFT, entre otros. 
  • Compra/venta de Joyas.
  • Subasta de bienes y activos.
  • Expandir la operación a otros países de Latinoamérica.
  • Utilizar como medio de pago Stable Coins cómo Tether(USDT).
  • Fotos adicionales en la Metadata de los Bienes, así como las fotos privadas.
  • Encriptaciones de datos sensibles de los usuarios (PII) almacenados en el IPFS.
  • Mostrar los precios en moneda local (por ejemplo, COP).

Herramientas utilizadas

Frontend

  • ReactJs
  • Web3.js (Wallet connection)
  • Chakra-UI (maquetación)
  • Mocha (testing)
  • HTML
  • CSS
  • JavaScript
  • VS Code (coding & peer programming)

Backend

  • Solidity
  • Hardhat
  • Open Zeppelin
  • Chain.link (integración de tasa cambiaria entre ETH – y USDT)
  • Chai (testing)
  • VS Code (coding & peer programming)

Integraciones

  • Metamask (Wallet + autenticación + Ethereum provider)
  • IPFS / Infura (persistencia de datos)
  • Goerli (testnet)
  • Goerli PoW Faucet (faucet)

Repositorio

Live Demo

Equipo Desarrollador

Eimer Wilfer Castro Hincapié
🔗 https://github.com/ewcastroh

Carlos J. Ramirez
🔗 https://github.com/tomkat-cr

Javier García
🔗 https://github.com/stratoff

José Valentín Salina
🔗 https://github.com/josevsalina

Fidelina Arteaga
🔗 https://github.com/fidelinaarteaga

¿Cómo lo solucionaron en equipo?

Nuestra convocatoria como equipo fue bastante espontánea. Eimer convocó a Carlos, luego ambos convocaron en el canal #General del Discord del reto #EthDevProgram y así aparecieron Javier, José y Fidelina. Finalmente, el grupo adoptó el nombre GOF5 (Gang of Five).

Entre nosotros hay un espíritu de igualdad y se respetan las intervenciones de cada quién. Esto surgió de manera natural desde el principio.

Comenzamos a reunirnos para ver cuáles ideas teníamos. Cada uno expuso su idea, y con mente maestra íbamos agregando detalles y otras cosas que fueron apareciendo.

Dejamos aterrizar la idea un día o dos, y luego se sometió a votación. Nadie hizo presión, ni publicidad, ni lobby. No se compraron votos. No importó tampoco de quién fueron las ideas.

Acordamos comenzar a hacer reuniones diarias para poder alcanzar las metas. Las primeras reuniones duran menos de 1 hora para poner a funcionar la mente maestra y darle forma al proyecto. Luego de establecer el tablero Jira, comenzar a crear y asignar tareas en el Backlog, nos reunimos diariamente en Stand Ups de 15-20 minutos para hacer el seguimiento, viendo que se hizo el día anterior, que se planea hacer el día de hoy y la existencia de algún bloqueo.

Comenzamos a trabajar en el Whitepaper, en reuniones un tanto maratónicas (3-5 horas) pero muy productivas. Delimitamos el proyecto, describimos actores, procedimientos, y sobre todo, la parte conceptual: la historia, el impacto, valor agregado de la Web 3 sobre hacerlo en la Web 2, posibles problemas, marco legal, el pitch, las tecnologías, entre otras cosas.

En un momento dado perdimos la fe en el proyecto, porque llegamos a pensar que no tenía mucho sentido la parte conceptual respecto a las ventajas de la Blockchain vs las aplicaciones actuales de la Web 2.0 y la complejidad de los asuntos legales implicados en el traspaso de bienes, sin embargo, logramos establecer bien el valor agregado que podemos dar solucionando el problema con nuestra plataforma que facilitaría y daría seguridad en la compra/venta de bienes de los usuarios.

En otra sesión maratónica definimos el Pitch Elevator de 90 segundos, la presentación del proyecto, los logos para el Dapp y el grupo, y una maqueta con el diseño de las pantallas.

Ya con la agenda para las próximas 2 semanas más clara, comenzamos a trabajar en equipos para el Frontend, Backend y Operaciones.

Nuestro slogan oficial: “Resolvamos con lo que hay”.

Metodología de trabajo, Seguimiento y Entregables

Establecimos Scrum como metodología de trabajo ágil y Jira como herramienta para hacer el seguimiento.

Establecimos Sprint de 1 semana a partir del 23 de agosto de 2022.

Se hizo en 2 Sprint y al final de cada uno hubo un entregable:

Mi experiencia en Devcon Bogota 2022

Mi experiencia en Devcon Bogota 2022

Mi experiencia en Devcon Bogota 2022

En este artículo les cuento cómo viví la increíble experiencia en la Devcon Bogota 2022.

Devcon es la conferencia mundial de la comunidad Ethereum. Es una introducción intensiva para los nuevos exploradores de Ethereum, una reunión familiar global para aquellos que ya forman parte del ecosistema y una fuente de energía y creatividad para todos.

Se convoca cada año para educar y capacitar a la comunidad para construir y usar sistemas descentralizados.

Es una conferencia para constructores de todo tipo: desarrolladores, diseñadores, investigadores, implementadores de clientes, ingenieros de pruebas, operadores de infraestructura, organizadores comunitarios, economistas sociales, artistas y más.

La Devcon 6 fue realizada en Bogotá del 11 al 14 de octubre de 2022 en el Ágora Bogotá Convention Center, luego de 2 años de ausencia por la Pandemia del COVID19.

Para mí fue magia pura. Las palabras no son suficientes para describir esta increíble experiencia.
Gracias al apoyo total recibido por Source Meridian, con el cual esta experiencia fue posible para mí.

Devcon Bogota 2022 Carlos J Ramirez
Devcon Bogota 2022 Carlos J Ramirez – Una Experiencia Inolvidable

Aparte de toda la gente nueva que conocí de la comunidad y el ecosistema, aparte de encontrarme con muchos de los compañeros, mentores y profesores del Ethereum Developer Program, fue darme cuenta del camino a seguir para consolidarme como Blockchain Developer.

Participantes del Platzi Ethereum Developer Program compartiendo en la Chiva Chillout de ETH Latam en la Devcon Bogota 2022

Preámbulo a la Devcon Bogota 2022

Terminé el Ethereum Developer Program el 13 de septiembre de 2022. Fueron 3 meses intensos en los que volví a sentirme como un estudiante universitario, con el rush de las entregas de trabajos, cursos, prácticas y el proyecto final.

El Ethereum Developer Program cambió algo dentro de mí, una emoción que tenía dormida desde 2018 cuando hice minería de Ethereum con mi propio RIG.

La gente de Platzi nos consiguió entradas a precios de Developer para la Devcon y pensé “quiero estar allí, quiero ser parte de eso”. Le pedí apoyo a Source Meridian, la empresa en donde tengo el privilegio de trabajar desde 2019, y me apoyaron en todo; cómo es su costumbre, fue un apoyo por todo lo alto: inmejorable hospedaje, pasajes de avión, viáticos y traslados, todo.

Viví The Ethereum Merge el 15 de septiembre de la mano de ETH Latam (con la CryptoChica, Dmars, Joxes, El Perro, entre otros) hasta que me venció el sueño como a la 1 AM.

Me desperté faltando 10 minutos para la hora cero y la viví de la mano de ETH Global…

ETH Latam

El lunes antes de la Devcon asistí a un día completo de evento en español de ETH Latam.

Es difícil seleccionar la mejor presentación, pero una de las que más me impactó fue la de JJ Campusano, sobre ¿Qué es Ethereum? historia y futuro, desde 2013 hasta el 2030, la evolución de una red planetaria de coordinación humana.

Otra charla que me gustó mucho fue la entrevista a Vitalik Buterin. El entrevistador le preguntó “¿Qué nos puedes decir para confirmar que Vitalik es un humano y no un reptiliano?”. Luego de lucir un tanto apenado, Vitalik respondió “Yo no soy una computadora, yo no soy súper humano, yo soy un humano normal. Todos ustedes pueden hacer mucho en nuestro ecosistema, todo es posible en nuestra comunidad”. Dijo ser un ser humano real y normal que comete errores.

Hackathon de ETH Latam

Hubo un Hackathon de ETH Latam el fin de semana completo antes de la Devcon.

Algunos de mis compañeros del Ethereum Developer Program de Platzi participaron como Developers y colaboradores y pude conocer de primera mano sus experiencias, que me animaron a participar en los próximos eventos de este tipo.

Conocimientos y Comunidad

Pude disipar algunas dudas que tenía, sobre todo con sobre ZK-rollup (Zero Knowledge off-chains, tales como StarkNet), Layer 2 (L2 off-Chains, tales como Optimism, Arbitrum y zkSync), las Side Chain (por ejemplo, Polygon, Ronin o Gnosis), el Danksharding y el EIP 4844.

Pude ver la cantidad y la calidad de los proyectos, destacando los de Push.org (para enviar notificaciones entre usuarios vía Wallets) y Lit Protocol (encriptación de archivos en IPFS).

En este enlace está la presentación del Protocolo Lit y las “Decentralized Programmable Key Pairs

En mi caso particular, fue muy emocionante conocer a la gente de ETH Caracas.

Presentaciones y Charlas

Las presentaciones de calidad mundial, de la mano de protagonistas creadores de los protocolos de Ethereum tales como Vitalik Buterin, Dankrad Feist, el equipo detrás de The Merge, los Oráculos (Chain Link, Consensys/Infura, entre otros), las Wallets (Metamask, Ambire e imToken), las DAO (Decentralized Autonomous Organizations), tales como MakerDao, creadores de la moneda DAI, las DEX (Decentralized Exchanges, tales como Lido), empresas de seguridad de Smart Contracts y protocolos (como OpenZeppelin), la Ethereum Foundation, los ETH Hubs (ETH Global, ETH Latam, ETH Buenos Aires, ETH Bogotá, ETH Medellín, ETH Caracas, ETH Perú, ETH Ecuador, etc.), entre muchos muchos otros miembros del ecosistema.

Durante la ceremonia de apertura, Aya Miyagotchi, la Eclectic Dreamer de la Ethereum Foundation, dio la charla “Executing with Subtraction in the Infinite Garden”.

La Sustracción se trata de no dar mucho poder a las instituciones o grupos de personas, como sucede en el mundo de las empresas y gobiernos. “Sustraer no significa hacer menos, significa sustraer tu poder para poder lograr más educación, comunicación, coordinación e investigación”.

Otra charla en la apertura fue la de Vitalik Buterin “Ethereum en 30 Minutes”, donde explica aspectos conceptuales y técnicos de la Blockchain, el nuevo mecanismo de consenso PoS (Proof of Stake), el flujo de las transacciones, la estructura de los bloques, los Merkle Trees, los lenguajes de alto nivel, y los siguientes pasos luego de The Merge.

El archivo de Charlas y Workshops se puede acceder mediante la dirección:

https://archive.devcon.org/archive/playlists/devcon-6/

Workshops

Los Workshops estuvieron fenomenales.

Recuerdo uno en particular, el de “DAO Governance Design Jam” sobre la dinámica de la toma de decisiones en una DAO, en la que tuvimos oportunidad de compartir con @LayerOne de la MakerDAO, quien compartió experiencias de la vida real en una organización autónoma descentralizada.

Tuve oportunidad de asistir a Workshops sobre la nueva forma de llegar a consensos mediante el PoS (Proof of Stake), donde pude entender entre otras cosas el concepto del MEV (Maximal Extractable Value), que se refiere al valor máximo que se puede extraer de la producción de bloques por encima de la recompensa de estos, y las tarifas de gas estándares incluyendo, excluyendo y cambiando el orden de las transacciones en un bloque. Es una manera que tienen los validadores o participantes del PoS para priorizar los bloques que van a procesar, maximizando sus ganancias.

En el workshop “Demystifying Ethereum Assembly” aprendimos como incrustar Assembly en Solidity (el lenguaje de programación para crear Smart Contracts en la EVM de Ethereum). Aunque es un poco más difícil de entender e implementar, esta forma de programar ahorra los GAS fees, que son un tema de gran debate en la comunidad Ethereum por los altos costos de operación; un punto álgido en la adopción de esta Blockchain.

En el workshop “Hunting and Monitoring for On-Chain Attacks”, aprendimos a diseccionar un ataque en cadena del mundo real, clasificando cada paso que puede tomar el atacante en cuatro etapas distintas (financiación, preparación, explotación y lavado de dinero) y recorrimos el desarrollo de un enfoque heurístico/ML para identificar estos ataques utilizando la red Forta.

En el workshop “Build a DApp on Optimism: How to Conquer L2 Bridging”, aprendimos cómo crear fácilmente una DApp que aproveche L2 Bridge Box de Truffle, que ayuda a configurar rápidamente una DApp para manejar todas las complejidades que conlleva el puente L2. Estos puentes permiten descargar a la Mainnet (L1) de operaciones costosas, realizando los cálculos y actualizando el estado de la L1 únicamente con los resultados, y dejando el cómputo y el detalle de los resultados en la L2.

Finalmente, uno de los Workshops más espectaculares fue “Danksharding + Data Availability Sampling (DAS) Workshop”, donde estuve muy cerca de Vitalik Buterin (creador de Ethereum), de Dankrad Feist (creador del Danksharding) y del equipo detrás de esta tecnología en desarrollo.

El Danksharding es básicamente una propuesta para poder aumentar la cantidad de datos que se pueden almacenar en la Blockchain, para que se pueda utilizar como las bases de datos de nuestros tiempos. Esto debido a que el costo de almacenamiento en Ethereum es costoso, lo cual limita su uso y tamaño.

Side Events

Hubo gran cantidad de eventos paralelos a la Devcon.

Tuve oportunidad de ir a varios, entre ellos el Workshop de Chain.Link sobre NFT Dinámicos en las oficinas de Platzi, el evento de Platzi y NEAR en el hotel Hilton, el encuentro de Open Zeppelin en el Hyatt Grand Bogotá.

Y las grandes fiestas tipo Rave de ETH Global, Reserve y Zulu en la Zonas Rosa.

Platzi

Los alumnos de Platzi tuvimos oportunidad de conocer a los mentores, profesores y representantes de la plataforma que llevaron el Ethereum Developer Program, al igual que toda la gente de la Ethereum Foundation.

SWAG: los regalitos

La Devcon y el lugar de los SWAGs. Se trata de obsequios que dan los proveedores de servicios, patrocinadores, o personas que promueven sus proyectos. Los regalos son más que todo franelas, gorras, sweaters, tazas de café, entre otros. Tuve que comprar una maleta más grande para poder traerme todo lo que me regalaron.

Uno de mis preferidos fue el SWAG de ENS por tener mi nombre de dominio “carlosjramirez.eth”. El regalo consistió en una escarapela con mi avatar y la experiencia de un dispositivo NFC que genera un POAP (Proof of Attendance Protocol) al acercar el smartphone a la escarapela. El POAP lleva el mensaje “I met carlosjramirez.eth at Devcon 6”. Los POAPs se usan como constancia de que se estuvo en un lugar, se asistió a un evento o se conoció a alguien.

Otro SWAG interesante fue el café “ETHER Coffee: Devcon Bogotá Special Blend” que dieron como parte del paquete de inscripción en la Devcon. Un detallazo sin duda.

El cierre del Evento

“Ethereum no es sólo una tecnología, Ethereum es una comunidad, es un movimiento, y así como todos los movimientos, todas las comunidades, nosotros tenemos valores. Y uno de esos valores son las libertades civiles, derechos civiles”.

Con estas palabras, Skylar introdujo la charla de cierre de la Electronic Frontier Foundation que me impactó muchísimo.

Kurt Opssahl habló sobre “Privacy and Free Expression” y la importancia de ampliar la comunidad de desarrolladores de Ethereum, de mantenernos unidos, de seguir desarrollando aplicaciones y protocolos para poder fortalecer el paradigma descentralizado, la unión y poder contrarrestar las acciones de censura del sistema en contra el movimiento.

Destacó el caso de Tornado Cash, en el que uno de los programadores, Alexey Pertsev, fue detenido en Holanda y está en la cárcel sin cargos formales ni fecha de juicio. Acusado por la OFAC (Office of Foreign Assets Control) en agosto 2022 de lavado de dinero por la naturaleza de la Dapp que desarrolló junto a Roman Semenov y Roman Storm, y su papel en el lavado de más de $ 455 millones en criptomonedas robadas por la organización de piratería Lazarus Group, vinculada a Corea del Norte.

Según el blog de Chainalysis: “Tornado Cash puede ser una solución práctica para usuarios legítimos que buscan privacidad financiera, como aquellos que desean donar a causas políticas sin hacer públicos los detalles o aquellos que desean mantener la información sobre su riqueza privada. Pero también es atractivo para los ciberdelincuentes que buscan lavar dinero. El comunicado de prensa del Tesoro anunciando las sanciones de Tornado Cash señaló específicamente el papel de Tornado Cash en el lavado de más de $ 455 millones en criptomonedas robadas del protocolo Ronin Bridge de Axie Infinity por la organización de piratería afiliada a Corea del Norte, Lazarus Group, y su recepción de fondos robados de Harmony Bridge y Nomad Bridge en junio y agosto de este año. Desde 2019, casi el 30% de los fondos enviados a través de él han estado vinculados a actores ilícitos, y la República Popular Democrática de Corea ha sido uno de sus principales beneficiarios.”

Se puede ver la charla de cierre de la DEVCON en este vídeo.

Estamos Melos

La sorpresa más grande fue el fin, cuando Skylar dijo “bueno, con esto concluimos la Devcon, así que gracias por todo y ahora, retornemos a construir”. Todo parecía un final medio vacío y sin emoción, cuando de repente alguien dijo “hola, eh, tengo una pregunta… ¿estamos melos?” y comenzó el espectacular cierre con una parranda al estilo Carnaval de Barranquilla.

La fiesta de cierre

La fiesta de cierre de la Devcon Bogotá 2022 duró horas, la gente no paraba de bailar en un crossover fenomenal.

Networking

Fue increíble toda la energía que había en el evento.

El Networking era brutal. En los almuerzos tuvimos la oportunidad de conocer a muchos developers y dueños de proyectos y protocolos, así como también inversionistas.

Después de las presentaciones, charlas y workshops, la parte más importante de la Devcon es el networking, conocer gente, hacer contactos, compartir experiencias y hacer comunidad.

Algunos de los proyectos con los que hice contacto:

https://protofire.io/

https://peanut.trade/

https://yozh.io/

https://omniatech.io/

https://polkadot.network/es/

https://chain.link/

https://minaprotocol.com/

https://consensys.net/

https://near.org/

https://www.openzeppelin.com/

https://push.org/

https://litprotocol.com/

https://smarttokenlabs.com/

https://www.optimism.io/

https://ens.domains

https://ethereum.org/en/foundation/

https://arbitrum.io/

https://lens.xyz/

https://www.algorand.com/

https://intmax.io/

https://stereum.net/

https://iyk.app/

https://token.im/

https://reserve.org

https://www.zulu.io/

https://tropykus.com/

https://lido.fi/

https://platzi.com/

https://aave.com/

https://anoma.net/

https://www.meta-carbon.com/

https://www.ambire.com/

https://www.santiment.net/

https://sanr.app/

https://tenderly.co/

https://www.battlezips.com/

https://battlezips.gitbook.io/battlezips

https://interep.link/

https://makerdao.com

https://starkware.co/starknet/

http://ethmalaysia.com/

https://www.dappnode.io/

https://www.choco4peace.com/devcon

https://chainsafe.io/

https://osec.io/

https://forta.org/

https://www.prepchain.net/

Próximas Paradas

ETH Medelllin

https://www.ethmedellin.co/

https://twitter.com/EthMedellin

Chainlink Fall 2022 hackathon | OCTOBER 14 – NOVEMBER 18

https://chain.link/hackathon

Los próximos Hackathones de ETH Global

https://ethglobal.com/events/hackathons