Ethereum можно смело назвать системой состояния транзакций. Это некий механизм, который получает вводную информацию, анализирует ее, и на ее основе преобразуется в новое состояние. Здесь все стартует с «изначального» или «нулевого» состояния – когда все процессы, связанные с транзакциями, еще не начали происходить в блокчейне. В тот момент, когда они заработают, первоначальное состояние сменится на конечное, которое, в свою очередь, в любой момент отображает текущее состояние Ethereum.
Звучит сложно? На деле же все намного проще.
Состояние Эфириума = миллионам транзакций, собранным в «блоки». Один такой блок вмещает в себя сразу ряд транзакций и соединен с предыдущим. Чтобы перейти из одного состояния в следующее транзакция обязана быть подтверждена. Иными словами, ей нужно пройти процесс валидации, известный также как майнинг.
Глобальное же «общее состояние» Эфириума состоит из миллионов мелких объектов – учетных записей (аккаунтов). Они способны взаимодействовать друг с другом путем отправки сообщений. К каждой учетной записи привязано ее состояние, а также личный адрес, состоящий из 20 байтов. Адрес в Ethereum представляет собой 160-битный идентификатор, задействованный для подтверждения аккаунта.
Учетные записи бывают двух видов:
- Внешние УЗ (EOA), управляемые благодаря закрытым ключам, не связанным с каким-либо кодом;
- Контрактные УЗ, контролируемые конкретным кодом, который указан в условии контракта, с которым они связаны.
Разница между ними состоит в том, что внешняя УЗ позволяет отправлять сообщения не только другим внешним УЗ, но и контрактным. С этой целью пользователь самостоятельно создает новую транзакцию в сети, задействовав закрытый ключ, а сообщение – это лишь значение для передачи. Контрактная УЗ, в свою очередь, не позволяет самостоятельно создавать новые транзакции 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
Использование технологии Plasma для масштабирования Ethereum
© Coin Post, 2017-2019. Все материалы данного сайта являются объектами авторского права. Запрещается копирование, распространение (в том числе, путем копирования на другие сайты и ресурсы в Интернете с указанием источника) или любое иное использование информации без предварительного согласия правообладателя.