Форматы кодирования
Буферы протоколов
В релизе Cosmos Stargate представлен protobuf в качестве основного формата кодирования, как для сериализации клиента, так и для сериализации состояния. Все типы модулей EVM, которые используются для состояния и клиентов (сообщения транзакций, генезис, службы запросов и т.д.), будут реализованы в виде сообщений буфера протокола.
Amino
Пакет SDK Cosmos также поддерживает устаревший формат кодирования Amino для обратной совместимости с предыдущими версиями, особенно для кодирования и подписи клиентов с помощью устройств бухгалтерской книги. Evmos не поддерживает Amino в модуле EVM, но он поддерживается для всех других модулей Cosmos SDK, которые его поддерживают.
RLP
Рекурсивный префикс длины (Recursive Length Prefix) — это алгоритм кодирования/декодирования, который сериализует сообщение и позволяет быстро восстанавливать закодированные данные. Evmos использует RLP для кодирования/декодирования сообщений Ethereum для обработки JSON-RPC, чтобы привести сообщения в соответствие с форматом Ethereum. Это позволяет кодировать и декодировать сообщения в том же формате, что и Ethereum.
Evmos vs Ethereum
В Ethereum ожидающие блоки генерируются по мере того, как это решают майнеры. Эти незавершенные блоки включают в себя незавершенные транзакции, которые выбираются майнерами на основе наивысшего вознаграждения, выплачиваемого в газе. Этот механизм существует, поскольку завершенность блока невозможна в сети Ethereum. Блоки фиксируются с вероятностной окончательностью, что означает, что транзакции и блоки с меньшей вероятностью будут возвращены по мере прохождения большего времени (и блоков).
Evmos, с этой стороны, спроектирован совершенно по-другому, поскольку нет понятия “ожидание”. Evmos использует BFT-консенсус, который обеспечивает мгновенное завершение транзакции. По этой причине Etheremint не требует механизма ожидания, так как все транзакций будут зафиксированы в следующем блоке (среднее время блокировки в цепочках Cosmos составляет ~8 секунд). Однако это вызывает несколько сбоев с точки зрения запросов, совместимых с Ethereum Web3, которые могут быть переведены в состояние ожидания.
Еще одно существенное отличие от Ethereum заключается в том, что блоки создаются валидаторами, которые включают транзакции из своего локального пула в блоки в порядке поступления. Таким образом транзакции на Evmos нельзя заказать или выбрать.
Спасибо за прочтение
При поддержке телеграмм-канала @HamsterTears