Labeler NearBy

Table of Contents

Mi Primer Hackathon

Durante las últimas partes del verano de 2022, realmente quería trabajar en un proyecto emocionante. Acababa de terminar mi licenciatura y trabajaba a tiempo completo como ingeniero de software. Quería comprometerme con un proyecto paralelo y, en ese momento, tenía suficiente tiempo libre para hacerlo. Realmente no sabía en qué trabajar, hasta que descubrí un sitio web llamado Devpost en agosto de 2022. Devpost es un sitio web que alberga competiciones de software llamadas hackathons. Navegando en Devpost, descubrí un hackathon llamado NEAR MetaBUILD III que fue organizado por la organización NEAR Protocol.

¿Qué es NEAR?

El NEAR Protocol es una blockchain que soporta contratos inteligentes y la criptomoneda NEAR. Es conocida principalmente por sus tarifas de transacción muy bajas, el soporte de contratos inteligentes, su propia red de pruebas oficial y un gran entorno de desarrollo debido a que puedes escribir contratos inteligentes en Rust y/o JavaScript. Puedes obtener una mejor visión del NEAR Protocol a través del increíble video de CoinGecko:

Durante este tiempo, Coinbase comenzó a soportar oficialmente el NEAR Protocol como una moneda negociable en su plataforma. Esto fue importante porque Coinbase es conocido por ser muy selectivo con las monedas que soporta. Esto ayudó a que NEAR fuera una plataforma más confiable. Todavía puedes comerciar NEAR en Coinbase hasta hoy.

¿Por Qué Comprometerse?

Después de pensar un tiempo, decidí dedicar mi tiempo a competir en el hackathon NEAR MetaBUILD III. Mi razonamiento fue el siguiente:

  • La criptografía no va a desaparecer y es una tecnología que permanecerá. Así que tenía sentido invertir tiempo en aprender la tecnología.
  • El hackathon ofrecía grandes recompensas, entre $20,000 y $100,000 en NEAR si eras uno de los ganadores.
  • El hackathon tenía una fecha límite específica, lo que significa que el proyecto no podía arrastrarse durante meses como muchos proyectos paralelos suelen hacerlo.
  • El proyecto sería una gran experiencia de aprendizaje y una excelente introducción a los hackathons.
  • En el peor de los casos, el hackathon me permitiría crear un gran proyecto para mostrar en mi currículum.

Con todo esto en mente, llamé a mi amigo cercano de la universidad el 26 de agosto de 2022 y empezamos a planificar este hackathon. El hackathon estaba programado para comenzar el 23 de septiembre de 2023 y concluir el 21 de noviembre de 2022. Aunque la fecha límite se extendió hasta el 24 de noviembre de 2023 al final del hackathon. Como estábamos un mes adelantados, decidimos usar este tiempo para aprender y generar ideas sobre lo que trabajaríamos durante este hackathon de 2 meses. Durante ese primer mes, obtuvimos una visión general de criptomonedas y blockchains. Revisamos y practicamos en la testnet de NEAR, revisamos el NEAR SDK y desplegamos un par de contratos inteligentes.

La Idea

Después de obtener una gran introducción a todo lo relacionado con blockchain y NEAR, empezamos a generar ideas. Quería que este proyecto fuera algo más que un “proyecto de hackathon”, sino algo que pudiera convertirse en un producto que otros pudieran usar y servir como ejemplo de cómo la criptografía podría ser útil fuera del simple intercambio.

Con esto en mente, inicialmente decidimos crear algo similar al Blueprint de Unreal Engine, pero para la creación y despliegue fácil de contratos inteligentes en la blockchain NEAR sin necesidad de codificar. Sin embargo, una semana antes de que comenzara el hackathon, abandonamos la idea porque simplemente no tenía sentido. ¿Por qué alguien usaría nuestra herramienta para crear contratos inteligentes de NEAR si aún no había un caso de uso práctico? Sería como desarrollar una herramienta que muchos no necesitan.

Con solo una semana antes del inicio del hackathon, volvimos a generar ideas y nos quedamos con esta:

Una plataforma descentralizada donde los investigadores de IA pueden externalizar
el etiquetado de datos a etiquetadores alrededor del mundo

Nombramos el proyecto “Labeler NearBy”. Nuestra decisión de elegir esta idea se basó en los siguientes motivos:

  • El desarrollo de IA requiere etiquetado humano de datos para entrenamiento.
  • Encontrar y gestionar personas calificadas para etiquetar conjuntos de datos específicos es un desafío.
  • La idea ya ha sido implementada con éxito por una empresa llamada Scale AI, como se evidencia en su ajuste producto-mercado.
  • Los servicios centralizados como Scale AI generan preocupaciones, ya que las organizaciones deben enviar sus datos a la empresa de etiquetado, que luego externaliza a etiquetadores humanos globalmente. Después del proceso de etiquetado, la empresa devuelve los datos etiquetados a la organización, lo que cede el control de datos valiosos que podrían ser usados por la empresa de etiquetado para entrenar sus propios modelos. Descentralizar este servicio parecía una solución lógica.
  • Encontramos muy pocos proyectos en el espacio de aplicaciones descentralizadas (dApp) trabajando en esta idea, lo que brinda una oportunidad para innovar y liderar en este área.

Para reducir la complejidad, decidimos que Labeler NearBy solo soportará datos de imágenes por ahora.

Envío

Con la idea elegida y el hackathon oficialmente en marcha, mi amigo y yo comenzamos a construir Labeler NearBy. Trabajamos en nuestro proyecto durante 2 meses hasta que enviamos el borrador final de nuestro proyecto a Devpost el 24 de noviembre de 2022. Enviamos nuestro proyecto a Devpost y también creamos una copia de nuestra presentación en Github. Este blog no cubre todos los aspectos técnicos y el proceso de desarrollo de Labeler NearBy. Con esto en mente, para aprender más sobre cómo funciona Labeler NearBy o ver nuestra presentación final, visita uno de los siguientes enlaces:

Labeler NearBy consta de dos bases de código: ln-researcher y ln-labeler. Estas bases de código son completamente de código abierto bajo la licencia MIT y pueden verse en los siguientes enlaces:

A continuación se muestra una visión general de cómo funcionaría Labeler NearBy (LN):

Un investigador necesita imágenes etiquetadas para entrenar su modelo de IA. Para lograrlo, el investigador utiliza LN para alojar sus datos y proporcionar un medio para que los etiquetadores etiqueten sus datos. Esto se logra mediante ln-researcher, un servicio web auto‑alojado que consta de una API, los contratos inteligentes del investigador y una base de datos local Postgres. Para el etiquetador, se proporciona (o se habría proporcionado) una interfaz web que les permite acceder y etiquetar las imágenes del investigador. En el proceso de etiquetado, una imagen se etiqueta tres veces por diferentes etiquetadores. Solo el etiquetador con las mejores etiquetas, determinado mediante un sistema de votación, recibe recompensas en NEAR. La aplicación web responsable de este proceso se llama ln-labeler. El investigador financia cada operación de etiquetado, y los tokens NEAR pueden convertirse fácilmente a dólares mediante Coinbase. Todas las transacciones son gestionadas por contratos inteligentes alojados en la blockchain de NEAR Protocol.

Puedes ver nuestro video de demostración de Labeler NearBy para el hackathon aquí:

Mayor Logro

La característica de la que estoy más orgulloso es una función llamada getImage(). Esta función sirve como punto final de API en ln-researcher y juega un papel crucial en la cadena de datos entre investigadores y etiquetadores en Labeler NearBy (LN).

Este punto final de API permite a los investigadores distribuir sus imágenes de forma segura y confiable para su etiquetado. Las asignaciones de etiquetado se gestionan mediante contratos inteligentes de NEAR en la blockchain de NEAR Protocol, mientras que los datos de la imagen son alojados por el investigador a través de ln-researcher.

El punto final realiza una serie de verificaciones de seguridad para garantizar que solo el etiquetador asignado pueda acceder a la imagen. Esto incluye verificar la firma de la solicitud y comprobar el contrato inteligente asociado para confirmar la existencia de la tarea y su asignación al etiquetador solicitante.

Una vez validada la solicitud en la API auto‑alojada ln-researcher, la función recupera la imagen de la base de datos local Postgres, la encripta y la entrega al etiquetador autorizado, quien luego puede descifrarla para etiquetarla. Simultáneamente, la función actualiza el estado de la imagen en la base de datos, indicando el progreso del etiquetado. En este proceso se utilizan claves RSA tanto del investigador como del etiquetador para autenticación, y se emplea cifrado AES para la imagen.

Este punto final es crucial para gestionar la distribución segura y controlada de imágenes de investigadores a etiquetadores. Garantiza la transferencia segura de datos y rastrea y gestiona eficazmente el proceso de etiquetado. Además, este proceso tiene el potencial de eliminar la necesidad de usar HTTPS, al menos para este punto final.

Este punto final/función fue probado y demostrado funcional. A continuación se muestra un diagrama que ilustra la funcionalidad general de Labeler NearBy, incluyendo una representación clara de cómo funciona el punto final/función mencionado:

Resultado

Lamentablemente, la triste realidad es que no pudimos completar totalmente el proyecto antes de la fecha límite del hackathon. La mayor parte del proyecto se completó, como el ln-researcher, pero el frontend (ln-labeler) no se completó y no pudimos desplegar una demo en vivo. Aunque el backend (ln-researcher) estaba básicamente terminado, sin un frontend funcional y sin una demo en vivo, nadie pudo probar la idea de Labeler NearBy. Además, los jueces no pudieron probar el proyecto y tuvieron que leer la presentación, revisar el código y/o intentar ejecutarlo ellos mismos, lo que redujo nuestras posibilidades de ganar a prácticamente cero por ciento. Esto se confirmó el 15 de diciembre de 2022 cuando se anunciaron los ganadores del hackathon, y no estábamos entre ellos.

Perdida

No ocultaré el hecho de que el resultado final de este hackathon fue desalentador. Se invirtieron meses en este proyecto y tenía una visión importante para él, pensando que sería una herramienta muy útil para los investigadores.

Tengo un estándar claro para los proyectos que emprendo: o triunfan o fallan; no hay punto medio. Así que este proyecto fue un fracaso porque no se completó antes de la fecha límite y quedó inaccesible para los usuarios potenciales.

Pero es importante recordar que el fracaso es una parte natural de la vida. Nuestros éxitos se construyen sobre las lecciones aprendidas de nuestros fracasos. Aunque el resultado de este hackathon fue desalentador, todavía proporcionó valiosas ideas sobre el desarrollo y la construcción de un proyecto/producto.

Lecciones Aprendidas

Las principales lecciones que obtuve de esta experiencia fueron:

  1. El proyecto que elegimos requería muchas funcionalidades construidas de antemano antes de poder iterar. ¿Qué quiero decir con esto? Este proyecto necesitaba casi todos los componentes de la idea construidos antes de poder probar la idea. Habría sido más sensato elegir un proyecto con menos componentes esenciales para funcionar. Así podríamos haber construido los componentes esenciales más rápido y luego iterar. De esta forma, podríamos haber cumplido la fecha límite más fácilmente y haber creado un proyecto más simple pero más completo. YC, una aceleradora de startups, enfatiza que deberías lanzar rápidamente, hablar con usuarios e iterar. Deberíamos haber hecho eso con nuestro proyecto para este hackathon.
  2. Subestimamos cuánto tiempo tomaría construir este proyecto. Este fue nuestro primer hackathon y nuestra primera aplicación descentralizada (dapp). Además, yo trabajaba a tiempo completo como ingeniero de software y mi amigo estaba completando su maestría. Sin embargo, pensamos que 2 meses serían suficientes. Habría sido más sensato reducir el alcance del proyecto o encontrar un miembro adicional que redujera la carga de trabajo.
  3. Winston Churchill dijo: “La perfección es el enemigo del progreso”. Traté este proyecto como un producto B2C, cuando en realidad era solo un proyecto de hackathon y, como máximo, un producto mínimo viable (MVP). Así que al principio perdí mucho tiempo en detalles pequeños cuando debería haberme centrado en que las funciones principales funcionaran suficientemente.

Además de estas valiosas lecciones, he adquirido nuevas habilidades que han sido invaluable en mis proyectos personales y profesionales:

  1. Desarrollo de APIs con Node.js, JavaScript y Express.js.
  2. Configuración y uso de PostgreSQL para gestión de datos.
  3. Incorporación de PostgreSQL en el desarrollo de APIs mediante paquetes como PG.
  4. Uso de RSA (cifrado asimétrico) y AES (cifrado simétrico) para mejorar la seguridad de los datos.

Conclusión

En general, me alegra haber participado en este hackathon, aunque estoy decepcionado con el resultado final. Agradezco las lecciones y habilidades adquiridas trabajando en Labeler NearBy, ya que me han convertido en un mejor desarrollador y han contribuido significativamente al desarrollo de mi próximo proyecto: Notify-Cyber.

Otros Comentarios

  • Puede que vuelva a Labeler NearBy, pero por ahora el proyecto está en “largo descanso”.
  • Actualmente, Labeler NearBy solo debe ejecutarse en la testnet de NEAR. Necesita más desarrollo, pruebas y auditoría.