Запропоноване інформаційне середовище є своєрідною децентралізованою соціальною мережею. Але на відміну від багатьох існуючих рішень - це середовище має ряд корисних властивостей крім децентралізації і створена на базі досить простих і стандартних технічних рішень (email, json, текстові файли і трохи блокчейна). Що дозволяє будь-кому з базовими знаннями програмування створювати свої послуги для даного середовища.
Універсальний ідентифікатор
У будь-якому онлайн середовищі ідентифікатори користувачів та об'єктів є одним з ключових елементів системи.
В даному випадку як ідентифікатор користувача виступає email, який вже фактично став загальноприйнятим ідентифікатором для авторизації на сайтах та інших сервісах (jaber, openId).
Фактично ідентифікатор користувача в даному онлайн середовищі – це пара login+domain, яка для зручності записується у звичному для більшості вигляді. Для більшої децентралізації кожному користувачеві бажано мати свій домен. Що близько принципам індивеба, де як ідентифікатор користувача використовується домен. У нашому випадку до свого домену користувач додає нікнейм, що дозволяє створювати кілька акаунтів на одному домені (для друзів, наприклад) і робить систему адресації більш гнучкою.
Такий формат ідентифікатора користувача не прив'язаний до мережі. Якщо користувач розміщує свої дані в мережі TOR - то можна використовувати домени в зоні .onion, якщо це мережа з DNS системою на блокчейні - то домени в зоні типу .bit. У результаті формат адресації користувачів та їх даних не залежить від мережі, через яку вони передаються (скрізь використовується зв'язка login+domain). Для бажаючих використати як ідентифікатор bitcoin/ethereum адресу можна доопрацювати систему під використання псевдо email адрес виду [email protected]
Адресація об'єктів
Дане онлайн середовище фактично є набором об'єктів, які описані у структурованому машиночитаному вигляді, посилаються на інші об'єкти та прив'язані до певного користувача (email'у) або проекту/організації (домену).
Як ідентифікатори об'єктів використовуються urn у просторі імен urn:opendata. Наприклад, профайл користувача має адресу виду:
urn:opendata:profile:[email protected]
Коментар користувача має адресу виду:
urn:opendata:comment:[email protected]:08adbed93413782682fd25da77bd93c99dfd0548
де 08adbed93413782682fd25da77bd93c99dfd0548 - випадковий sha-1 хеш, що виступає в ролі id об'єкта, а [захищено електронною поштою] - Власник даного об'єкта.
Принцип публікації даних користувача
Маючи під керуванням свій домен користувач може досить просто публікувати свої дані та контент. І на відміну від індибеба, для цього не потрібно створювати сайт з HTML сторінками, в яких вбудовані семантичні дані.
Наприклад, базова інформація про користувача розміщується у файлі datarobots.txt, що знаходиться за адресою виду
http://55334.ru/[email protected]/datarobots.txt
І має зміст такого формату:
Object: user
Services-Enabled: 55334.ru,newethnos.ru
Ethnos: newethnos
Delegate-Tokens: http://55334.ru/[email protected]/delegete.txt
Тобто фактично — це набір рядків із даними виду ключ->значення, спарсити які — просте завдання для будь-якої людини з базовими знаннями програмування. А редагувати дані за бажання можна через звичайний блокнот.
Більш складні дані (профайл, коментар, пост і т. д.), що мають свій urn - віддаються у вигляді JSON об'єкта за стандартним API (http://opendatahub.org/api_1.0?lang=ua), яке може бути як на домені користувача, так і на сторонньому сайті, на якому користувач делегував зберігання, публікацію та редагування своїх даних (у рядку Services-Enabled файлу datarobots.txt). Про подібні сторонні сервіси — написано нижче.
Проста онтологія та JSON
Онтологія комунікаційного середовища є відносно простою, порівняно з онтологіями галузевих баз знань. Так як у комунікаційному середовищі існує відносно невеликий набір стандартних об'єктів (пост, коментар, лайк, профайл, відгук) із відносно невеликим набором властивостей.
Тому для опису об'єктів у такому середовищі достатньо використовувати JSON замість складнішого за структурою та парсингом XML (важливо не забувати про необхідність низького порогу входу та масштабованість).
Для отримання об'єкта з відомим нам urn необхідно звернутися до домену користувача, або стороннім сервісам, яким користувач делегував керування його даними.
У даному онлайн середовищі кожен домен, на якому існує онлайн-сервіс, також має свій datarobots.txt, розміщений за адресою виду example.com/datarobots.txt з подібним змістом:
Object: service
Api: http://newethnos.ru/api
Api-Version: http://opendatahub.org/api_1.0
З якого ми можемо дізнатися, що отримати дані про об'єкт можна за адресою виду:
JSON об'єкт має таку структуру:
{
"urn": "urn:opendata:profile:[email protected]",
"status": 1,
"message": "Ok",
"timestamp": 1596429631,
"service": "example.com",
"data": {
"name": "John",
"surname": "Gald",
"gender": "male",
"city": "Moscow",
"img": "http://domain.com/image.jpg",
"birthtime": 332467200,
"community_friends": {
"[email protected]": "1",
"[email protected]": "0.5",
"[email protected]": "0.7"
},
"interests_tags": "cars,cats,cinema",
"mental_cards": {
"no_alcohol@main": 8,
"data_accumulation@main": 8,
"open_data@main": 8
}
}
}
Сервісна архітектура
Сторонні послуги необхідні спрощення процесу публікації та пошуку даних кінцевими користувачами.
Вище був згаданий один із видів сервісів, які допомагають користувачеві публікувати його дані в мережі. Можливе існування безлічі подібних сервісів, кожен з яких надає користувачеві зручний інтерфейс для редагування одного з видів даних (форум, блог, питання-відповідь тощо). Якщо користувач не довіряє стороннім сервісам, то він може встановити на свій домен скрипт сервісу по роботі з даними або розробити його самостійно.
Крім сервісів, що дозволяють користувачам публікувати/редагувати дані — в онлайн-середовищі передбачено низку інших сервісів, які виконують відносно складні завдання, які досить проблематично реалізувати на вузлах кінцевих користувачів.
Одним із видів таких сервісів є хаби даних (
Наявність сервісів у такому відкритому децентралізованому онлайн середовищі суттєво знижує поріг входу для користувачів, оскільки відсутня потреба в установці та налаштуванні власного вузла. В той же час у користувача залишається контроль над своїми даними (у будь-який момент можна змінити сервіс, якому делегована публікація даних або створити свій вузол).
Якщо ж користувачеві взагалі не цікаве володіння своїми даними і він не має свого домену або знайомого з доменом, то за умовчанням його даними керує opendatahub.org.
За чий рахунок це все?
Мабуть, головна проблема практично всіх подібних децентралізованих проектів — це неможливість їхньої монетизації на рівні, достатньому для стабільного розвитку та підтримки.
Для покриття витрат на розробку та маркетинг у даному онлайн середовищі використовуються donate+tokens.
Усі пожертвування, які користувачі вносять внутрішнім проектам/сервісам, є загальнодоступними, машиночитаними та прив'язані до email. Що дозволяє враховувати їх, наприклад, при обчисленні внутрішньомережевого соціального рейтингу та публікувати на сторінках користувачів. Коли пожертвування перестають бути анонімними, то фактично користувачі не жертвують, а "скидаються" на підтримку спільного інформаційного середовища. Також, як люди, скидаються на ремонт місць загального користування з відповідним ставленням до тих людей, які відмовилися скинутися.
Крім пожертвувань, для залучення коштів використовуються токени емітовані в обмеженій кількості (400.000), які нараховуються всім, хто вносить пожертвування в основний фонд (ethnogenesis).
Додаткові функції токенів
Кожен токен є "ключом" для доступу в дане онлайн середовище. Тобто користуватися сервісами і бути частиною онлайн середовища можна тільки за наявності хоча б одного токена, який прив'язується до email.
Токени є гарним спам-фільтром через свою обмеженість. Чим більше в системі користувачів – тим складніше отримати токен і тим більше затратно створювати ботів.
Люди, їхні дані та соціальні зв'язки — важливіші за технології
Описане онлайн середовище є технічно відносно примітивним рішенням. Але важливішим у ній є не так технології, скільки люди і створювані всередині середовища соціальні зв'язки та дані (контент).
Соціальна спільність, що створюється, учасники якої мають свої універсальні ідентифікатори (email і свій домен) і структуровані дані (з URN адресами, онтологією та JSON об'єктами) при появі кращого технічного рішення — може перенести всі ці дані в інше онлайн середовище, зберігши при цьому сформовані зв'язки (рейтинги, оцінки) та контент.
У даному пості описаний один з елементів мережевої самоорганізованої спільності, яка крім децентралізованого онлайн середовища включає ряд оффлайн напрямків, які збільшують користь від онлайн середовища і є "замовниками", багато в чому визначальними її функціонал. Але це вже теми для інших статей, які не мають прямого відношення до IT та технологій.
Джерело: habr.com