Ideen om et neste generasjons desentralisert sosialt nettverk

Ideen om et neste generasjons desentralisert sosialt nettverk
I denne artikkelen presenterer jeg mine tanker om historien og utsiktene for utviklingen av Internett, sentraliserte og desentraliserte nettverk, og som et resultat av den mulige arkitekturen til neste generasjons desentraliserte nettverk.

Det er noe galt med internett

Jeg ble først kjent med Internett i 2000. Selvfølgelig er dette langt fra begynnelsen - nettverket eksisterte allerede før dette, men den tiden kan kalles Internetts første storhetstid. World Wide Web er den geniale oppfinnelsen til Tim Berners-Lee, web1.0 i sin klassiske kanoniske form. Mange nettsteder og sider lenker til hverandre med hyperkoblinger. Ved første øyekast er arkitekturen enkel, som alle geniale ting: desentralisert og gratis. Jeg vil - jeg reiser til andres nettsteder ved å følge hyperkoblinger; Jeg vil - jeg lager min egen nettside hvor jeg publiserer det som er interessant for meg - for eksempel mine artikler, fotografier, programmer, hyperlenker til nettsteder som er interessante for meg. Og andre legger ut linker til meg.

Det virker som et idyllisk bilde? Men du vet allerede hvordan det hele endte.

Det er for mange sider, og det å søke etter informasjon har blitt en veldig ikke-triviell oppgave. Hyperkoblingene foreskrevet av forfatterne kunne ganske enkelt ikke strukturere denne enorme mengden informasjon. Først var det manuelt fylte kataloger, og deretter gigantiske søkemotorer som begynte å bruke geniale heuristiske rangeringsalgoritmer. Nettsteder ble opprettet og forlatt, informasjon ble duplisert og forvrengt. Internett ble raskt kommersialisert og beveget seg lenger bort fra det ideelle akademiske nettverket. Markup language ble raskt et formateringsspråk. Det dukket opp reklame, ekle irriterende bannere og en teknologi for å promotere og lure søkemotorer - SEO. Nettverket ble raskt tilstoppet av informasjonssøppel. Hyperkoblinger har sluttet å være et verktøy for logisk kommunikasjon og har blitt et verktøy for promotering. Nettsteder lukket seg om seg selv, ble fra åpne "sider" til forseglede "applikasjoner", og ble bare et middel til å generere inntekter.

Allerede da hadde jeg en viss tanke om at "noe er galt her." En haug med forskjellige nettsteder, alt fra primitive hjemmesider med et googly-eyed utseende, til "mega-portaler" overbelastet med blinkende bannere. Selv om sidene er om samme emne, er de ikke relatert i det hele tatt, hver har sitt eget design, sin egen struktur, irriterende bannere, dårlig fungerende søk, problemer med nedlasting (ja, jeg ville ha informasjon offline). Allerede da begynte Internett å bli til en slags TV, der all slags tinsel ble spikret til nyttig innhold.
Desentralisering har blitt et mareritt.

Hva vil du?

Det er paradoksalt, men selv da, uten å vite om web 2.0 eller p2p, trengte jeg som bruker ikke desentralisering! Når jeg husker mine uklare tanker fra den tiden, kommer jeg til den konklusjon at jeg trengte... enhetlig database! Et slikt søk vil returnere alle resultatene, og ikke de som er best egnet for rangeringsalgoritmen. En der alle disse resultatene ville bli utformet enhetlig og stilisert av mitt eget uniformsdesign, og ikke av de øye-rullende selvlagde designene til mange Vasya Pupkins. En som kan lagres offline og ikke være redd for at siden i morgen forsvinner og informasjonen vil gå tapt for alltid. En der jeg kunne legge inn informasjonen min, for eksempel kommentarer og tagger. En der jeg kunne søke, sortere og filtrere med mine egne personlige algoritmer.

Web 2.0 og sosiale nettverk

I mellomtiden kom konseptet Web 2.0 inn på arenaen. Formulert i 2005 av Tim O'Reilly som "en teknikk for å designe systemer som, ved å ta hensyn til nettverksinteraksjoner, blir bedre jo flere som bruker dem" - og antyder aktiv involvering av brukere i den kollektive opprettelsen og redigeringen av nettinnhold. Uten overdrivelse var høydepunktet og triumfen for dette konseptet sosiale nettverk. Gigantiske plattformer som forbinder milliarder av brukere og lagrer hundrevis av petabyte med data.

Hva fikk vi på sosiale nettverk?

  • forening av grensesnitt; det viste seg at brukerne ikke trenger alle mulighetene til å lage en rekke iøynefallende design; alle sider til alle brukere har samme design og dette passer alle og er til og med praktisk; Bare innholdet er annerledes.
  • forening av funksjonalitet; all mangfoldet av skript viste seg å være unødvendig. "Feed", venner, album ... under eksistensen av sosiale nettverk har funksjonaliteten deres mer eller mindre stabilisert seg og vil neppe endre seg: tross alt bestemmes funksjonaliteten av typene folks aktiviteter, og folk endrer seg praktisk talt ikke .
  • enkelt database; det viste seg å være mye mer praktisk å jobbe med en slik database enn med mange forskjellige nettsteder; søk har blitt mye enklere. I stedet for kontinuerlig å skanne en rekke løst relaterte sider, bufre det hele, rangere ved hjelp av komplekse heuristiske algoritmer - en relativt enkel enhetlig spørring til en enkelt database med en kjent struktur.
  • tilbakemeldingsgrensesnitt - liker og reposter; på det vanlige nettet kunne ikke samme Google få tilbakemelding fra brukere etter å ha fulgt en lenke i søkeresultatene. På sosiale nettverk viste denne forbindelsen seg å være enkel og naturlig.

Hva har vi mistet? Vi har mistet desentraliseringen, som betyr frihet. Det antas at dataene våre nå ikke tilhører oss. Hvis vi tidligere kunne plassere en hjemmeside selv på vår egen datamaskin, gir vi nå alle våre data til Internett-giganter.

I tillegg, etter hvert som Internett utviklet seg, ble myndigheter og selskaper interessert i det, noe som reiste problemer med politisk sensur og opphavsrettsbegrensninger. Våre sider på sosiale nettverk kan bli utestengt og slettet hvis innholdet ikke er i samsvar med noen regler for det sosiale nettverket; for en uforsiktig stilling - ta til administrativt og til og med straffeansvar.

Og nå tenker vi igjen: bør vi ikke returnere desentralisering? Men i en annen form, blottet for manglene ved det første forsøket?

Peer-to-peer-nettverk

De første p2p-nettverkene dukket opp lenge før web 2.0 og utviklet seg parallelt med utviklingen av nettet. Den klassiske hovedapplikasjonen for p2p er fildeling; de første nettverkene ble utviklet for utveksling av musikk. De første nettverkene (som Napster) var i hovedsak sentralisert, og derfor ble de raskt stengt av opphavsrettsinnehavere. Tilhengere fulgte desentraliseringens vei. I 2000 dukket ED2K (den første eDokney-klienten) og Gnutella-protokollene opp, i 2001 - FastTrack-protokollen (KaZaA-klienten). Gradvis økte graden av desentralisering, teknologiene ble bedre. "Nedlastingskø"-systemer ble erstattet av torrenter, og konseptet med distribuerte hashtabeller (DHT) dukket opp. Etter hvert som statene strammer til skruene, har deltakernes anonymitet blitt mer etterspurt. Freenet-nettverket har blitt utviklet siden 2000, I2003P siden 2, og RetroShare-prosjektet ble lansert i 2006. Vi kan nevne mange p2p-nettverk, både tidligere eksisterende og allerede forsvunnet, og som er i drift: WASTE, MUTE, TurtleF2F, RShare, PerfectDark, ARES, Gnutella2, GNUNet, IPFS, ZeroNet, Tribbler og mange andre. Mange av dem. De er forskjellige. Veldig forskjellig - både i formål og i design... Sannsynligvis er mange av dere ikke engang kjent med alle disse navnene. Og dette er ikke alt.

Imidlertid har p2p-nettverk mange ulemper. I tillegg til de tekniske manglene som er iboende i hver spesifikke protokoll og klientimplementering, kan vi for eksempel merke oss en ganske generell ulempe - kompleksiteten til søket (dvs. alt som Web 1.0 møtte, men i en enda mer kompleks versjon). Det er ingen Google her med sitt allestedsnærværende og umiddelbare søk. Og hvis du fortsatt kan bruke et søk etter filnavn eller metainformasjon for fildelingsnettverk, er det veldig vanskelig, om ikke umulig å finne noe, for eksempel i løk- eller i2p-overleggsnettverk.

Generelt, hvis vi trekker analogier med det klassiske Internett, så sitter de fleste desentraliserte nettverk fast et sted på FTP-nivå. Se for deg et Internett der det ikke er annet enn FTP: ingen moderne nettsteder, ingen web2.0, ingen Youtube... Dette er omtrent tilstanden til desentraliserte nettverk. Og til tross for individuelle forsøk på å endre noe, er det få endringer så langt.

Innhold

La oss gå til en annen viktig del av dette puslespillet – innhold. Innhold er hovedproblemet for enhver Internett-ressurs, og spesielt en desentralisert. Hvor får man det fra? Selvfølgelig kan du stole på en håndfull entusiaster (som er det som skjer med eksisterende p2p-nettverk), men da vil utviklingen av nettverket være ganske lang, og det vil være lite innhold der.

Å jobbe med det vanlige Internett betyr å søke og studere innhold. Noen ganger - lagring (hvis innholdet er interessant og nyttig, så lagrer mange, spesielt de som kom til Internett i dager med oppringt - inkludert meg - det forsiktig offline for ikke å gå seg vill; fordi Internett er en ting utenfor vår kontroll, i dag er siden der i morgen er det ingen , i dag er det en video på YouTube - i morgen blir den slettet osv.

Og for torrents (som vi oppfatter mer som bare et leveringsmiddel enn som et p2p-nettverk), er sparing generelt antydet. Og dette er forresten et av problemene med torrenter: en fil som er lastet ned én gang er vanskelig å flytte til der den er mer praktisk å bruke (som regel må du regenerere distribusjonen manuelt) og kan absolutt ikke gis nytt navn ( du kan hardlinke det, men svært få mennesker vet om dette).

Generelt er det mange som lagrer innhold på en eller annen måte. Hva er hans fremtidige skjebne? Vanligvis ender lagrede filer et sted på disken, i en mappe som Nedlastinger, i den generelle haugen, og ligger der sammen med mange tusen andre filer. Dette er dårlig – og dårlig for brukeren selv. Hvis Internett har søkemotorer, har ikke brukerens lokale datamaskin noe lignende. Det er bra hvis brukeren er ryddig og vant til å sortere "innkommende" nedlastede filer. Men ikke alle er sånn...

Faktisk er det nå mange som ikke sparer noe, men stoler helt på nett. Men i p2p-nettverk antas det at innholdet lagres lokalt på brukerens enhet og distribueres til andre deltakere. Er det mulig å finne en løsning som gjør at begge kategorier brukere kan være involvert i et desentralisert nettverk uten å endre vanene, og dessuten gjøre livet enklere?

Ideen er ganske enkel: hva om vi lager et middel for å lagre innhold fra det vanlige Internett, praktisk og gjennomsiktig for brukeren, og smart lagring - med semantisk metainformasjon, og ikke i en felles haug, men i en bestemt struktur med muligheten for ytterligere strukturering, og samtidig distribuere det lagrede innholdet til et desentralisert nett?

La oss begynne med å spare

Vi vil ikke vurdere utilitaristisk bruk av Internett for å se værmeldinger eller flyruter. Vi er mer interessert i selvforsynte og mer eller mindre uforanderlige objekter – artikler (fra tweets/innlegg fra sosiale nettverk til store artikler, som her på Habré), bøker, bilder, programmer, lyd- og videoopptak. Hvor kommer informasjonen for det meste fra? Vanligvis dette

  • sosiale nettverk (forskjellige nyheter, små notater - "tweets", bilder, lyd og video)
  • artikler om tematiske ressurser (som Habr); Det er ikke mange gode ressurser, vanligvis er disse ressursene også bygget på prinsippet om sosiale nettverk
  • nyhetssider

Som regel er det standardfunksjoner: "like", "repost", "del på sosiale nettverk", etc.

La oss forestille oss noen nettleserplugin, som spesielt vil lagre alt vi likte, repostet, lagret i "favoritter" (eller klikket på en spesiell plugin-knapp som vises i nettlesermenyen - i tilfelle nettstedet ikke har en like/repost/bokmerke-funksjon). Hovedideen er at du rett og slett liker det - som du har gjort en million ganger før, og systemet lagrer artikkelen, bildet eller videoen i en spesiell offline lagring og denne artikkelen eller bildet blir tilgjengelig - og for deg for offline visning gjennom desentralisert klientgrensesnitt, og i det mest desentraliserte nettverket! Etter min mening er det veldig praktisk. Det er ingen unødvendige handlinger, og vi løser mange problemer på en gang:

  • Bevaring av verdifullt innhold som kan gå tapt eller slettes
  • rask fylling av det desentraliserte nettverket
  • aggregering av innhold fra forskjellige kilder (du kan være registrert i dusinvis av Internett-ressurser, og alle likes/reposts vil flyte inn i en enkelt lokal database)
  • strukturere innhold som interesserer deg i henhold til din regler

Tydeligvis må nettleserplugin-modulen konfigureres for strukturen til hvert nettsted (dette er ganske realistisk - det finnes allerede plugins for å lagre innhold fra Youtube, Twitter, VK, etc.). Det er ikke så mange nettsteder det er fornuftig å lage personlige plugins for. Som regel er dette vanlige sosiale nettverk (det er neppe mer enn et dusin av dem) og en rekke tematiske nettsteder av høy kvalitet som Habr (det er også noen få av disse). Med åpen kildekode og spesifikasjoner bør det ikke ta mye tid å utvikle en ny plugin basert på en mal. For andre nettsteder kan du bruke en universell lagringsknapp, som vil lagre hele siden i mhtml - kanskje etter først å ha fjernet siden for annonsering.

Nå om strukturering

Med "smart" lagring mener jeg i det minste å lagre med metainformasjon: kilden til innholdet (URL), et sett med tidligere innstilte likerklikk, tagger, kommentarer, deres identifikatorer, etc. Tross alt, under normal lagring, går denne informasjonen tapt... Kilden kan ikke bare forstås som en direkte URL, men også som en semantisk komponent: for eksempel en gruppe på et sosialt nettverk eller en bruker som har laget en repost. Programtillegget kan være smart nok til å bruke denne informasjonen til automatisk strukturering og merking. Det skal også forstås at brukeren selv alltid kan legge til litt metainformasjon til det lagrede innholdet, for hvilket formål de mest praktiske grensesnittverktøyene bør tilbys (jeg har ganske mange ideer om hvordan dette skal gjøres).

Dermed er spørsmålet om strukturering og organisering av brukerens lokale filer løst. Dette er en ferdiglaget fordel som kan brukes selv uten p2p. Bare en slags offline database som vet hva, hvor og i hvilken sammenheng vi har lagret, og lar oss gjennomføre små studier. Finn for eksempel brukere av et eksternt sosialt nettverk som likte de samme innleggene som deg best. Hvor mange sosiale nettverk tillater dette eksplisitt?

Det skal allerede nevnes her at én nettleserplugin absolutt ikke er nok. Den nest viktigste komponenten i systemet er den desentraliserte nettverkstjenesten, som kjører i bakgrunnen og betjener både selve p2p-nettverket (forespørsler fra nettverket og forespørsler fra klienten) og lagring av nytt innhold ved hjelp av plugin. Tjenesten, i samarbeid med plugin, vil plassere innholdet på rett sted, beregne hashes (og muligens fastslå at slikt innhold allerede er lagret tidligere), og legge til nødvendig metainformasjon til den lokale databasen.

Det som er interessant er at systemet ville være nyttig allerede i denne formen, uten p2p. Mange bruker nettklippere som legger til interessant innhold fra nettet til for eksempel Evernote. Den foreslåtte arkitekturen er en utvidet versjon av en slik klipper.

Og til slutt, p2p-utveksling

Det beste er at informasjon og metainformasjon (både hentet fra nettet og din egen) kan utveksles. Konseptet med et sosialt nettverk overføres perfekt til p2p-arkitektur. Vi kan si at det sosiale nettverket og p2p ser ut til å være laget for hverandre. Ethvert desentralisert nettverk bør ideelt sett bygges som et sosialt, først da vil det fungere effektivt. "Venner", "Grupper" - dette er de samme jevnaldrende som det skal være stabile forbindelser med, og disse er hentet fra en naturlig kilde - brukernes felles interesser.

Prinsippene for å lagre og distribuere innhold i et desentralisert nettverk er helt identiske med prinsippene for å lagre (fange) innhold fra det vanlige Internett. Hvis du bruker noe innhold fra nettverket (og derfor har lagret det), kan hvem som helst bruke ressursene dine (disk og kanal) som er nødvendige for å motta dette bestemte innholdet.

Liker — det enkleste verktøyet for lagring og deling. Hvis jeg likte det - uansett på det eksterne Internett eller i det desentraliserte nettverket - betyr det at jeg liker innholdet, og i så fall er jeg klar til å beholde det lokalt og distribuere det til andre deltakere i det desentraliserte nettverket.

  • Innhold vil ikke gå tapt; det er nå lagret lokalt, jeg kan gå tilbake til det senere, når som helst, uten å bekymre meg for at noen sletter eller blokkerer det
  • Jeg kan (umiddelbart eller senere) kategorisere det, merke det, kommentere det, assosiere det med annet innhold og generelt gjøre noe meningsfullt med det – la oss kalle det «generering av metainformasjon».
  • Jeg kan dele denne metainformasjonen med andre nettverksmedlemmer
  • Jeg kan synkronisere metainformasjonen min med andre medlemmers metainformasjon

Sannsynligvis virker det også logisk å gi opp misliker: hvis jeg ikke liker innholdet, så er det ganske logisk at jeg ikke vil kaste bort diskplassen min for lagring og Internett-kanalen min for å distribuere dette innholdet. Derfor passer ikke misliker veldig organisk inn i desentralisering (selv om det noen ganger gjør det kan være nyttig).

Noen ganger må du beholde det du "ikke liker". Det finnes et ord som "må" :)
«bokmerker” (eller “Favoritter”) - Jeg uttrykker ikke en tilhørighet til innholdet, men jeg lagrer det i min lokale bokmerkedatabase. Ordet "favoritter" er ikke helt egnet i betydningen (for dette er det likes og deres påfølgende kategorisering), men "bokmerker" er ganske passende. Innhold i "bokmerker" distribueres også - hvis du "trenger" det (det vil si at du "bruker" det på en eller annen måte), så er det logisk at noen andre kan "trenger" det. Hvorfor ikke bruke ressursene dine til å gjøre dette?

Funksjonen "друзья". Dette er jevnaldrende, personer med lignende interesser, og derfor de som mest sannsynlig har interessant innhold. På et desentralisert nettverk betyr dette først og fremst å abonnere på nyhetsfeeds fra venner og få tilgang til deres kataloger (album) med innhold de har lagret.

Ligner på funksjonen "grupper"- noen slags kollektive feeder, eller fora, eller noe sånt, som du også kan abonnere på - og det betyr at du godtar alt materialet til gruppen og distribuerer det. Kanskje "grupper", som store fora, bør være hierarkiske - dette vil tillate bedre strukturering av gruppeinnhold, samt begrense flyten av informasjon og ikke akseptere/distribuere det som ikke er veldig interessant for deg.

Resten

Det bør bemerkes at en desentralisert arkitektur alltid er mer kompleks enn en sentralisert. I sentraliserte ressurser er det et strengt diktat av serverkoden. I desentraliserte er det behov for å forhandle mellom mange likeverdige deltakere. Dette kan selvfølgelig ikke gjøres uten kryptografi, blokkjeder og andre prestasjoner utviklet hovedsakelig på kryptovalutaer.

Jeg antar at en slags kryptografisk gjensidig tillitsvurdering dannet av nettverksdeltakere for hverandre kan være nødvendig. Arkitekturen skal gjøre det mulig å effektivt bekjempe botnett, som, som eksisterer i en bestemt sky, kan for eksempel gjensidig øke sine egne vurderinger. Jeg ønsker virkelig at selskaper og botnettfarmer, med all deres teknologiske overlegenhet, ikke skal ta kontroll over et slikt desentralisert nettverk; slik at dens hovedressurs er levende mennesker som er i stand til å produsere og strukturere innhold som er interessant og nyttig for andre levende mennesker.

Jeg ønsker også at et slikt nettverk skal bevege sivilisasjonen mot fremskritt. Jeg har en hel haug med ideer om dette emnet, som imidlertid ikke passer inn i denne artikkelens omfang. Jeg vil bare si at på en viss måte vitenskapelig, teknisk, medisinsk, etc. innhold bør ha forrang over underholdning, og dette vil kreve en form for moderering. Moderering av et desentralisert nettverk i seg selv er en ikke-triviell oppgave, men den kan løses (men ordet "moderering" her er helt feil og gjenspeiler ikke essensen av prosessen i det hele tatt - verken eksternt eller internt ... og Jeg kunne ikke engang tenke på hva denne prosessen kunne kalles).

Det vil nok være unødvendig å nevne behovet for å sikre anonymitet, både med innebygde midler (som i i2p eller Retroshare) og ved å sende all trafikk gjennom TOR eller VPN.

Og til slutt, programvarearkitekturen (skjematisk tegnet på bildet for artikkelen). Som allerede nevnt er den første komponenten i systemet en nettleserplugin som fanger opp innhold med metainformasjon. Den nest viktigste komponenten er p2p-tjenesten, som kjører i bakgrunnen ("backend"). Driften av nettverket skal åpenbart ikke avhenge av om nettleseren kjører. Den tredje komponenten er klientprogramvaren – frontend. Dette kan være en lokal nettjeneste (i dette tilfellet vil brukeren kunne jobbe med et desentralisert nettverk uten å forlate favorittnettleseren), eller en separat GUI-applikasjon for et spesifikt operativsystem (Windows, Linux, MacOS, Andriod, iOS, etc.). Jeg liker ideen om at alle frontend-alternativer eksisterer samtidig. Samtidig vil dette kreve en strengere backend-arkitektur.

Det er mange flere aspekter som ikke er inkludert i denne artikkelen. Koble til distribusjonen av eksisterende fillager (dvs. når du allerede har et par terabyte med pumpede data, og du lar klienten skanne det, hente hashes, sammenligne dem med det som er inne i nettverket og bli med i distribusjonen, og samtidig tid får metainformasjon om sine egne filer - vanlige navn, beskrivelser, vurderinger, anmeldelser osv.), tilkobling av eksterne kilder til metainformasjon (som Libgen-databasen), valgfri bruk av diskplass for å lagre andres krypterte innhold (som i Freenet ), integreringsarkitektur med eksisterende desentraliserte nettverk (dette er en helt mørk skog), ideen om media-hashing (bruk av spesielle perseptuelle hasher for medieinnhold - bilder, lyd og video, som lar deg sammenligne mediefiler av samme betydning, forskjellig i størrelse, oppløsning, etc.) og mye mer.

Kort oppsummering av artikkelen

1. I desentraliserte nettverk er det ingen Google med søk og rangering - men det er et fellesskap av ekte mennesker. Et sosialt nettverk med sine tilbakemeldingsmekanismer (likes, reposts...) og sosial graf (venner, communities...) er en ideell applikasjonslagsmodell for et desentralisert nettverk
2. Hovedideen jeg tar med denne artikkelen er automatisk lagring av interessant innhold fra det vanlige Internett når du setter en like/repost; dette kan være nyttig uten p2p, bare å opprettholde et personlig arkiv med interessant informasjon
3. Dette innholdet kan også automatisk fylle det desentraliserte nettverket
4. Prinsippet om automatisk lagring av interessant innhold fungerer også med likes/reposts i det mest desentraliserte nettverket

Kilde: www.habr.com

Legg til en kommentar