🌐 EOS.IO, техническая белая бумага (часть 2)

in #ru7 years ago (edited)

Восстановление украденных ключей

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

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

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

Детерминированное параллельное выполнение приложений

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

При использовании программного обеспечения EOS.IO организация доставки блоков в независимые потоки таким образом, чтобы они могли быть оценены параллельно - это работа производителей блоков. Состояние каждого аккаунта зависит только от доставленных ему сообщений. Расписание транзакций - это вывод производителя блоков, оно будет детерминистически выполнено, но процесс его создания не должен быть детерминистическим. Это означает, что производителям блоков можно использовать параллельные алгоритмы для составления расписания транзакций.

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

Минимизация коммуникационной задержки

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

Блок
      
    Циклы (последовательные)
           
         Потоки (параллельные)
                
            Транзакции (последовательные)
                     
                 Сообщения (последовательные)
                          
                      Получатель и уведомленные аккаунты (параллельные)

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

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

Только читающие сообщение обработчики

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

Атомарные транзакции с несколькими аккаунтами

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

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

Частичная оценка состояния блокчейна

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

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

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

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

Субъективное планирование наилучших результатов

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

Программное обеспечение EOS.IO предусматривает, что на уровне сети все транзакции оплачиваются фиксированной стоимостью пропускной способности, независимо от того, занимает ли их выполнение .01 ms или полные 10 ms. Однако каждый производитель блоков, использующий программное обеспечение, может рассчитать потребление ресурсов, используя свой собственный алгоритм и измерения. Когда производитель блоков делает вывод, что транзакция или аккаунт потребляет непропорциональное большое количество вычислительной мощности, он попросту отказывается от транзакции, когда производит собственный блок; тем не менее, он всё равно обработает транзакцию, если другие производители блоков сочтут ее действительной.

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

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

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

Модель токена и использование ресурсов

Все блокчейны ограничены в ресурсах и требуют от системы предотвращения нарушений. В программном обеспечении EOS.IO существует три широких класса ресурсов, которые потребляются приложениями:

  1. Пропускная способность и хранение логов (диск);
  2. Вычисления и вычислительное отставание (CPU);
  3. Хранилище состояния (RAM)

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

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

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

Производители блоков публикуют свой доступный объем пропускной способности, вычислений и состояния. EOS.IO позволяет каждому аккаунту потреблять процент от доступной мощности, пропорциональный количеству токенов, удерживаемых в заключенном 3-дневном контракте.

Например, если запущен блокчейн, основанный на программном обеспечении EOS.IO, и если аккаунт держит 1% от общего количества токенов, распространяемых в соответствии с этим блокчейном, тогда этот аккаунт обладает потенциалом использовать 1% емкости хранилища состояния.

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

Объективные и субъективные измерения

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

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

Бизнес платит

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

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

Программное обеспечение EOS.IO не требует, чтобы его пользователи платили непосредственно блокчейну за его использование и, следовательно, не ограничивает и не препятствует бизнесам в определении своей стратегии монетизации продуктов.

Делегирование мощностей

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

Отделение стоимости транзакции от ценности токена

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

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

Стоимость хранения состояния

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

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

Вознаграждение за блок

Программное обеспечение EOS.IO вознаграждает производителя блоков новыми токенами каждый раз, когда он производит блок. Количество созданных токенов определяется средней желаемой платой, опубликованной всеми производителями блоков. В настройках программного обеспечения EOS.IO можно задать ограничение на вознаграждение производителей, чтобы общее годовое увеличение запаса токенов не превышало 5%.

Полезные сообществу приложения

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

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

Управление

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

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

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

Замораживание аккаунтов

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

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

Программное обеспечение EOS.IO формализует это влияние, предлагая процесс замораживания аккаунта при наличии 17 из 21 голоса активных производителей. Если производители злоупотребляют властью, они могут быть устранены, и аккаунт будет разморожен.

Изменение кода аккаунта

Когда всё остальное не возымело результата и “неостановимое приложение” продолжает действовать в непредсказуемой манере, программное обеспечение EOS.IO позволяет производителям блоков заменить код аккаунта без хардфорка всего блокчейна.
Подобно процессу заморозки аккаунта, эта замена кода требует 17 из 21 голоса избранных производителей блоков.

Конституция

Программное обеспечение EOS.IO позволяет блокчейнам установить peer-to-peer условия использования или юридически обязывающий для подписавших его пользователей договор, называемый “конституцией”.

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

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

Обновление Протокола и Конституции

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

  1. Производители блоков предлагают изменения конституции и получают 17/21 голосов одобрения.
  2. Производители блоков поддерживают одобрение 17/21 в течение 30 дней подряд.
  3. Все пользователи обязаны подписывать транзакции, используя хэш новой конституции.
  4. Производители блоков вносят соответствующие изменения в исходный код, чтобы отразить изменения конституции, и предлагают их блокчейну, используя хэш гита изменений кода.
  5. Производители блоков поддерживают одобрение 17/21 в течение 30 дней подряд.
  6. Изменения в коде вступают в силу 7 дней спустя, давая всем полным узлам одну неделю для обновления после ратификации исходного кода.
  7. Все узлы, не перешедшие на новый код, автоматически отключаются.

По умолчанию в конфигурации программного обеспечения EOS.IO процесс обновления блокчейна для добавления новых функций занимает от 2 до 3 месяцев, а время обновления для исправления некритичных ошибок, не требующих изменения конституции, составляет от 1 до 2 месяцев.

Экстренные изменения

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

Скрипты и виртуальные машины

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

Определяемые схемой сообщения

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

Определяемая схемой база данных

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

Отделение аутентификации от приложения

Для максимального использования возможностей распараллеливания и минимизации вычислительного долга, связанного с регенерацией состояния приложения из журнала транзакций, EOS.IO разделяет логику проверки на три раздела:

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

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

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

Независимая архитектура виртуальной машины

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

Web Assembly (WASM)

Web Assembly является новым веб-стандартом для построения высокопроизводительных веб-приложений. С несколькими небольшими изменениями Web Assembly может быть сделан детерминистическим и стать песочницей. Преимущество Web Assembly - это широкая поддержка со стороны индустрии и то, что он позволяет разработку контрактов на знакомых языках, таких как С или C++.

Разработчики Эфириума уже начали модифицировать Web Assembly для предоставления соответствующей песочницы и детерминизма в их Ethereum flavored Web Assembly (WASM). Этот подход может быть легко адаптирован и интегрирован в программное обеспечение EOS.

Виртуальная машина Ethereum (EVM)

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

Межблокчейновая связь

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

Доказательство Меркла для проверки легкого клиента(Light Client) (LCV)

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

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

Биткоин поддерживает подтверждение транзакций, предполагая, что все узлы имеют доступ к полной истории заголовков блоков, что составляет 4 Мб заголовков в год. С 10 транзакциями в секунду действительное доказательство требует около 512 байт. Это хорошо работает на блокчейне с 10-минутным интервалом между блоками, но это больше не является “легким” для блокчейнов с 3-секундным интервалом.

Программное обеспечение EOS.IO разрешает пользоваться легковесными доказательствами каждому, кто имеет какой-либо необратимый заголовок блока после точки, где была включена транзакция. Используя хеш-связанную структуру, изображенную ниже, можно доказать существование любой транзакции с доказательством, занимающим менее 1024 байт. Если предполагается, что проверяющие узлы шли одновременно со всеми заголовками блоков весь последний день (2Мб данных), то для подтверждения этих транзакций потребуется только доказательство длиной 200 байт.

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

Когда приходит врем проверить доказательства на других цепях, можно применить множество оптимизаций времени/пространства/пропускной способности. Отслеживание всех заголовков блоков (420 Мб в год) будет сохранять размер доказательств небольшим. Отслеживание же только последних заголовков может предложить компромисс между минимальным долгосрочным хранением и размером доказательств. Аналогично блокчейн может использовать ленивый подход к оценке, где он запоминает промежуточные хэши прошлых доказательств. Новые доказательства должны содержать только ссылки на известное разреженному дереву. Точнее, используемый подход будет обязательно зависим от процента чужих блоков, которые включают транзакции, на которые ссылается доказательство Меркла.

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

Задержка связи между блокчейнами

Когда идет коммуникация с другим блокчейном, производители блоков должны ждать до тех пор, пока не будет 100% уверенности, что эта транзакция была необратимо подтверждена другим блокчейном, прежде чем принять ее в качестве действительных входных данных. При использовании программного обеспечения EOS.IO и алгоритма DPOS с 3-секундными блоками и 21 производителем это займет около 45 секунд. Если производители блоков цепи не станут ждать необратимости, то это как если бы биржа приняла депозит, который впоследствии был отменен, что могло бы повлиять на действительность консенсуса цепи.

Доказательство целостности

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

Заключение

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


Часть 1


Свежие новости в Телеграм: t.me/EOS_RU


Переведено @rusteemitblog

Оригинал поста: ЗДЕСЬ


Поддержите witness blockchained на Steem