Возможности блокчейн технологии NEM

Блокчейн технология NEM.
Новые возможности.


1 Введение

История блокчейн технологии начинается с появления криптовалюты Bitcoin (в 2008 году), в которой механизм финансовых транзакций управляется и поддерживается с помощью публичной сети, где транзакции прозрачны, и любой человек может проконтролировать все их цепочки, но в то же время никто не может ограничить или подделать их. Такая технология работы с записями в реестре известна сегодня как блокчейн технология. Хотя первое свое практическое применение блокчейн технология нашла в криптовалюте Bitcoin, в финансовой сфере, эту мощную технологию можно с успехом использовать и во множестве других областей человеческой деятельности.

Позднее, блокчейн технология трансформировалась в решения различных блокчейн платформ, которые стали следующей ступенью развития после создания криптовалюты Bitcoin. Создаваемые на их основе продукты стали называть криптовалютами следующего поколения, криптосистемами, криптоплатформами. Блокчейн платформа NEM является одной из таких технологий, которые, взяв за основу концепцию оригинальной блокчейн технологий Bitcoin и Nxt, в значительной степени изменили и улучшили их.

Блокчейн технология NEM возникла из необходимости преодолеть некоторые из недостатков имеющихся в тот период времени блокчейн технологий. Разработка NEM начиналась с заимствований из блокчейн технологий Bitcoin и Nxt, но в итоге NEM был разработан с нуля и была создана совершенно новая блокчейн технология - более эффективная, более простая, легко расширяемая, и, прежде всего, легко интегрируемая во внешние приложения благодаря стандартным API и принятым архитектурным решениям.

С появлением новых технологий, таких как блокчейн технология NEM, блокчейн технология Bitcoin постепенно отходит на второй план. Однако, Bitcoin по-прежнему используется многими, но это, безусловно, убывающий тренд, потому что люди с течением времени обнаруживают недостатки в его технологии.

Блокчейн технология как таковая была изобретена со следующими изначально присущими ей свойствами:
  • Управление криптовалютными токенами и запись транзакций производятся в реестре как в единой технологической среде.
  • Этот распределённый реестр, как мощную модель репликации данных, никто не регулирует.
  • Для того, чтобы получить криптовалютный токен, нужно проделать определённую работу, подобно тому, как в физическом мире добывается золото.
  • Должна быть система для обеспечения безопасности и подтверждения транзакций на основе криптографических приватных и публичных ключей.
  • Реестр должен быть публичным, чтобы любой мог принять участие в создании криптомонет (в т.н. майнинге монет).
  • Система реестра должна быть неизменна и необратима во времени.
  • Система не может быть уничтожена никакой властью и существует как p2p система интернета.
Впоследствии было разработано множество других функций. Далее в этом документе описывается блокчейн платформа NEM и её возможные применения.


2 Внутри NEM

Проект NEM был начат в то время, когда Bitcoin и само понятие криптовалюты находилось на пике своего признания (начало разработки NEM - 2014 год), в тот момент было около 1000 различных криптомонет - альткоинов - и в основном это были форки криптовалюты Bitcoin, когда в его первоначальный открытый исходный код вносились незначительные изменения.

NEM был задуман с другим подходом и другой точкой зрения на его технологию. Другой подход заключался в том, чтобы в NEM использовать другой метод «майнинга», который не требует дорогих машин для добычи криптомонет. В NEM этот процесс назвали харвестинг (сбор урожая). Архитектура NEM была основана на концепции сервера приложений, где узлы являются серверами приложений и подключаются к серверу базы данных.

Как и все блокчейн технологии, NEM использует криптографию; если конкретнее, то для обеспечения конфиденциальности, достоверности и безотказности всех транзакций в NEM используется эллиптическая криптография. Каждый аккаунт использует пару ключей Ed25519 и связан с изменяемым состоянием, которое обновляется, когда транзакции принимаются сетью.

Для того, чтобы предотвратить, насколько это возможно, манипулирование стоимостью криптомонеты, NEM был начат с достаточно широким распределением криптомонет между начальными стейкхолдерами. Разработчики NEM заимствовали этот подход из другой ранее выпущенной криптомонеты (Nxt) и хотели улучшить его.


2.1 Подход, используемый в блокчейн технологии NEM

Решения, используемые в блокчейне Bitcoin, как в продукте первого поколения, имеют много конструктивных недостатков, причем не столько с точки зрения безопасности, сколько с точки зрения неудобств, доставляемых пользователям. К ним относятся:
  1. Медленное время подтверждения транзакции - в зависимости от степени её достоверности, требуется от 10 до 60 минут для подтверждения транзакции.
  2. Bitcoin трудно использовать, для него часто требуются различные усовершенствования и услуги третьих сторон.
  3. Постоянное обращение к услугам третьих сторон делает решение не только громоздким, но и лишает его децентрализации, возвращая его к централизованному управлению. Пример: Coinbase.
  4. Существование множества сторонних разрозненных предложений создаёт ситуацию, когда эти предлагаемые решения не составляют целостную систему.
  5. Требуется длительное время для включения автономного кошелька, что крайне непрактично.
  6. Решение не является дружественным к пользователю и предназначено для технически грамотной аудитории.
  7. Для работы полных узлов 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 минута). Это приведёт к тому, что такие узлы будут отклонять правильные транзакции и блоки, и узел фактически выпадет из сети из-за рассинхронизации с сетью.

Поэтому необходимо иметь какой-то механизм синхронизации, чтобы все узлы были согласованы по времени. Есть два основных способа сделать это:
  1. Использовать существующие протоколы, такие как NTP
  2. Использовать пользовательский протокол
Преимущество использования существующего протокола 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 могут быть использованы в качестве налога.

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


4 Применение блокчейна NEM

Конструктив блокчейна NEM позволит использовать его во многих реальных приложениях. Вот примерный их список, естественно не исчерпывающий:
  • Временны́е штампы и цифровые отпечатки для документов
  • Сообщения, зашифрованные и незашифрованные
  • Уникальная и имеющаяся на данный момент только в NEM мультиподпись, являющаяся стандартной функцией NEM блокчейна и не требующая участия третьих сторон. Вот пример её расширенного применения - специально написанная маленькая программка может сканировать отпечаток пальца и полученный результат затем можно будет использовать для подписания транзакции. Для начала, ознакомьтесь с XEMsign.
  • Вход в приложения без использования традиционного пароля, через идентификационный ключ NEM (NEMKID). Высокобезопасный метод аутентификации. Может использоваться с паролем для 2-FA.
  • Транзакции мозаик (Мозаики представляют собой особый вид активов, которые уникальны в NEM. Эти активы, в зависимости от контекста, также известны как цветные монеты, токены, поинты, деривативы, доли или акции. И всё же мозаика это не цветная монета, мозаика создается как отдельный токен, а не "раскрашенная" монеты):
    • Количество активов изменяемо, ограниченно изменяемо, или фиксировано
    • Каждая мозаика имеет уникальное имя благодаря принятой системе именований
    • Активы могут активированы после истечения определенного промежутка времени (при использовании в качестве тикета блоктайма имеем точность отсчёта в пределах от нескольких секунд до нескольких десятков секунд)
    • Актив может включать в себя другие активы - a derivative of a derivative of a derivative - можно создавать бесконечные сочетания активов.
    • Активы могут быть привязаны к другим активам, например, к цене какой-нибудь акции.
    • Активов может быть подкреплён активом физического мира, например, золотом.
    • Активы могут быть выпущены и переданы только от эмитента другому пользователю, но между пользователями передаваться не будут, например, это может быть право собственности на землю, или идентификатор пользователя.
  • Будущие бизнес-правила (также известные как смарт-контракты) позволят делать на их основе:
    • Децентрализованные приложения
    • Централизованные приложения
    • Эскроу решения, которые будут использовать внешние события или блокчейн события, позволяющие держать пари или реализовывать деривативы.


    • 4.2 Штамп времени

      Штамп времени - это простое системное сообщение в блокчейне, время появления которого в блокчейне естественным образом фиксируется. Например, создадим штамп времени для некоторого события, событием может быть например некий документ. Подготовим хэш файла документа. Отправим на определённый аккаунт сообщение:
      Код:
      Номер события: 4747959585
      Хэш события: 417035h2hTT8823785255bbcc812758257kd85720ye9572jH7KQ

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

      Хэш цифрового документа (хэш события), будь то изображение или текстовый документ, или комбинация обоих, даёт неоспоримое доказательство того, что определённый документ является оригиналом. Каждый цифровой документ уникален и хэш (цифровой отпечаток) документа однозначно его идентифицирует.


      4.1 Сообщения

      Любая транзакция может включать в себя сообщение. Сообщение может содержать максимум 160 байт [после марта 2017 эта длина увеличена до 1024 байт] и может быть дополнительно зашифровано (в этом случае количество символов будет ограничено 112).

      Размер сообщений, отправляемых в блокчейн, ограничен не дизайном блокчейна, а лишь из практических соображений. Например, если для предприятия, использующего приватный блокчейн, требуется, чтобы сообщение формата ISO20022 могло быть размером 2 kB или даже 20 kB, это легко сделать. Ограничением здесь будет лишь то, что размер сообщений будет влиять на размер блокчейна. Например, сообщение 2 kB на 1 млн транзакций в день будет увеличивать блокчейн базу данных на 2 GB в день, или 730 GB в год. По существу, ограничение размера базы данных ограничено местом на жёстком диске. Пространство жёсткого диска дёшево и не является проблемой в приватной сети предприятий.


      4.3 Мультиподпись

      Одной из наиболее важных особенностей NEM является его уникальная мультиподпись с её возможностями. Она уникальна тем, что, в отличие от большинства других решений, мультиподпись не хранится локально в неком централизованном кошельке в ожидании когда все поставят подпись, прежде чем она будет передана в блокчейн. Вместо этого, мультиподпись подписывается и размещается на узле NIS (Network Infrastructure Server). Из узла NIS, она затем распространяется на все другие NIS в сети, где она сохраняется в памяти в течение определенного периода времени до 24 часов, пока её не подпишут все соподписанты. Вместо того, чтобы зависеть от централизованного прикладного решения, решение NEM использует NIS для поддержания транзакции в процессе её совершения, как это и должно быть, то есть в полной мере децентрализованно и распределенно.

      Это приводит к распределенному решению мультиподписи, которое живёт в сети. Когда все необходимые подписи собираются, мультиподпись автоматически транслируется в блокчейн в качестве валидной транзакции.

      Таким образом, мультиподпись становится встроенной функцией с возможностями бóльшими, нежели решения третьих сторон, который обычно используются в большинстве других блокчейн технологий. Это позволяет программисту, который хочет автоматизировать функцию мультиподписи, непосредственно в своей программе вызвать API через NCC и подписать или инициировать транзакцию. Это делает мультиподпись очень простой в использовании.

      Мультиподпись в NEM предоставляет и другие возможности:
      • Функция M из N, потребуется минимум M подписей из N пула, имеющих право подписи (максимум N=32)
      • Добавление и удаление подписантов
      • Ограниченное время жизни транзакции, даётся до 24 часов для всех подписантов чтобы подписать транзакцию
      Мультиподпись особенно полезна для таких применений, как автоматизированный эскроу или активирование сервисов. Другие виды использования могут включать в себя и централизованные решения со смарт контрактами. Сама функция мультиподписи может быть использована для активации последовательности смарт контрактов или событий.

      Основная команда NEM в основном настроена не в пользу децентрализованной концепции смарт-контрактов, они считают, что смарт-контракты, живущие в блокчейне, могут столкнуться с проблемами, такими как децентрализованной набор программного кода. Кроме того, пока не известно ни одного случая, чтобы смарт-контракты работали независимо от внешнего входа, который управляется кем-то или группой лиц. Зависимость от самого внешнего входа делает децентрализованный смарт контракт централизованно контролируемым концерном, который, как представляется, будет иронией самого его существования. И, наконец, самые искушённые компании уже располагают смарт-контрактами, написанными на основе своих процессов. Это может стоить индустрии миллиарды долларов и потребуется длительный период созревания, чтобы переписать их для блокчейна.

      В то же время централизованно управляемые смарт контракты легко и быстро адаптировать для работы с транзакциями. NEM предоставляет все возможности для этого.

      Хорошим примером доказательства разумности такого подхода будет связь выпуска дивидендов и оплаты. Типичный выпуск облигаций и с последующей оплатой в своём сценарии должен отражать следующие моменты:
      • Дата погашения
      • Купонная ставка
      • Основная или номинальная стоимость
      • Регулярно выплачиваемые проценты
      В случае децентрализованного смарт-контракта, то есть без централизованного вмешательства, потребуется сложный и запутанный микс денег, чтобы сохранить их в «децентрализованном» концерне до момента выполнения контракта.

      Такой контракт не может быть выполнен (по крайней мере на данном этапе развития человечества) в виде смарт-контракта по следующим причинам:
      • Компания не может отложить деньги в сторону только для выполнения обязательств по облигациям. Выведение денег из оборота противоречит основной цели компании - поднять больше денег.
      • Если облигация залоговая, и если есть невыполнение обязательств, это почти наверняка приведет к продаже активов или выкупу залога. Следовательно, должно произойти централизованное вмешательство.
      • Контракт будет вызывать платежи. Платежи осуществляются через централизованные организации, то есть банки, и поэтому смарт контракты могут быть "умными" только после того, как этот платёж будет получен.

      Подход в NEM очень прост:
      • Выпускается токен облигации в форме мозаики NEM. Описание и условия облигации отражаются документе, который отмечается штампом времени (его хэш фиксируется в блокчейне)
      • По централизованному договору осуществляются платежи путём автоматического внесения денег на аккаунт владельца облигации
      • Возможен централизованный обмен ценными бумагами, чтобы разрешить торговлю облигациями среди владельцев облигаций
      • Использование мультиподписи для токенов этих облигаций при обмене этими облигациями

      Приведённый пример является простым и корректным, и отражает реальные потребности мира. Он не требует миллионных затрат, чтобы настроить эту систему управления, учитывая, что функционал для исполнения контрактов - вычисление процентов, оплата, управление по срокам погашения и другие условия - уже существуют в практике реального мира. Что потребуется сделать, так это специальную биржу, предназначенную для работы с этими токенами. Но эту работу достаточно провернуть только один раз, такая биржа будет общей для всех облигаций и ценных бумаг.

      Выпуск токена облигацим в NEM займёт менее 30 минут.


      4.4 NEM идентификатор (NEMKID)

      Криптографическое решение с открытыми / закрытыми ключами, используемое в NEM, можно легко приспособить для идентификации пользователей.

      Для сервиса, использующего NEMKID, отпадает необходимость в хранении паролей пользователей, и он будет избавлен от беспокойства по поводу взлома и кражи этих паролей. Если в системе пароль всё же является обязательным элементом, сервер может использовать NEMKID для дополнительной проверки человека. В сущности, NEMKID это случайное буквенно-цифровое слово (каждый раз разное), которое пользователь должен подписать. Если подпись верна, то пользователь признаётся законным пользователем.

      NEMKID может использоваться для двухфакторной аутентификации, которая может быть разработана отдельно и независимо от NEM.

      Следующий сценарий поясняет, как это работает. Приложение хранит открытый ключ NEMKID пользователя в своей базе данных. Когда пользователь входит в систему, приложение предлагает пользователю случайно сгенерированного строку текста. Пользователь подписывает эту строку своим приватным ключом и возвращает хэш-строку, которую сервер далее использует для сравнения по своей базе данных. Если всё в порядке, пользователю разрешается войти в систему.

      Для получения более надёжного решения, оно может быть расширено до 2-FA с использованием NEMKID.

      Кроме того, NEMKID также может быть использован в качестве сертификата подлинности, чтобы показать, что человек является тем кем он себя представляет.


      4.5 Автоматическое распределение токенов

      Приложения, которые требуют автоматического распределения токенов, могут быть легко созданы с помощью мультиподписи несколькими вызовами API. Это может быть внутриигровой кошелёк для выплаты наград или простое решение крана.

      Приведём пример. Предположим, что компания хочет ввести баллы лояльности. Она могла бы создать систему, в которой она ведёт базу данных постоянных клиентов и награждает их баллами лояльности. Вместо того чтобы писать сложную программу для управления всем этим процессом, компания может использовать готовое блокчейн решение NEM, а баллы лояльности выдавать токенами; системе останется только обработка транзакций и ведение таблицы всех точек лояльности. Нет необходимости дополнительно обрабатывать эти точки. Это позволит сэкономить сотни тысяч долларов на запуске всей программы управления и поддержании системы лояльности. NEM позволяет сделать это так просто, что такая система может быть сделана в течение нескольких недель.

      Источник: http://free.userboard.net/t111-topic
      1 Like

      А атака 51 https://crypto-coin.top/articles/chto-takoe-ataka-51.html - здесь тоже много полезной информации