Основные принципы работы IOTA

Distributed LabBlog in RussianОсновные принципы работы IOTA

IOTA это цифровая валюта для интернета вещей, разработка которой ведется с начала 2015 года. Она не имеет блокчейна, вместо блоков в цепочки объединяются транзакции, образуя DAG (directed acyclic graph). Эмиссия в системе одноразовая и централизованная. Существует самая первая транзакция в системе — порождающая (genesis), где создатель присвоил себе все монеты системы. Всего было создано 2,779,530,283,277,761 монет IOTA, после чего, в ходе краудсейла с ноября по декабрь 2015 года были проданы 100% всех монет. Часто их учет ведется в единицах MIOTA, где 1 MIOTA это 1,000,000 IOTA. Каждая следующая транзакция в системе требует от участника доказательства проделанной работы и подтверждения двух предыдущих транзакций. Таким образом все транзакции в системе объединяются в сложную цепочку транзакций, где каждая следующая ссылается на определенные две предыдущие и таким образом повышает степень их подтвержденности. Такой механизм связи транзакций разработчики назвали Tangle.

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

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

IOTA имеет ряд функций, которые уникальны из-за архитектуры самой валюты:

  • Масштабируемость — может обеспечить высокую пропускную способность благодаря параллельной верификации без ограничений по количеству транзакций за единицу времени;
  • Высокий уровень децентрализации — отсутствие отдельных майнеров, вместо них каждый участник сети, осуществляющий транзакцию, активно участвуя в консенсусе, таким образом, участники Tangle образуют более децентрализованную систему, чем участники Blockchain;
  • Устойчивость к квантовым компьютерам — задействована другая хеш-функция (Curl), которая использует тернарную систему исчисления и является устойчивой к квантовым вычислениям;
  • Отсутствие комиссий — нет транзакционных сборов.

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

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

IOTA, Low Load and High Load

В отличии от Blockchain Tangle может содержать конфликтующие транзакции, а всем узлам сети не обязательно иметь одинаковую копию Tangle. Главные задачи полного узла сети следующие:

  • Транслировать транзакции с корректным PoW и электронной подписью;
  • Корректно выбирать транзакции для подтверждения при создании новой (tip selection algorithm);
  • Определять подтверждена ли транзакция (подтверждена если ее продолжают косвенно подтверждать новые транзакции), это проверяется путем повторного запуска tip selection algorithm.

Выбор предыдущих двух транзакций (tip selection algorithm), основан на алгоритме Monte Carlo Random Walk. IOTA использует это алгоритм как отдельную зависимость, подключение альтернативных алгоритмов также возможно. Транзакция в сети IOTA считается подтвержденной если она набрала пороговое количество транзакций, которые прямо или косвенно подтверждают ее, при этом все подтверждающие транзакции были выбраны в соответствии с tip selection algorithm. Если существуют две конфликтующие транзакции (например, попытка двойной траты), то повторно запускается tip selection algorithm и сравнивается правильность выбора транзакций для подтверждения для этих двух случаев — правильной считается та транзакция, которую в большей части случаев подтверждали в соответствии с алгоритмом.

Также существует и узкий клиент сети, он выполняет формирование транзакций, заверение их электронной подписью и доказательство проделанной работы. Две транзакции для подтверждения, а также информацию об уровне подтвержденности своих транзакций узкий клиент запрашивает у полного узла сети. В этом случае узкий клиент должен доверять полному узлу (в отличии от Bitcoin SPV node). Стоит отметить, что средний размер транзакции в IOTA 10 KiB, это в десятки раз больше чем размер транзакции в Биткоине 500 B.

Текущая реализация Tangle в IOTA требует наличия доверенной стороны — координатора (the coordinator), для обеспечения надежности. Поскольку, предполагается, что текущая версия не способна работать в открытой среде, образуя полностью распределенную одноранговую сеть. Планы по развитию IOTA включают избавление от необходимости доверенной стороны (координатора), предполагается такая работа сети, что ни один узел не имеет представления о полном состоянии Tangle. В текущей бета-версии The Coordinator делает полный обзор и контроль всех транзакций в сети, а остальные узлы ориентируются на него. Таким образом The Coordinator является временным центральным органом необходимым для защиты от атак, который управляется сообществом IOTA.

Illustration by Katerina Krashtapuk
Bohdan Skriabin
About the author

Cryptographer & analyst