
В тази статия ви представям своите размисли относно историята и перспективите за развитие на интернет, централизирани и децентрализирани мрежи и какъв ще бъде резултатът — възможната архитектура на децентрализирана мрежа от следващо поколение.
Нещо не е наред с интернет
Впервые се запознах с интернет през 2000 година. Разбира се, това далеч не е началото — мрежата вече съществуваше преди това, но това време може да се нарече първият разцвет на интернет. Световната мрежа е гениално изобретение на Тим Бърнърс-Ли, web1.0 в неговата класическа канонична форма. Множество сайтове и страници, свързващи се помежду си чрез хипервръзки. На пръв поглед — проста, като всичко гениално, архитектура: децентрализирана и свободна. Искам — пътувам из сайтовете на другите хора, преминавайки през хипервръзките; искам — създавам своя сайт, на който публикувам това, което ми е интересно — например моите статии, снимки, програми, хипервръзки към интересни за мен сайтове. А другите поставят линкове към мен.
Да изглежда ли идилична картинка? Но вие вече знаете как всичко това свърши.
Страниците станаха твърде много, и търсенето на информация стана доста нетривиално занимание. Хипервръзките, написани от авторите, просто не можеха да структурират този огромен обем информация. Първо се появиха каталози, попълвани ръчно, а след това и гигантски търсачки, които започнаха да използват сложни хевристични алгоритми за класиране. Сайтовете се създаваха и изоставяха, информацията се дублираше и изкривяваше. Интернет бързо се комерсиализираше и се отдалечаваше все повече от идеалната академична мрежа. Язикът на разметките бързо се превърна в език на форматиране. Появи се реклама, досадни банери и технологии за манипулиране и измама на търсачките — SEO. Мрежата бързо се запъни с информационен боклук. Хипервръзките спряха да бъдат инструмент за логическа връзка и се превърнаха в инструмент за манипулация. Сайтовете се затвориха, затворено се замъкнаха сами, като се трансформираха от открити „страници“ в затворени „приложения“, ставайки единствено средства за генериране на доходи.
Още тогава имах едно усещане, че "нещо тук не е наред". Множество различни сайтове, от примитивни лични страници с блестящ външен вид до "мегапортали", пренаситени с мигащи банери. Дори когато сайтът е по една и съща тема — те изобщо не са свързани, всеки има свой собствен дизайн, своя структура, дразнещи банери, зле работещо търсене, проблеми с изтеглянето (да, исках информация офлайн). Вече тогава интернет започваше да прилича на нещо като телевизия, където полезното съдържание е приковано с гвоздеи към всякакви украшения.
Децентрализацията се превърна в кошмар.
Какво искам?
Парадоксално, но още тогава, без да знам нищо за web 2.0 или p2p, като потребител не ми беше нужна децентрализация! Спомняйки си незадъханите си размисли от онова време, стигам до извода, че ми беше нужна... единна база данни! Такава, която да предоставя всички резултати при запитване, а не най-подходящите за алгоритъма. Такава, в която всички резултати да са оформени унифицирано и стилизирани с моето собствено единно оформление, а не с блестящи самоделни дизайни на многобройните Васи Пупкини. Такава, която можех да запазя офлайн и да не се страхувам, че утре сайтът ще изчезне и информацията ще пропадне завинаги. Такава, в която можех да въвеждам собствената си информация — например коментари и тагове. Такава, в която можех да извършвам търсене, сортиране и филтриране с моите лични алгоритми.
Web 2.0 и социални мрежи
Междувременно на сцената излезе концепцията Web 2.0. Формулирана през 2005 г. от Тим О’Рейли, като "метод на проектиране на системи, които стават все по-добри, колкото повече хора ги използват" — и подразбираща активно ангажиране на потребителите в колективно създаване и редактиране на съдържанието на Мрежата. Без преувеличение, върхът и триумфът на тази концепция станаха Социалните Мрежи. Огромни платформи, обединяващи милиарди потребители и съхраняващи стотици петабайти данни.
Какво получихме в социалните мрежи?
- унификация на интерфейса; оказа се, че всички възможности за създаване на разнообразен и ярък дизайн не са необходими на потребителите; всички страници на всички потребители имат един и същи дизайн и това е удобно за всички; единствено съдържанието е различно.
- унификация на функционалността; разнообразието от скриптове се оказа също ненужно. «Лента», приятели, албуми… през времето на съществуването на социалните мрежи функционалността им стана повече или по-малко стабилна и едва ли ще се промени: функционалността се определя от видовете активност на хората, а хората практически не се променят.
- единна БД; работата с такава БД се оказа много по-удобна, отколкото с множество разпръснати сайтове; търсенето стана много по-лесно. Вместо непрекъснато сканиране на разнообразни слабо свързани странички, кеширане на всичко това, класифициране по сложни хевристични алгоритми — относително прост унифициран запит към единна база с известна структура.
- интерфейс за обратна връзка — лайкове и споделяния; в обикновената мрежа, например, Google не можа да получи обратна връзка от потребителите след преминаване по линка в резултатите от търсенето. В социалните мрежи тази връзка се оказа проста и естествена.
Какво загубихме? Загубихме децентрализацията, а оттам — и свободата. Счита се, че сега нашите данни не ни принадлежат. Ако преди можехме да разположим домашна страница дори на собствения си компютър, сега предаваме всичките си данни на интернет гигантите.
Освен това, с развитието на интернет, правителства и корпорации проявиха интерес, в следствие на което възникнаха проблеми с политическата цензура и ограниченията на авторското право. Нашите страници в социалните мрежи могат да бъдат забранени и изтрити, ако съдържанието не отговаря на някакви правила на социалната мрежа; за небрежен пост — да се привлече административна и дори наказателна отговорност.
И ето, отново се замисляме: не би ли трябвало да върнем децентрализацията? Но в друга форма, лишена от недостатъците на първия опит?
Пирингови мрежи
Първите p2p мрежи се появиха още преди web 2.0 и се развиваха паралелно с развитието на уеба. Основното класическо приложение на p2p е файловият обмен; първите мрежи бяха разработвани за обмен на музика. Първите мрежи (като Napster) бяха по същество централизирани и затова бързо бяха закрити от притежателите на авторски права. Последователите тръгнаха по пътя на децентрализацията. През 2000 година се появяват протоколите ED2K (първият клиент eDonkey) и Gnutella, през 2001 — протокол FastTrack (клиент KaZaA). Постепенно степента на децентрализация се увеличава, технологиите се усъвършенстват. На смена на системите с „опашка за изтегляне“ идват торентите, появи се концепцията за разпределени хеш таблици DHT. С увеличаването на натиска от страна на държавите анонимността на участниците стана по-търсена. От 2000 година се разработва мрежата Freenet, от 2003 година — I2P, в 2006 стартира проектът RetroShare. Могат да се споменат многобройни p2p мрежи, както съществували по-рано и вече изчезнали — така и действащи в момента: WASTE, MUTE, TurtleF2F, RShare, PerfectDark, ARES, Gnutella2, GNUNet, IPFS, ZeroNet, Tribbler и много други. Те са много. Те са различни. Много различни — и по предназначение, и по устройство… Вероятно много от вас дори не познават всички тези имена. И това далеч не е всичко.
Въпреки това p2p мрежите имат много недостатъци. Освен техническите недостатъци, присъщи на всяка конкретна реализация на протокола и клиента, може да се отбележи доста общ недостатък — трудността при търсенето (т.е. всичко, с което се сблъсква Web 1.0, но в още по-сложен вариант). Тук няма Гугъл с неговото всеприсъстващо и мигновено търсене. И ако за файловите обменни мрежи все още може да се използва търсене по име на файл или по метаинформация, то намирането на нещо, например, в overlay мрежите onion или i2p, е изключително трудно, ако изобщо е възможно.
В общи линии, ако направим аналогия с класическия интернет, то повечето децентрализирани мрежи са заседнали някъде на нивото на FTP. Представете си интернет, в който няма нищо, освен FTP: ни модерни сайтове, ни web2.0, ни Youtube… Ето в такова състояние се намират децентрализираните мрежи. И въпреки че има отделни опити нещо да се промени, засега промените са малко.
Съдържание
Нека се обърнем към още един важен елемент от тази пъзел — съдържанието. Съдържанието е основната трудност на всеки интернет ресурс, особено на децентрализираните. От къде да го вземем? Разбира се, можем да разчитаме на група ентусиасти (както е в момента с съществуващите p2p мрежи), но тогава развитието на мрежата ще е доста бавно и съдържанието ще е оскъдно.
Работата с обикновения интернет е търсене и изучаване на съдържание. Понякога — запазване (ако съдържанието е интересно и полезно, много, особено тези, дошли в мрежата по времето на dial-up — включително и аз — разумно го запазват офлайн, за да не се изгуби; тъй като интернетът е нещо, на което нямаме контрол, днес сайтът съществува, утре го няма, днес има видеоклип в YouTube — утре го изтриват и т.н.
А за торентите (които възприемаме по-скоро като просто средство за доставка, отколкото като p2p мрежа) запазването изобщо предполага. И, между другото, това е една от проблемите на торентите: веднъж сваленият файл е трудно да се премести на мястото, където е по-удобно да се използва (обикновено е нужно ръчно регенериране на споделянето) и напълно невъзможно е да се преименува (може да се направи хард линк, но много малко хора знаят за това).
В общи линии, много хора по един или друг начин запазват съдържанието. Каква е неговата по-нататъшна съдба? Обикновено запазените файлове се озовават некъде на диска, в папка тип Downloads, в обща купчина, и остават там заедно с многото хиляди други файлове. Това е лошо — и то лошо за самия потребител. Ако интернетът има търсачки, то локалният компютър на потребителя няма нищо подобно. Добре е, ако потребителят е внимателен и свикнал да сортира „входящите“ свалени файлове. Но далеч не всички са такива...
Всъщност, в днешно време има много и такива, които не запазват нищо, а абсолютно разчитат на онлайн. Но в p2p мрежите е предвидено, че съдържанието се съхранява локално на устройството на потребителя и се раздава на другите участници. Може ли да се намери такова решение, което да позволи да се включат двете категории потребители в децентрализирана мрежа, без да се променят навиците им, и повече от това — да им улесни живота?
Идеята е доста проста: какво, ако създадем средство за удобно и прозрачно за потребителя съхранение на съдържание от обикновения интернет, с интелигентно съхранение — със семантична метаинформация, и не в обща купа, а в определена структура с възможност за по-нататъшно структурирането, и в същото време разпространяваме съхраненото съдържание в децентрализирана мрежа?
Да започнем със съхранението
Няма да разглеждаме утилитарното използване на интернет за преглед на прогнози за времето или разписания на самолети. Нас повече ни интересуват самодостатъчни и относително неизменяеми обекти — статии (започвайки от туитове/постове в социалните мрежи и завършвайки с големи статии, каквито има тук на Хабрата), книги, изображения, програми, аудио и видео записи. От къде основно идва информацията? Обикновено това е
- социални мрежи (различни новини, малки бележки — „туитове“, картинки, аудио и видео)
- статии в тематични ресурси (като Хабрат); не е много на брой добри ресурси, обикновено и тези ресурси също са построени по принципа на социалните мрежи
- новинарски сайтове
Обикновено там има стандартни функции: „лайк“, „репост“, „сподели в социалните мрежи“ и т.н.
Да си представим един плъгин за браузър, който по специален начин ще съхранява всичко, под което сме поставили лайк, направили репост, запазили в „избрано“ (или натиснали специален бутон на плъгина, извеждан в менюто на браузъра — в случай, че сайтът няма функция лайк/репост/добавяне в закладки). Основната идея е, че просто слагате лайк — както сте правили милион пъти преди това, а системата съхранява статия, картинка или видеоклип в специално офлайн хранилище и тази статия или картинка става достъпна — и за вас за офлайн преглед чрез интерфейса на децентрализирания клиент, така и в самата децентрализирана мрежа! За мен е много удобно. Никакви излишни действия, и решаваме веднага множество задачи:
- съхраняване на ценен контент, който може да се загуби или бъде изтрит
- бързо напълване на децентрализирана мрежа
- агрегация на съдържание от различни източници (можете да сте регистрирани в десетки интернет ресурси, и всички лайкове/репостове ще се струпват в единна локална база)
- структуриране на интересното за вас съдържание по вашите правила
Очевидно, че браузерният плъгин трябва да бъде настроен за структурата на всеки сайт (това е съвсем реално - вече съществуват плъгини за запазване на съдържание от Youtube, Twitter, VK и т.н.). Сайтовете, за които има смисъл да се правят персонализирани плъгини, не са много. Обикновено това са популярни социални мрежи (те едва ли са повече от десет) и още няколко качествени тематични сайта като Хабра (такива също не са много). При открит код и спецификация разработката на нов плъгин на базата на шаблонна структура не би трябвало да отнеме много време. За останалите сайтове може да се използва универсалният бутон за запазване, който запазва цялата страница в mhtml - вероятно, предварително очиствайки страницата от реклама.
Сега относно структурирането
Под "умно" запазване разбирам поне запазване с метаинформация: източник на съдържанието (URL), набор от предишни лайкове, тагове, коментари, техните идентификатори и т.н. Защото при обикновено запазване тази информация се губи... Под източник може да се разбира не само директен URL, но и семантичната съставка: например група в социалната мрежа или потребител, който е направил репост. Плъгинът може да бъде достатъчно умен, за да използва тази информация за автоматично структуриране и тагиране. Също така, трябва да се разбере, че самият потребител винаги може да добави някаква метаинформация към запазеното съдържание, за което трябва да се предвидят максимално удобни интерфейсни инструменти (имам достатъчно много идеи как да го направя).
По този начин се решава въпросът за структурирането и организирането на локалните файлове на потребителя. Това е вече готова полза, която може да се използва дори без всякакво p2p. Просто една офлайн база, която знае какво, откъде и в какъв контекст сме запазили, и позволява да се провеждат малки изследвания. Например, да намерим потребители на външна социална мрежа, които са давали лайкове под същите постове като вас. Позволяват ли много социални мрежи това в явен вид?
Тук е важно да се спомене, че само един плъгин за браузера със сигурност не е достатъчен. Вторият най-важен компонент на системата е услугата за децентрализирана мрежа, която работи на заден фон и обслужва както самата p2p мрежа (заявки от мрежата и заявки от клиента), така и запазването на ново съдържание чрез средствата на плъгина. Услугата, работеща съвместно с плъгина, ще постави съдържанието на нужното място, ще изчисли хешове (и може да определи, че такова съдържание вече е запазено по-рано), ще добави необходимата метаинформация в локалната база данни.
Интересното е, че система би била полезна и в такъв вид, без никакви p2p. Много хора използват веб-клиппери, които добавят интересно съдържание от мрежата, например в Evernote. Предложената архитектура е разширен вариант на такъв клиппер.
И накрая, p2p обмен.
Най-хубавото е, че информацията и метаинформацията (както уловена от уеб, така и лична) могат да се обменят. Концепцията за социална мрежа прекрасно се вписва в p2p архитектурата. Може да се каже, че социалната мрежа и p2p са създадени един за друг. Всяка децентрализирана мрежа в идеалния случай трябва да бъде изградена като социална; само тогава ще работи ефективно. "Приятели", "Групи" — това са именно тези "пирони", с които трябва да има устойчива връзка, а такава възниква от естествения източник — общите интереси на потребителите.
Принципите на запазването и разпространението на съдържание в децентрализирана мрежа са напълно идентични на принципите на запазване (улов) на съдържание от обикновения интернет. Ако използвате някакво съдържание от мрежата (следователно сте го запазили), то всеки може да използва вашите ресурси (диск и канал), необходими за получаването точно на това съдържание.
Лайкове — най-простият инструмент за запазване и споделяне. Ако съм поставил лайк — не е важно дали във външния интернет или вътре в децентрализираната мрежа — значи съдържанието ми харесва, а щом така — значи съм готов да го държа локално и да го раздавам на другите участници в децентрализираната мрежа.
- Съдържанието няма да "изчезне"; то сега е запазено локално при мен, мога да се върна към него по-късно, по всяко време, без да се притеснявам, че някой ще го изтрие или блокира.
- Мога (веднага или по-късно) да го категоризирам, тагирам, коментирам, асоциирам с друг съдържание, накратко, да направя нещо смислено с него — да го наречем "формиране на метаинформация"
- Мога да споделя тази метаинформация с други участници в мрежата
- Мога да синхронизирам своята метаинформация с метаинформацията на другите участници
Вероятно отказът от „дизлайкове“ също изглежда логично: ако съдържанието не ми харесва — съвсем логично е, че не искам да губя мястото си на диска за съхранение и интернет канала си за разпространение на това съдържание. Затова дизлайковете много органично не се вписват в децентрализацията (въпреки че понякога наистина ).
Понякога е необходимо да запазим и това, което „не ни харесва“. Има такава дума „трепет“ :)
«Запазени страници“ (или „Избрано“) — не изразявам отношение към съдържанието, но го запазвам в локалната си база от запазени страници. Думата „избрано“ (favorites) не съвсем подхожда по смисъл (за това има лайкове и последващата им категоризация), а „запазени страници“ (bookmarks) — е напълно подходяща. Съдържанието в „запазени страници“ също се разпространява — ако то ви е „необходимо“ (т.е. по един или друг начин „ползвате“ го), логично е, че може да е „необходимо“ и на някой друг. Защо да не използвате ресурсите си за това?
Достатъчно очевидна е функцията „приятели“. Това са пиршества, хора с подобни интереси, а следователно и такива, у които вероятно ще се появи интересно съдържание. В децентрализираната мрежа това преди всичко означава абонамент за новинарския поток от приятели и достъп до техните каталози (албуми) с запазеното от тях съдържание.
Аналогично, функцията „групи“ — някакви колективни потоци, форуми или нещо такова, на което също може да се абонирате — и значит да получавате всичките материали на групата и да ги разпространявате. Вероятно „групите“, подобно на големите форуми, трябва да бъдат йерархични — това ще позволи по-добра структура на съдържанието на групите, а също така ще ограничи потока от информация и да не получавате/разпространявате това, което не е много интересно за вас.
Всичко останало
Следва да се отбележи, че децентрализираната архитектура винаги е по-сложна от централизираната. В централзираните ресурси — строг диктат на сървърния код. В децентрализираните — необходимостта от договаряне между множество равноправни участници. Разбира се, тук не може да се мине без криптография, блокчейни и други постижения, отработени главно в криптовалутите.
Предполагам, че могат да се изискват известни криптографски взаимни рейтинги на доверие, формирани от участниците в мрежата един за друг. Архитектурата трябва да позволява ефективна борба с ботнетове, които, съществуващи в някакво облако, например, могат сами да си манипулират рейтингите. Много ми се иска корпорациите и ферми от ботнетове, с всичкото си технологично превъзходство, да не поемат контрола над такава децентрализирана мрежа; да е основен ресурс живи хора, способни да произвеждат и структурирано съдържание, интересно и полезно за други живи хора.
Още повече, бих искал такава мрежа да движи цивилизацията напред. В този аспект имам цяла маса идеи, които обаче не се вписват в рамките на тази статия. Ще кажа само, че по определен начин научнотехническото, медицинското и т.н. съдържание трябва да има предимство пред развлекателното, а това ще изисква известна модерация. Самата модерация на децентрализирана мрежа е нетривиална, но разрешима задача (обаче, терминът „модерация“ тук е напълно неточен и не отразява същността на процеса — нито външно, нито вътрешно… и дори не съм измислил как би могло да се нарече този процес).
Може би е излишно да се споменава необходимостта от осигуряване на анонимност — както чрез вградени средства (както в i2p или Retroshare), така и като пропускане на целия трафик през TOR или VPN.
И накрая софтуерната архитектура (схематично изобразена на картинката към статията). Както вече беше споменато, първият компонент на системата е браузърният плъгин, който улавя съдържание с метаинформация. Вторият най-важен компонент е p2p услуга, работеща във фонов режим («бекенд»). Работата на мрежата очевидно не трябва да зависи от това дали браузърът е стартиран. Третият компонент е клиентският софтуер — фронтенд. Това може да бъде и локален уеб-сервис (в този случай потребителят ще може да работи с децентрализирана мрежа, без да напуска любимия си браузър), и отделно GUI приложение за конкретна ОС (Windows, Linux, MacOS, Android, iOS и т.н.). Харесва ми идеята за съществуването на всички варианти на фронтенда едновременно. Освен това, това ще наложи по-строга архитектура на бекенда.
Има още много аспекти, които не са включени в тази статия. Свързването към споделянето на съществуващи файлови хранилища (т.е. когато вече имате няколко терабайта изтеглени файлове, и вие позволите на клиента да ги сканира, да получи хешовете, да ги съпостави с това, което има вътре в мрежата и да се присъедини към споделянето, а също да получи от мрежата метаинформация за собствените си файлове — нормални имена, описания, рейтинги, отзиви и т.н.), свързването на външни източници на метаинформация (например бази данни като Libgen), опционалното използване на дисково пространство за съхранение на чуждо криптирано съдържание (както във Freenet), архитектурата на интеграция с вече съществуващи децентрализирани мрежи (тук изобщо става тъмен лес), идеята за медиахеширане (използването на специализирани перцептивни хешове за медиасъдържание — изображения, аудио и видео, което ще позволи съпоставяне на еднакви по смисъл медийни файлове, които се различават по размер, резолюция и т.н.) и още много други.
Кратко резюме на статията
1. В децентрализирани мрежи няма Гугъл с неговото търсене и класиране — но за сметка на това има Общност от реални хора. Социалната мрежа с механизмите за обратна връзка (лайкове, репостове…) и социалната графика (приятели, общности…) — идеалната модел на приложния слой за децентрализирана мрежа.
2. Основната идея, която внасям с тази статия — автоматичното запазване на интересното съдържание от обикновения интернет при поставяне на лайк/репост; това може да бъде полезно и без p2p, просто водене на личен архив на интересна информация
3. Това съдържание също може автоматично да попълва децентрализирана мрежа
4. Принципът на автоматичното запазване на интересното съдържание работи и при лайкове/репости в самата децентрализирана мрежа
Източник: habr.com
