Labeler NearBy Bouwen

Table of Contents

Mijn Eerste Hackathon

Tijdens de latere delen van de zomer van 2022 wilde ik echt werken aan een spannend project. Ik had net mijn bachelor afgerond en werkte fulltime als software-engineer. Ik wilde echt aan een zijproject werken en op dat moment had ik daar genoeg vrije tijd voor. Ik wist echt niet waar ik aan moest werken, totdat ik in augustus 2022 een website ontdekte die Devpost heette. Devpost is een website die softwarewedstrijden host, hackathons genaamd. Tijdens het browsen op Devpost ontdekte ik een hackathon genaamd NEAR MetaBUILD III, een hackathon die werd georganiseerd door de NEAR Protocol-organisatie.

Wat is NEAR?

Het NEAR Protocol is een blockchain die slimme contracten en de NEAR-cryptocurrency ondersteunt. Het staat vooral bekend om zijn zeer lage transactiekosten, ondersteuning voor slimme contracten, zijn eigen officiële testnetwerk en een geweldige ontwikkelaarsomgeving, doordat je slimme contracten kunt schrijven in Rust en/of JavaScript. Je kunt een beter overzicht van het NEAR Protocol krijgen via CoinGecko’s geweldige video:

In deze periode begon Coinbase officieel ondersteuning te bieden voor het NEAR Protocol als verhandelbare munt op hun platform. Dat was een grote zaak, omdat Coinbase erom bekendstaat zeer selectief te zijn als het gaat om welke munten ze op hun platform ondersteunen. Dit hielp NEAR een betrouwbaarder platform te maken. Je kunt tot op de dag van vandaag nog steeds NEAR op Coinbase verhandelen.

Waarom Meedoen?

Na enige tijd nadenken besloot ik mijn tijd te besteden aan deelname aan de NEAR MetaBUILD III-hackathon. Mijn reden was de volgende:

  • Crypto gaat niet weg en is een technologie die zal blijven bestaan. Het was dus logisch om wat tijd te investeren in het leren van de technologie.
  • De hackathon had geweldige beloningen, variërend van $20.000 tot $100.000 in NEAR als je een van de winnaars was.
  • De hackathon had een specifieke deadline, wat betekende dat het project niet maandenlang kon worden voortgesleept zoals veel zijprojecten doorgaans zijn.
  • Het project zou een geweldige leerervaring zijn en een geweldige introductie tot hackathons
  • In het ergste geval zou de hackathon me in staat stellen een geweldig project te maken om op mijn cv te laten zien.

Met dit alles in gedachten belde ik op 26 augustus 2022 mijn goede vriend van de universiteit en begonnen we te plannen voor deze hackathon. De hackathon stond gepland om te beginnen op 23 september 2023 en af te sluiten op 21 november 2022. Hoewel de deadline tegen het einde van de hackathon werd verlengd tot 24 november 2023. Omdat we 1 maand te vroeg waren, besloten we deze tijd te besteden aan leren en brainstormen over waar we aan zouden werken voor deze hackathon van 2 maanden. Tijdens die eerste maand kregen we een algemeen overzicht van crypto en blockchains. We bestudeerden en oefenden op NEAR’s testnet, bekeken de NEAR SDK en implementeerden een paar slimme contracten.

Het Idee

Nadat we een geweldige introductie tot alles wat met blockchain en NEAR te maken had hadden gekregen, begonnen we ideeën te brainstormen. Ik wilde dat dit project niet alleen een “hackathonproject” zou zijn, maar iets dat een product kon worden dat anderen kunnen gebruiken en dat als voorbeeld kon dienen van hoe crypto nuttig kan zijn voor dingen buiten alleen handelen.

Met dit in gedachten besloten we aanvankelijk iets te maken dat vergelijkbaar was met de Unreal Engine Blueprint, maar dan voor het eenvoudig creëren en implementeren van slimme contracten op de NEAR-blockchain zonder dat coderen nodig was. Echter, één week voordat de hackathon begon, gaven we het idee op omdat het simpelweg geen zin had. Waarom zou iemand de moeite nemen onze tool te gebruiken om NEAR-slimme contracten te maken als er nog geen praktisch gebruiksdoel voor was? Het zou zijn als het ontwikkelen van een tool die veel mensen niet nodig hadden.

Met nog maar één week te gaan voordat de hackathon begon, begonnen we opnieuw te brainstormen en kwamen we uit op dit idee:

Een gedecentraliseerd platform waar AI-onderzoekers
datalabeling kunnen uitbesteden aan labelaars over de hele wereld

We noemden het project “Labeler NearBy.” Onze beslissing om voor dit idee te kiezen was gebaseerd op de volgende redenen:

  • AI-ontwikkeling vereist menselijke labeling van data voor training.
  • Het vinden en beheren van bekwame personen voor het labelen van specifieke datasets is lastig.
  • Het idee is al succesvol geïmplementeerd door een bedrijf genaamd Scale AI, zoals blijkt uit hoe zij product-marktfit hebben gevonden.
  • Gecentraliseerde diensten zoals Scale AI roepen zorgen op, omdat organisaties hun data naar het labelingbedrijf moeten sturen, dat vervolgens menselijke labelaars wereldwijd uitbesteedt. Na het labelingproces geeft het bedrijf de gelabelde data terug aan de organisatie. Dit geeft controle uit handen over waardevolle trainingsdata, die door het labelingbedrijf gebruikt zou kunnen worden om hun eigen modellen te trainen. Deze dienst decentraliseren leek een logische oplossing.
  • We vonden zeer weinig projecten in de ruimte van gedecentraliseerde apps (dApps) die aan dit idee werkten, wat ons de kans bood om op dit gebied te innoveren en pionieren.

Om de complexiteit te verminderen, besloten we dat Labeler NearBy voorlopig alleen afbeeldingsdata zou ondersteunen.

Inzending

Met het gekozen idee en de hackathon officieel van start begonnen mijn vriend en ik met het bouwen van Labeler NearBy. We werkten 2 maanden aan ons project totdat we op 24 november 2022 de definitieve versie van ons project indienden op Devpost. We dienden ons project in op Devpost en maakten ook een kopie van onze inzending op Github. Deze blog behandelt niet elk technisch aspect en ontwikkelingsproces van Labeler NearBy. Met dit in gedachten, om meer te leren over hoe Labeler NearBy werkt of om onze uiteindelijke inzending te bekijken, bezoek een van de volgende links:

Labeler NearBy bestaat uit twee codebases: ln-researcher en ln-labeler. Deze codebases zijn volledig open source onder de MIT-licentie en kunnen worden bekeken via de volgende links:

Hier is een algemeen overzicht van hoe Labeler NearBy (LN) zou werken:

Een onderzoeker heeft gelabelde afbeeldingen nodig voor het trainen van zijn AI-model. Om dit te bereiken gebruikt de onderzoeker LN om zijn data te hosten en een middel te bieden voor labelaars om zijn data te labelen. Dit wordt gerealiseerd via ln-researcher, een zelfgehoste webservice die bestaat uit een API, de slimme contracten van de onderzoeker en een lokale Postgres-database. Voor de labelaar wordt een webfrontend geleverd (of zou zijn geleverd), waarmee zij toegang kunnen krijgen tot de afbeeldingen van de onderzoeker en deze kunnen labelen. Tijdens het labelen wordt één afbeelding drie keer gelabeld door verschillende labelaars. Alleen de labelaar met de beste labels, bepaald via een stemsysteem, wordt beloond met NEAR-munten. De webapp die verantwoordelijk is voor dit proces heet ln-labeler. De onderzoeker financiert elke labelingoperatie, en NEAR-munten kunnen via Coinbase gemakkelijk worden omgezet in dollars. Alle transactielogistiek wordt afgehandeld door slimme contracten die worden gehost op de NEAR Protocol-blockchain.

Je kunt hier onze demovideo van Labeler NearBy voor de hackathon bekijken:

Grootste Prestatie

De functie waar ik het meest trots op ben dat ik die heb geïmplementeerd, is een functie genaamd getImage(). Deze functie dient als een API-endpoint in ln-researcher en speelt een cruciale rol in de datapijplijn tussen onderzoekers en labelaars in Labeler NearBy (LN).

Dit API-endpoint stelt onderzoekers in staat om hun afbeeldingen veilig en betrouwbaar te distribueren voor labeling. De labelingopdrachten worden beheerd via een NEAR-slim contract op de NEAR Protocol-blockchain, terwijl de afbeeldingsdata wordt gehost door de onderzoeker via ln-researcher.

Het endpoint voert een reeks veiligheidscontroles uit om ervoor te zorgen dat alleen de toegewezen labelaar toegang heeft tot de afbeelding. Dit omvat het verifiëren van de handtekening van het verzoek en het controleren van het bijbehorende slimme contract om het bestaan van de taak en de toewijzing ervan aan de verzoekende labelaar te bevestigen.

Zodra het verzoek is gevalideerd in de zelfgehoste ln-researcher-API van de onderzoeker, haalt de functie de afbeelding op uit de lokale Postgres-database, versleutelt de afbeelding en levert deze aan de geautoriseerde labelaar, die de afbeelding vervolgens kan ontsleutelen voor labeling. Tegelijkertijd werkt de functie de status van de afbeelding in de database bij, wat de voortgang aangeeft van het labelen van de afbeelding. Tijdens dit proces worden RSA-sleutels van zowel de onderzoeker als de labelaar gebruikt voor authenticatie. AES-versleuteling wordt gebruikt om de afbeelding te versleutelen.

Dit endpoint speelt een cruciale rol bij het beheren van de veilige en gecontroleerde distributie van afbeeldingen van onderzoekers naar labelaars. Het zorgt voor veilige gegevensoverdracht en volgt en beheert effectief het afbeeldingslabelingsproces. Daarnaast heeft dit proces het potentieel om de noodzaak van het gebruik van HTTPS weg te nemen, althans voor dit endpoint.

Dit specifieke endpoint/deze functie is getest en bewezen functioneel te zijn. Hieronder staat een diagram dat de algehele werking van Labeler NearBy illustreert, inclusief een duidelijke weergave van hoe het bovengenoemde endpoint/deze functie werkt:

Uitkomst

Helaas is de trieste realiteit dat we dit project niet volledig konden afronden vóór de deadline van de hackathon. Het grootste deel van het project was voltooid, zoals de ln-researcher, maar de frontend (ln-labeler) was niet afgerond en we waren niet in staat een live demo te deployen. Hoewel de backend (ln-researcher) in wezen voltooid was, kon niemand zonder een goed werkende frontend en zonder live demo het idee van Labeler NearBy uitproberen. Daarnaast konden de juryleden het project niet uitproberen en moesten ze in plaats daarvan de inzending lezen, door de code gaan en/of het zelf proberen uit te voeren. Daardoor zakten onze kansen om te winnen praktisch naar nul procent. Dit werd bevestigd op 15 december 2022, toen de winnaars van de hackathon werden aangekondigd, en wij daar niet bij zaten.

Verliezen

Ik zal niet verbergen dat de uiteindelijke uitkomst van deze hackathon teleurstellend was. Er zijn maanden in dit project geïnvesteerd en ik had een grote visie voor dit project, omdat ik dacht dat het een zeer nuttig hulpmiddel voor onderzoekers zou bieden.

Ik heb een duidelijke standaard voor de projecten die ik onderneem: of ze slagen, of ze mislukken; er is geen middenweg. Dus dit project was een mislukking, omdat het niet volledig vóór de deadline was afgerond en ontoegankelijk bleef voor potentiële gebruikers.

Maar het is belangrijk om te onthouden dat mislukking een natuurlijk onderdeel van het leven is. Onze successen zijn opgebouwd uit de lessen die we leren van onze mislukkingen. Hoewel de uitkomst van deze hackathon teleurstellend was, bood het toch waardevolle inzichten als het gaat om het ontwikkelen en bouwen van een project/product.

Geleerde lessen

De belangrijkste lessen die ik uit deze ervaring heb gehaald, waren de volgende:

  1. Het project dat we kozen vereiste dat er vooraf veel functies gebouwd moesten worden voordat we ermee konden itereren. Wat bedoel ik daarmee? Nou, dit project vereiste dat bijna alle componenten van het idee uitgewerkt moesten zijn voordat we het idee überhaupt konden testen. Het zou logischer zijn geweest om een project te kiezen dat minder essentiële componenten nodig had om te functioneren. Daardoor hadden we de essentiële componenten sneller kunnen bouwen en daarna eerder op het project kunnen itereren. Zo hadden we de deadline waarschijnlijk makkelijker gehaald en een project gemaakt dat misschien eenvoudiger maar completer was. YC, een accelerator voor tech-startups, benadrukt dat je snel moet lanceren, met gebruikers moet praten en moet itereren. Dat hadden we met ons project voor deze hackathon moeten doen.
  2. We hadden onderschat hoe lang dit project zou duren om te bouwen. Dit was onze eerste hackathon en onze eerste keer dat we een gedecentraliseerde applicatie (dapp) maakten. Daarnaast werkte ik fulltime als software engineer en volgde mijn vriend zijn masteropleiding af. Toch dachten we dat 2 maanden genoeg zou zijn. Het zou logischer zijn geweest om de scope van het project te verkleinen en/of nog een teamlid te vinden dat onze werkdruk had kunnen verlagen.
  3. Winston Churchill zei beroemd: “Perfectie is de vijand van vooruitgang”. Ik behandelde dit project als een business-to-customer (B2C)-product, terwijl dit in werkelijkheid slechts een hackathonproject was en hoogstens een minimum viable product (MVP). Al vroeg verspilde ik dus te veel tijd aan kleine details, terwijl ik mijn tijd had moeten richten op het voldoende werkend krijgen van de kernfuncties.

Naast deze waardevolle lessen heb ik nieuwe vaardigheden opgedaan die van onschatbare waarde zijn gebleken in zowel mijn persoonlijke side projects als mijn professionele bezigheden. Deze vaardigheden omvatten:

  1. API’s ontwikkelen met Node.js, JavaScript en Express.js
  2. PostgreSQL instellen en gebruiken voor gegevensbeheer
  3. PostgresSQL integreren in API-ontwikkeling door pakketten te gebruiken zoals PG.
  4. RSA (asymmetrische encryptie) en AES (symmetrische encryptie) gebruiken voor verbeterde gegevensbeveiliging.

Conclusie

Al met al ben ik blij dat we aan deze hackathon hebben deelgenomen, ondanks mijn teleurstelling over de uiteindelijke uitkomst. Ik ben dankbaar voor de waardevolle lessen en vaardigheden die ik heb opgedaan tijdens het werken aan Labeler NearBy, omdat ze mij een betere ontwikkelaar hebben gemaakt en aanzienlijk hebben bijgedragen aan de ontwikkeling van mijn volgende project: Notify-Cyber.

Andere opmerkingen

  • Ik kom misschien ooit terug op Labeler NearBy, maar voorlopig staat dit project op een “lange pauze”
  • Momenteel zou Labeler NearBy ALLEEN op NEAR’s testnet moeten draaien. Het heeft verdere ontwikkeling, tests en auditing nodig.