Блокчейн технология NEM.
Новые возможности.
1 Введение
История блокчейн технологии начинается с появления криптовалюты Bitcoin (в 2008 году), в которой механизм финансовых транзакций управляется и поддерживается с помощью публичной сети, где транзакции прозрачны, и любой человек может проконтролировать все их цепочки, но в то же время никто не может ограничить или подделать их. Такая технология работы с записями в реестре известна сегодня как блокчейн технология. Хотя первое свое практическое применение блокчейн технология нашла в криптовалюте Bitcoin, в финансовой сфере, эту мощную технологию можно с успехом использовать и во множестве других областей человеческой деятельности.
Позднее, блокчейн технология трансформировалась в решения различных блокчейн платформ, которые стали следующей ступенью развития после создания криптовалюты Bitcoin. Создаваемые на их основе продукты стали называть криптовалютами следующего поколения, криптосистемами, криптоплатформами. Блокчейн платформа NEM является одной из таких технологий, которые, взяв за основу концепцию оригинальной блокчейн технологий Bitcoin и Nxt, в значительной степени изменили и улучшили их.
Блокчейн технология NEM возникла из необходимости преодолеть некоторые из недостатков имеющихся в тот период времени блокчейн технологий. Разработка NEM начиналась с заимствований из блокчейн технологий Bitcoin и Nxt, но в итоге NEM был разработан с нуля и была создана совершенно новая блокчейн технология - более эффективная, более простая, легко расширяемая, и, прежде всего, легко интегрируемая во внешние приложения благодаря стандартным API и принятым архитектурным решениям.
С появлением новых технологий, таких как блокчейн технология NEM, блокчейн технология Bitcoin постепенно отходит на второй план. Однако, Bitcoin по-прежнему используется многими, но это, безусловно, убывающий тренд, потому что люди с течением времени обнаруживают недостатки в его технологии.
Блокчейн технология как таковая была изобретена со следующими изначально присущими ей свойствами:
- Управление криптовалютными токенами и запись транзакций производятся в реестре как в единой технологической среде.
- Этот распределённый реестр, как мощную модель репликации данных, никто не регулирует.
- Для того, чтобы получить криптовалютный токен, нужно проделать определённую работу, подобно тому, как в физическом мире добывается золото.
- Должна быть система для обеспечения безопасности и подтверждения транзакций на основе криптографических приватных и публичных ключей.
- Реестр должен быть публичным, чтобы любой мог принять участие в создании криптомонет (в т.н. майнинге монет).
- Система реестра должна быть неизменна и необратима во времени.
- Система не может быть уничтожена никакой властью и существует как p2p система интернета.
2 Внутри NEM
Проект NEM был начат в то время, когда Bitcoin и само понятие криптовалюты находилось на пике своего признания (начало разработки NEM - 2014 год), в тот момент было около 1000 различных криптомонет - альткоинов - и в основном это были форки криптовалюты Bitcoin, когда в его первоначальный открытый исходный код вносились незначительные изменения.
NEM был задуман с другим подходом и другой точкой зрения на его технологию. Другой подход заключался в том, чтобы в NEM использовать другой метод «майнинга», который не требует дорогих машин для добычи криптомонет. В NEM этот процесс назвали харвестинг (сбор урожая). Архитектура NEM была основана на концепции сервера приложений, где узлы являются серверами приложений и подключаются к серверу базы данных.
Как и все блокчейн технологии, NEM использует криптографию; если конкретнее, то для обеспечения конфиденциальности, достоверности и безотказности всех транзакций в NEM используется эллиптическая криптография. Каждый аккаунт использует пару ключей Ed25519 и связан с изменяемым состоянием, которое обновляется, когда транзакции принимаются сетью.
Для того, чтобы предотвратить, насколько это возможно, манипулирование стоимостью криптомонеты, NEM был начат с достаточно широким распределением криптомонет между начальными стейкхолдерами. Разработчики NEM заимствовали этот подход из другой ранее выпущенной криптомонеты (Nxt) и хотели улучшить его.
2.1 Подход, используемый в блокчейн технологии NEM
Решения, используемые в блокчейне Bitcoin, как в продукте первого поколения, имеют много конструктивных недостатков, причем не столько с точки зрения безопасности, сколько с точки зрения неудобств, доставляемых пользователям. К ним относятся:
- Медленное время подтверждения транзакции - в зависимости от степени её достоверности, требуется от 10 до 60 минут для подтверждения транзакции.
- Bitcoin трудно использовать, для него часто требуются различные усовершенствования и услуги третьих сторон.
- Постоянное обращение к услугам третьих сторон делает решение не только громоздким, но и лишает его децентрализации, возвращая его к централизованному управлению. Пример: Coinbase.
- Существование множества сторонних разрозненных предложений создаёт ситуацию, когда эти предлагаемые решения не составляют целостную систему.
- Требуется длительное время для включения автономного кошелька, что крайне непрактично.
- Решение не является дружественным к пользователю и предназначено для технически грамотной аудитории.
- Для работы полных узлов Bitcoin требуются дорогие машины, постоянно производящие большой объём сложных вычислений, и, как следствие, впустую потребляющие гигантское количество электрической энергии.
В любой криптовалюте транзакции объединяются в пакеты и подтверждаются пакетами (пакеты транзакций называются блоками). Как и в обычной бухгалтерии, все записи в аккаунтах группируются вместе и размещаются на различных аккаунтах в конце определённого периода. В бухгалтерском деле, период отчётности может составлять например сутки, месяц или год. В мире криптовалют, этот период различен в разных криптовалютах. Bitcoin формирует пакеты транзакций приблизительно каждые 10 минут. Этот "период отчётности" называется блоктайм.
В блокчейн технологии, транзакция сохраняется в памяти сервера и остаётся там неподтверждённой, пока не будет помещена в блок. Чем больше блоктайм, тем больше транзакций будет произведено внутри него. Блоктайм Bitcoin составляет в среднем 10 минут, при этом в блоке может быть от 1200 до 3000 транзакций. Блоктайм NEM равен 1 минуте, лимит количества транзакций в блоке установлен сейчас равным 120, что соответствует потоку транзакций до 2 транзакций в секунду (tps). В живой системе блоктайм величина переменная, 1 минуте он равен в среднем, а практически в редких случаях могут встретиться даже значения от 5 секунд до 5 минут (нормальное распределение в теории вероятностей).
Более короткий блоктайм означает, меньшее время ожидания подтверждения транзакций.
В блокчейн технологии NEM применён ряд оригинальных решений:
- Алгоритм консенсуса для блокчейна PoI (Proof of Importance, доказательство значимостью узла)
- Проверка добропорядочности узлов (Eigentrust++)
- Веб-архитектура
2.1.1 Алгоритм консенсуса для блокчейна PoI
В NEM разработан новый вид харвестинговой "конкуренции" с использованием PoI, концепции, в соответствии с которой право харвестинга определяется в определённой пропорции следующими компонентами:
- количеством криптомонет на аккаунте
- активностью проведения аккаунтом транзакций
- временем нахождения аккаунта в сети
Основной компонентой, определяющей значимость узла, как и в алгоритме PoS, является количество монет на аккаунте. Но бóльшее количество транзакций у аккаунта также повышает его значимость в сети, и соответственно повышает шансы этого аккаунта на вознаграждение в харвестинге. Активностью транзакций аккаунт оказывает поддержку сети и поэтому логично увеличить его шансы на получение награды в харвестинге. Такой компонент в методе харвестинга является новым и также не предъявляет к узлу высоких требований по вычислительной мощности.
Поскольку в уравнение харвестинга включено не только количество криптомонет на аккаунте, но и активность аккаунта в части транзакций, это оставляет меньше шансов любому аккаунту для манипуляций с харвестингом.
Алгоритм PoI (NEM) так же как и алгоритм PoS (NxT) не требует для запуска и поддержания узлов больших финансовых затрат, и потребляет при харвестинге не мегаватты электроэнергии (как алгоритм PoW Bitcoin), а единицы ватт. Полным узлом в NEM может быть копеечный одноплатный компьютер.
2.1.2 Система репутации узлов Eigentrust++
P2p сети очень надёжны, так как при отсутствии или неисправности любого узла система будет продолжать работать. Это обеспечивает 100% времени бесперебойной работы системы. Тем не менее, недостатком p2p-сети является то, что каждый узел является анонимным и поэтому трудно понять, является узел злонамеренным или нет.
В сети NEM для оценки степени доверия к каждому из узлов и управления ими введён алгоритм Eigentrust++. Алгоритм Eigentrust++ в совокупности с алгоритмом POI обеспечивает устойчивую работу сети и защищает её от недобросовестных и злонамеренных узлов. Узлы, которые не являются доверенными, отвергаются и игнорируются.
Eigentrust это алгоритм, позволяющий вычислить репутацию каждого узла в сети на основе истории взаимодействия между узлами сети. Историю взаимодействия можно представить как матрицу связности между узлами, в каждой ячейке которой хранится оценка доверия к узлу, представленная как разность между количеством успешных и неуспешных попыток передачи данных.
Узлы, не связанные непосредственно, доверяют друг другу в том случае, если существует непрерывная цепь узлов между ними, доверяющих друг другу. При этом величина этого доверия определяется произведением последовательных оценок доверия вдоль этой цепи.
Eigentrust++ эффективнее Eigentrust. В чем отличие Eigentrust++ от Eigentrust?
http://www.cc.gatech.edu/~lingliu/papers/2012/XinxinFan-EigenTrust++.pdf
- Eigentrust++ отделяет транзакции, основанные на репутации, от ответных транзакций, которые могут быть недобросовестными.
- Eigentrust++ основан на модели распространения доверия от узла к узлу и не использует единую модель доверия.
- Eigentrust++ в разность между количествами успешных и неуспешных попыток коннекта двух узлов инкорпорирует общее количество транзакций между ними.
Eigentrust++ полностью отделён от POI. В то время как POI является алгоритмом консенсуса для блокчейна, Eigentrust++ является системой репутации узлов. Eigentrust++ помогает защитить сеть от атак вредоносных узлов, которые намеренно посылают неправильные или неверные данные. Баллы доверия Eigentrust++ не являются глобальными, они локальны и важны для соседних узлов.
POI работает на уровне аккаунта, в то время как Eigentrust++ работает на уровне узлов сети. POI определяет право на харвестинг, в то время как Eigentrust++ определяет репутацию каждого узла в сети. Однако если узел злонамеренный, то это повлияет на возможности аккаунта, т.к. ограничит его харвестинг. Но это коснётся только функционирования аккаунта в части харвестинга, но не затронет коэффициент значимости узла.
Cистема репутации в NEM является уникальной - это первый случай в криптографической сфере, когда используется такой тип репутационной модели для управления узлами сети.
2.1.3 Веб-архитектура
Архитектура NEM была задумана как веб-серверная среда приложений (веб-сервер & сервер приложений). NEM использует стандартную архитектуру, а его API интерфейс соответствует отраслевой практике - JSON RESTful API - что удобно для программирования и делает его легко интегрируемым в другие проекты.
Веб-сервер - довольно узкое понятие, обозначающее программу, отдающую данные клиентам по протоколу HTTP. Сервер приложений - это, грубо говоря, программа, позволяющая централизованно на стороне сервера хранить и выполнять приложения, управляя при этом распределением нагрузки, обеспечивая работу с БД и т.д. В нашем случае сервер приложений работает с клиентами по протоколу HTTP, таким образом одновременно являясь и веб-сервером.
Само наличие такого веб-дизайна архитектуры снимает много вопросов, которые имелись до настоящего времени в предшествующих проектах криптовалют, даже если абстрагироваться от целесообразности таких проектов и рассматривать только их техническую сторону.
Каждый узел представляет собой сервер, который аккаунты могут использовать для харвестинга. Одновременно он как узел записывает и сохраняет блокчейн. Таким образом, каждый узел включает в себя веб-сервер, базу данных и основное приложение, обеспечивающее работу блокчейн технологии NEM.
Узел по минимуму задействует оперативную память (для обычного узла достаточно иметь на компьютере RAM = 1 GB, для суперузла эта величина должна быть не менее 2 GB) и не требует высокой вычислительной мощности (даже для суперузла достаточен компьютер с одноядерным процессором и тактовой частотой 1,6 ГГц).
Таким образом, получается очень эффективное решение для блокчейн платформы, с низким потреблением энергии и низкими финансовыми затратами.
Узлы синхронизируются друг с другом децентрализованно, образуя пиринговую p2p топологию сети. Безопасность не является проблемой, так как система будет продолжать устойчиво работать даже если значительная часть узлов окажется взломанными или принадлежащими злоумышленникам. Как и все технологические блокчейн решения, NEM работает на основе консенсуса, в предположении, что все узлы доверяют друг другу.
- Цитата :
- 20 декабря 2016 в ходе эксперимента три узла, составлявшие сеть, в случайные моменты времени отключались/включались, имитируя падения узлов. Продолжительность отключения доходила до 6 минут, отключалось до двух узлов одновременно. В сеть непрерывно посылались спам-транзакции от 10,8 миллионов аккаунтов. В течение всего часа Mijin сеть успешно справлялась с экстремальной нагрузкой 3000 tps, в пике достигавшей до 4142 tps.
http://free.userboard.net/t176-topic#270
Такое построение сети порождает много преимуществ. Одним из наиболее существенных преимуществ является лёгкий запуск узла и мгновенное подключение клиента к нему. Кошелёк рассматривается как клиент, и поэтому является специализированным приложением - сложным или простым (сейчас в NEM 4 вида кошельков). В любом случае для подключения к узлу все они используют API интерфейс и, следовательно, могут легко работать с любым узлом.
В более ранних конструкциях блокчейн должен был находиться на той же машине, что и кошелёк. Это приводило к проектированию множества различных типов кошельков, чтобы как-то обойти эту проблему. Подход в NEM, основанный на архитектуре веб-сервера, позволяет физически разделить местоположение блокчейна (базы данных) и кошелька (сервера приложений). Это делает клиенты кошельков тонкими, легко проектируемыми, и очень удобными интеллектуальными устройствами. Такая архитектура является более надёжной, и по-настоящему децентрализованной, в отличие от архитектуры Bitcoin, которая является оксюмороном, т.к. кошелек с блокчейном должны быть на одной машине, либо приходится пользоваться сторонними централизованными кошельками, ставя надёжность и безопасность под угрозу.
Рисунок 1. Веб-архитектура NEM
3 Новое поколение блокчейн технологии
Разработка NEM начиналась как рядовая инициатива очередной криптомонеты, в то время таких начинаний было немало. Первоначально шла речь лишь о создании обычного форка Nxt.
Jaguar, один из основных разработчиков NEM:
- Jaguar пишет:
- Наш первоначальный план состоял в том, чтобы написать NEM, взяв за основу код NXT... Но вышло так, что этот проект вызвал большой интерес, и у нас оказалось больше девелоперских ресурсов, чем я ожидал. Тогда команда разработчиков пришла к консенсусу: NEM будет основываться на идеях NXT и Bitcoin, но код будет написан с нуля. Хотя это потребует несколько больше времени и усилий сейчас, но я думаю, что в долгосрочной перспективе это сделает NEM намного лучше.
https://bitcointalk.org/index.php?topic=426303.msg5045812#msg5045812
Чтобы сделать решение блокчейн платформы NEM ещё более целостным, были добавлены новые, оригинальные возможности NEM. Так был взят курс на создание блокчейн платформы мирового уровня.
В ходе разработки были добавлены следующие решения:
- Принят алгоритм цифровой подписи ED22519 (повышение безопасности для узлов и скорости работы)
- Мультиподпись впервые реализована непосредственно в блокчейне (повышение безопасности для узлов и усиление децентрализации)
- Введена p2p синхронизация времени (усиление децентрализации)
- Активы с упорядоченной системой именований (Namespaces & Mosaics)
- Введена система репутации узлов Eigentrust++ (повышение безопасности для сети)
- Алгоритм консенсуса для блокчейна выбран POI (повышение безопасности для сети)
- Приватные блокчейны (блокчейны Mijin для закрытых предприятий)
Решения блокчейна NEM являются действительно полезными для многих мейнстрим приложений.
3.1 Алгоритм цифровой подписи Ed22519
Алгоритм цифровой подписи Ed22519 был принят в NEM на более позднем этапе разработки. Этот алгоритм был выбран потому, что он является одним из самых безопасных и быстрых алгоритмов из всех существующих сейчас.
Он основан на привязке Python к реализации C системного решения подписи Ed22519.
С помощью этой библиотеки можно быстро (2 мс) создавать подписи + проверочные пары ключей, получать проверочный ключ из ключа подписи, подписывать сообщения и проверять подписи. Ключи и подписи очень короткие, что позволяет их легко обрабатывать и включать в другие протоколы. Все известные атаки требуют по крайней мере 2128 операций, обеспечивая такой же уровень безопасности, как AES-128, NIST P-256 и RSA-3072.
Более подробную информацию о подписи Ed22519 можно найти на NEM GitHub:
https://github.com/NewEconomyMovement/python-ed25519
3.2 Мультиподпись в блокчейне
Иногда транзакция должна быть одобрена несколькими сторонами. Возможность совместного одобрения транзакции важна, поскольку это даёт возможность коллективного управления аккаунтом.
Мультиподпись - функция востребованная. Многие распространённые приложения требуют, чтобы транзакции были одобрены несколькими сторонами, будь то транзакция рабочего процесса или денежная операция. Эти транзакции, если они отвечают определенным критериям, могут быть также подписаны и утверждены автоматизированными процессами.
Функция мультиподписи в NEM является уникальной. В отличие от всех других существующих блокчейн решений, функция мультиподписи в NEM не полагается на некое централизованное приложение, агрегирующее собранные подписи, прежде чем они будут переданы в блокчейн.
Мультиподпись остаётся в блокчейне - это означает, что она доступна всем узлам - и, следовательно, любое приложение или аккаунт могут всегда принять участие в мультиподписи, не заботясь о том, запущен ли сервер приложения, агрегирующего подписи. Здесь нет единой точки отказа. Эта функция в NEM уникальна и является очень мощным инструментом.
NEM может иметь до 32 подписантов транзакции. В случае мультиподписи m из n, для одобрения транзакции подписать её могут не все n подписантов, а от m до n подписантов.
Кроме того, можно изменять список подписантов. Это также актуальная функция, вытекающая из реальных ситуаций. Например, смерть человека или потерянный ключ сделали бы аккаунт непригодным для дальнейшего использования, если бы не существовало никакого способа для удаления или замены такого подписанта.
3.3 P2p синхронизация времени
Как и большинство других криптовалют, NEM опирается на временны́е метки транзакций и блоков. В идеале, все узлы в сети должны быть синхронизированы по времени. Несмотря на то, что большинство современных операционных систем имеют встроенную систему синхронизации времени, локальные часы узлов могут иметь отклонение от реального времени более чем на минуту (речь идет об одной минуте, потому что в NEM блоктайм = 1 минута). Это приведёт к тому, что такие узлы будут отклонять правильные транзакции и блоки, и узел фактически выпадет из сети из-за рассинхронизации с сетью.
Поэтому необходимо иметь какой-то механизм синхронизации, чтобы все узлы были согласованы по времени. Есть два основных способа сделать это:
- Использовать существующие протоколы, такие как NTP
- Использовать пользовательский протокол
Кроме того, NTP не занимается конфигурированием узлов (а на машине например может быть установлен неправильный часовой пояс). А поскольку в общем случае узлы в сети независимы и анонимны, то нет возможности их контролировать. Было бы нелегко понять, синхронизирован узел или нет, и есть ли возможность подключиться к NEM блокчейну.
Используя собственный протокол, который зависит только от самой p2p сети, NEM решает эту проблему, но при таком подходе приходится идти на небольшой компромисс. Невозможно гарантировать, что время сети всегда будет близкó к реальному времени. Поэтому узел, впервые подключившийся к сети, готов принять достаточно большие временны́е отклонения в сети и подстраивается к ним. По мере работы узла в сети, его терпимость к временны́м отклонениям уменьшается.
Одновременно полагается, что большинство современных операционных системы имеют встроенную службу синхронизации времени, и локальное время на них в среднем по большому числу узлов стремится к реальному. В совокупности с собственным алгоритмом автоподстройки узлов под временны́е метки в сети это позволяет входить в сеть узлам с достаточно большими отклонениями от реального времени и одновременно время в сети будет подтягиваться к реальному.
Транзакции и блоки с плохими временными метками (с отклонениями по времени более допустимых пределов) удаляются из сети. Таким образом устраняется влияние
- злонамеренных узлов, устанавливающих неправильные метки времени
- добросовестных узлов с очень большими отклонениями локального времени
- плохих данных, возникающих из-за проблем с интернетом или в связи с большой занятостью одного из узлов
3.4 Активы
Ещё одной и самой мощной функцией в блокчейн платформе NEM является система токенов, интегрированная в блокчейн. Токен может являться единицей стоимости, или единицей количества, или просто тегом какого-нибудь актива. В NEM токен называется мозаикой (Mosaic).
Мозаика в NEM может быть создана в считанные минуты с одновременным определением её свойств. Базовая криптовалюта публичного блокчейна NEM, именуемая XEM, считается первым созданным в блокчейне NEM активом.
Каждая мозаика, созданная в NEM, является уникальной. Во-первых, в блокчейне создается область пространства имён, которая принадлежит только её создателю. В NEM область пространства имён будем для краткости называть просто пространством (Namespace). В созданном им пространстве, создатель может в дальнейшем определить любое количество мозаик с уникальными именами.
В другом пространстве, другой создатель может сделать то же самое. Более того, он может определить свои мозаики с теми же именами, что и первый создатель. Тем не менее они будут уникальны, поскольку будут отличаться принадлежностью к другой области пространства имён. Таким образом, название пространства и название мозаики вместе взятые определяют полное уникальное имя мозаики.
Каждая мозаика обладает следующими свойствами:
- Описание (Description)
Описание мозаики в свободном формате, до 128 байт (128 английских букв и цифр или 64 русские буквы), может редактироваться владельцем мозаики.
- Делимость (Divisibility)
Сколько цифр следуют после децимальной запятой в величине количества мозаики, от 0 до 6 знаков после запятой.
- Информация (Information)
Произвольный байтовый массив ограниченного размера; в точности как сообщение в NEM.
- Пространство имён, а если точнее, то доменное имя, определяющее пространство имён (Domain name or namespace, обязательно)
Глобальное уникальное полное доменное имя, которое принадлежит создателю мозаики. Размер названия пространства верхнего уровня ограничен 16 символами, для суб-пространств установлен предел в 64 символа.
- Имя мозаики (Name, обязательно)
Название мозаики, до 32 символов; должны быть уникальными в пределах одного пространства.
- Количество (Mutable quantity)
Количество мозаик в обращении. Если оно неизменно, то фиксировано, иначе динамично, т.е. количество может быть изменено или уничтожено полностью.
- Перемещаемость (Transferability)
Если нет, то мозаика может быть передана лишь однажды, только от создателя пользователю. В противном случае, она может свободно передаваться между третьими сторонами.
- Налог (Levy)
Создатель мозаики может установить налог на любые последующие транзакции этой мозаики. Сбор отправляется на аккаунт, который определит создатель. Любая мозаика или XEM могут быть использованы в качестве налога.
В будущем будут добавлены дополнительные свойства мозаик, такие как дивиденды, репутации, возможность отзыва мозаики, композитность (способность вложений активов в активы), задание эмитента налога, белый список исключений для непередаваемых мозаик, переопределяемые и конфигурируемые налоги, простой эскроу, переменное окончание срока действия мозаики, простая математика.