Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
yuma-yasivelt
7 лет назад

Как работает Эфириум: объяснение алгоритмов работы

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

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

Все еще не понятно? В этой публикации дается объяснение, как Эфириум функционирует на техническом уровне, без сложных математических или страшно выглядящих формул. Даже если вы не программист, я надеюсь, что вы по крайней мере, поймете суть технологии. Если некоторые части кажутся слишком техническими и трудно поддаются восприятию, это абсолютно нормально! Нет необходимости понимать каждую мелочь. Я рекомендую просто сосредоточиться на понимании вещей на широком уровне.

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

Определение блочной цепи Эфириум

Блок-цепь - это «криптографически безопасная транзакционная однопользовательская машина с общим состоянием». Слишком сложно? Давайте разделим на части.

Cryptographically secure «Криптографически безопасный» означает, что создание цифровой валюты обеспечивается сложными математическими алгоритмами, которые невозможно сломать. То есть систему невозможно обмануть или сломать (например, создать поддельные транзакции, удалять транзакции и т. д.

Transactional singleton machine «Транзакционный синглтон-машина» означает, что существует один канонический экземпляр машины, ответственный за все транзакции, создаваемые в системе. Другими словами, есть одна глобальная истина, в которую каждый верит

With shared-state «С общим состоянием» означает, что состояние, хранящееся на этом компьютере, является общим и открытым для всех.
Эфириум реализует эту парадигму блока.

Объяснение парадигмы алгоритма Эфириума

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

![1-Ethereum-ICO-Cryogen-Blockchain.png]()

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

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

![2-Ethereum-ICO-Cryogen-Blockchain.png]()

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

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

Чтобы блок был добавлен в основную блок-цепь, майнер должен доказать это быстрее, чем любой другой конкурент. Процесс проверки каждого блока при помощи майнера дает математическое доказательство, которое называется «proof of work» (доказательство работы).

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

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

Ранее мы определили блок-цепочку как транзакционную как машину «machine with shared-state» с общим состоянием. Используя это определение, мы можем понять, что правильное текущее состояние - это единственная глобальная истина, которую каждый должен принять. Наличие нескольких состояний (или цепей) разрушило бы всю систему, потому что было бы невозможно договориться о том, какая транзакция правильной.

Если бы цепи могли расходятся, вы могли бы иметь 10 монет на одной цепочке, 20 на другой и 40 на третей. В этом случае не было бы способа определить, какая цепь валидная «действительная».

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

![3-Ethereum-ICO-Cryogen-Blockchain.png]()

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

“GHOST” = “Greedy Heaviest Observed Subtree”

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

Если бы цепи могли расходятся, вы могли бы иметь 10 монет на одной цепочке, 20 на другой и 40 на третей. В этом случае не было бы способа определить, какая цепь валидная «действительная».

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

![4-Ethereum-ICO-Cryogen-Blockchain.png]()

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

  • счета
  • государство
  • газ и сборы
  • операции
  • блоки
  • исполнение транзакции
  • добыча
  • доказательство работы

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

Счета

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

Существует два типа учетных записей:

  1. Внешние учетные записи, которые контролируются закрытыми ключами и не имеют никакого кода, связанного с ними.
  2. Контрактные счета, которые контролируются их стандартным и связанным с ними кодом.
![6-Ethereum-ICO-Cryogen-Blockchain.png]()

Внешние счета и счета по контракту

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

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

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

![7-Ethereum-ICO-Cryogen-Blockchain.png]()

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

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

Состояние учетной записи состоит из четырех компонентов, которые присутствуют независимо от типа учетной записи:

  1. nonce: Если учетная запись является внешней учетной записью, это число представляет собой количество транзакций, отправленных с адреса учетной записи. Если учетная запись является учетной записью контракта, то nonce - это количество контрактов, созданных учетной записью.
  2. баланс: количество Вэй, принадлежащих этому адресу. В эфире есть ¹⁰¹⁰ Wei.
  3. storageRoot: хэш корневого узла дерева Merkle Patricia (позже мы объясним деревья Меркле). Это дерево кодирует хэш содержимого хранилища этой учетной записи и по умолчанию пуст.
  4. codeHash: хэш EVM (Ethereum Virtual Machine - подробнее об этом позже) код этой учетной записи. Для контрактных счетов это код, который хэшируется и сохраняется как код. Для внешних учетных записей поле codeHash является хешем пустой строки.
![8-Ethereum-ICO-Cryogen-Blockchain.png]()

Публикация адаптирована на русский по материалам Preethi Kasireddy. Огромное спасибо за такой подробный обзор. Команда ICO CryoGen под управлением компании «КриоРус» планирует пригласить Preethi Kasireddy для участия в своем проекте, объединяющим две инновационные технологии крионику и блокчейн.

171
0.000 GOLOS
На Golos с September 2017
Комментарии (3)
Сортировать по:
Сначала старые