Labeler NearBy

Table of Contents

Meu Primeiro Hackathon

Durante as últimas partes do verão de 2022, eu realmente queria trabalhar em um projeto empolgante. Eu acabara de terminar a graduação e estava trabalhando em tempo integral como engenheiro de software. Eu realmente queria me dedicar a um projeto paralelo e, na época, eu tinha tempo livre suficiente para isso. Eu realmente não sabia no que trabalhar, até descobrir um site chamado Devpost em agosto de 2022. Devpost é um site que hospeda competições de software chamadas hackathons. Navegando no Devpost, descobri um hackathon chamado NEAR MetaBUILD III que era organizado pela NEAR Protocol.

O que é NEAR?

O NEAR Protocol é uma blockchain que suporta contratos inteligentes e a criptomoeda NEAR. É principalmente conhecido por ter taxas de transação muito baixas, suporte a contratos inteligentes, possuir sua própria rede de teste oficial e um ótimo ambiente de desenvolvimento devido ao fato de que você pode escrever contratos inteligentes em Rust e/ou Java Script. Você pode obter uma visão melhor do NEAR Protocol através do incrível vídeo da CoinGecko:

Durante esse período, a Coinbase começou a suportar oficialmente o NEAR Protocol como uma moeda negociável em sua plataforma. O que foi um grande acontecimento porque a Coinbase é conhecida por ser muito seletiva quanto às moedas que suporta em sua plataforma. Isso ajudou a tornar o NEAR uma plataforma mais confiável. Você ainda pode negociar NEAR no Coinbase até hoje.

Por que se comprometer?

Depois de refletir um pouco, decidi dedicar meu tempo a competir no hackathon NEAR MetaBUILD III. Meu raciocínio foi o seguinte:

  • Criptomoedas não vão desaparecer e são uma tecnologia que permanecerá. Portanto, fazia sentido investir algum tempo aprendendo a tecnologia.
  • O hackathon oferecia grandes recompensas, entre US$ 20.000 e US$ 100.000 em NEAR se você fosse um dos vencedores.
  • O hackathon tinha um prazo específico, o que significava que o projeto não poderia se arrastar por meses como muitos projetos paralelos geralmente são.
  • O projeto seria uma ótima experiência de aprendizado e uma excelente introdução aos hackathons.
  • No pior cenário, o hackathon me permitiria criar um ótimo projeto para mostrar no meu currículo.

Com tudo isso em mente, liguei para um amigo próximo da faculdade em 26 de agosto de 2022 e começamos a planejar para esse hackathon. O hackathon estava programado para começar em 23 de setembro de 2023 e concluir em 21 de novembro de 2022. Embora o prazo tenha sido estendido até 24 de novembro de 2023 no final do hackathon. Como estávamos um mês adiantados, decidimos usar esse tempo para aprender e brainstormar o que faríamos durante esse hackathon de 2 meses. Durante o primeiro mês, obtivemos uma visão geral de cripto e blockchains. Revisamos e praticamos na testnet da NEAR, revisamos o NEAR SDK e implantamos alguns contratos inteligentes.

A Ideia

Depois de receber uma ótima introdução a tudo relacionado a blockchain e NEAR, começamos a brainstormar ideias. Eu queria que esse projeto fosse algo que não fosse apenas um “projeto de hackathon”, mas algo que pudesse se tornar um produto que outras pessoas pudessem usar e servir como exemplo de como cripto poderia ser útil para coisas além de apenas negociação.

Com isso em mente, inicialmente decidimos criar algo semelhante ao Blueprint do Unreal Engine, mas para a criação e implantação fácil de contratos inteligentes na blockchain NEAR sem a necessidade de codificação. No entanto, uma semana antes do início do hackathon, abandonamos a ideia porque simplesmente não fazia sentido. Por que alguém usaria nossa ferramenta para criar contratos inteligentes NEAR se ainda não houvesse um caso de uso prático para eles? Seria como desenvolver uma ferramenta que muitas pessoas não precisariam.

Com apenas uma semana restante antes do início do hackathon, voltamos a brainstormar e nos decidimos por esta ideia:

A plataforma descentralizada onde pesquisadores de IA podem terceirizar
rotulagem de dados para rotuladores ao redor do mundo

Nomeamos o projeto “Labeler NearBy”. Nossa decisão de escolher essa ideia foi baseada nos seguintes motivos:

  • O desenvolvimento de IA requer rotulagem humana de dados para treinamento.
  • Encontrar e gerenciar indivíduos qualificados para rotular conjuntos de dados específicos é desafiador.
  • A ideia já foi implementada com sucesso por uma empresa chamada Scale AI, como evidenciado pela forma como encontraram ajuste produto‑mercado.
  • Serviços centralizados como a Scale AI levantam preocupações, pois as organizações precisam enviar seus dados para a empresa de rotulagem, que então terceiriza rotuladores humanos globalmente. Após o processo de rotulagem, a empresa devolve os dados rotulados à organização. Isso entrega o controle de dados de treinamento valiosos, que poderiam ser usados pela empresa de rotulagem para treinar seus próprios modelos. Descentralizar esse serviço parecia uma solução lógica.
  • Encontramos poucos projetos no espaço de aplicativos descentralizados (dApp) trabalhando nessa ideia, oferecendo uma oportunidade para inovarmos e sermos pioneiros nessa área.

Para ajudar a reduzir a complexidade, decidimos que o Labeler NearBy suportará apenas dados de imagem por enquanto.

Submissão

Com a ideia escolhida e o hackathon oficialmente em andamento, meu amigo e eu começamos a construir o Labeler NearBy. Trabalhamos no nosso projeto por 2 meses até enviarmos o rascunho final do nosso projeto ao Devpost em 24 de novembro de 2022. Submetemos nosso projeto no Devpost e também criamos uma cópia da nossa submissão no GitHub. Este blog não cobre todos os aspectos técnicos e o processo de desenvolvimento do Labeler NearBy. Sabendo disso, para aprender mais sobre como o Labeler NearBy funciona ou para ver nossa submissão final, visite um dos links a seguir:

O Labeler NearBy consiste em duas bases de código: ln-researcher e ln-labeler. Essas bases de código são totalmente open source sob a licença MIT e podem ser visualizadas pelos links a seguir:

Aqui está uma visão geral de como o Labeler NearBy (LN) funcionaria:

Um pesquisador precisa de imagens rotuladas para treinar seu modelo de IA. Para isso, o pesquisador utiliza o LN para hospedar seus dados e fornecer um meio para que rotuladores rotulem seus dados. Isso é realizado através do ln-researcher, um serviço web auto‑hospedado que consiste em uma API, os contratos inteligentes do pesquisador e um banco de dados Postgres local. Para o rotulador, um frontend web seria fornecido, permitindo que ele acesse e rotule as imagens do pesquisador. Bem, no processo de rotulagem, uma imagem é rotulada três vezes por diferentes rotuladores. Apenas o rotulador com as melhores rotulagens, determinado por um sistema de votação, é recompensado com moedas NEAR. O aplicativo web responsável por esse processo é chamado ln-labeler. O pesquisador financia cada operação de rotulagem, e as moedas NEAR podem ser facilmente convertidas em dólares através da Coinbase. Toda a logística de transação é gerenciada por contratos inteligentes hospedados na blockchain do NEAR Protocol.

Você pode ver nosso vídeo de demonstração do Labeler NearBy para o hackathon aqui:

Maior Conquista

A funcionalidade da qual mais me orgulho de ter implementado é uma função chamada getImage(). Essa função serve como um endpoint de API no ln-researcher e desempenha um papel crucial no pipeline de dados entre pesquisadores e rotuladores no Labeler NearBy (LN).

Esse endpoint de API permite que os pesquisadores distribuam suas imagens de forma segura e confiável para rotulagem. As atribuições de rotulagem são gerenciadas via contratos inteligentes NEAR na blockchain do NEAR Protocol, enquanto os dados das imagens são hospedados pelo pesquisador através do ln-researcher.

O endpoint realiza uma série de verificações de segurança para garantir que apenas o rotulador designado possa acessar a imagem. Isso inclui a verificação da assinatura da requisição e a checagem do contrato inteligente associado para confirmar a existência da tarefa e sua atribuição ao rotulador solicitante.

Uma vez que a requisição é validada na API auto‑hospedada do pesquisador ln-researcher, a função recupera a imagem do banco de dados Postgres local, criptografa a imagem e a entrega ao rotulador autorizado, que então pode descriptografar a imagem para rotulagem. Simultaneamente, a função atualiza o status da imagem no banco de dados, indicando o progresso da rotulagem da imagem. Nesse processo, chaves RSA tanto do pesquisador quanto do rotulador são usadas para autenticação. Além disso, criptografia AES é usada para criptografar a imagem.

Esse endpoint desempenha um papel crítico na gestão da distribuição segura e controlada de imagens dos pesquisadores para os rotuladores. Ele garante a transferência segura de dados e rastreia e gerencia efetivamente o processo de rotulagem de imagens. Além disso, esse processo tem o potencial de eliminar a necessidade de usar HTTPS, pelo menos para esse endpoint.

Esse endpoint/função específico foi testado e provado funcional. Abaixo está um diagrama ilustrando a funcionalidade geral do Labeler NearBy, incluindo uma representação clara de como o endpoint/função mencionado funciona:

Resultado

Lamentavelmente, a triste realidade é que não conseguimos concluir totalmente este projeto dentro do prazo do hackathon. A maior parte do projeto foi concluída, como o ln-researcher, mas o frontend (ln-labeler) não foi finalizado e não conseguimos implantar uma demonstração ao vivo. Embora o backend (ln-researcher) estivesse basicamente concluído, sem um frontend funcional adequado e sem demonstração ao vivo, ninguém pôde experimentar a ideia do Labeler NearBy. Além disso, os jurados não puderam testar o projeto e tiveram que ler a submissão, analisar o código e/ou tentar executá‑lo eles mesmos. Isso fez com que nossas chances de vitória caíssem praticamente a zero por cento. Isso foi confirmado em 15 de dezembro de 2022, quando os vencedores do hackathon foram anunciados, e não estávamos entre eles.

Perdendo

Não vou esconder o fato de que o resultado final deste hackathon foi desanimador. Meses foram investidos neste projeto e eu tinha uma grande visão para ele, pois pensei que forneceria uma ferramenta muito útil para pesquisadores.

Tenho um padrão claro para os projetos que empreendo: ou eles têm sucesso ou falham; não há meio‑termo. Portanto, este projeto foi um fracasso porque não foi concluído totalmente dentro do prazo e permaneceu inacessível para usuários potenciais.

Mas é importante lembrar que o fracasso é uma parte natural da vida. Nossos sucessos são construídos sobre as lições que aprendemos com nossos fracassos. Embora o resultado deste hackathon tenha sido desanimador, ainda forneceu insights valiosos ao desenvolver e construir um projeto/produto.

Lições Aprendidas

As principais lições que tirei desta experiência foram as seguintes:

  1. O projeto que escolhemos exigia muitos recursos construídos antecipadamente antes que pudéssemos iterar sobre ele. O que quero dizer com isso? Bem, este projeto exigia quase todos os componentes da ideia construídos antes que pudéssemos sequer testar a ideia. Teria feito mais sentido escolher um projeto que tivesse menos componentes essenciais para funcionar. Ao fazer isso, poderíamos ter construído os componentes essenciais mais rapidamente e então iterado no projeto mais cedo. Dessa forma, poderíamos ter cumprido o prazo com mais facilidade e criado um projeto que poderia ser mais simples, mas mais completo. YC, um acelerador de startups de tecnologia, enfatiza que você deve lançar rapidamente, conversar com usuários e iterar(https://www.youtube.com/watch?v=fetC2EpDtN8). Deveríamos ter feito isso com nosso projeto para este hackathon.
  2. Subestimamos quanto tempo este projeto levaria para ser construído. Este foi nosso primeiro hackathon e nossa primeira vez criando uma aplicação descentralizada (dapp). Além disso, eu trabalhava em tempo integral como engenheiro de software e meu amigo estava concluindo seu mestrado. Ainda assim, achamos que 2 meses seriam suficientes. Teria feito mais sentido reduzir o escopo do projeto e/ou encontrar mais um membro na equipe que pudesse reduzir nossa carga de trabalho.
  3. Winston Churchill afirmou famosamente: “A perfeição é inimiga do progresso”. Eu estava tratando este projeto como um produto business‑to‑customer (B2C), quando na realidade ele era apenas um projeto de hackathon e, no máximo, um produto mínimo viável (MVP). Portanto, no início, desperdicei tempo demais em pequenos detalhes quando deveria ter focado meu tempo em fazer as funcionalidades principais funcionarem adequadamente.

Além dessas lições valiosas, adquiri novas habilidades que se mostraram indispensáveis tanto nos meus projetos pessoais quanto nas minhas atividades profissionais. Essas habilidades incluem:

  1. Desenvolvimento de APIs usando Node.js, JavaScript e Express.js
  2. Configuração e uso do PostgreSQL para gerenciamento de dados
  3. Incorporação do PostgreSQL no desenvolvimento de APIs utilizando pacotes como PG.
  4. Utilização de RSA (criptografia assimétrica) e AES (criptografia simétrica) para melhorar a segurança dos dados.

Conclusão

No geral, fico feliz por termos participado deste hackathon, apesar da decepção com o resultado final. Sou grato pelas lições valiosas e pelas habilidades que adquiri ao trabalhar no Labeler NearBy, pois elas me tornaram um desenvolvedor melhor e contribuíram significativamente para o desenvolvimento do meu próximo projeto: Notify-Cyber.

Outras Notas

  • Posso voltar ao Labeler NearBy, mas, por enquanto, este projeto está em “long hiatus”.
  • Atualmente, o Labeler NearBy deve SER EXECUTADO SOMENTE na testnet da NEAR. Ele precisa de mais desenvolvimento, testes e auditoria.