Предлагаемая информационная среда является своего рода децентрализованной социальной сетью. Но в отличии от многих существующих решений — данная среда имеет ряд полезных свойств помимо децентрализации и создана на базе достаточно простых и стандартных технических решений (email, json, текстовые файлы и немного блокчейна). Что позволяет любому желающему с базовыми знаниями программирования создавать свои сервисы для данной среды.
Универсальный идентификатор
В любой онлайн среде идентификаторы пользователей и объектов — являются одной из ключевых элементов системы.
В данном случает в качестве идентификатора пользователя выступает email, который уже фактически стал общепринятым идентификатором для авторизации на сайтах и других сервисах (jaber, openId).
Фактически идентификатор пользователя в данной онлайн среде — это пара login+domain, которая для удобства записывается в привычном для большинства виде. При этом для большей децентрализации каждому пользователю желательно иметь свой домен. Что близко принципам индивеба, где в качестве пользовательского идентификатора используется домен. В нашем случае к своему домену пользователь добавляет никнейм что позволяет создавать несколько аккаунтов на одном домене (для друзей, например) и делает систему адресации более гибкой.
Такой формат идентификатора пользователя не привязан к какой-либо сети. Если пользователь размещает свои данные в TOR сети — то можно использовать домены в зоне .onion, если это сеть с DNS системой на блокчейне — то домены в зоне типа .bit. В итоге, формат адресации пользователей и их данных не зависит от сети, через которую они передаются (везде используется связка login+domain). Для желающих использовать в качестве идентификатора bitcoin/ethereum адрес можно доработать систему под использование псевдо email адресов вида xaca1b7c8126806f672f9dbee4951527bb0f2c4e4@ethereum.blockchain
Адресация объектов
Данная онлайн среда фактически является набором объектов, которые описаны в структурированном машиночитаемом виде, ссылаются на другие объекты и привязаны к определённому пользователю (email’у) или проекту/организации (домену).
В качестве идентификаторов объектов используются urn в пространстве имён urn:opendata. Например, профайл пользователя имеет адрес вида:
urn:opendata:profile:user@domain.com
Комментарий пользователя имеет адрес вида:
urn:opendata:comment:user@domain.com:08adbed93413782682fd25da77bd93c99dfd0548
где 08adbed93413782682fd25da77bd93c99dfd0548 — случайный sha-1 хэш, выступающий в роли id объекта, а user@domain.com — владелец данного объекта.
Принцип публикации пользовательских данных
Имея под управлением свой домен пользователь может достаточно просто публиковать свои данные и контент. И в отличии от индибеба, для этого не требуется создавать сайт с html страницами, в которых встроены семантические данные.
Например, базовая информация о пользователе размещается в файле datarobots.txt, который находится по адресу вида
http://55334.ru/konstantin@55334.ru/datarobots.txt
И имеет содержание такого формата:
Object: user
Services-Enabled: 55334.ru,newethnos.ru
Ethnos: newethnos
Delegate-Tokens: http://55334.ru/konstantin@55334.ru/delegete.txt
То есть фактически — это набор строк с данными вида ключ->значение, спарсить которые — простая задача для любого человека с базовыми знаниями программирования. А редактировать данные при желании можно через обычный блокнот.
Более сложные данные (профайл, комментарий, пост и т. д.), имеющие свой urn — отдаются в виде JSON объекта по стандартному API (http://opendatahub.org/api_1.0?lang=ru), которое может находиться как на домене пользователя, так и на стороннем сайте, которому пользователь делегировал хранение, публикацию и редактирование своих данных (в строке 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
Из которого мы может узнать, что получить данные об объекте можно по адресу вида:
http://newethnos.ru/api?urn=urn:opendata:profile:konstantin@55334.ru
JSON объект имеет такую структуру:
{
"urn": "urn:opendata:profile:expample@55334.ru",
"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": {
"example1@domain.com": "1",
"example2@domain.com": "0.5",
"example3@domain.com": "0.7"
},
"interests_tags": "cars,cats,cinema",
"mental_cards": {
"no_alcohol@main": 8,
"data_accumulation@main": 8,
"open_data@main": 8
}
}
}
Сервисная архитектура
Сторонние сервисы необходимы для упрощения процесса публикации и поиска данных конечными пользователями.
Выше был упомянут один из видов сервисов, которые помогают пользователю публиковать его данные в сети. Возможно существование множества подобных сервисов, каждый из которых предоставляет пользователю удобный интерфейс для редактирования одного из видов данных (форум, блог, вопрос-ответ и т. д.). Если же пользователь не доверяет сторонним сервисам, то он может установить на свой домен скрипт сервиса по работе с данными или разработать его самостоятельно.
Помимо сервисов, позволяющих пользователям публиковать/редактировать данные — в онлайн среде предусмотрен ряд других сервисов, выполняющих относительно сложные задачи, которые достаточно проблематично реализовать на узлах конечных пользователей.
Одним из видов таких сервисов являются хабы данных ( opendatahub.org/ru — пример ), выполняющие роль своего рода веб архива, который собирает все публичные машиночитаемые данные пользователей и предоставляет к ним доступ по API.
Наличие сервисов в такой открытой децентрализованной онлайн среде существенно снижает порог входа для пользователей, так как отсутствует необходимость в установке и настройке собственного узла. В тоже время у пользователя остаётся контроль над своими данными (в любой момент можно сменить сервис которому делегирована публикация данных или создать свой узел).
Если же пользователю вообще не интересно владение своими данными и он не имеет своего домена или знакомого с доменом — то по умолчанию его данными управляет opendatahub.org.
За чей счёт всё это?
Пожалуй главная проблема практически всех подобных децентрализованных проектов — это невозможность их монетизации на уровне, достаточном для стабильного развития и поддержки.
Для покрытия расходов на разработку и маркетинг в данной онлайн среде используются donate + tokens.
Все пожертвования, которые пользователи вносят внутренним проектам/сервисам — являются общедоступными, машиночитаемыми и привязаны к email. Что позволяет учитывать их, например, при вычислении внутрисетевого социального рейтинга и публиковать на страницах пользователей. Когда пожертвования перестают быть анонимными, то фактически пользователи не жертвуют, а “скидываются” на поддержку общей информационной среды. Также как люди скидываются на ремонт мест общего пользования с соответствующим отношением к тем людям, которые отказались скинуться.
Помимо пожертвований, для привлечения средств используются токены эмитированные в ограниченном количестве (400.000), которые начисляются всем кто вносит пожертвования в основной фонд (ethnogenesis).
Дополнительные функции токенов
Каждый токен — является “ключом” для доступа в данную онлайн среду. То есть пользоваться сервисами и быть частью онлайн среды можно только при наличии хотя бы 1 токена, который привязывается к email.
Токены являются хорошим спам-фильтром из-за своей ограниченности. Чем больше в системе пользователей — тем сложнее получить токен и тем более затратно создавать ботов.
Люди, их данные и социальные связи — важнее технологий
Описанная онлайн среда технически является относительно примитивным решением. Но более важным в ней являются не столько технологии, сколько люди и создаваемые внутри среды социальные связи и данные (контент).
Создаваемая социальная общность, участники которой имеют свои универсальные идентификаторы (email и свой домен) и структурированные данные (с URN адресами, онтологией и JSON объектами) при появлении лучшего технического решения — может перенести все эти данные в другую онлайн среду, сохранив при этом сформированные связи (рейтинги, оценки) и контент.
В данном посте описан один из элементов сетевой самоорганизованной общности, которая помимо децентрализованной онлайн среды включает в себя ряд оффлайн направлений, которые увеличивают пользу от онлайн среды и являются “заказчиками”, во многом определяющими её функционал. Но это уже темы для других статей, не имеющих прямого отношения к IT и технологиям.
Автор: Константин