Как работают транзакции Ethereum (объясняется так, будто вам 5 лет)
3 сентября 2024 г.В этой статье вы узнаете:
- Почему существует Ethereum
- «Преимущества» Ethereum перед Bitcoin.
- Как работают транзакции Ethereum.
Молодой российский программист,Виталик Бутерин, который был активным участником сообщества Bitcoin и соучредителем журнала Bitcoin Magazine, начал сомневаться в ограничениях Bitcoin.
Он чувствовал, что
Основная функциональность Bitcoin, даже без дополнительных функций или обновлений, поддерживает базовую форму смарт-контрактов, которые позволяют отправлять и получать Bitcoin.
Помимо этого, смарт-контракт Bitcoin может позволить более продвинутые транзакции, такие как те, которые требуют множественных подписей (доказательств права собственности) для одобрения или позволяют обменивать Bitcoin на другие криптовалюты. Однако Виталик все еще верил в этопрорывбыл ограничен.
Ограничения языка сценариев Bitcoin
Отсутствие универсальной вычислительной способности
Будучи программистом, Виталик обнаружил, что в скриптовом языке Bitcoin отсутствуют циклы — возможность легко выполнять повторяющиеся действия. Это ограничение введено для предотвращения бесконечных циклов, которые могут нарушить обработку транзакций. Хотя программисты могут обойти это, вручную повторяя код, это делает скрипты намного длиннее. Например, создание альтернативного метода подписи может потребовать написания одного и того же шага умножения 256 раз в коде. Это удлиняет код и также требует много времени.
Слепота к ценностям
Язык сценариев Bitcoin не может контролировать точную сумму Bitcoin, которая может быть выведена из транзакции. Например, если два человека вкладывают по $1000 Bitcoin в контракт, и через 30 дней один должен получить обратно $1000, а другой — остаток, сценарий не может справиться с этим напрямую. Обычно вам нужен внешний источник информации (оракул), чтобы определить стоимость Bitcoin, но система Bitcoin не позволяет легко разделять суммы. Чтобы обойти это, вам нужно создать несколько кусков Bitcoin в разных суммах и позволить оракулу решить, какой кусок достанется каждому человеку. Этот подход довольно сложен.
Ограниченный вариант использования
Изначально скрипты Bitcoin не могли справиться с более сложными задачами, такими как управление многошаговыми контрактами, создание децентрализованных организаций или установка лимитов на вывод средств.
Слепота к данным
Неспособность скриптов Bitcoin просматривать или использовать важные данные блокчейна, такие как временная метка, хэш предыдущего блока или другие данные, затрудняет создание определенных приложений, поскольку они не могут получить доступ к контекстным данным, которые предоставляют эти элементы.
Введите: Эфириум
Учитывая перечисленные выше ограничения, Виталик Бутерин решил создать блокчейн Ethereum — платформу, которая переосмысливает криптовалюту, позволяя разрабатывать децентрализованные приложения на блокчейне с помощью смарт-контрактов.
Отправка Эфириума
Чтобы отправить Ethereum на кошелек, вам необходимо:
- Адрес кошелька получателя.
- Подпись, идентифицирующая вас как отправителя.
- Сумма эфира (токенов Ethereum), подлежащая переводу получателю.
- Некоторая сумма за комиссию за газ. Каждый раз, когда вы отправляете Ethereum, вам нужно заплатить небольшую комиссию сети. Эта комиссия, называемая «газом», гарантирует, что ваша транзакция будет обработана. Комиссия варьируется в зависимости от того, какзанятыйсеть есть.
Получив адрес кошелька, ETH и свой закрытый ключ, вы создаете и подписываете транзакцию. Затем транзакция отправляется в сеть Ethereum, где она подтверждается и добавляется в блокчейн.
Понимание «сообщений» в Ethereum
В Ethereum контракты могут общаться друг с другом, отправляя так называемые «сообщения». Эти сообщения похожи на транзакции, но вместо того, чтобы исходить от человека (например, от вас или меня), они исходят от программы, которая уже запущена в блокчейне Ethereum.
Сообщения создаются, когда контракт использует определенную команду для «вызова» другого контракта. Когда это происходит, контракт-получатель запускает свой код на основе инструкций в сообщении.
Простая схема взаимодействия контрактов в Ethereum:
- Контракт отправляет сообщение получателю — контракту, который получает сообщение.
- Сообщение может включать в себя некоторое количество Ethereum (ETH), которое будет отправлено вместе с ним, аналогично отправке денег вместе с запиской.
- Дополнительные инструкции или информация в зависимости от того, что предполагается сделать в контрактах.
- Theтопливо(газ), используемый для запуска сообщений, ограничен. Таким образом, если один контракт отправляет сообщение другому, квота на газ должна покрывать весь процесс — от первого контракта, запускающего свой код, до второго контракта, выполняющего свои задачи. Для более четкого понимания см. пример ниже 👇🏻
- Контракт Аотправляет сообщение Контракту Б для выполнения его задачи, а также 400 единиц газа.
- Контракт Бначинает выполнять свой код, используя 400 единиц газа.
- ЕслиКонтракт Биспользует 300 единиц газа, успешно выполняет свою задачу, и остается 100 единиц газа.
- ЕслиКонтракт Биспользует более 400 единиц газа, у него закончится газ и его задача будет провалена.
В чем разница между сообщением и транзакцией?
Транзакция создается лицом — отправителем.
Сообщение похоже на транзакцию, но оно создается посредством контракта.
Функция перехода состояний в Ethereum
Перед тем, как транзакция на Ethereum будет одобрена, вот небольшой взгляд на то, что происходит за кулисами:
Ethereum проверяет, что транзакция правильно отформатирована, что подпись (цифровой отпечаток пальца) действительна и что она соответствует учетной записи отправителя. Если что-то не так, транзакция отклоняется.
Комиссия за транзакцию рассчитывается на основе того, сколькоработатранзакция потребует. Эта комиссия вычитается из счета отправителя. Если у отправителя недостаточно денег для оплаты комиссии, транзакция отклоняется.
- Указанное количество Ethereum (ETH) перемещается со счета отправителя на счет получателя. Если получатель — смарт-контракт (автоматизированная программа), блокчейн Ethereum будет запускать код контракта до тех пор, пока он не будет завершен или не закончится газ.
- Если что-то пойдет не так, например, у отправителя не будет достаточно средств или у контракта закончится газ, Ethereum отменит транзакцию и вернет счета в прежнее состояние, за исключением того, что отправителю все равно придется платить комиссию.
- Если все прошло хорошо, весь оставшийся газ возвращается отправителю, а майнеру (тому, кто обрабатывал транзакцию) выплачивается комиссия за использованный газ.
Как проверяются блоки в Ethereum
В отличие от Bitcoin, Ethereum используетдоказательство доликак его консенсусный механизм для проверки блоков. До 2022 года Ethereum использовал доказательство работы для проверки блоков, что требует больше энергии, чем доказательство доли.
Доказательство работы требует от участников блокчейна решения сложных головоломок до одобрения блока, в то время как доказательство доли владения дает полномочия по проверке участникам с крупными долями в токене блокчейна.
Чтобы было легче запомнить, просто представьте, что доказательство работы — это необходимость выполнить определенную работу, а доказательство доли — это подтверждение того, что вы поставили токены на ставку, прежде чем вам будет разрешено принимать важные решения.
Вот как работает доказательство доли в Ethereum:
Вместо того, чтобы майнеры решали головоломки, чтобы предложить новые блоки, Ethereum использует валидаторов, которые поставили свои ETH в качестве залога. Валидаторы выбираются случайным образом, чтобы предложить новые блоки. Этот выбор не полностью случаен, но зависит от количества ETH, которое они поставили.
Когда выбираются валидаторы, они предлагают новый блок, включающий транзакции и другие важные данные. Затем этот блок транслируется в сеть.
- Затем другие валидаторы в сети проверяют блок, чтобы убедиться в его валидности. Они проверяют правильность транзакций, правильность порядка блока и его соответствие всем правилам протокола. Если большинство валидаторов согласны, блок добавляется в блокчейн.
- Чтобы блок считался окончательным и необратимым, он должен быть подтвержден подавляющим большинством (двумя третями) валидаторов. Как только это произойдет, он станет частью постоянной записи в блокчейне Ethereum, и его изменение потребует огромного количества застейканных ETH, что делает это практически невозможным.
- Валидаторы, которые правильно проверяют блоки, вознаграждаются большим количеством ETH. Однако, если они действуют нечестно или совершают ошибки (например, пытаются проверить несколько конфликтующих блоков), они могут потерять часть своих застейканных ETH через процесс, называемый слэшингом.
Виртуальная машина Ethereum (EVM)
Смарт-контракты обычно пишутся в строках кода как программы или языки, которые сеть Ethereum полностью понимает. Этот язык называется кодом виртуальной машины Ethereum. Он содержит инструкции о том, что должен делать контракт при выполнении действия.
Сеть Ethereum выполняет эти инструкции одну за другой, начиная с самого начала и проходя каждый шаг до тех пор, пока не завершит работу или не столкнется с проблемой.
В коде есть три основных места, где он может хранить и использовать данные:
- Куча: Представьте это как стопку тарелок — когда вы добавляете тарелку (данные), она оказывается сверху. Когда вы берете тарелку, вы сначала берете верхнюю. Это временное хранилище.
- Память: Более гибкая область, в которой код может временно хранить данные во время выполнения.
- Хранилище: Долговременная память для контракта. Все, что здесь хранится, остается даже после того, как контракт завершается.
Код EVM также может использовать информацию из входящей транзакции, например, кто ее отправил, сколько Ethereum (ETH) включено и любые дополнительные данные, отправленные вместе с ней. После того, как контракт запустится, он может отправить обратно некоторые данные в качестве результата, например, ответ на вопрос или подтверждение того, что задача выполнена.
Ethereum против Bitcoin
- Блоки Ethereum хранят как список транзакций, так и последнее состояние сети (например, балансы счетов и данные смарт-контрактов), тогда как блоки Bitcoin хранят только список транзакций. Блокчейн Ethereum отслеживает все, что происходит в сети.
- деревья Мерклаобычно используются в Bitcoin для проверки транзакций, в то время как Ethereum используетПатриция деревьядля управления его состоянием, включая остатки на счетах и хранение контрактов.
- Биткоин использует доказательство работы для проверки блоков, тогда как Эфириум использует доказательство доли.
Оригинал