WWW.LIBRUS.DOBROTA.BIZ
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - собрание публикаций
 

«Русская версия Авторы: NEM UKRAINE 482.SOLUTIONS (Техническое рецензирование) (Перевод и редактура) 1 сентября, 2018 Содержание Преамбула 3 1 Вступление 5 2 Аккаунты и адреса 6 2.1 ...»

NEM

Технический справочник

Русская версия

Авторы:

NEM UKRAINE 482.SOLUTIONS

(Техническое рецензирование)

(Перевод и редактура)

1 сентября, 2018

Содержание

Преамбула 3

1 Вступление 5

2 Аккаунты и адреса 6

2.1 Характеристики аккаунта 6

2.2 Адреса NEM 7

2.3 Преобразование публичного ключа в адрес 8

2.4. Преднамеренная коллизия адресов 10 3 Криптография 11

3.1 Приватный и Публичный ключи 12

3.2 Подписание и проверка подлинности подписи 12

3.3 Кодирование и декодирование сообщений 13 4 Транзакции 14

4.1. Транзакции передачи 14

4.2 Транзакции передачи важности 15 4.2.1 Активация 15 4.2.2. Деактивация 16

4.3 Типы транзакций, относящиеся к мультиподписи 16 4.3.1. Модификация в агрегированные транзакции (мультиподписная модификация) 16 4.3.2. Подписание мультиподписных транзакций 17 4.3.3. Транзакции мультиподписи 17

4.4 Неподтвержденные транзакции (спам фильтр) 19 5 Блоки и блокчейн 21

5.1 Сложность блока 21

5.2 Рейтинг блока 23

5.3 Создание блока 23

5.4 Синхронизация блокчейна 24 6 Репутационная система узлов 26

6.1 Взаимодействия узлов 26

6.2 Локальное доверительное значение 27

6.3. Агрегирование значений локального доверия

–  –  –

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

Мы хотим поблагодарить всех людей, которые внесли вклад в разработку данного продукта и всех людей, вдохновлявших нас…

–  –  –

NEM – это блокчейн-платформа умных крипто активов и готовых решений. Сам блокчейн NEM является улучшением существующих блокчейнов и объединяет концепции других криптовалют (например, Bitcoin) и академические исследования в сфере теории сетей .

Ключевой вклад NEM в развитие рынка криптовалют – это новый алгоритм формирования консенсуса в блокчейне с использованием алгоритма доказательства важности (PoI, англ. Proof-of-Importance). В отличие от алгоритма доказательства работы (PoW, англ. Proof-of-Work) он устойчив к воздействию внешних факторов и не требует бесконечного использования масштабных вычислительных мощностей. PoI имеет сходные характеристики с алгоритмом доказательства доли владения, (PoS от англ. Proof-of-Stake), за исключением того, что он не определяется исключительно размером текущего баланса учетной записи. Он также учитывает другие характеристики учетной записи, оказывающие позитивное влияние на развитие глобальной экономики блокчейна. В результате, алгоритм награждает активных участников за счет неактивных, тем самым противодействуя накоплению средств в одних руках и препятствуя парадоксу "богатый становится богаче", что может привести к централизации сети. Такое свойство алгоритма характерно для PoS .

Видение NEM заключается в формировании криптовалютной дееспособной экосистемы, гарантирующей защиту данных пользователей и вычисления “без доверия" (как не требующую доверия). В NEM, также, интегрирован механизм транзакций с мультиподписями (multisig transactions) и обмен зашифрованными сообщениями. Кроме того, в равноправных (P2P) узлах сети NEM используется система репутации Eigentrust++ для определения и минимизации воздействия вредоносных узлов .

–  –  –





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

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

2.1 Характеристики аккаунта У каждого аккаунта есть следующие характеристики:

Баланс аккаунта

Количество блоков харвестинга («сбора урожая») (см. подраздел 5.3:

Создание блока) Номер первой транзакции, связанной с аккаунтом

Список мультиподписных аккаунтов и соподписантов (см. подраздел 4.3:

Типы транзакций, относящиеся к мультиподписи)

Информация о статусе делегированного аккаунта (см. подраздел 4.2:

Транзакции передачи важности) Важность и рейтинг NCD (см. раздел 7: Доказательство важности) Активный (созревший) баланс (важно для PoI и самого NEM) Криптовалюта, лежащая в основе сети NEM, носит название — XEM. Баланс на каждом аккаунте делится на две части: активную («созревшую») и пассивную («несозревшую») .

Страница 6 из 65 Как только на счет поступает XEM, новый XEM зачисляется на несозревшую часть баланса. Когда со счета отправляется XEM, XEM(-ы) списываются с обеих частей баланса (созревшей и не созревшей) для сохранения соотношения между созревшей и несозревшей частями1. Дополнительно, каждые 1440 блоков на созревший баланс зачисляется 10% XEM(-ов), из несозревших ранее .

–  –  –

Все счета в NEMезис блоке2 полностью созрели .

2.2 Адреса NEM

Адрес NEM представляет собой кодировку base-323 состоящую из трех частей:

Байт сети 160-битный хэш публичного ключа аккаунта 4-байтовая контрольная сумма Контрольная сумма позволяет быстро распознать неправильно заполненные адреса. В системе есть возможность отправить XEM на любой действующий адрес, даже если этот адрес ранее не использовался ни в одной сделке. Если ни один участник сети не является владельцем приватного ключа от аккаунта, на который отправлен XEM, то наиболее вероятно, что он будет потерян навсегда .

Безусловно, это не всегда возможно Первый блок в блокчейне NEM http://en.wikipedia.org/wiki/Base32

–  –  –

1. Применить 256-bit SHA3 к публичному ключу

2. Применить 160-bit Ripemd к хэшу результата, полученному на шаге 1

3. Присоединить байт версию в начало Ripemd hash (0x68 или 0x98)

4. Применить 256-bit SHA3 к результату, взять первые четыре байта в качестве контрольной суммы

5. Объединить результат, полученный на шаге 3, с контрольной суммой, полученной на шаге 4 .

6. Кодировать результат, используя base32

Пример:

1. Публичный ключ X: deb73ed7d0334e983701feba4599a37fb62e862e45368525b8d9fb9ab80aa57e Y: 169318abc3e5b002059a396d4cf1c3d35ba022c675b15fb1c4943f7662eef268 Z: a90573bd221a3ae33fec5d4efc4fa137897a40347eeafe87bee5d67ae5b4f725

2. Сжатый публичный ключ:

c5247738c3a510fb6c11413331d8a47764f6e78ffcdb02b6878d5dd3b77f38ed

3. sha3-256: 70c9dcf696b2ad92dbb9b52ceb33ec0eda5bfdb7052df4914c0919caddb9dfcf

4. ripemd: 1f142c5ea4853063ed6dc3c13aaa8257cd7daf11

5. Версия с добавлением в начало: 681f142c5ea4853063ed6dc3c13aaa8257cd7daf11

6. Применение sha3-256 к ключу, полученному на шаге 5:

09132a5ea90ab7fa077847a699b4199691b4130f66876254eadd70ae459dbb53 7. 4-байтная контрольная сумма: 09132a5e (первые четыре байта из предыдущего шага)

8. Бинарный адрес: 681f142c5ea4853063ed6dc3c13aaa8257cd7daf1109132a5e

9. Кодировка base-32: NAPRILC6USCTAY7NNXB4COVKQJL427NPCEERGKS6

10. Читабельное представление:

NAPRIL-C6USCT-AY7NNX-B4COVK-QJL427-NPCEER-GKS6

–  –  –

Страница 9 из 65

2.4. Преднамеренная коллизия адресов Возможна ситуация, когда два различных публичных ключа подходят к одному и тому же адресу. Если такой адрес содержит XEM, то злоумышленник может вывести деньги с такого аккаунта .

Для того, чтобы такая мошенническая операция прошла успешно, злоумышленнику необходимо найти такую пару приватного и публичного ключа, в которой sha3_256 публичного ключа будет совпадать с ripemd-160 прообразом 160-битного хэша, упомянутого ранее. Учитывая то, что sha3_256 предусматривает защиту в 128 бит, математическая вероятность коллизии совпадения sha3_256 крайне низкая. С учетом схожести адресов NEM и Bitcoin, вероятность коллизии совпадения адресов NEM приблизительно такая же, как и в случае коллизии, связанной с адресами Bitcoin .

–  –  –

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

–  –  –

Технология блокчейн требует использования некоторых криптографических концепций. NEM, как и многие другие блокчейны, использует технологию, в основе которой лежит Криптография на Эллиптических Кривых (Elliptic Curve Cryptography). Выбор данной кривой важен для того, чтобы обеспечить гарантию безопасности и скорости .

–  –  –

над конечным полем, определяемым простым числом 2255 19 вместе с алгоритмом цифровой подписи под названием Ed25519. Он был разработан Д.Бернштейном (D.J. Bernstein) и др. и является одним из самых безопасных и быстрых алгоритмов цифровой подписи [2] .

Базовая точка для соответствующей группы G называется B. Группа включает = 2252 27742317777372353535851937790883648493 элементов. Каждый элемент группы A может быть закодирован в 256-битное целое число A, которое также может быть интерпретировано как 256-битная строка, а A может быть декодировано для обратного получения A. Подробнее см. [2] .

Для хэш-функции H, упомянутой в статье, NEM использует 512-битную SHA3 хэш-функцию .

–  –  –

() = (0, 1, …, 511 ) (1) = 2254 + 3 253 2 (2) = (3) Поскольку A это групповой элемент, он может быть закодирован в 256-битное целое число A, используемое в качестве публичного ключа .

3.2 Подписание и проверка подлинности подписи При заданном сообщении M, приватном ключе k и связанном с ним публичном ключе A, необходимо осуществить следующие шаги для создания подписи:

–  –  –

Где (R, S) — это сообщение M, подписанное приватным ключом k. Обратим внимание, что только подписи, в которых и 0, считаются действительными для предотвращения проблемы “изменяемости” подписи (signature malleability) .

Для проверки подписи (R, S) для данного сообщения M и публичного ключа A, необходимо, сначала проверить условие и 0, а затем вычислить:

–  –  –

Если у Алисы есть приватный ключ, и она хочет зашифровать сообщение для Боба, у которого есть публичный ключ (с соответствующим элементом группы ), то общий секрет (shared secret), используемый при настройке шифрования, рассчитывается следующим образом:

–  –  –

Другие 16 случайных байт используются в качестве Initialization vector (IV) данных.

Таким образом, полезная нагрузка зашифрованного сообщения состоит из:

–  –  –

Расшифровка работает аналогичным образом.

Боб должен знать публичный ключ Алисы (и его собственный приватный ключ ) и соль, чтобы извлечь общий секрет:

–  –  –

Предоставление общего секрета и IV данных для механизма шифрования расшифровывает закодированное сообщение .

http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#CBC

–  –  –

“На деловые переговоры с девушкой, которая держала бензоколонку, Дин направился, набросив на плечи футболку. Произнеся, как всегда, несколько отрывистых грубоватых фраз, он вернулся в машину, и мы покатили дальше.”

–  –  –

Сделки привносят динамизм в систему криптовалют. Только они могут изменить состояние аккаунтов. Новая транзакция, которая еще не включена в блок, называется неподтвержденной. Неподтвержденные транзакции не обязательно становятся частью какого-либо блока. В результате, неподтвержденные транзакции не влияют на состояние аккаунта. Состояние аккаунта изменяется только в случае, если транзакция включается в блок харвестинга и тем самым подтверждается .

Существуют различные типы транзакций. Каждый тип имеет конкретное назначение, например, переводит XEM с одного аккаунта на другой или трансформирует аккаунт в мультиподписной .

С того момента, как транзакция потребляет ресурсы p2p сети, за каждую транзакцию взимается комиссия. Размер комиссии зависит от типа транзакции и других ее параметров .

Транзакция имеет предельный срок действия. Если транзакция не включена в блок до срока ее действия, она считается просроченной и не принимается нодами сети .

Следующий раздел описывает различные типы транзакций .

4.1. Транзакции передачи Транзакции передачи используются для перевода XEM с одного аккаунта на другой. К каждой сделке может прикрепляться сообщение размером до 1024 байтов. В случае с зашифрованным сообщением, только 960 байт могут содержать произвольные данные, так как остальная часть занята солью и IV данными .

–  –  –

Эти две части и определяют финальный размер комиссии за транзакцию .

Актуальный размер комиссий за различные виды транзакций доступен по ссылке: https://nemproject.github.io/#transaction-fees

4.2 Транзакции передачи важности NEM позволяет аккаунту передавать в аренду свои мощности харвестинга («сбор урожая») другому аккаунту посредством транзакции передачи важности (importance transfer transaction). Такой функционал называется «делегированный харвестинг» (delegated harvesting). Он позволяет текущему аккаунту использовать свою важность для «сбора урожая» на удаленном сервере (например, на виртуальном частном сервере) без непосредственного раскрытия приватного ключа для использования на текущем сервере. В результате данный функционал позволяет владельцам пассивных счетов осуществлять харвестинг без риска потери собственных средств .

Комиссия за проведение транзакции передачи важности составляет 0.15 XEM .

4.2.1 Активация Аккаунт может задействовать делегированный харвестинг посредством отправки специальной транзакции передачи важности, которая определяет делегированный аккаунт .

После того, как система обработает транзакцию передачи важности, и она будет принята сетью, необходимо 360 подтверждений прежде, чем произойдет активация функционала делегированного харвестинга .

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

После периода активации, харвестинг может осуществляться только делегированным аккаунтом, при этом у основного аккаунта такого права нет .

Страница 15 из 65 4.2.2. Деактивация Аккаунт, с активированным делегированным харвестингом, может отключить данный функционал в любой момент, посредством отправки специальной транзакции передачи важности, которая определяет делегированный аккаунт .

После того, как система обработает транзакцию передачи важности, необходимо 360 подтверждений прежде, чем произойдет деактивация функционала делегирования харвестинга .

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

4.3 Типы транзакций, относящиеся к мультиподписи По умолчанию, NEM поддерживает аккаунты с m-из-n мультиподписями .

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

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

4.3.1. Модификация в агрегированные транзакции (мультиподписная модификация) Создание мультиподписного аккаунта. Аккаунт может быть преобразован в мультиподписной путем отправки специальной транзакции агрегированной модификации, подписанной мультиподписным аккаунтом. В транзакции указывается информация о соподписантах. При этом количество соподписантов ограничено 32-мя .

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

Страница 16 из 65 Модификация мультиподписного аккаунта. После создания мультиподписного аккаунта есть возможность добавлять или удалять соподписантов путем вложения транзакции агрегированной модификации в мультиподписную транзакцию. Одна транзакция модификации может добавить одного или более соподписантов, но может удалить лишь одного .

После добавления новых соподписантов, все существующие должны подписать транзакцию .

После удаления соподписанта, все действующие соподписанты, кроме удаленного, должны подписать транзакцию .

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

4.3.2. Подписание мультиподписных транзакций NEM использует подписание мультиподписных транзакций для разрешения соподписантам подписывать мультиподписные транзакции .

Комиссия за такую транзакцию всегда составляет 0.15 XEM. Комиссия выводится с мультиподписного аккаунта, а не с аккаунта соподписанта .

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

4.3.3. Транзакции мультиподписи Как упоминалось ранее, любая транзакция может быть вложена в мультиподписную транзакцию .

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

Следующий пример подробно описывает механизм осуществления данной транзакции:

–  –  –

Любой из трех соподписантов может инициировать перевод 100 XEM .

Предположим, что аккаунт В инициирует перевод средств и аккаунты А и С соподписывают данную транзакцию.

Для принятия транзакции, необходимо осуществить следующие шаги:

1. В создает обычную, неподписанную транзакцию передачи, включающую мультиподписной аккаунт в качестве «подписанта» и сумму передачи в размере 100 XEM

2. В включает неподписанную транзакцию передачи в мультиподписную транзакцию

3. В подписывает транзакцию мультиподписи и отправляет ее в сеть NEM

4. А и С информируются об ожидающей мультиподписной транзакции

5. А осуществляет подписание мультиподписной транзакции, подписывая хэш неподписанной транзакции передачи и отправляет ее в сеть

6. С осуществляет подписание мультиподписной транзакции, подписывая хэш неподписанной транзакции передачи и отправляет ее в сеть

7. Как только все соподписанты (В косвенным образом, а аккаунты А и С непосредственно) подписывают неподписанную транзакцию передачи, транзакция принимается сетью и 100 XEM перечисляются с аккаунта М на аккаунт Х .

Если А и/или С не подписывают мультиподписную транзакцию, соответствующую мультиподписной транзакции передачи, до наступления срока действия транзакции, мультиподписная транзакция передачи будет отклонена сетью и перевод XEM с аккаунта М на аккаунт Х не будет произведен .

–  –  –

1. Размещает транзакцию в своем кэше неподтвержденной транзакции

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

–  –  –

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

NEM осуществляет фильтрацию транзакций более эффективным способом .

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

Это работает следующим образом:

Представим, что кэш неподтвержденной транзакции имеет 1000 ячеек До тех пор, пока не заполнено 120 ячеек, ни одна из транзакций не отклоняется В ином случае, если уже заполнено ячеек, и появилась новая неподтвержденная транзакция с подписантом А, то справедливая доля ячеек (предусмотренных для неподтвержденных транзакций) в кэше для аккаунта А рассчитывается по следующей формуле:

–  –  –

При условии, что А занимает меньше слотов, чем его справедливая доля, новая неподтвержденная транзакция принимается .

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

Рисунок 3 показывает справедливую долю ячеек по отношению к заполненному уровню кэша с эффективной важностью в 10/000 .

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

Справедливая доля

–  –  –

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

Блоки хранятся в базе данных в неизменном виде .

Первый блок (genesis block) блокчейна NEM называется NEMезис блок .

Каждый блок состоит из следующих частей:

1. Версия блока

2. Временная метка блока

3. Публичный ключ харвестера (создателя блока)

4. Подпись данных блока

5. Хэш предыдущего блока

6. Хэш для создания блока (необходим для создания блока)

7. Номер блока

8. Список всех транзакций блока В следующих разделах хэш-функция H во всех случаях обозначает 256-битную хэш-функцию SHA-3

5.1 Сложность блока Сложность нового блока рассчитывается исходя из уровня сложности и временных меток последних 60 блоков. Если доступно менее 60 блоков, то расчет производится только на их основе .

–  –  –

Если новая сложность более чем на 5% больше или меньше сложности последнего блока, то изменение ограничено верхним пределом, равным 5% .

Кроме того, сложности сохраняются в определенных границах. Новая сложность фиксируется в границах, если она больше 1015 или меньше, чем 1013 .

–  –  –

Медленная величина изменения, равная 5%, значительно усложняет для злоумышленника, имеющего важность значительно меньшую, чем 50%, возможность тайного создания лучшей цепи, поскольку скорость создания блоков для начала его секретной цепочки будет значительно выше 60 секунд .

5.2 Рейтинг блока Рейтинг блока определяется исходя из его важности и времени (в секундах), прошедшего с момента создания последнего блока:

–  –  –

5.3 Создание блока Процесс создания нового блока называется харвестинг («сбор урожая») .

Каждый аккаунт, используемый для «сбора урожая», получает комиссию за транзакции в блоке. Это дает харвестеру стимул добавлять, как можно большее число транзакций в блок. Любой аккаунт с созревшим балансом, равным, как минимум, 10 000 XEM имеет право стать харвестером .

Для проверки возможности аккаунта на создание нового блока в определенное время сети, рассчитываются следующие переменные:

–  –  –

Страница 23 из 65 Поскольку параметр target пропорционален времени, прошедшему с момента формирования предыдущего блока, новый блок будет создан через определенный период, даже если все аккаунты не были удачными и сгенерировали очень высокий hit .

Также следует отметить, что hit имеет экспоненциальное распределение .

Поэтому, возможность создания нового блока не изменяется, даже если важность разделена между многими аккаунтами .

5.4 Синхронизация блокчейна

Рейтинг присваивается как для одного блока, так и для цепочки блоков:

–  –  –

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

Если удаленный узел обеспечивает создание цепочки с более высоким рейтингом, то два узла стремятся договориться относительно последнего общего блока. В случае успеха, удаленный узел будет поставлять в локальный узел до 400 блоков своей цепочки .

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

Данный алгоритм также разрешает задачу разветвлений. Разница номеров последнего общего блока и последнего блока локального узла может составить максимум 360. Таким образом, максимальная глубина разветвлений, которая может быть разрешена в результате синхронизации, составит 360 .

Блок-схема на следующей странице детально описывает данный процесс .

–  –  –

Как и сети других криптовалют, сеть NEM представляет собой одноранговую (P2P, англ. Peer-to-peer) сеть. P2P сети обладают значительным преимуществом в виде высокого уровня надежности, так как их невозможно вывести из строя путем устранения одного элемента. Несмотря на это, опыт последних нескольких лет показал, что P2P сети также обладают определенными недостатками. Участники сети анонимны, и каждый может присоединиться к ней. В результате, в сеть достаточно просто внедрить вредоносные узлы, распространяющие недостоверную информацию или пытающиеся каким-либо образом нарушить работу сети .

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

Для более детального рассмотрения алгоритма, рассмотрите первичные документы - EigenTrust[8] и EigenTrust++[5] .

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

Получив информацию от удаленного узла, узел может подтвердить достоверность информации и проверить, можно ли ее использовать. Каждый узел может принять решение, следует ли рассматривать взаимодействие (или «вызов») Страница 26 из 65 как удачное (получена новая достоверная информация), нейтральное (получена достоверная, но ранее известная информация) или неудачное (получена недостоверная информация) .

Каждый узел продолжает отслеживать результаты всех своих взаимодействий с узлом в своей карте опыта, посредством подсчёта своих удачных и неудачных взаимодействий; удача (, ) и неудача (, ). Нейтральные взаимодействия игнорируются .

–  –  –

а затем, нормализуя локальные значения доверия:

=

–  –  –

Страница 27 из 65

6.3. Агрегирование значений локального доверия Время от времени узлы передают свои значения локального доверия другим узлам. Получив значения локального доверия от других узлов, узел может рассчитать агрегированное значение доверия для узла, соизмеряя значение локального доверия узла в узле c его собственным уровнем доверия в узле .

=

–  –  –

=

Если итерация будет определена как:

+1 = то она будет стремиться к левому главному собственному вектору матрицы C при допущениях, что C неразложим и ацикличен. Для того, чтобы гарантировать корректность допущений, необходимо незначительно изменить итерацию, добавляя в нее часть исходного вектора доверия :

–  –  –

где выбрано подходящее значение 0 1. Эта итерация всегда будет сходиться к вектору, который представляет уровень доверия к узлу а в других узлах .

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

Вредоносные узлы могут объединяться и публиковать низкие значения доверия честных узлов и высокие значения доверия для вредоносных узлов .

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

Учитывая данное условие, количественная оценка меры сходства обратной связи, полученной от двух узлов, может быть произведена следующим образом:

–  –  –

Включающую как сообщенные значения доверия, так и надежность обратной связи .

Это дает возможность легко рассчитать итерацию, аналогичную уравнению 9:

–  –  –

которая стремится к левому главному собственному вектору, матрицы мощности итерации .

В исходном документе Eigentrust++ предлагается использовать дополнительные меры для ограничения распространения доверия между честными и вредоносными узлами. Документ изначально был написан с учетом проблематики сетей обмена файлами. В таких сетях неполные данные разделены

–  –  –

6.5 Преимущества репутационной системы Наличие репутационной системы позволяет каждому узлу выбрать партнера для взаимодействия, учитывая значения доверия для других узлов. Это, также, способствует балансировке загрузки сети, поскольку выбор партнера для коммуникации зависит только от честности узла, а не от его важности .

–  –  –

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

Рисунок 7) .

–  –  –

Доказательство важности (PoI) – это название алгоритма консенсуса, используемого NEM. Каждой учетной записи присваивается рейтинг важности, который представляет собой совокупный рейтинг важности для экономики NEM, в целом. Аккаунты с более высоким рейтингом важности, имеют более высокую вероятность харвестинга блока (см. Раздел 5: Блоки и блокчейн). Поскольку все транзакции общедоступны в NEM, граф транзакции экономики NEM можно точно рассчитать. Топология графа транзакции может быть использована в качестве входных данных для определения важности аккаунта. Понимание того, что граф транзакций можно использовать для разъяснения важности аккаунта, является ключевой инновацией «Доказательства важности» .

Блокчейн платформа NEM позволяет открыто просматривать все транзакции .

Данная информация о значениях переводов между аккаунтами может быть использована для определения рейтинга важности аккаунтов. Представление о том, что не все узлы на графе имеют одинаковые характеристики, не ново. В сообществе специалистов, занимающихся теорией графов, распространенным является подход вычисления важности узлов графов в таких областях, как поиск [11], социальные сети [1], транспортные сети [7] и нейробиология [6]. Ключевая инновация NEM состоит в использовании метрик теории графов, как фундаментальной основы для разработки алгоритма консенсуса в сети блокчейн .

Матрица исходящих связей, определяющая граф транзакций, играет ключевую роль в данном процессе и используется при расчете «доказательства важности» .

7.1 Правомерность участия в вычислении важности Для получения права на участие в вычислении важности, аккаунт должен иметь не менее 10 000 созревших XEM. Все аккаунты, владеющие более 10 000 созревших XEM, имеют ненулевой рейтинг важности .

Страница 32 из 65 Учитывая общее количество XEM в размере 8,999,999,999, теоретическое максимальное количество аккаунтов с не нулевым рейтингом важности составляет 899,999. На практике, количество реальных аккаунтов с не нулевым рейтингом важности не приблизится к теоретическому максимуму из-за неравенства находящихся во владении XEM и, также, временных затрат, связанных с процессом “созревания” .

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

7.2 Матрица исходящих связей Предположим, что вычисление PoI выполнено в блоке с номером h. Аккаунты, которые имеют созревший баланс не менее 10 000 XEM, в блоке с номером h, имеют право быть частью вычисления PoI. Для этих аккаунтов NEM собирает все транзакции передачи, удовлетворяющие следующим условиям:

Осуществлена передача как минимум 1 000 XEM Передача произошла в последние 43 200 блоков (примерно 30 дней) Получатель также имеет право участвовать в вычислении PoI. (см .

подраздел 7.1: Правомерность участия в вычислении важности) Для каждой такой транзакции, в рамках которой произошел перевод суммы µXEM с аккаунта на аккаунт и, которая, происходит в блоке с номером, вес вычисляется согласно следующей формуле:

–  –  –

где [] обозначает функцию округления (округление до ближайшего целого в меньшую сторону). График на Рисунке 8: Уменьшение объема 10 000 XEM иллюстрирует, как получение суммы транзакции в размере 10 000 XEM усложняется с течением времени .

–  –  –

=

–  –  –

Таким образом, элемент матрицы исходящих связей описывает взвешенный чистый поток (которому присваивается значение 0, если он отрицателен) XEM от до в течение (примерно) последних 30 дней. Это означает, что только чистые переводы вносят вклад в оценку важности аккаунта .

Вес (важность транзакции) / 106

–  –  –

Страница 35 из 65

7.3 NCDawareRank Существует множество способов определения значимости узлов в сети и PageRank - один из таких методов. NCDawareRank похож на PageRank, в котором вычисляется стационарное распределение вероятностей эргодической цепи Маркова [9, 11]. NCDawareRank дополнительно использует почти полностью делимую структуру крупномасштабных графов информационных потоков, путем добавления межуровневой матрицы близости в качестве дополнительного элемента, М .

Межуровневая матрица близости моделирует факт тесной связи между узлами, образующими кластеры, которые взаимодействуют друг с другом. Это позволяет NCDawareRank сходиться быстрее, чем PageRank, одновременно, будучи более устойчивым к манипуляциям с рейтингами, поскольку установление рангов для одноуровневых узлов будет ограничено .

Представленный в матричном виде NCDawareRank вычисляется как:

= + + (1 ), (10)

–  –  –

доля важности, присваиваемая ближайшим аккаунтам Это определение такое же, как для PageRank, только с добавлением M и µ. Для NEM, равно 0.7 и µ равно 0.1. Детальное описание расчета каждой из переменных представлено ниже .

Страница 36 из 65 Возьмем W, как совокупность всех аккаунтов, имеющих право на «сбор урожая» .

Для, представляет собой совокупность аккаунтов, получивших большие объемы переводов с аккаунта, в сравнении с их переводами на аккаунт. Почти полностью разложимые (NCD) разбиения определяются как {1, 2,..., }, так что для каждого, существует единственное такое, что.

Ближайшие аккаунты каждого, определяются как:

(11) () ( ) и обозначает количество блоков NCD в .

Определение матрицы исходящих связей описано в подразделе 7.2 Матрица исходящих связей. Для обеспечения сходимости, + + (1 ) должна быть неделимой и столбчато-стохастической матрицей. Этого можно достигнуть путем рассеивания ранга недействительных аккаунтов (аккаунтов, без переводов значений исходящих связей) таким образом, что каждый аккаунт имеет ненулевую вероятность телепортирования .

–  –  –

Телепортированная матрица E рассчитывается как:

(13) где это вектор вероятности телепортирования, и е - это вектор, все значения которого равны 1 .

На практике NCDawareRank рассчитывается посредством итерационного метода согласно следующей формуле:

–  –  –

где определяет ряд для столбца в О и – это ряд для столбца в M. Алгоритм выполняется до тех пор, пока изменение NCDawareRank между итерациями меньше заданного значения :

(| () 1 ()|) (15) Телепортирование, как матрицы исходящих связей, так и межуровневой матрицы близости, гарантирует, что вероятность преобразования матрицы между аккаунтами является стохастической, неделимой и простой, таким образом гарантируется сходимость алгоритма. Более детальная информация по математической теории PageRank представлена в [9] .

Согласно информации, представленной в [10], есть возможность снизить объем расчетов и скорость расчета NCDawareRank путем разложения разреженной (большая часть элементов нулевые) межуровневой матрицы близости М на две матрицы R и A:

(16)

–  –  –

Реализация NEM использует декомпозицию матрицы М на А и R. Для подробного обсуждения хранения и вычислительных сбережений в рамках данной декомпозиции можно ознакомиться в [10] .

7.4. Кластеризации графа транзакций Кластеризации графа транзакций осуществляется с использованием высокопроизводительной реализации [13]5 кластеризационного алгоритма SCAN [14]. При такой высокопроизводительной реализации, кластеры создаются путем определения ключевых узлов и, затем, расширения кластеров путем расчета структурной схожести между находящимися рядом группами узлов. Детальное описание алгоритма представлено ниже .

Представим, что граф аккаунтов, в которых ребра графа между аккаунтами определяются таким образом, что ребро графа формируется, если сумма затухающего значения переносится (см. подраздел 7.2 Матрица исходящих связей) между аккаунтами выше предопределенного предела в 1000 XEM .

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

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

|() ()| (, ) = (20) |()||()| http://db-event.jpn.org/deim2014/final/proceedings/D6-2.pdf

–  –  –

() = { |{, } } {}. (21)

- это множество структурно связанных аккаунтов, имеющих структурное сходство с аккаунтом, превышающее заранее установленный предел :

() = { ()|(, ) }. (22) Ключевые узлы используются для разворота и расширения кластеров, и определяются следующим образом:

, () | ()| (23) где – это минимальное количество эпсилон близких аккаунтов, необходимых для того, чтобы аккаунт определялся как ключевой (core). Во время кластеризации, кластеры центрируются (разворачиваются) вокруг ключевых аккаунтов (core). Первоначальные члены кластера являются членами. Это означает, что контролирует наименьший возможный размер кластера. В NEM, равно 4 и равно 0.3. Аккаунт имеет прямую доступность структуры (direct structure reachability),,, с аккаунтом для заданного и, если является ключевым (core), а является членом ():

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

Улучшенная версия SCAN рассматривает только аккаунты разворота и аккаунты, которые находятся рядом с аккаунтами разворота.

Аккаунты, которые расположены близко к аккаунту, () определяются следующим образом:

() = { |(, ) (, ) )}, (25) Страница 40 из 65 Где аккаунт представлен как () \ {}. Для каждого ключевого аккаунта, находящегося рядом с разворотным аккаунтом, создается новый кластер, который разворачивается вокруг него. Все эпсилон-соседи ключевых аккаунтов ( ) добавлены в новый кластер. При расчете расположенных рядом аккаунтов, аккаунты с прямой доступностью структуры разворотных узлов исключаются из расчетов. При расширении расположенных рядом аккаунтов, расчет происходит следующим образом:

( ) = { |(, ) (, ) ( ) ( ) } (26) =0 После того, как все аккаунты на графе были обработаны, все узлы считаются проанализированными. Если аккаунт принадлежит к нескольким кластерам, то эти кластеры объединяются. В дальнейшем, любой аккаунт, не находящийся в кластере, маркируется как центральный, если он связывает два или больше кластеров. В ином случае он маркируется как выпадающий элемент .

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

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

7.5 Расчет оценок важности

Расчет оценки важности происходит следующим образом:

= (1 ((0, + )) + ), (27)

–  –  –

Страница 41 из 65 рассматривает топологию графа и присваивает более высокий вес узлам, являющимися участниками кластера, а не выпадающим или центральным элементам. Вес выпадающих или центральных элементов определяется как 0.9 от их оценки, в то время как узлы, которые находятся в кластерах, имеют весовое значение 1.0. В NEM, составляет 1.25, а равно 0.1337 .

В совокупности информация о созревшем балансе, отправленном количестве XEM и топологии графа транзакций формирует основу для эвристической оценки важности аккаунтов в экономике NEM .

Кроме того, поскольку важностью нельзя произвольно манипулировать или подтасовать (см. подраздел 7.6: Устойчивость к манипуляциям), оценки важности полезны и для других целей, а не только консенсуса самого блокчейна. Например, их можно интерпретировать как форму репутации. Поскольку сумма всех рейтингов важности составляет единицу, они представляют собой конечную величину, которая может использоваться для таких целей, как голосование или предотвращение спама. Это позволяет даже анонимным участникам взаимодействовать друг с другом, потому что для людей является невозможным получение контроля сети путем создания множества аккаунтов, созданных под псевдонимами .

7.6 Устойчивость к манипуляциям Использование NCDawareRank, созревшего баланса, убывающих и возрастающих весов исходящих связей, а также суммирование до единицы рейтингов важности обеспечивают устойчивость рейтингов к произвольным манипуляциям .

7.6.1 Атака Сивиллы (Sybil Attack) В peer-to-peer системах дефектные или вредоносные сущности могут часто выдавать себя за многосоставные сущности с целью получения контроля над системой [3]. Это называется атака Сивиллы .

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

В результате у злоумышленников есть высокая мотивация для совершения атак Сивиллы. Атаки Сивиллы учитывались в процессе проектирования алгоритма Страница 42 из 65 доказательства важности (PoI). Использование NCDawareRank, созревшего баланса, убывающих и возрастающих весов исходящих связей, а также суммирование до единицы рейтингов важности обеспечивают устойчивость расчетов рейтинга важности к атакам Сивиллы .

В рамках расчета рейтинга важности некоторые возможные векторы для злоумышленников, участвующих в атаках Сивиллы включают:

Разделение учетных записей и осуществление транзакций между разделенными аккаунтами с целью увеличения рейтинга NCDawareRank Разделение учетных записей и осуществление транзакции между случайно выбранными аккаунтами Цикличный перевод XEM между аккаунтами с целью увеличения рейтинга исходящей связи (см. подраздел 7.6.2: Циклическая атака)

Для противодействия атакам Сивиллы используются следующие методы:

Использование NCDawareRank вместо PageRank в качестве графтеоретической метрики важности Межуровневая матрица «близости» М в алгоритме NCDawareRank делает алгоритм более устойчивым к ссылочному спаму в сравнении с PageRank [10]. PageRank часто спамит интернет страницы путем создания множества сайтов, которые связаны (имеют ссылки) с основным сайтом, увеличивая PageRank основного сайта [4]. Похожая ситуация возникает в NEM, когда один из аккаунтов отсылает части своего баланса другим аккаунтам, а затем отправляет XEM обратно на основной аккаунт .

Созревание баланса аккаунтов в пределах временного расписания, которое является существенно «медленным» для людей Необходимость ждать несколько недель для полного созревания баланса аккаунта делает невозможным накопление больших объемов XEM и, затем, моментальную атаку на сеть .

Использование XEM с исходящими связями для расчета рейтинга исходящих связей

–  –  –

Уменьшение веса переводов ценности исходящих связей Переводы ценностей исходящих связей снижаются со временем .

Отправка XEM на другой аккаунт даст лишь временный рост рейтинга важности .

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

Наличие минимального баланса в 10 000 созревших XEM, необходимых для «сбора урожая»

Необходимость наличия 10 000 XEM для сбора урожая создает ограничения по количеству аккаунтов, которые, теоретически, могут быть задействованы в Атаке Сивиллы .

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

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

Рисунок 10 показывает результаты моделирования при трех условиях:

Аккаунты, участвующие в сговоре, циклично пересылают XEM друг другу Все аккаунты, участвующие в сговоре, отправляют XEM на общий участвующий в сговоре аккаунт Аккаунты, участвующие в сговоре, отправляют XEM на случайно выбранные аккаунты Страница 44 из 65 Как показано на рисунке 10, после добавления небольшого количества аккаунтов, злоумышленник, использующий атаку Сивиллы, не получает большого значения важности, даже при условии добавления тысячи дополнительных аккаунтов. Хотя, злоумышленник, осуществляющий атаку Сивиллы, приобретает большее значение важности, чем честный участник сети, выигрыш лимитирован и ограничен расчетом доказательства важности (PoI). Некоторые участники могут повысить свою важность, разделив свои аккаунты или отправив транзакции другим аккаунтам с целью имитации экономической активности. Поскольку оценки PoI суммируется до единицы, другие рациональные участники сети должны предпринимать те же действия. Это приведет к потере ожидаемого преимущества .

В сравнении с майнингом PoW, преимущество, которое можно получить, манипулируя с PoI – минимально. В PoW, майнеры, которые приобретают специальное оборудование для майнинга, получают огромное преимущество над теми, кто майнит используя только общедоступные видеокарты. На момент написания данного документа, за примерно одинаковую сумму Вы могли приобрести (1) две видеокарты с комбинированной мощностью в 800 Mhash/s или же (2) ASIC-майнера с мощностью в 800,000 Mhash/s. Разница в мощностях (1) и (2) составляет порядка 1000 раз. В PoI, из-за ограничений алгоритма, участник, идеально манипулируя систему, получит значимо меньшее преимущество .

Другими словами, манипуляция PoI не обеспечит своим участникам значительного качественного преимущества перед другими, ничего не предпринимающими, участниками с тем же балансом .

В случае, когда все подконтрольные аккаунты осуществляют переводы на основной аккаунт, на рисунке 10b показано, что важность может фактически уменьшиться, когда большее количество узлов вовлечено в атаку. На рисунке 10b значения важности уменьшились после того, как пороговые значения аккаунтов были скомбинированы в процессе атаки, потому что топология графа изменилась так, что атакующие узлы уже не были в одном кластере. Это привело к уменьшению веса структурной топологии,, с 1.0 до 0.9 .

Страница 45 из 65 7.6.2 Циклическая атака В период циклической атаки аккаунты, контролируемые одним и тем же объектом, отправляют XEM друг другу посредством циклической транзакции передачи для повышения своего рейтинга важности. В то время как XEM, отправляемые с аккаунта, составляют значительную долю в расчете рейтинга важности, XEM с исходящими связями являются итоговыми XEM с исходящими связями, так, что XEM с входящими связями будут вычитаться из XEM с исходящими связями. Таким образом, передача 1000 XEM по кругу миллион раз не обеспечит более высокую чистую исходящую оценку XEM в сравнении с одноразовой отправкой .

Оценка важности

–  –  –

Страница 46 из 65 Рисунок 10: Графики рейтинга важности представлены для двух участников с 800 миллионами XEM, с совмещенными 40 миллионами XEM, отправленными через передачи ценности с исходящими связями. Честный участник держит свои XEM на одном аккаунте, в то время как участник, участвующий в атаке Сивиллы, контролирует множественные аккаунты и: (a) отправляет XEM по кругу между подконтрольными аккаунтами; (b) дожидается созревания XEM на подконтрольных аккаунтах и, затем, пересылает их на основной аккаунт; и (c) отправляет XEM с каждого подконтрольного аккаунта на аккаунт, выбранный случайным образом. Оценки важности размещены на оси Y, количество находящихся в сговоре аккаунтов участника, осуществляющего атаку Сивиллы, размещено на логарифмической шкале оси Х. Для (c), затенение обозначает 95% CI из 10 испытаний, сплошные линии обозначают среднее значение .

7.7. Проблема пустого стэка (Nothing-at-Stake Problem) Теоретически, алгоритмы вероятностного Византийского консенсуса, которые не требуют затрат внешних ресурсов, подвержены влиянию проблеме6 пустого стэка. Данная проблема, теоретически существует, когда возможная стоимость создания блока ничтожно мала. Другими словами, стоимость создания блока настолько мала, что позволяет легко создать блок, который будет форком (разветвлением) для всего блокчейна (в том числе и те, которые были созданы самостоятельно в тайне). В то же время, проблема пустого стэка не существует, когда алгоритмом консенсуса выступает PoW, поскольку создание блока с использованием такого механизма консенсуса является крайне ресурсоемким .

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

Как указано в подразделе 5.1: Сложность Блока, уровень изменения сложности блока ограничен максимум 5%. Если у атакующего значительно меньше 50% харвестинговой мощности сети, то затраты времени, требуемого атакующему для Просмотрите пост в блоге Виталика Бутерина по данному вопросу https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/ Страница 47 из 65 создания блока секретной цепи, будут намного больше, чем затраты времени для создания первоначальной цепи. Такая существенная разница в скорости формирования цепи делает маловероятным то, что цепь атакующего будет лучше и принята. К тому же максимальный предел развертывания блокчейна ограничен 360 блоками (подраздел 5.4: Синхронизация блокчейна), что предотвращает длинно-протяженные форки от харвестеров, работающих на множественных цепях .

7.8 Сравнение «Важности» и «Доли»

Как указано в подразделе 7.5: Расчет оценок важности, созревший баланс аккаунта играет ключевую роль для рейтинга важности. Определяя созревший баланс как «долю», используемую в криптовалютах, реализующих алгоритм Proofof-Stake (PoS), можно утверждать, что PoS и PoI аналогичны. Для исследования различия и сходства между PoS и PoI, были проанализированы графы транзакций NEM и Bitcoin. Bitcoin был выбран из-за относительно большого размера его пользовательской базы и графа транзакций .

По состоянию на 29 Апреля, 2015 года, граф транзакций NEM включал 1,456 аккаунтов, имеющих право на «сбор урожая» (подраздел 7.1: Правомерность участия в вычислении важности). В октябре 2014, был загружен и проанализирован примерно один месяц данных из сети Bitcoin. 54,683 аккаунтов имели право на «сбор урожая», когда количество BTC было нормализировано в NEM. Нормализация суммы была сделана путем умножения сумм BTC на коэффициент рыночной капитализации. Таким образом, 0,0177 BTC на счету были минимальным количеством принадлежащих аккаунту BTC, необходимых для получения права на «сбор урожая». Номера блоков были нормирована в NEM, посредством умножения на 10 .

Рисунок 11 (a) показывает соотношение рейтингов важности и созревших балансов, выстроенных по логарифмической шкале для каждого из 1456 аккаунтов, имеющих право на харвестинг (отсортированные по созревшему балансу, по возрастанию) на графе транзакций NEM, и (b) для 54 683 аккаунтов, имеющих право на харвестинг, в графе транзакций Bitcoin. Как видно из графика, в то время как созревшие балансы монотонно возрастают, рейтинги важности Страница 48 из 65 являются немонотонными. Это показывает, что аккаунты с более низким объемом созревшего баланса способны получить большую значимость в PoI, чем в PoS на обоих графах транзакций .

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

Для количественной оценки различий в значимости аккаунтов, все аккаунты для NEM и Bitcoin были проранжированы (плотно; аккаунты с одинаковым рейтингом/ балансом получили одинаковый рейтинг) на основании созревших балансов и рейтингов важности, и учитывая разницу в рейтингах между двумя метриками. Таблица 1: Различие в ранжировании аккаунтов NEM на основании рейтингов важности в сравнении с ранжированием на основании созревших балансов показывает результаты для аккаунтов в графе транзакций в сети NEM, и Таблица 2: Различие в ранжировании аккаунтов Bitcoin на основании рейтингов важности в сравнении с ранжированием на основании созревших балансов показывает результаты ранжирования аккаунтов Bitcoin. В целом, аккаунты NEM получили примерно на 338 уровней меньше, по рейтингам важности, в сравнении с ранжированием по созревшему балансу. Более богатая половина аккаунтов была понижена в среднем на 443 позиции, в то время как более бедная половина понижена в среднем на 232 позиции. Аккаунты Bitcoin получили в среднем на 67,5 позиций меньше, при ранжировании по оценкам важности, чем при ранжировании по показателю созревшего баланса. Более бедная половина аккаунтов была повышена в среднем на 2 814 позиций, а более богатая половина была понижена, в

–  –  –

Таблица 1: Различие в ранжировании аккаунтов NEM на основании рейтингов важности в сравнении с ранжированием на основании созревших балансов .

Средний прирост ранга за важность в сравнении с долями (бедная часть):

-232.4 Средний прирост ранга за важность в сравнении с долями (богатая часть):

-443.8

–  –  –

Таблица 2: Различие в ранжировании аккаунтов Bitcoin на основании рейтингов важности в сравнении с ранжированием на основании созревших балансов .

Средний прирост ранга за важность в сравнении с долями (бедная часть): 2814.6 Средний прирост ранга за важность в сравнении с долями (богатая часть):

-2949.6

–  –  –

Рисунок 12: Графы транзакций NEM, где размер узлов обозначает нормализованные (a) рейтинги важности и (b) созревшие балансы .

Нормализация описывается в подразделе 7.8: Сравнение «Важности» и «Доли» .

–  –  –

“Вы тратите слишком много времени на эфемерное. Большинство современных книг – это лишь слабое отражение настоящего. Они исчезают очень быстро. Вы должны прочитать больше старых книг. Классика. Гете.”

–  –  –

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

По этой причине необходимо иметь механизм синхронизации для обеспечения согласования всех узлов во времени.

В основном существует два метода реализации данного механизма:

1. Использовать существующий протокол, такой как NTP

2. Использовать собственный протокол Преимущество использования существующего протокола, такого как NTP, заключается в простоте его реализации, а также время сети всегда будет близким к реальному времени. Однако, недостатком такого подхода является то, что сеть полагается на серверы вне сети .

Использование собственного протокола, который полагается только на сеть P2P, решает эту проблему, но есть обратная сторона медали. Невозможно гарантировать, что время сети всегда близко к реальному времени. Для обзора различных пользовательских протоколов см пример [12] .

NEM использует собственный протокол для обеспечения полной независимости от внешних сущностей .

Страница 53 из 65 8.1 Сбор образцов Каждый узел в сети управляет целым числом, называемым смещением, которому при запуске присваивается значение 0. Локальное системное время в миллисекундах, увеличиваемое смещением (которое может быть отрицательным), является временем сети (снова в миллисекундах) узла .

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

Рисунок 13: Коммуникация между локальным узлом и узлом-партнером Локальный узел отправляет запрос всем выбранным партнерам об их текущем сетевом времени. Локальный узел запоминает сетевые метки времени в момент отправки запроса и в момент получения ответа. Каждый узел-партнер отвечает согласно образца содержащему отметку времени получения запроса и времени ответа на него. Узел-партнер использует свое собственное сетевое время для создания временных меток. Рисунок 13 иллюстрирует механизм коммуникации между узлами .

Используя метки времени, локальный узел может рассчитать общее время прохождения запроса в оба конца = (4 1 ) (3 2 ) а затем оценить смещение o между сетевым временем, используемым двумя узлами, как

–  –  –

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

8.2 Применение фильтров для удаления некачественных данных

Некачественные образцы могут появиться по нескольким причинам:

Вредоносный узел может предоставлять неверные отметки времени .

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

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

Удаление некачественных образцов происходит при помощи специальных фильтров.

Фильтрация выполняется в 3 этапа:

–  –  –

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

–  –  –

8.3 Расчет эффективного смещения Сообщаемое смещение рассчитывается с учетом важности запущенного аккаунта, сообщающего о смещении времени. Это делается для предотвращения Атаки Сивиллы .

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

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

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

–  –  –

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

8.4. Присоединение и пороговое значение Новые узлы, которые только что присоединились к сети, должны быстро скорректировать свое смещение к уже установленному сетевому времени. В то же самое время старые узлы должны демонстрировать значительно большую жесткость, чтобы избежать сильного влияния новых или вредоносных узлов .

Для этой цели узлы корректируют часть сообщенного эффективного смещения .

Узлы умножают эффективное смещение на коэффициент связи для построения окончательного смещения .

Каждый узел отслеживает выполненное им количество циклов синхронизации времени. Это называется возрастом узла .

–  –  –

Это гарантирует, что коэффициент связи будет равен 1 для 5 раундов, а затем будет экспоненциально убывать до 0.1 .

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

–  –  –

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

Каждый узел NIS имеет следующие параметры конфигурации:

–  –  –

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

9.1 Протоколы узлов Узлы NIS по умолчанию общаются между собой используя собственный двоичный формат. Этот формат минимизирует пропускную способность сети сжимая запросы и обрабатывая их, снижая затраты на сериализацию и десериализацию (сериализация (в программировании) (англ. serialization) — процесс перевода какой-либо структуры данных в последовательность битов .

Обратной к операции сериализации является операция десериализации (структуризации) (англ. deserialization) — восстановление начального состояния структуры данных из битовой последовательности). Фактически, все APIинтерфейсы NIS поддерживают запросы, закодированные либо в собственном двоичном формате NEM, либо в JSON .

Страница 59 из 65 С целью предотвращения атак путем подмены участника, узлы NIS участвуют в двухступенчатом «рукопожатии» в процессе коммуникации:

1. Локальный узел отправляет данные запроса и произвольные 64байтные полезные данные удаленному узлу .

2. Удаленный узел подписывает произвольные полезные данные и отправляет подпись вместе с запрошенными данными обратно в локальный узел .

3. Локальный узел проверяет подпись и обрабатывает данные ответа только если он может проверить, что удаленный узел подписал произвольные полезные данные .

Рисунок 15: Коммуникация между локальным и партнерским узлом .

9.2 Запуск узла Когда NIS узел запущен, он обрабатывает блокчейн и кэширует некоторые данные в памяти для улучшения онлайн производительности. Когда обработка завершена, узел еще не подключен к сети, так как он еще не запущен. Не запущенный узел не связан с аккаунтом. Это не дает возможность ему подписывать ответы и предотвращает вероятность его верификации другими узлами .

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

Делегированный аккаунт может быть использован для запуска узла с целью повышения защиты приватного ключа основного аккаунта (подраздел 4.2:

Транзакции передачи важности) .

Страница 60 из 65 9.3 Обнаружение узла После того, как узел загружен, он подключается к сети NEM и начинает обмениваться информацией с другими узлами. Изначально узел знает только о известных узлах. Эти узлы аналогичны заведомо доверенным узлам, описанным в подразделе 6.2: Локальное доверительное значение .

Со временем узел узнает о большем количестве узлов в сети. Обычно это происходит двумя способами: через оповещение или обновление .

9.3.1 Оповещение Периодически узел объявляет о себе своим текущим узлам-партнерам, включая информацию о своем локальном опыте в этом запросе. Если узел неизвестен партнеру, партнер отмечает, его в качестве активного и обновляет опыт узла. Если узел известен партнеру, партнер только обновляет опыт узла, но не изменяет его статус .

9.3.2 Обновление Периодически узел запрашивает своих текущих партнеров о предоставлении обновленной информации о себе и о состоянии сети .

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

Этот шаг не выполняется, если происходит одно из следующих действий:

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

Страница 61 из 65 В качестве оптимизации, узлы, попавшие в черный список, не обновляются .

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

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

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

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

Известные узлы оцениваются по их рейтингу доверия, а узлы-партнеры выбираются случайным образом из них. Узлы с большим рейтингом доверия (которые с большей вероятностью являются честными) вероятнее всего будут выбраны в качестве партнера. Узлы, которые минимально взаимодействуют, обычно имеют рейтинги доверия, равные или близкие к 0. С целью дать узлам возможность проявить себя и построить доверие, им фактически дается небольшое повышение в доверии, чтобы они имели возможность быть выбранными и стать участниками сети. 30% доверия равномерно распределяются между узлами с менее, чем 10 взаимодействиями .

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

–  –  –

[1] Lars Backstrom and Jure Leskovec. Supervised random walks: predicting and recommending links in social networks. In Proceedings of the fourth ACM international conference on Web search and data mining, pages 635–644. ACM, 2011 .

[2] Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, and Bo-Yin Yang. Highspeed high-security signatures. In Cryptographic Hardware and Embedded Systems CHES 2011 - 13th International Workshop, Nara, Japan, September 28 - October 1,

2011. Proceedings, pages 124–142, 2011 .

[3] John R Douceur. The sybil attack. In Peer-to-peer Systems, pages 251–260. Springer, 2002 .

[4] Nadav Eiron, Kevin S McCurley, and John A Tomlin. Ranking the web frontier. In Proceedings of the 13th international conference on World Wide Web, pages 309–318 .

ACM, 2004 .

[5] Xinxin Fany, Ling Liu, Mingchu Li, and Zhiyuan Su. Eigentrust++: Attack resilient trust management. 2012 .

[6] Tayfun Grel, Luc De Raedt, and Stefan Rotter. Ranking neurons for mining structureactivity relations in biological neural networks: Neuronrank. Neurocom-puting, 70(10):1897–1901, 2007 .

[7] Bin Jiang. Ranking spaces for predicting human movement in an urban environment .

International Journal of Geographical Information Science, 23(7):823–837, 2009 .

[8] S. D. Kamvar, M. T. Schlosser, and H. Garcia-Molina. The eigentrust algorithm for reputation management in p2p networks. Proceedings of the 12th international conference on World Wide Web, pages 640 – 651, 2003 .

[9] A.N. Langville and C.D. Meyer. Google’s PageRank and Beyond: The Science of Search Engine Rankings. Princeton University Press, Princeton, USA, 2006 .

[10] Athanasios N Nikolakopoulos and John D Garofalakis. Ncdawarerank: a novel ranking method that exploits the decomposable structure of the web. In Proceedings of the sixth ACM international conference on Web search and data mining, pages 143–

152. ACM, 2013 .

Страница 64 из 65 [11] Lawrence Page, Sergey Brin, Rajeev Motwani, and Terry Winograd. The page rank citation ranking: bringing order to the web. Technical Report 1999-66, Stanford InfoLab, Stanford, USA, November 1999 Sirio Scipioni. Algorithms and Services for Peer-to-Peer Internal Clock [12] Synchroniza-tion. PhD thesis, Universit‘a degli Studi di Roma „La Sapienza”, 2009 .

[13] H Shiokawa, Y Fujiwara, and M Onizuka. Fast structural similarity graph clustering .

In The 6th Forum on Data Engineering and Information Management (DEIM2014), 2014 .

[14] Xiaowei Xu, Nurcan Yuruk, Zhidan Feng, and Thomas AJ Schweiger. Scan: a structural clustering algorithm for networks. In Proceedings of the 13th ACM SIGKDD international conference on Knowledge discovery and data mining, pages 824–833 .

ACM, 2007.



Похожие работы:

«Аварии на Чернобыльской АЭС и Фукусиме-1 Барбара Мерзук Историческая справка ЧАЭС — государственное специализированное предприятие Чернобыльская атомная электростанция им В. И. Ленина на данный момент это остановленная, в связи с аварией, произошедшей 26 апреля 1986 года АЭС, находящ...»

«НАКОПЛЕНИЕ ВОДОРОДА В ТИТАНЕ ПРИ ЕГО ОБЛУЧЕНИИ НЕЙТРОНАМИ Чжоу Хао, Сюй Шупэн А А В, А А В Научный руководитель: профессор В.В. Ларионов, профессор В.А. Варлачев XV 346 " В АВ А А А " Национальный исследовательский Томский политехнический университет, Россия, г. Томск, пр. Ленина, 30, 6...»

«Том 8, №3 (май июнь 2016) Интернет-журнал "НАУКОВЕДЕНИЕ" publishing@naukovedenie.ru http://naukovedenie.ru Интернет-журнал "Науковедение" ISSN 2223-5167 http://naukovedenie.ru/ Том 8, №3 (2016) http://naukovedenie.ru/index.php?p=vol8-3 URL статьи: http://n...»

«Эксплуатация и техническое обслуживание консоли Р30   Информация о версии ЭКСПЛУАТАЦИЯ И ТЕХНИЧЕСКОЕ ОБСЛУЖИВАНИЕ ПУЛЬТА Р30 P/N 301096-593 rev C © January 2013 Precor Incorporated, Все права защищены. Технические характеристики могут изменяться без уведомления. Приме...»

«Санкт-Петербургский государственный университет Физический факультет Кафедра оптики Развитие метода плазменной электронной спектроскопии (ПЛЭС) на основе нелокальной плазмы короткого тлеющего разряда для газовой хроматографии Ба...»

«Турникет-трипод тумбовый электромеханический PERCo-TTD-03.2 Руководство по эксплуатации Турникет-трипод тумбовый электромеханический PERCo-TTD-03.2 Руководство по эксплуатации СОДЕРЖАНИЕ 1 Назначение 2 Условия эксплуатации 3 Основные технические характеристики 4 Комплект поставки 5 К...»

«Согласовано Утверждено Председатель Федерации Организатор Соревнования Мотоциклетного Спорта Генеральный директор ООО "Моторспорт" Московской Области Белоусов Д.Л. Горячев А.С. РЕГЛАМЕНТ Чемпионата Московской области по шоссейно-кольцевым...»

«Министерство образования и науки Российской Федерации федеральное государственное автономное образовательное учреждение высшего образования "НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ" Школа инженерного предпринимательства Направление подготовки: 38.03.02. Менеджме...»

«Согласовано: Утвер Начальник ФГКУ Дире °3 р.п.Линево" "3 отряд ФПС по Новосибирской области" менова С. П. Баулин ТЕМАТИЧЕСКИЙ п л а ж ^ по Программе второго года обучения № Наименование тем Количество часов п/ Все Кл. гр. Практ. За­ Экзам п го чет 1. Организация деятельности пожарн...»

«ИСО "Орион" Устройство оконечное системы передачи извещений по каналам сотовой связи GSM "УО-4С" исп.02 Руководство по эксплуатации ЗАО НВП "Болид", 141070, Московская область, г. Королёв, ул. Пионерская, д. 4. Тел./факс: (495) 775-71-55 (многоканальный), 777-40-20, 516-93-72. E-mail: info@bolid.ru, http://bolid.ru...»

«Коллекторы FAR Завод FAR предлагает все необходимые виды коллекторов для водоснабжения, отопления и кондиционирования: регулируемые диаметром 3/4”, 1”, 1 ”, 1 ” и 2” — запорно-балансирующие диаметром 3/4”, 1” и 1 ” — запорно-баланси...»







 
2019 www.librus.dobrota.biz - «Бесплатная электронная библиотека - собрание публикаций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.