Уроки, извлеченные из оценки IOTA на устройствах Интернета вещей

Tags: IoT, IOTA

Доступных количественно измеренных результатов IOTA не так много, как хотелось бы.

Воодушевленные этим фактом, мы экспериментировали с IOTA на двух разных устройствах IoT и двух современных настольных и серверных компьютерах. Мы обнаружили, что, несмотря на теоретическую масштабируемость Tangle, реальный протокол IOTA имеет относительно высокое энергопотребление. Операции Proof-of-Work и подписания транзакций сложны в вычислительном отношении по сравнению с ограниченными возможностями многих IoT-устройств и могут быть непрактичными для устройств с ограниченным энергопотреблением или питанием от батареи.

Предыстория

Если вы читаете это, вы, вероятно, знаете, что IOTA - это криптовалюта, предназначенная для использования в приложениях IoT. Летом 2018 года я осознал, что, несмотря на всю ажиотаж, нет общедоступных данных о потреблении энергии операциями IOTA, а также нет публичных исследований о возможности IOTA для устройств IoT. В то же время предположения безопасности IOTA требуют большого количества активных устройств IoT. Итак, «действительно ли это работает на устройствах IoT?» - это критически важный вопрос, который нужно задавать почаще.

Главная книга в IOTA защищена широко распространенной формой Proof-of-Work. Состояние главной книги поддерживается так называемыми полными узлами. Предполагается, что устройства IoT функционируют как легкие узлы; ожидается, что они подключатся к полным узлам, создадут и подпишут транзакции, а также рассчитают Proof-of-Work в распределенном режиме. Конструкция IOTA основана на безопасности в цифрах - идея в том, что устройства IoT могут превзойти любые вычислительные ресурсы, которые злоумышленник может реально получить из-за огромного количества устройств IoT.

Текущее состояние криптовалюты IOTA не соответствует этому видению - транзакции также проверяются централизованным узлом-координатором. Если IOTA хочет перейти к полностью децентрализованной работе, ей необходимо удалить компонент Coordinator. Ключевой вопрос здесь в следующем: «Может ли сеть быть защищена только с помощью Proof-of-Work?». В частности, «могут ли устройства IoT обеспечить достаточное распределенное Proof-of-Work для защиты от централизованных атак?»

IoT-устройства и Proof-of-Work

Устройства IoT охватывают широкий спектр возможностей. Некоторые из этих устройств являются такими же мощными, как обычные настольные ПК (или даже более мощными, чем это). Тем не менее, они являются исключениями. IOTA Vision заявляет, что «количество подключенных устройств, которые будут использоваться, по оценкам, достигнет 75 миллиардов к 2025 году». Cisco обещает более 50 миллиардов подключенных устройств к 2020 году, Ericsson: 18 миллиардов устройств IoT к 2022 году. Однако основное большинство из них будут устройствами с низким энергопотреблением. Например, число действующих в настоящее время встроенных микроконтроллеров с низким энергопотреблением на порядок больше, чем количество устройств IoT класса Raspberry Pi.

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

Номинальная и доступная вычислительная мощность

Многие устройства IoT работают от батарей или имеют ограниченные источники питания. Эти устройства не могут использовать свои номинальные вычислительные ресурсы все время, поэтому они обычно выполняют какой-то дежурный цикл. Устройство с номинальной вычислительной мощностью x имеет только 0,01x доступной вычислительной мощности, если оно работает с коэффициентом заполнения 1%. Тысяча устройств с рабочим циклом 0,1% имеет столько вычислительной мощности, сколько одно эквивалентное устройство с рабочим циклом 100%. Проще говоря, один сервер, имеющий в 1000 раз большую мощность, чем среднее IoT-устройство, может эффективно производить столько вычислений Proof-of-Work, сколько миллион этих «средних» IoT-устройств, работающих с циклом 0,1%..

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

А как насчет устройств IoT, которые не используют батареи? Даже эти устройства обычно не имеют такой простой и дешевой энергии, как серверы и фермы майнинга. Последние два выигрывают от эффекта масштаба, в то время как устройства IoT обычно сильно распределены в пространстве, не имеют близлежащих источников питания и не имеют своих ЦП, оптимизированных для вычислений Proof-of-Work.

Экспериментальная установка

Мы рассмотрели два устройства IoT из двух разных классов мощности и сравнили их с двумя современными компьютерами:

  • LaunchPad Texas Instruments CC2650 (48 МГц, одноядерный, только 20 КБ ОЗУ и 128 КБ памяти программ)
  • Raspberry Pi Model 3 (1200 МГц, 4 ядра)
  • Настольный компьютер Intel Core i7–6700 (3400 МГц, 8 ядер)
  • Сервер Intel Xeon E5–2623 (3000 МГц, 16 ядер) с Nvidia Quadro K620.

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

 

Время и энергия, необходимые для проверки работы

 

Время, необходимое для выполнения одной операции PoW на Raspberry Pi Model 3, настольном компьютере Intel Core i7 и графическом процессоре Nvidia Quadro. Зеленые столбцы показывают средние результаты, маленькие черные столбцы - стандартное отклонение. Логарифмический масштаб на оси у.

Мы использовали реализацию CCurl от Фонда IOTA (https://github.com/iotaledger/ccurl). Оно реализовано в C; однако оно все еще слишком тяжело для работы на TI LaunchPad - основной алгоритм использует слишком много оперативной памяти. Вместо этого мы выполняем его на трех оставшихся платформах.

Результаты показывают время, необходимое в секундах (график слева); экстраполируя это на энергию, мы получили 54,9 Дж (Дж) для Raspberry Pi, 233,2 Дж для Core i7 и 93,5 Дж для графического процессора Nvidia.

Вычислительная мощность TI LauchPad в 10–100 раз меньше, чем у Raspberry Pi, в зависимости от точной рабочей нагрузки. Даже если код PoW может работать на TI LauchPad, потребуется около часа, чтобы вычислить PoW для одной транзакции. Устройства также разряжаются через день или самое большее несколько недель, в зависимости от емкости батареи (от 100 мАч до 2700 мАч соответственно).

Raspberry Pi сама по себе способна выполнять некоторое PoW, но она может выполнять PoW только для 1000 транзакций в день, предполагая, что она затрачивает 100% ресурсов ЦП для этой задачи - поэтому, очевидно, она также не может функционировать в качестве основного концентратора PoW.

Сервер Core i7 работает примерно в 20 раз быстрее, чем Pi, поэтому сеть из 20 Pi может теоретически соответствовать вычислительной мощности одного сервера Core i7. Тем не менее, Pi будет иметь в несколько раз более высокое потребление энергии.

Также следует отметить, что исторически IOTA Tangle часто не в состоянии подтверждать действительные транзакции с первой попытки, требуя, чтобы пользователь «повторно подключал» их, в некоторых случаях много раз. Каждая операция «повторного подключения» требует совершенно нового Proof-of-Work для каждой вновь подключенной транзакции.

Аутсорсинг Proof-of-Work

Существует потенциальная экономия: протокол IOTA позволяет передавать вычисления Proof-of-Work на внешние устройства на аутсорсинг. Эта функция позволяет улучшить дизайн системы посредством совместной работы устройств IoT и выделенных серверов. Первые имеют стимул для проверки работоспособности, вторые обладают вычислительными ресурсами и энергией для эффективных вычислений. Однако эта схема может работать только в том случае, если:

  1. Устройство IoT может эффективно функционировать в качестве кошелька IOTA, то есть может создавать и подписывать транзакции IOTA.
  2. Затраты на связь между устройством IoT и устройством Proof-of-Work низкие.

 

 

Время и энергия, необходимые для подписания транзакции и для беспроводной связи

 

Время, необходимое для подписания одной транзакции на Texas Instruments CC2650, Raspberry Pi Model 3, настольном компьютере Intel Core i7 и сервере Intel Xeon. Зеленые столбцы показывают средние результаты, маленькие черные столбцы - стандартное отклонение. Логарифмический  масштаб на оси у.

Мы использовали порт кошелька IOTA Ledger Nano S для операционной системы Contiki-NG (см. https://github.com/atiselsts/contiki-ng/tree/iota/examples/iota/value-transaction). Порт Contiki-NG сохранил только основные алгоритмы для его размещения в ограниченном ОЗУ и среде TI LaunchPad.

Результаты (слева) показывают, что в среднем на подпись одной транзакции на LaunchPad TI уходит 7,7 секунды, что потребляет 74 мДж (миллиджоулей) на этой платформе. Для сравнения требуется около 82 мДж на Raspberry Pi, 28 мДж на сервере Core i7 и 31 мДж на сервере Xeon старого поколения.

Напротив, требуется только несколько мДж для передачи подписанной транзакции с использованием одного из нескольких беспроводных протоколов с низким энергопотреблением, доступных на TI LaunchPad (BLE и IEEE 802.15.4). Он может быть дополнительно оптимизирован путем передачи только основных частей транзакции на прокси-устройство, которое затем заполняет остальные поля структуры данных транзакции IOTA.

Распределение времени, необходимого для выполнения одной операции Proof-of-Work (левый график) и одной операции подписи (правый график). Результаты на Raspberry Pi Model 3. Логарифмическая шкала на оси х. Распределения показывают высокую изменчивость для обеих операций.

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

Что все это значит? В статье мы приходим к выводу, что:

Учитывая результаты использования энергии, ясно, что на устройствах с батарейным питанием как PoW, так и подписывание транзакций нецелесообразны без аппаратно-ускоренной криптографии. Более мощные устройства, такие как Raspberry Pi, способны выполнять обе операции, но мгновенные транзакции выходят за пределы их ресурсов.

В целом, IOTA не считает, что она предназначена для легких приложений IoT. Затраты на связь могут быть оптимизированы путем частичной замены эталонного протокола IOTA чем-то более эффективным, но даже достижение функциональности кошелька (т. е. возможность создавать и подписывать транзакции) является вычислительно дорогостоящим и может занять много секунд. Рассмотрим устройство IoT с небольшой батареей (скажем, 100 мАч), которая производит один «пакет» IOTA в минуту, либо с двумя подписанными транзакциями, либо с одной подписанной транзакцией с двумя фрагментами сообщения подписи. Такое устройство проработает менее 6 дней, прежде чем разрядится батарея - и это при нереалистичном предположении, что оно не делает ничего, кроме подписания транзакций IOTA!

Обсуждение

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

Возражение 1. Хэш-функция IOTA может быть аппаратно ускорена, и эти ускорители могут стать обычным явлением на устройствах IoT.

Неясно, значительно ли это повлияет на баланс в общей вычислительной мощности. Если ускорение Keccak (SHA-3) становится обычным явлением на устройствах IoT из-за некоего экономического стимула, то же самое экономичное стимулирование может также применяться к серверам. Поэтому и серверы следующего поколения, и устройства IoT следующего поколения могли бы работать с PoW намного быстрее и с меньшим энергопотреблением, оставляя общий баланс неизменным. В лучшем случае это возражение уменьшает достоверность аргумента, но не опровергает его.

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

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

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

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



No Comments

Add a Comment