
В тази статия представям своите размисли относно историята и перспективите за развитие на интернет, централизирани и децентрализирани мрежи и, в крайна сметка, възможната архитектура на следващото поколение децентрализирана мрежа.
Не е нещо наред с интернет
Впервые аз се запознах с Интернет през 2000 година. Разбира се, това не е най-ранният момент — Мрежата вече съществуваше преди това, но това време може да се нарече първият разцвет на Интернет. Световната мрежа — гениално изобретение на Тим Бернерс-Лий, web1.0 в неговата класическа канонична форма. Множество сайтове и страници, свързващи се помежду си с хипервръзки. На пръв поглед — проста, като всичко гениално, архитектура: децентрализирана и свободна. Искам — пътувам из сайтовете на други хора, преминавайки през хипервръзките; искам — създавам свой сайт, на който публикувам това, което ме интересува — например моите статии, снимки, програми, хипервръзки към интересни за мен сайтове. А другите поставят линкове към мен.
Изглежда идилична картина? Но вече знаете какво стана.
Страниците станаха твърде много и търсенето на информация стана доста сложно. Прописаните от авторите хипервръзки просто не успяха да структурят този огромен обем информация. Първо се появиха каталози, запълвани ръчно, а след това и гигантски търсачки, които започнаха да използват хитри хевристични алгоритми за ранжиране. Сайтовете бяха създавани и изоставяни, информацията се дублираше и из distorted. Интернет бързо се комерсиализира и се отдалечаваше все повече от идеалната академична мрежа. Езикът на разметка бързо се превърна в език за форматиране. Появиха се реклами, дразнещи банери и технологии за популяризиране и измами с търсачките — SEO. Мрежата бързо се запълваше с информационен боклук. Хипервръзките престанаха да бъдат инструмент за логическа връзка и се превърнаха в инструмент за популяризиране. Сайтовете се „запечатваха“, ставаха затворени „приложения“, а не открити „страници“, превръщайки се в средства за генериране на доход.
Още тогава ми хрумна, че „нещо тук не е наред“. Куча различни сайтове, от примитивни домашни страници с шокиращ вид, до „мегапортали“, пренаселени с мигащи банери. Дори когато сайтовете са на една и съща тема — те никак не са свързани помежду си, всеки има свой дизайн, структура, дразнещи банери, лошо работеща търсачка, проблеми със свалянето (да, исках информацията офлайн). Вече тогава интернет започваше да се превръща в нещо подобно на телевизията, където полезното съдържание е заковано с гвоздеи с всякаква украса.
Децентрализация се е превърнала в трагедия.
Какво искаме?
Парадоксално, но вече тогава, без да знам нищо за web 2.0, нито за p2p, аз като потребител не се нуждаех от децентрализация! Като си спомня чистите си размисли от онова време, заключавам, че ми беше нужна... единна база данни! Такова, че заявка да връща всички резултати, а не най-подходящите за алгоритъма за класиране. Такова, в което всички тези резултати са оформени унифицирано и стилизирани с моето собствено единно оформление, а не с грозни самоделни дизайни на многобройни Васи Пупкини. Такова, което да мога да запазя офлайн, без да се страхувам, че утре сайтът ще изчезне и информацията ще бъде загубена завинаги. Такова, в което мога да добавям моя информация — например коментари и тагове. Такова, в което мога да извършвам търсене, подреждане и филтриране с моите собствени алгоритми.
Web 2.0 и социални мрежи
Междувременно на сцената излезе концепцията Web 2.0. Сформулирана през 2005 година от Тим О’Рейли, като «методология за проектиране на системи, които чрез отчитане на мрежово взаимодействие стават все по-добри, колкото повече хора ги използват» — и предвиждаща активно ангажиране на потребителите в колективно създаване и редактиране на съдържанието в Мрежата. Без преувеличение, връхната точка и триумф на тази концепция станаха социалните мрежи. Огромни платформи, обединяващи милиарди потребители и съхраняващи стотици петабайти данни.
Какво получихме в социалните мрежи?
- унификация на интерфейса; оказа се, че всички възможности за създаване на разнообразен грозен дизайн не са необходими на потребителите; всички страници на потребителите имат един и същ дизайн, което е удобно и удовлетворително; различава се само съдържанието.
- унификация на функционала; цялото разнообразие от скриптове се оказа също ненужно. «Стена», приятели, албуми… през времето на съществуването на социалните мрежи функционалът им се стабилизира и малко вероятно е да се промени: функционалът се определя от видовете активност на хората, а хората практически не се променят.
- единна БД; работата с такава база данни се оказа много по-удобна от многобройните разпокъсани сайтове; търсенето стана много по-лесно. Вместо постоянно сканиране на различни слабо свързани страници, кеширане на всичко това, класиране по сложни хеуристични алгоритми — сравнително прост унифициран запитване към единната база с известна структура.
- интерфейс за обратна връзка — лайкове и репостове; в обикновения уеб същият Google не можеше да получи обратна връзка от потребителите, след като преминат по линка в търсенето. В социалните мрежи тази свързаност се оказа проста и естествена.
Какво загубихме? Загубихме децентрализация, а следователно — свобода.. Смята се, че сега нашите данни не ни принадлежат. Ако преди можехме да хостваме личната си страница дори на собствен компютър, сега предаваме всичките си данни на интернет гигантите.
Освен това, с развитието на Интернет, правителствата и корпорациите започнаха да се интересуват от него, което доведе до проблеми като политическа цензура и ограничения на авторските права. Нашите профили в социалните мрежи могат да бъдат блокирани и изтрити, ако съдържанието не отговаря на определени правила; за неразумен пост — да бъдем подведени към административна и дори наказателна отговорност.
И ето, отново се замисляме: да не се върнем ли към децентрализацията? Но в друга форма, лишена от недостатъците на първия опит?
P2P мрежи
Първите 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, но в още по-сложен вариант). Тук няма Google с неговото всеобхватно и мигновено търсене. И ако за файлови обменни мрежи все пак можем да използваме търсене по име на файл или по метаинформация, то да намерим нещо, например в оверлейните мрежи 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 услуга, работеща в бекграунд (backend). Работата на мрежата очевидно не трябва да зависи от това дали браузърът е активен. Третият компонент е клиентското приложение — frontend. То може да бъде както локален уебсервиз (в този случай потребителят ще може да работи с децентрализирана мрежа, без да напуска любимия си браузър), така и отделно GUI приложение за конкретна операционна система (Windows, Linux, MacOS, Android, iOS и т.н.). Харесва ми идеята за едновременно съществуване на всички варианти на frontend-а. Същевременно това ще наложи по-строга архитектура на бекенда.
Има още много аспекти, които не са включени в тази статия. Свързване към разпределение на съществуващи файлови хранилища (т.е. когато вече имате няколко терабайта накачени файлове и давате на клиента да сканира това, да получи хешове, да ги съпостави с наличното в мрежата и да се включи в раздаването, както и да получи от мрежата метаинформация за собствените си файлове — нормални имена, описания, рейтинги, отзиви и т.н.), свързване на външни източници на метаинформация (като например бази данни Libgen), опционална употреба на дисково пространство за съхранение на чуждо криптирано съдържание (както в Freenet), архитектура на интеграция с съществуващи децентрализирани мрежи (тук е наистина тъмен лес), идея за медиа хеширане (използване на специални перцептивни хешове за медийно съдържание — картинки, аудио и видео, което ще позволи съпоставяне на медийни файлове със сходен смисъл, които се различават по размер, резолюция и т.н.) и много други.
Кратко резюме на статията
1. В децентрализованите мрежи няма Google с неговото търсене и класиране, но има Общество от реални хора. Социалната мрежа с нейните механизми за обратна връзка (харесвания, споделяния…) и социалния граф (приятели, общности…) е идеалният модел на приложно ниво за децентрализирана мрежа.
2. Основната идея, която внедрявам с тази статия, е автоматичното запазване на интересен съдържание от обикновения интернет при слагане на лайк/споделяне; това може да бъде полезно и без p2p, просто като водите личен архив на интересна информация.
3. Този съдържание може автоматично да напълва и децентрализираната мрежа.
4. Принципът на автоматично запазване на интересен съдържание работи и при лайкове/споделяния в самата децентрализирана мрежа.
Източник: habr.com
