Если вы интересуетесь миром криптовалют, то знаете, что главная нерешённая проблема биткоина и Эфириума – масштабируемость. Сообщество разработчиков биткоина попыталось преодолеть преграду ограниченной масштабируемости, выпустив обновление Segwit. Однако разработчики Эфириума пытаются разрешить эту проблему по-другому. Один из многих подготавливаемых протоколов – так называемый «шардинг» [sharding]. Он будет активирован при переходе в следующую фазу развития сети. Прежде чем говорить о шардинге, давайте сформируем чёткое понимание принципов работы системы сетей и узлов.
Ноды, сети и их параметры
Давайте попытаемся разобраться в принципах работы сети Эфириума, прибегнув к простой аналогии.
Представьте себе коробку:
В коробку заносится какой-то объект. Внутри с ним совершаются разного рода манипуляции, после чего объект вынимают. Эта коробка – аналог ноды (или узла) сети.
Сеть – это вся совокупность соединённых между собой нод.
Параметры – это правила функционирования сети.
Другой пример: шредер для бумаги.
Теперь рассмотрим принцип работы простейшего измельчителя бумаги:
Перед нами сеть из трёх узлов – бумага, шредер и обрезки бумаги. До сих пор мы предполагали, что у ноды может быть лишь один входной канал. Однако это не так.
Пример устройства с несколькими входными каналами: тостер
Кухонный тостер имеет два входа:
- Электричество
- Хлеб
Схема работы тостера:
Обратите внимание: чтобы достигнуть ожидаемого результата (зажарить хлеб), тостеру необходимы оба ресурса.
Пример: телевизор
Усложним систему. Представим сложную сеть, использующую параметры. Пусть она состоит из телевизора с подключённой к нему аналоговой антенной. Представим также, что к нему подсоединены и PS4, и Xbox.
Схема такой сети:
Тут возникает проблема.
Доступ к одному из верхних узлов сети возможен только через телевизор. Было бы странным смотреть «Игру Престолов» и играть в FIFA18 одновременно. Здесь нам пригодятся параметры. Именно они делают каждый узел уникальным. Записываем в телевизор значения для каждого из допустимых каналов. Он будет работать со следующими условиями:
- При нажатии на кнопку «0», включается обычное аналоговое ТВ
- При нажатии на кнопку «1», подключается PS4
- При нажатии на кнопку «2», подключается Xbox
Теперь каждый узел сети уникален. Подумаем, какие ещё параметры указать, чтобы более точно охарактеризовать наше устройство:
- Диагональ экрана. Скажем, 55 дюймов.
- Цвет корпуса. Например, серебристый.
- Бренд. Sony TV.
- Тип монитора. Плазменный экран.
Параметры помогли нам описать телевизор, превратив его из абстрактного во вполне конкретный плазменный серебристый SonyTV с диагональю в 55 дюймов.
Итак, повторим:
- Узлы (ноды) – отдельные компоненты сети. Принимают входной сигнал, совершают над ним манипуляции и подают на выход.
- Сеть – совокупность соединённых между собой узлов.
- Параметры – правила, определяющие свойства каждого узла.
Телекоммуникационные узлы и сети
Вся телекоммуникационная система построена на сетях и узлах. Интернет, голосовые звонки, SMS – всё это работает благодаря аккуратно выстроенной системе нод и сетей.
Зачем нам подобная сеть?
У нас есть техническая возможность устанавливать связи между абонентами по принципу peer-to-peer. Однако такое решение обойдётся очень дорого и будет невероятно громоздким. Вдобавок оно будет неэффективным, ведь большая часть мощностей большую часть времени не будет загружена.
Мы пользуемся телекоммуникационной сетью для достижения этой эффективности. Попробуем дать определение узлу в этом контексте.
Узел – это точка перераспределения или конечная точка (приёмник сигнала).
Пример. GSM-сеть.
Предположим, что Оксана хочет отправить Андрею SMS-сообщение. В таком случае происходит следующее:
- Шаг 1: Оксана вводит текст сообщения и нажимает кнопку «Отправить». Сообщение посылается на базовую станцию (БС). Таких станций вокруг вас десятки. Роль БС – подключить вас к сети. Они схожи с официантами в ресторане. Вы поднимаете руку (т.е. отправляете SMS), привлекая их внимание.
- Шаг 2: Контроллер базовых станций (КБС) удостоверяется в том, что все БС исправны, и в сети отсутствуют неполадки. Пользуясь аналогией с рестораном, КБС – менеджер заведения.
- Шаг 3: Далее SMS пересылается с БС на мобильный центр коммутации (МЦК). Роль последнего – удостовериться, что данные пересылаются правильно и без задержек. В ресторане МЦК был бы шеф-поваром, принимающим заказы и распределяющим их между поварами. Он также вносит в некоторые блюда завершающие штрихи перед подачей.
- Шаг 4: Теперь сообщение оказывается в SMS-центре (SMSC). Это как раз один из поваров. Информация хранится здесь до получения дополнительной информации об Андрее. Он получает эту информацию из источников наподобие реестра собственных абонентов (РСА) и реестра абонентов в роуминге (РАР). В этих двух базах содержатся все данные о сети. Они позволяют отследить отправителя и получателя, а также удостовериться в факте получения сообщения. Они проверяют, включен ли телефон Андрея и находится ли он в пределах зоны доступа. В случае невозможности принятия SMS, оно хранится в здесь в течение 6 часов, после чего удаляется.
- Шаг 5: Если Андрей доступен, SMSC передаёт сообщение обслуживающему его МЦК.
- Шаг 6: SMS пересылается на контроллер базовых станций.
- Шаг 7: КБС отправляет послание на базовую станцию
- Шаг 8: Андрей получает SMS от своей базовой станции.
Схема сети передачи SMS-сообщений:
P2P-сеть
Традиционные сети строятся по модели «клиент-сервер». Как они работают?
В сети присутствует центральный сервер. Все желающие подключиться устройства могут послать ему запрос и получить желаемую информацию. В принципе, также работает и интернет. Если вы хотите найти что-то в Google, вы посылаете запрос на сервер компании. В свою очередь, тот возвращает вам результат. Это и есть система «клиент-сервер». Что же с ней не так?
Во-первых, необходима непрерывная работа сервера, иначе вся система перестанет функционировать. Во-вторых, зачастую сервер обрабатывает большой объём конфиденциальных данных о клиентах в силу централизованного характера сети. Это увеличивает вероятность взлома и делает его куда более опасным. В-третьих, возникает проблема цензурирования. Владелец сервера имеет власть над всем контентом и может навязывать всем участникам свои ограничения.
Для борьбы с этими недостатками была разработана новая модель построения сетей. Такая сеть распределяет нагрузку между всеми её участниками [peers], и все они равноправны. В ней исчезает потребность в центральном сервере. Это и есть сеть peer-to-peer.
Изображение с InfoZones
Зачем людям peer-to-peer сети?
Обмен файлами через торренты оказался самым популярным применением подобной сетевой архитектуры. Скорость загрузки файлов с единственного сервера, как правило, невелика и полностью зависит от его параметров.
В системе же peer-to-peer загрузка не прерывается в случае отключения одного из компьютеров-участников. К тому же, подобная сеть не подвержена цензуре центрального контролирующего органа.
Изображение с Quora
Децентрализованный характер P2P-сети позволил совершить настоящую революцию в системе электронных платежей, став основой криптовалют.
Сети и узлы в криптовалютах
Рассмотрим структуру сети Эфириума. Это peer-to-peer сеть, и её участники (другими словами, узлы) не имеют специальных привилегий. Идея платформы в том, чтобы все пользователи были равноправны.
В такой сети отсутствует иерархия. Выражаясь математическим языком, она обладает свойством плоской топологии. Хотя узлы и не пользуются специальными привилегиями, их функции могут различаться.
Все децентрализованные криптовалюты (в том числе BTC и ETH) построены по этому принципу, что продиктовано философией их создателей. Идея последних заключается в том, чтобы создать сеть без центрального органа управления, оказывавшего бы субъективное влияние на ценность валюты.
Каким же образом участники сети могут получать подтверждение того, что транзакции в ней действительно произошли? Здесь можно провести аналогию с тем, как распространяются сплетни. Предположим, что Илья отправил Даше 3 ETH. Ближайшие к нему узлы зафиксируют эту операцию и оповестят об этом своих соседей. Те же, в свою очередь, передадут этот факт еще дальше. В конце концов всё сообщество будет знать об этом.
В сети Эфириума узел – это компьютер, участвующий в работе сети. Он может выполнять три функции, играя одну из трёх ролей:
- Легкий клиент, котоый хранит только часть копии блокчейна
- Полный узел, хранящий полную копию блокчейна
- Майнер, который подтверждает транзакции в сети
Давайте рассмотрим каждый пункт подробнее.
Легкий клиент
Некоторые люди не имеют ресурсов или желания для загрузки полной версии блокчейна. Для них есть специальная альтернатива – стать легким клиентом. Взяв на себя эти обязательства, они получают возможность участвовать в жизни сети, подтверждая совершение транзакций.
Полный узел
Полные узлы – основа системы, и на них ложится большая часть работы. В их памяти хранится полная версия блокчейна. Полный узел – это компьютер, полноценно участвующий в исполнении всех правил консенсуса Эфириума, такие как:
- За «нахождение» одного блока выдаётся вознаграждение в 5 ETH;
- Правильно проставлены подписи транзакций;
- Транзакции и блоки записаны в корректном формате;
- Исключены случаи повторного платежа одними и теми же монетами (double spending).
Полные узлы не только подтверждают транзакции, но и передают всю информацию остальным узлам.
Майнеры
Все майнеры являются полными узлами, но не все полные узлы выполняют функцию майнеров. Майнеру необходимо держать в памяти полную версию блокчейна для выполнения своей функции.
Проблема масштабируемости Эфириума
Каким образом в Эфириуме достигается консенсус? Каждый узел в сети производит одно и то же вычисление. Консенсус достигается, когда большинство узлов приходит к согласию относительно какой-либо операции. На заре жизненного цикла платформы проблем не возникало, однако Эфириум становится все более популярным. Взгляните на этот график, описывающий количество ежедневных Ethereum-транзакций:
Изображение с Etherscan
Само по себе это не плохо, однако вместе с ростом числа операций экспоненциально увеличивается число вычислений, необходимых для достижения консенсуса. Более того, Эфириум обязан своей популярностью крупным корпорациям и буму ICO. В результате экспоненциальному росту подверглось и количество узлов сети. Ethereum на данный момент имеет наибольшее число узлов среди всех блокчейнов, что делает его наиболее децентрализованным.
В мае 2017 года в Эфириуме было 25,000 узлов, а в блокчейне биткоина всего 7,000. А с апреля по май их число возросло на 81%.
Количество узлов в сети обратно пропорционально времени, необходимому на подтверждение транзакции. Консенсус достигается линейно. Предположим, что в сети 3 ноды – А, В и С. Сперва узел А проводит вычисления, подтверждая транзакцию. Далее то же самое делает компьютер В, и, наконец, С.
В случае прибавления участника D возрастёт и затрачиваемое время.
Средняя пропускная способность Эфириума – 20 транзакций в секунду. Сравните это с цифрами 193 для PayPal и 1667 для Visa!
Стоит отметить, что разработчики Эфириума считают платформу чем-то большим, чем механизмом распространения эфира (соответствующей криптовалюты). Их цель заключается в том, чтобы люди создавали децентрализованные блокчейн-приложения [DApps] на уровне Facebook и YouTube. Однако для её достижения жизненно важно разрешить проблему масштабируемости сети.
Для этого были предложены три решения:
- Увеличение размера блока
- Использование различных альткоинов
- Шардинг
Увеличение размера блока
Подобное решение улучшит работу сети, позволив участникам помещать большее число транзакций в один блок. Однако оно вызовет и ряд проблем:
- Простое увеличение блока не ускорит процесс достижения консенсуса между узлами. Напротив, рост числа транзакций в блоке приведёт к росту необходимых вычислений.
- Встав на этот путь, разработчики будут вынуждены и впредь периодически повышать размер блока. Обычные компьютеры не смогут загружать столь массивный блокчейн, что приведёт к большей централизации системы.
- Такое обновление возможно лишь посредством хардфорка. Один из хардфорков Эфириума повлёк за собой разделение валюты и появление Ethereum Classic. Это разделяет сообщество и подвергает риску всю экосистему платформы.
Использование разных альткоинов
Суть этой идеи в том, чтобы использовать несколько параллельных блокчейнов вместо одного главного. Предположим, что на базе Эфириума построено 50 децентрализованных приложений. Почему бы не создать 2 блокчейна и не распределить их между ними? К сожалению, данная идея тоже имеет недостатки:
- Деление хэшрейта блокчейна нежелательно, ведь от него зависит степень защищённости системы от хакеров и её скорость.
- Злонамеренным майнерам будет проще завладеть 51% сети и диктовать свои условия.
Шардинг
Ethereum-сообщество сошлось на шардинге как на компромиссном решении.
Представим сеть из нод А, В и С, которые должны верифицировать данные Т. Однако А, В и С не будут самостоятельно подтверждать весь объем информации Т, а разобьют его на 3 части – Т1, Т2 и Т3 (это и есть шарды). После этого А, В и С проведут работу с каждым шардом независимо. Таким образом, количество необходимого времени уменьшается экспоненциально.
Более подробно о шардинге читайте в нашей следующей статье.