Artery Storage и VPN
Общие принципы работы в деталях
В общем
Распределенная децентрализованная система хранения данных Artery Storage имеет достаточно сложную архитектуру, объединяющую в себя ноды, выполняющие разную, но одинаково полезную для всей сети работу. Эта работа оценивается вне зависимости от роли, а только исходя из предоставленных в сеть ресурсов (про то, как вычисляется вознаграждение, мы расскажем позже).
При этом ноды объединяются в группы (не более 16 тыся ч нод в группе), называемые кластерами. Обмен данными и сообщениями по большей части происходит внутри кластера, что позволяет равномернее распределять нагрузку по сети. Кластеры формируются на основе адресов владельцев нод и начинают разделяться, когда общее количество активных нод в каком-либо кластере подходит к выше указанному пределу.
Хотим также обратить внимание, что данный документ касается в основном 1-ой версии Artery Storage, про нововведения в обновлении мы будем рассказывать отдельно.
Также описание не включает ремарки по поводу контроля ошибок и всяческих проверок (на существование блока, его валидность, доступность сети и т.д.) — это технические детали, здесь же мы рассматриваем общие принципы функционирования системы.
Согласно выполняемому функционалу, ноды-участники сети можно разделить на 2 типа — хранящие (storage) и управляющие (control). Причем вне зависимости от выполняемой роли все они имеют несколько клонов — так, чтобы потеря одной и хранимых ей данных не приводила к выходу всей сети из строя. Для простоты изложения будем считать, что управляющие ноды как бы «выше рангом», чем хранящие.
Хранящие ноды занимаются долгосрочным хранением пользовательских данных и данных, необходимых для работы сети. Их можно разделить на два подтипа: «горячие» и «холодные». Основное различие состоит в том, что горячие ноды имеют внешний адрес и принимают входящие соединения и запросы от сети напрямую, а холодные работают в пассивном режиме — т.е. выходят в сеть, подключившись к другим нодам (не важно какого типа) и используя их сетевой адрес (система различает ноды по основному признаку — адресу владельца — SDK адресу в Artery Blockchain). Также холодные ноды никогда не могут получить повышение ранга и перейти в разряд управляющих.
Основная задача этих нод — хранить пользовательские данные и следить за их удалением в случае истечения срока хранения (привязан к тарифу пользователя в blockchain).
Начиная с выхода Storage Node версии 2, хранящие ноды также примут на себя бо́льшую часть нагрузки по поддержанию соединений с клиентами-мессенджерами и приему/передаче от них событий и сообщений, а также разделят пул хранимых блоков на 2 (вообще видов блоков больше, но об этом ниже): блоки файлов и блоки сообщений.
Управляющие ноды хранят информацию, необходимую для поиска блоков, следят за их временем жизни, отвечают за разделение сети на кластеры, помогают в адресации нод и хранении информации об их роли (новые ноды всегда начинают как хранящие). Также, начиная с версии 2, они начинают выступать в роли брокера событий записи сообщений и хранят специальные реестры находящихся онлайн мессенджеров (в рамках кластера). При этом каждый кластер имеет свою группу управляющих нод, количество которых поддерживается автоматически. Т.е. если одна из нод отсутствует более часа, либо их становится менее 5, одна из хранящих нод повышается рангом, И на нее начинают выгружаться данные по состоянию кластера. Если потерянная нода возвращается ранее чем через сутки, она синхронизирует данные, и роль сохраняется. Если прошло больше времени, нода понижается до хранящей как минимум на 1 неделю.
Такой механизм позволяет не хранить журнал изменений состояния данных более чем за сутки.
Также управляющая нода может быть понижена до хранящей, если у нее начинает заканчиваться место для хранения метаданных (здесь и далее это данные о кластере хранилища).
Аналогия управляющих нод — картотека книг в библиотеке. Хранящих — книжные шкафы и полки.
Внутри системы идет постоянное взаимодействие: подключение и отключение нод участников сети (пиров, peers), обмен блоками, передача событий. Чтобы принять в этих процессах участие, нужно войти в сеть и найти ее участников. Такой процесс называется поиск узлов, или peers discovery. С него всегда начинается инициализация ноды и выход в сеть.
Обмен внутри сети на данный момент происходит с использованием JSON RPC over HTTP. События передаются через веб сокеты. В недалеких планах стоит частичный переход на поддержку gRPC и Protobuf (к сожалению не все платформы их легко поддерживают) Для увеличения производительности и уменьшения задержек.
Все операции записи подтверждаются цифровой подписью автора запроса. В качестве алгоритма используется secp256. Ключи для подписи создаются на основе seed-фразы пользователя (владельца ноды или производящего запись / удаление данных) в Artery Blockchain.
Инициализация ноды
После запуска нода каким-либо образом получает адрес одной или нескольких управляющих нод, не важно какого кластера (может использоваться дефолтный адрес, зашитый в код, адрес из конфигурации, адрес, полученный от бекенда приложения оболочки или от ранее известной хранящей ноды). Передав управляющей ноде информацию о своем владельце, в ответ она получает список управляющих нод кластера, к которому относится. Следующим запросом происходит выяснение текущей роли ноды. Если она управляющая (значит перед потерей связи она такой и была и должна быть инициализирована соответствующим образом) — начинает синхронизацию хранилища и передачу событий в роли брокера. Если хранящая — то инициализирует хранилище блоков и рапортует управляющим, что она онлайн и готова к работе (в случае разрыва соединения, нода считается офлайн через 10 минут отсутствия). Если соединение с управляющей нодой потеряно — предпринимается попытка подключиться к другой ноде. В случае если ни одна из управляющих нод не отвечает, хранящая нода перестает принимать подключения до восстановления связи (т.к. ее данные могут быстро потерять актуальность).
После установления соединения хранящая нода запрашивает команды на удаление блоков, которые могли поступить за время её отсутствия в сети (пока нода оффлайн, управляющие ноды хранят эти команды в специальной очереди).
В свою очередь, для инициализации клиентского приложения требуется также войти в сеть и найти управляющую ноду того кластера, к которому относится аккаунт-владелец приложения.
Блоки данных
Блок данных — это минимальная единица хранения информации в рамках Artery Storage. В версии 1 размер блока был фиксированный и составлял 50 килобайт. С переходом на версию 2 эти ограничения были сняты, теперь блоки могут быть любого размера в пределах 1 МБ. Это позволит повысить плотность хранения данных (особо важно для сообщений мессенджера) с одной стороны и снизить накладные расходы на хранение больших файлов за счёт уменьшения размера индекса с другой.
Любой блок имеет заголовок, хранящий следующую информацию:
— метод шифрования, используемый в блоке;
Существуют блоки 4 типов:
— индексный блок (хранит информацию о загруженных данных конкретного пользователя, для поиска такого блока нет необходимость знать его хэш);
— блок данных хранилища;
— блок контактов чата;
— блок сообщения (имеет дополнительно временную метку, которая помогает упростить обработку таких блоков).
Методы шифрования могут реализовываться конкретными приложениями, использующими Storage, и помечаться ими в заголовке. При этом для разных задач и разными разработчиками могут использоваться разные методы (Artery Network использует Salsa20 и эллиптические кривые).
Начиная с версии 2 допускается хранение незашифрованных блоков, Что позволит в будущем реализовать возможность «делиться» файлами в публичный доступ, а также хранить общедоступные данные (аватарки для приложений, стикеры и т.п.) в Artery Storage.
Запись файлов
Т.к. изначально основным назначением Artery Storage было хранение пользовательских файлов, для их сборки из блоков и сохранения доступа даже в случае утери устройства, с которого они размещались, был разработан специальный «индексный» формат блоков. В которых хранится информация о том, какие файлы разбиты на какие блоки и в каких директориях они лежат (на текущий момент, вложенная структура папок не поддерживается).
В качестве формата был выбран JSON.
При этом для каждой папки хранится список файлов входящих в нее. А для каждого файла — на какие блоки он разбит (важен порядок записи блоков — файл собирается в той же последовательности, в которой разбирался)
Если приложению необходимо вывести список — оно читает этот блок из хранилища, дешифрует и использует для вывода или сборки файла. Если удалить — то отправляет запрос на удаление необходимых блоков, после чего удаляет данные из индекса и перезаписывает индексный блок.
О выполненных действиях (запись / удаление блоков) клиент оповещает управляющую ноду, которая записывает информацию об изменениях в метаданные кластера (и разумеется, передает остальным управляющим нодам. Данная синхронизация происходит всегда и в дальнейшем мы не будем акцентировать на этом внимание)
Запись блоков
Для записи клиент запрашивает у управляющей ноды группу адресов активных нод, готовых принять блок (можно запросить сразу ноды на 100 блоков). После чего отправляет им нужные блоки и сообщает об этом управляющей ноде (если эту информацию не передать — блоки будут удалены во время оптимизации (compacting) хранилища нодой). Также передается информация какие ноды не приняли блок (в дальнейшем это влияет на их вознаграждение)
При этом запись возможна в двух режимах — сильном и слабом. В слабом (weak) режиме 1 блок записывается на одну ноду. Дальнейшее его распространение происходит механизмом размножения. Занимает больше времени и может привести к потере данных. В сильном (strong) режиме блок сразу записывается на несколько нод (операция выполняется параллельно), что снижает нагрузку на сеть за счет отсутствия необходимости размножения блоков и повышает надежность, т.к. вероятность потери данных из-за выхода ноды из строя сразу после записи, сильно снижается. Слабый режим предназначен для заливки данных с устройств с малым количеством ресурсов или плохим интернет-соединением.
Удаление блоков
Из метаданных извлекается список нод хранящих блок (блоки) и каждой из них отправляется запрос на удаление данных. После чего информация об удалении передается на управляющую ноду (в случае если кто-то из хранящих офлайн, команда на удаление помещается в специальную очередь, о которой мы писали выше)
Изменение блоков
Изменение блоков не предполагается. Если файл в хранилище меняется — изменившиеся блоки удаляются и записываются клиентом заново. Это связано с тем, что изменения размеров хотябы одного блока файла, вызывает последовательное изменение всех остальных блоков. (Хотя конкретная реализация клиента может пересчитывать только один блок, на текущий момент предусмотрена только полная перезапись всего файла)
Размножение блоков
Изменения статуса хранящих нод (онлайн/оффлайн) соответствующие изменения в метаданных управляющих нод (напомним, они знают кто онлайн в пределах кластера). И если у какого-то блока из-за этого количество копий, становится меньше шести, начинается процесс его размножения (хотим обратить внимание — в приоритете соединения между управляющими нодами — если оно теряется, то размножение не происходит до восстановления связи и синхронизации метаданных). Для этого выбираются 4 случайные ноды из активных и им отправляется команда на размножение (она подтверждается подписью управляющей ноды). В случае получения такой команды, нода копирует блок на другую и рапортует об выполнении операции, для изменения метаданных.
Урезание блоков
Аналогично размножению, в случае если копий становится более 16–6 из них удаляются по запросу управляющей ноды.
Запись сообщений в чат (Storage 2)
Аналогична записи обычных блоков, с той лишь разницей, что данные учитываются отдельно и проверяется флаг циклической записи — если он установлен, то в случае окончания места самые старые блоки автоматически удаляются при попытке записи (запись сложнее т.к. производятся дополнительные проверки).
Также, в отличии от записи обычного блока, порождается события записи в чат. Которое доставляется подписавшимся на него приложениям (через функционал брокера событий управляющих нод)
Присутствие онлайн и опции мессенджера (Storage 2)
После подключения клиента к нодам (либо через пулинг, в случае проблем с его удержанием) в специальной области метаданных на управляющих нодах помечается, когда клиент последний раз был онлайн. Также в ту же область записывается флаг циклической записи. Если получатель события офлайн, управляющая нода не распространяет события записи сообщения чата для этого получателя, чтобы не засорять сеть.
Контроль доступных ресурсов
Управляющие ноды подключаются к нодам blockchain и следят за 4 событиями — оплата тарифа, оплата Storage, оплата VPN и окончание тарифа. Эти данные записываются в метаданные кластера и в дальнейшем используются в следующих случаях:
— запись блока — если тариф не оплачен или закончилось место — данные не обновляются и будут удалены при очистке пространства
— запрос нод для блока — если места недостаточно для размещения данных, запрос отклоняется
— проведение сжатия данных — блоки неактуальных аккаунтов удаляются с нод
Сжатие данных
Когда у хранящей ноды начинает заканчиваться место (по умолчанию — осталось менее 10% выделенного места), она начинает проводить очистку данных, проходящую в несколько этапов:
— первым делом удаляются данные пользователей с закончившимися тарифами. Для этого составляется список всех аккаунтов, хранящих блоки на данном устройстве. После чего по метаданным проверяется, у кого тариф закончился более 2 суток назад. Такие данные сразу удаляются. Если после этого места все еще недостаточно, запускается следующий этап
— очистка потерянных блоков и лишних копий — постепенно (чтобы не перегружать управляющие ноды) проверяется есть ли указанный блок в метаданных. Если его нет — блок удаляется. Если его копий более 10 — блок удаляется.
Хранение информации и статистики для Artery VPN
Одна из функций управляющих нод — хранение информации о времени нахождения онлайн нод-хранителей, управляющих нод и нод Artery VPN.
В первую очередь учитывается время онлайн (с квантованием в 10 минут). А также «баллы» за предоставление места для Artery Storage, А именно секунды онлайн × объем дискового пространства в ГБ. Данные суммируются постоянно, А для выплат используется их разница за недельный период. При этом значение уменьшается в случае наложения штрафов за неотдачу блока, несовпадение контрольной суммы и т.п.
VPN и построение маршрута
При выходе клиента в сеть VPN у управляющих нод запрашивается случайная, находящаяся онлайн, горячая нода VPN. После чего клиент устанавливает с ней соединение, указывая какой длины цепочку он запрашивает (не более 6 нод). Соединение шифруется с использованием ECDH и Salsa20. Нода выбирает следующую (холодную или горячую) и перекидывает соединение на нее, уменьшая счетчик цепочки на 1. И так пока не будет достигнут конец цепочки (последняя нода всегда горячая). В конце трафик пользователя выпускается во внешнюю сеть. При этом с точки зрения сетевого протокола инкапсулируемого внутри шифрованного канала — это 1 скачок (изменение ttl на 1) от входящего устройства до исходящей точки (хотя по факту канал совершает несколько скачков). Раз в интервал от 30 до 120 секунд начальная точка рвет соединение и перестраивает цепочку заново (инициатором также может выступать само устройство, сменив ноду для входа в сеть).
При этом входящая точка учитывает объем полученного трафика и передает его на управляющие ноды (она единственная кто знает SDK адрес Artery Blockchain отправителя данных).
Выплаты за Storage / VPN
Раз в неделю компания выгружает информацию о накопленных баллах и времени, проведенном онлайн VPN-нодами, и загружает эту информацию в блокчейн для проведения выплат. Т.е. выступает третьим лицом в процессе учета, гарантирующем корректность данных (если позволить любому записывать такие данные в сеть, то их ценность теряется). Но в планах стоит доработка Artery Blockchain введением специальной multisig транзакции — транзакции которая может быть подписана целой группой участников. В таком случае, предполагается отправка этой транзакции управляющими нодами в рамках одного кластера (несколько нод подписывают транзакцию с информацией о статистике по части участников и отправляют ее в blockchain). В определенный момент времени вся эта информация обрабатывается и происходит выплата.
Под прищуром: блокчейн-фантазия Artery
Знакомые уговорили вложиться в «Артери», а теперь пишут, что компания перестала платить. Как думаете, есть шанс вернуть деньги?
Алексей, боюсь, что порадовать вас нечем. Если такой проект перестал выплачивать клиентам «доход», думаю, что шансов получить обратно свои деньги очень мало.
Можно потерять еще больше — если, например, заплатить «юристам», которые обещают вызволить вложенные деньги. Как правило, они следят за проблемами у компаний вроде «Артери», находят жертв в соцсетях и пытаются сыграть на их несчастье. О таких «юристах» мы уже писали: в договоре они прописывают не возврат вложений, а консультационные услуги, поэтому заплаченные им деньги тоже пропадут.
Что касается самой «Артери», я бы не надеялся на добрую волю основателей компании. Боюсь, будет сложно доказать даже тот факт, что вы им что-то заплатили. На этом остановлюсь чуть подробнее.
«Артери» в «Пирамидометре Т—Ж»
Для начала я проверил компанию в «Пирамидометре Т—Ж» — сервисе, который ищет признаки финансовых пирамид. Сервис оценивает компанию по формальным критериям и не учитывает все тонкости предложения, поэтому плохой результат проверки еще не гарантирует, что компания — пирамида. Но чем хуже результат, тем выше риск потерять деньги. В отношении «Артери» подозрения сервиса зашкаливают.
Криптовалюты
Работающий сайт «Артери» найти непросто: их постоянно блокируют, а проект открывает все новые. На момент написания статьи в черном списке Центробанка уже 17 адресов.
Мне не удалось до конца разобраться, чем именно занимается компания. Речь идет о криптовалютах — валидации и выпуске неких монет ARTR, но непонятно, как работает система и откуда берется прибыль.
Термины на сайте используют не всегда к месту, и у меня возникло ощущение, что создатели скорее хотят запутать меня, чем объяснить суть. Кроме того, с первой страницы сайта речь идет о многоуровневой реферальной программе, на основе которой легко построить сетевую пирамиду. Если это так, в какой-то момент денег на выплаты вкладчикам не останется.
Похоже, что монета ARTR действительно существует: ее курс, во всяком случае, отслеживается на авторитетных ресурсах. Но он практически не меняется с июля 2021 года. Предположу, что желающих совершать сделки с этим активом у трейдеров нет. Если клиенты и получают какую-то прибыль, это происходит не за счет роста котировок этой монеты.
Кроме того, как часто бывает в похожих проектах, ввод и вывод денег возможны только с помощью криптовалют, а такие переводы анонимны. Будет сложно доказать, что клиент вообще что-то вкладывал.
Непонятно, с кого требовать деньги
Даже если у «Артери» найдутся средства на выплаты клиентам и она захочет вернуть деньги, непонятно, с кого их спрашивать. Проект работает на русском языке, для русскоговорящих клиентов, но юрлица в России я не нашел.
На своем сайте «Артери» пишет, что компания зарегистрирована на Сейшелах. Я попытался найти ее в сейшельском бизнес-реестре по названиям Artery Network Corporation и Artery, а также по регистрационному номеру, указанному на сайте, но потерпел неудачу. Впрочем, регистрация за границей в любом случае выглядит рискованно: судиться придется в зарубежной юрисдикции и расходы на перелеты и юристов могут сделать это невыгодным.
Президентом «Артери» называет себя в инстаграме Марк Богатыренко. Но официальной связи с проектом я не нашел: в документах на сайте этот человек не фигурирует. В России у него нашлось только ИП, которое было ликвидировано в июне 2020 года.
Если верить информации в интернете, Богатыренко отметился как лидер нескольких проектов, на которых клиенты потеряли деньги. Это, в частности, OneTheTop, клиенты которого якобы могли за копейки раскрутить инстаграм и начать зарабатывать, и SpaceBot — криптокошелек для совместного PoS-майнинга монеты Prizm.
На первый взгляд кажется, что возврат денег возможен только по доброй воле Марка Богатыренко, а мне трудно поверить в добрую волю человека с такой репутацией.
Не видно оснований требовать деньги обратно
В пользовательском соглашении написано, что «Артери» — это не инвесткомпания и вообще не коммерческий проект. Согласно этому документу, клиентам никто ничего не обещает. Любые убытки, в том числе из-за прекращения работы проекта, — проблемы самих клиентов.
Все, кто вложил деньги в проект, согласились с тем, что отдали их под честное слово.
Что в итоге
Алексей, мне кажется, единственный для вас способ повлиять на ситуацию — написать заявление в полицию на гражданина Богатыренко. И в будущем держаться от подобных проектов подальше.
Что же до других участников проекта — я думаю, большинство понимает, под чем они подписываются. Но не все — и часть теряет последние сбережения. В Т—Ж открыта дискуссия, этично ли участвовать в подобном, — приходите высказаться.
Мнение редакции может не совпадать с мнением автора.
Если сталкивались с подозрительными предложениями, пишите. Прищуримся.
Граждане, внимание! В комментариях орудует ОПГ дизлайкеров. Мы прикладываем максимум усилий для их поимки, а вас просим быть осторожнее.
Да, уж.. Прочитал данную статью и комментарии. Тут сразу видна несостыковка. Кто такой Сергей Габов? И почему именно Сергею задают такой слишком странный вопрос: «Знакомые уговорили вложиться в «Артери», а теперь пишут, что компания перестала платить. Как думаете, есть шанс вернуть деньги?»
Ну тут уже предыдущие люди сказали все за меня, но я все же добавлю! И отвечу на вопрос «Вымышленного персонажа Алексея», который задал его Сергею Гобову )
Резюмирую: Статья как и многие заметили Ни о Чем. Даже с частью «очередное подгаживание» от Анонима. А почему от Анонима разберитесь сами. Я ни одного упоминания не нашел об Сергее Гобове и кто это такой. Делайте Выводы прежде чем читать бред.
Виктор, навел ты меня на мысль проверить кто же это такой Сергей Габов. Пока это только анонимный персонаж, у которого одна заброшенная в январе 2020 соц. сеть Facebook. А так вот что удалось найти об этом персонаже именующем себя как частный Инвестор.
Маркетинговый солдат и скромный изобретатель, Израиль-Казахстан, Тель-Авив-Алма-Ата.
Конструктор по продвижению медицинских клиник, разработка маркетинговых стратегий, ведение проектов. Первый старт в маркетинге – обучение в колледже «Сингаловски» (Тель-Авив, Израиль).
Большой творческий опыт (в прошлом работа стилистом, разработка и постановка шоу, преподавание стилистики на базе ведущих школ за рубежом) дает толчок для креативных решений в маркетинге. Опыт специалиста в области IT — системность и логику мышления и доводов. Высшее медицинское образование — формирует философское отношение к жизни. Аналитическая работа — соавтор монографии «Пищевая и лекарственная безопасность Казахстана».
Вопросы есть? ))) У меня нет и не было. И таких знаешь сколько диванных экспертов? ))
Михаил, Видимо автор статьи разработчик Шоу, а не инвестор 🤣
Ольга, Поддерживаю! Я тут с Апреля и с февраля слышу Скам, Развод, а караван идет. Пусть полают
Roman, Вы как грамотный человек, объясните пожалуйста. Что такое скам? И каким образом Blockchain может быть скамом. Благодарю за обратную связь, если будет она.
Roman, что такое Blockchain? Если Вы грамотный специалист, то Вы должны быть уверены в своих высказываниях. Верно? Значит Вы пытались развернуть Node, и у Вас не получилось? Хочется увидеть не просто слова, а действия, которые Вы предприняли, чтобы не быть пустословным. А про выражение scam биржы, я наверное просто промолчу.
Roman, вот очень интересно за что вы радеете? Вам несколько человек объясняют апеллируя фактами. А вы с каждым в дискуссию вступаете. И упорно свои мысли из головы доказать пытаетесь. Судя по всему, вы купленный персонаж. Если не секрет сколько вам заплатили.
Сразу видно человек даже сам не углублялся в понимание этого стратапа и в целом не понимает, что такое сфера кибербезоспасности в наши дни. Люди же не дураки. Они сами выбирают какие цифровые активы покупать и никто им за это не обязан ничего выплачивать. Вы о чем автор? Вы если покупаете акции кока колы, вы потом идёте разве к ним с требованием их продать? Нет. Люди сами управляют своими активами. Сами знают как покупать и что, как, где, кому продавать. Статья поверхностная. Ни о чем так сказать.
Виктория, конечно, каждый человек выбирает сам, куда вложить свои средства.








