Разбор "традиционных" технологий в системе AERGO (перевод разделов Technical WP с примечаниями). ЧАСТЬ 1.

in #aergo6 years ago (edited)

Автор не является техническим экспертом. Данный перевод сделан с целью разобраться в описанных в Technical WP технологиях.


DISTRIBUTED DIRECTORY – РАСПРЕДЕЛЕННЫЙ КАТАЛОГ (ДИРЕКТОРИЯ/ПАПКА)

Распределенный каталог (DD) – одна из основных функциональных возможностей, которая служит одним из базовых элементов при реализации системы AERGO.
Предлагается, что каждый DD в репозитории (repository) будет управлять независимым, изолированным пространством имен (namespace – некоторое множество, под которым подразумевается модель, абстрактное хранилище или окружение, созданное для логической группировки уникальных идентификаторов (то есть имен)). Каждое пространство имен содержит информацию про различные ветки (branches) и метки (tags) находящиеся в репозитории, а также валидность (законность/действительность) различных идентификаторов в блокчейне.
Предлагается, что каждый DD будет блокчейном сам по себе, с собственным начальным (genesis) блоком и последним валидным (best) блоком. В отличии от традиционных блоков, DD блоки ограниченны в размере с относительно длительным интервалом между их созданием; так как DD используются для управления метаданными (информация о другой информации) – они должны быть компактными.
По своей роли и функциональности DD можно сравнить с словарем данных (data dictionaries – центральное хранилище информации о данных, такой как значение, взаимосвязи с другими данными, их источник, применение и формат) в базах данных, например Zookeeper в Hadoop или etcd в CoreOS.

а) Tree of Life (ToL) – Древо Жизни
Предлагается, что пространство имен ToL будет хранить информацию про все ветки в репозитории, а также начальные и корневые (root) блоки. Информацией про метки также содержится в пространстве имен ToL. В связи с тем, что метка HEAD постоянно отслеживает последние блоки в каждой ветки - пространство имен ToL также содержит информацию про последние валидные блоки каждой ветки.

б) Distributed Directory Service (DDS) – Распределенная Служба Каталогов
(Служба каталогов в контексте компьютерных сетей – программный комплекс, позволяющий администратору работать с упорядоченным по ряду признаков массивом информации о сетевых ресурсах, хранящимся в едином месте, что обеспечивает централизованное управление как самими ресурсами, так и информацией о них, а также позволяющий контролировать их использование третьими лицами).
Предлагается, что пространство имен DDS будет хранить вводные данные различных объектов в блокчейне, их публичные ключи и их валидность, а также соответствующие роли и разрешения. Пространство имен DDS является основой для системы контроля и управления доступом (access control) для репозиториев AERGO.
Каждый объект может представлять собой либо клиента-агента (actor, действующий субъект) или серверный сертификат. Для серверного сертификата пространство имен DDS служит одновременно Списком аннулирования сертификатов (Certificate Revocation List, список цифровых сертификатов которые были отозваны органом выдачи сертификатов до истечения их запланированной даты истечения срока действия) и DNS (Domain Name Server, распределенная система для получения информации о доменах) с информацией о маршрутизации (routing).
AERGOFS (распределенная файловая система, компонент платформы AERGO) зависит от DDS, так как DDS следит за объёмами данных в каждом объекте в AERGOFS. В свою очередь AERGOFS может использоваться для хранения блоков и индексов для различных веток репозитория.
Пространство имен DDS также формирует базу для идентификации узлов (nodes) для их участия в основном протоколе консенсуса.

DISTRIBUTED VERSION CONTROL – РАСПРЕДЕЛЕННАЯ СИСТЕМА УПРАВЛЕНИЯ ВЕРСИЯМИ

(Система управления версиями – программное обеспечение для работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.)

В отличие от традиционных блокчейнов, AERGO рассматривает форки (ветвление) цепи и реорганизацию блоков, как свои основные особенности, а не как досадные побочные эффекты. Посредством заимствования git-подобных моделей данных и структур команд (Git – распределенная система управления версиями. Проект был создан Линусом Торвальдсоном для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года.) AERGO стремится к тому, чтобы коллективная работа над данными была такая же простая, как коллективная работа над исходным кодом.

REPOSITORIES – РЕПОЗИТОРИИ

(Репозиторий, хранилище – место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети. Репозитории используются в системах управления версиями, в них хранятся все документы вместе с историей их изменения и другой служебной информацией.)

AERGO поддерживает создание публичных и приватных репозиториев. Каждый репозиторий может иметь или не иметь название. Репозиторий с названием имеет соответствующий публичный идентификатор в распределенном каталоге (DD) Публичной Сети AERGO. У репозитория без названия нет такой связи.
Подобно Git репозиторию, репозиторий AERGO должен быть открытым для чтения и записи данных, или выборочно предоставлять разрешения анонимным пользователям. Общая идея – создать публичный репозиторий AERGO с анонимным доступом "только для чтения".
Приватный репозиторий – репозиторий AERGO с применением системы контроля и управления доступом, как для чтения так и для записи. Оба, и публичный и приватный репозитории, являются приватными блокчейнами, в том плане, что они работают независимо от Публичной сети AERGO. В результате этого утилити токен AERGO не имеет применения в публичных или приватных репозиториях.

BRANCHES – ВЕТКИ

В рамках каждого репозитория могут быть созданы ветки, которые указывают на разное состояние (snapshot) блокчейна. Фактически концепт "основная цепь" в AERGO, это аналог мастер-ветки в GiT.

SYNTAX AND SEMANTICS - СИНТАКСИС И СЕМАНТИКА

(Синтаксис языка программирования — набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой (документом) или её фрагментом. Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.)

AERGO стремится предоставить понятный синтаксис и семантику для пользователей, которые привыкли к распределенным системам управления версиями, таким как Git. Такой функционал доступен через AERGO CLI (command line interface, командная строка) клиент или через RPC APIs (Remote procedure call, удаленный вызов процедур – класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удаленных компьютерах)).

BRANCHING AND MERGING - ВЕТВЛЕНИЕ И СЛИЯНИЕ

Одним из наиболее сложных концептов в распределенных системах управления версиями является процесс слияния веток. Для блокчйнов, с их постоянным функционированием в реальном времени, слияние является сложнейшей задачей. Ветвление же, в связи с тем, что это не разрушительный процесс, является достаточно тривиальной задачей.
Однако слияние требует двух разных подходов.

Automatic Merging - Автоматическое слияние.
По умолчанию, Автоматическое слияние это очевидный процесс для слияния двух веток. Автоматическое слияние похоже на процесс реорганизации блоков в блокчейне. В этом случае блоки из цепи, которая присоединяется, разбиваются на транзакции и включаются в пул транзакций цепи с которой происходит слияние. По итогу этот пул транзакций превращается в новый блок, который присоединяется к последнему валидному блоку цепи, с которой идет слияние. В процессе, транзакции несовместимые с цепью, с которой происходит слияние, – автоматически исключаются из блока.

Consistent Merging - Согласованное слияние.
Согласованное слияние происходит только тогда, когда ветка изначально создается с определенной логикой согласования слияния. Согласованное слияние подобно функции слияния в распределенных системах управления версиями типа Git. В отличие от Автоматического слияния, где несовместимые транзакции исключаются по умолчанию – Согласованное слияние основывается на предусмотренной логике разрешения коллизий с несовместимыми транзакциями. Логика разрешения коллизий осуществляется смарт контрактом на системном уровне.

SCALABILITY – МАСШТАБИРУЕМОСТЬ

AERGO применяет три разных подхода для решения проблемы масштабируемсоти.

  • Разделение на основе доменов
  • Горизонтальное масштабирование
  • Вертикальное масштабирование

DOMAIN-BASED PARTITIONING - РАЗДЕЛЕНИЕ НА ОСНОВЕ ДОМЕНОВ
Разделение на основе доменов это самая базовая стратегия масштабируемости применяемая AERGO. Разделение на основе доменов достигается с помощью функционала распределенной системы управления версиями.
В отличие от традиционных реализаций блокчейнов, AERGO может свободно разделять и соединять данные в ветках. В результате распределенный реестр может разделяться логически и физически через разные репозитории.
Такой подход успешно применяется в распределенных системах управления версиями, такими как GiT и Mercurial. Например, такой гигантский сервис как GitHub может хостить десятки миллионов репозиториев.
Однако, эффективность разделения на основе доменов зависит от структуры и способа использования данных. Когда репозиторию требуется обрабатывать безразмерный массив данных – разделение данных через ветвление может быть очень трудоемким. В связи с этим, для обработки огромных массивом данных, AERGO применяет еще два подхода к решению масштабируемости для одиночных репозиториев.

SCALE UOT - ГОРИЗОНТАЛЬНОЕ МАСШТАБИРОВАНИЕ
Стратегия горизонтального масштабирования AERGO зависит от функционала, который предоставляет AERGOFS. AERGOFS осуществляет две роли в достижении масштабируемости:

  1. AERGOFS может служить как уровень хранения данных для блоков и индексов узлов. Способ, которым узлы AERGO используют AERGOFS – похож на способ, которым используется HDFS (HDFS - файловая система, предназначенная для хранения файлов больших размеров, поблочно распределённых между узлами вычислительного кластера) в HBase. В AERGOFS узлы могут хранить бесконечное количество блоков и индексов и функционировать как гигантские убер-узлы.
  2. AERGOFS может служить как хранилище объектов подобно S3 (Amazon Simple Storage Service (Amazon S3) — онлайновая веб-служба, предлагаемая Amazon Web Services, предоставляющая возможность для хранения и получения любого объёма данных, в любое время из любой точки сети, так называемый файловый хостинг). В такой конфигурации AERGOFS предоставляет постоянный и надежный доступ к бинарной информации. В этом случае смарт контракты АЄРГО должны сохранять ссылки на файлы хранящиеся в AERGOFS.

SCALE UP - ВЕРТИКАЛЬНОЕ МАСШТАБИРОВАНИЕ
Наиболее прямой и простой способ, который применяется AERGOFS для масштабирования – через оптимизацию узла.
В то время как горизонтальное масштабирование отлично работает для больших объёмов данных, ему все же не удается соответствовать реалистичным критериям. С распространением дешевой оперативной памяти, быстрых хранилищ данных, таких как SSD, и ограниченной пропускной способностью сети, оптимизация отдельных узлов может быть очень эффективной для функционирования повседневных систем. Компания Blocko отлично выучила этот урок в ходе внедрения блокчейн технологий в бизнес сектор. В этом плане AERGO стремится перенять идеи и приемы, которые применяли Blocko в своем продукте Coinstack.
С целью сделать каждый узел максимально эффективным AERGO обеспечит каждый узел стеком протоколов ( networking stack — это иерархически организованный набор сетевых протоколов, достаточный для организации взаимодействия узлов в сети. Протоколы работают в сети одновременно, значит работа протоколов должна быть организована так, чтобы не возникало конфликтов или незавершённых операций) и оптимизированной подсистемой хранения (storage engine — компонент системы управления базой данных, управляющий механизмами хранения баз данных, или библиотека, подключаемая к программам и дающая им функции СУБД) для усовершенствованного ввода/вывода.

  • Стек протоколов AERGO обеспечивает выдающуюся, высоко параллельную сетевую структуру, которая может обрабатывать большое количество узлов со сложной топологией, как на аппаратном уровне, так и на уровне облачных технологий.
  • AERGOFS является базой для высокоэффективной подсистемы хранения необходимой для AERGO.
  • Узлы AERGO используют многопоточную архитектуру, это дает преимущество в возможности использования многоядерных систем.

Сайт проекта aergo.io

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.030
BTC 63713.30
ETH 3389.19
USDT 1.00
SBD 2.62