3 месяца назад

Как работают транзакции Ethereum на основе учетных записей

Транзакции Эфириум
Транзакции Эфириум

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

Как работают транзакции Ethereum
Как работают транзакции Ethereum

Звучит сложно? На деле же все намного проще.

Состояние Эфириума = миллионам транзакций, собранным в «блоки». Один такой блок вмещает в себя сразу ряд транзакций и соединен с предыдущим. Чтобы перейти из одного состояния в следующее транзакция обязана быть подтверждена. Иными словами, ей нужно пройти процесс валидации, известный также как майнинг.

Подтверждение транзакций в Ethereum
Подтверждение транзакций в Ethereum

Глобальное же «общее состояние» Эфириума состоит из миллионов мелких объектов – учетных записей (аккаунтов). Они способны взаимодействовать друг с другом путем отправки сообщений. К каждой учетной записи привязано ее состояние, а также личный адрес, состоящий из 20 байтов. Адрес в Ethereum представляет собой 160-битный идентификатор, задействованный для подтверждения аккаунта.

Учетные записи бывают двух видов:

  • Внешние УЗ (EOA), управляемые благодаря закрытым ключам, не связанным с каким-либо кодом;
  • Контрактные УЗ, контролируемые конкретным кодом, который указан в условии контракта, с которым они связаны.
Виды учетных записей в Эфириум
Виды учетных записей в Эфириум

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

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

Модель счетов Ethereum
Модель счетов Ethereum

Модель UTXO или модель учетных записей

В то время, как модель UTXO (Unspent Transaction Output – неизрасходованных выходных данных), примененная в биткоине, ограничивает возможность выполнения смарт-контрактов, команда Ethereum использует модель на основе учетных записей, подключив к ней не только смарт-контракты, но и огромное количество децентрализованных программ (dApps).

Для написания смарт-контрактов в сети Эфириума разработчики применили Тьюринг-полный (с возможностью реализовать любые вычислительные функции) язык программирования Solidity, который частично напоминает JavaScript.

Преимущества модели UTXO:

  • Высокая степень конфиденциальности использования новых адресов для каждой транзакции – очень сложно отыскать владельца монет;
  • Легче масштабировать через шардинг.

Недостатки модели UTXO:

  • Блокчейн слаб с точки зрения «программируемости» – сложные вычисления становятся практически невозможными;
  • С той же скоростью, с которой увеличивается объем входных данных, растет нагрузка на вычислительные ресурсы и память в блокчейне.

Преимущества модели учетных записей:

  • Экономия огромного пространства – каждая транзакция Ethereum требует одну ссылку и одна подпись выдает лишь один вывод. Например, транзакция может «весить» 100 байтов в Ethereum против 200-250 байтов в Bitcoin;
  • Простота – более интуитивна, как для пользователей, так и для создателей смарт-контрактов со сложными скриптами, особенно тех, которые требуют информацию от нескольких сторон;
  • Эффективность – требует для каждой транзакции Эфириум лишь подтверждение факта наличия на счету отправителя достаточной суммы для оплаты транзакции.

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

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

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

Но стоит учесть, что nonce, описанный здесь – это не Proof-of-Work nonce в Эфириуме, являющийся абсолютно случайным числом.

Естественно, идеальной модели пока не существует. Каждая из них имеет свои недостатки и преимущества. Если в будущем и появится «идеальная модель» проведения транзакций, то она так или иначе будет содержать в себе элементы, как UTXO, так и модели учетных записей, поскольку только таким образом можно будет взять лучшие наработки обеих и эффективно задействовать их.


Читайте также:

Команды, работающие над Ethereum 2.0 – будущее Serenity

Виды хакерских атак на блокчейн-сеть и криптовалюты. Часть 1

Использование технологии Plasma для масштабирования Ethereum


© Coin Post, 2017-2019. Все материалы данного сайта являются объектами авторского права. Запрещается копирование, распространение (в том числе, путем копирования на другие сайты и ресурсы в Интернете с указанием источника) или любое иное использование информации без предварительного согласия правообладателя.