Важные новости

Блокчейн Ethereum — смарт контракты сети Эфириум и адреса счетов

Как работает блокчейн Ethereum — смарт контракты и адреса счетов

Блокчейн платформа сети Ethereum

Как следует из официальной документации платформы Эфириум :

Блокчейн Ethereum – это криптографически защищённый одноэлементный механизм записи транзакций с совместно используемым состоянием.

Звучит немного запутанно, правда? Давайте попробуем разобраться.

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

В сети криптовалюты Эфириум реализована данная парадигма блокчейна, далее мы разберем ее подробно и объясним основные принципы функционирования экосистемы платформы.

Навигация по материалу:

Основные принципы блокчейна Эфириума

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

Блокчейн Эфириума

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

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

Цепочка блоков транзакций

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

Любой вычислительный узел сети (их также называют «нодами», от англ. node – узел сети), декларирующий себя в качестве майнера, может претендовать на создание и валидацию блока транзакций. Многие майнеры со всего мира одновременно пытаются создавать и валидировать блоки. Каждый майнер при записи блока в блокчейн предоставляет математическое «доказательство» (англ. proof), и это доказательство действует как гарантия: если доказательство существует, блок должен быть валидным (действительным).

Для того чтобы добавить блок к основному блокчейну, майнер должен подтвердить его раньше других, конкурирующих с ним, майнеров. Процесс валидации каждого блока путём предоставления майнерами математического доказательства называется Proof-of-Work (доказательство выполнения работы).

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

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

Ранее мы приводили определение блокчейна как одноэлементного механизма записи транзакций с совместно используемым состоянием. Из этого определения мы можем понять, что корректное текущее состояние – это единственная глобальная истина, которая должна приниматься всеми. Наличие нескольких состояний (или цепочек) разрушило бы всю систему, так как в этом случае было бы невозможно договориться о том, какое состояние сети считать истинным. Если бы цепочки блоков расходились, то на одной из них у вас могло бы быть 10 коинов, на другой – 20, а на третьей – например, 40, и не было бы возможности определить, какая цепочка является более «валидной.»

Всякий раз, когда генерируется несколько вариантов цепочек, образуется «форк» (от англ. fork – вилка, разветвление). Обычно форков стараются избегать, так как они разрушают систему и ставят пользователей перед выбором, какой цепочке они доверяют больше.

Форк (разветвление) сети блокчейна

Для того чтобы определить, какой путь в большей степени валиден и предотвратить образование нескольких цепочек, в Эфириуме используется механизм, называемый «протоколом GHOST».

  • “GHOST” = “Greedy Heaviest Observed Subtree” («Жадное и самое весомое видимое поддерево»)

Простыми словами, согласно протоколу GHOST, мы должны выбирать тот путь, на котором было выполнено наибольшее количество вычислений. Один из способов определить этот путь – по номеру последнего («листового») блока, который представляет собой общее количество блоков (не считая генезисного) на текущем пути. Чем больше номер блока, тем длиннее проделанный путь и тем выше количество усилий, затраченных майнерами для того, чтобы достичь этой точки. Используя такое рассуждение, мы можем договориться о канонической версии текущего состояния.

Протокол GHOST

Теперь, когда вы получили общее представление о том, что такое блокчейн, давайте поговорим подробнее об основных компонентах, из которых состоит система Эфириума:

  • счета (аккаунты)
  • состояние
  • газ и комиссии
  • транзакции
  • блоки
  • выполнение транзакций
  • майнинг
  • Proof-of-Work

Прежде чем мы начнём, оговорюсь, что всякий раз, когда я говорю о «хэше» чего-либо, я имею в виду хэш KECCAK-256, используемый в Эфириуме.

Адреса счетов — аккаунты сети Ethereum

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

Существует два типа счетов :

  • Счета внешних владельцев (externally owned accounts) управляются при помощи секретных ключей и не имеют ассоциированного с ними программного кода.
  • Счета контрактов управляются ассоциированным с ним программным кодом.

Два типа счетов в сети Ethereum

Адреса владельцев счетов и адреса смарт-контрактов

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

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

Принцип работы счетов владельцев и смарт-контрактов

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

Транзакции со счетов внешних владельцев в блокчейн ETH

Состояние счета

Состояние счёта, независимо от его типа, складывается из четырёх компонентов:

  • nonce: для счетов внешних владельцев, это число представляет собой количество транзакций, отправленных с адреса данного счёта. Для счетов контрактов, это количество контрактов, созданных данным счётом.
  • balance: баланс Wei для данного адреса. 1 эфир = ¹⁰¹⁸Wei.
  • storageRoot: хэш корневого узла patricia-дерева Меркла (о деревьях Меркла мы поговорим позже). Это дерево кодирует хэш содержимого хранилища данного счёта и по умолчанию пусто.
  • codeHash: хэш кода EVM (виртуальной машины Эфириума – подробнее об этом позже) для данного счёта. Для счетов контрактов, это код, который хэшируется и сохраняется как codeHash. Для счетов внешних владельцев, поле codeHash является хэшем пустой строки.

Четыре компонента состояния счета

Экосистема сети Эфириум

Итак, мы знаем, что глобальное состояние Эфириума складывается из сопоставления адресов и состояний счетов. Это сопоставление хранится в структуре данных, называемой patricia-деревом Меркла.

Дерево Меркла (также известное как trie-дерево) – это тип двоичного дерева, состоящего из множества узлов с:

  • большим количеством конечных (листовых) узлов в нижней части дерева, содержащего базовые данные;
  • рядом промежуточных узлов, где каждый узел является хэшем двух его дочерних (подчинённых) узлов;
  • одним корневым узлом, также сформированным из хэша двух своих дочерних узлов, представляющих собой вершину дерева.

Экосистема сети Эфириум - Дерево Меркла

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

Алгоритм генерирации дерева

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

В случае с Эфириумом, ключ/значение для дерева состояний отображается между адресами и ассоциированными с ними счетами, включая balance, nonce, codeHash и storageRoot для каждого счёта (где storageRoot сам также является деревом).

Ключ (значение) для дерева состояний

Та же самая trie-структура используется для хранения транзакций и квитанций (они же чеки, анг. receipt).

Точнее говоря, каждый блок имеет «заголовок», в котором хранится хэш корневых узлов трёх различных trie-структур, включая:

  1. trie-дерево состояний;
  2. trie-дерево транзакций;
  3. trie-дерево квитанций.

Заголовок блока в котором хранится хэш корневых узлов

Возможность эффективного хранения всей этой информации в деревьях Меркла в Эфириуме чрезвычайно полезна для того, что мы называем «лёгкими клиентами» или «лёгкими нодами». Не забывайте, что блокчейн поддерживается множеством нод (узлов). Говоря в общем, есть два типа нод: полные и лёгкие.

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

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

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

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

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

Распространение хэшей в дереве Меркла

Для проверки части данных любая нода может использовать «доказательство Меркла». Доказательство Меркла состоит из:

  1. фрагмента данных для проверки;
  2. корневого хэша дерева;
  3. «ветви» (всех хэшей на пути от проверяемого фрагмента данных к корню дерева).

Доказательство Меркла

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

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

«Желтая книга» Эфириума находится в свободном доступе на Github.

Как устроен блокчейн Ethereum

Внимание! Данная статья носит исключительно информационный характер и не содержит в себе рекомендаций или призывов к действию.

Статья подготовлена командой бесплатного торгового терминала CScalp. Чтобы получить CScalp, оставьте свой e-mail в форме ниже.

Главное об Ethereum

Ethereum, криптовалюта Ethereum, Ethereum 2.0, эфириум, эфириум 2.0, ETH, блокчейн Ethereum, блокчейн эфириум

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

В Ethereum фиксируется все, что происходит в сети, в режиме реального времени. Копия каждой транзакции распространяется по всей сети. Каждый узел сети (компьютер с ПО эфириума) хранит копию этой истории.

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

Газ в Ethereum – это механизм дополнительных комиссионных сборов. Газ необходим для транзакций и работы смарт-контрактов. Средняя стоимость газа постоянно меняется. В большей степени она зависит от майнеров. При перегрузке сети стоимость газа растет, при небольшой активности падает.

Каждая операция требует фиксированное количество газа. Чем сложнее контракты, тем больше газа они запрашивают. В Ethereum газ служит измерительной мерой вычислительной мощности. Газ обозначается как гвей (от англ. gwei). Один ETH равен миллиарду гвей.

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

На базе блокчейна Ethereum пользователи могут создавать собственные токены. Как правило, активы на основе эфириума – это токены стандарта ERC-20. До создания стандартного протокола ERC-20 каждый Ethereum-токен имел уникальный смарт-контракт. Совместимость и поддержка таких токенов были проблематичными, поэтому и был создан единый протокол. Токены стандарта ERC-20 можно хранить и передавать точно так же, как и эфир.

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

Как купить Ethereum

Ethereum 2.0

Ethereum 2.0 – это обновление всей сети Ethereum . Вторая версия эфириума должна обеспечить большую эффективность и масштабируемость сети. Основное отличие Ethereum 2.0 – использование механизма консенсуса Proof of Stake (PoS).

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

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

https://mining-cryptocurrency.ru/blokchejn-ethereum-smart-kontrakty/
https://fsr-develop.ru/kak-ustroen-blokchejn-ethereum

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *