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

Всё об Ethereum простым языком

 

Ethereum – это ТОП-2 блокчейн-платформа в мире. Но в технологическом плане, Ethereum можно назвать самым интересным проектом, из всех существующих.Bitcoin – это стартовая точка. Этот проект не просто система для перевода денег, Bitcoin – это новейший способ организации сети, где гарантии подкреплены математикой, а не третьими лицами. Таким образом, появился блокчейн, представляющий из себя список, подкрепленный математикой. Он гарантирует, что данные, записанные в нём, не могут быть удалены или подделаны.Идея Ethereum берёт своё начало из блокчейна. Создатели проекта использовали идею и с её помощью начали решать более широкий спектр задач. Таким образом, они гарантируют не только подлинность денежных переводов, но и выполнение всех условий, прописанных в сделке.Сделка – это любая операция, созданная по модели If This Then That (если это, то то). Пример такой сделки: "Если ты создашь сайт, то получишь мои деньги".Но гарантий, что условия будут выполнены – никогда нет. Вы можете создать сайт, показать его заказчику, а он просто-напросто кинет вас.Предприниматели придумали решение этой проблемы. И называется оно "контракты". Юристы составляют контракт, закрепляют его печатями, после чего он подписывается обеими сторонами. Если условия сделки не выполнены, то контракт можно отнести в суд, который накажет нарушившую сторону.Проблему доверия решает технология блокчейна. А создатели Ethereum усовершенствовали процесс и разработали смарт-контракты.

Немного теории и примеров

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

  • Подписать договор с прописанными паспортными данными и обязанностями сторон.
  • Привлечь третьих лиц, которые возьмут комиссию.

Но куда эффективнее использовать систему, которая действительно гарантирует результат. Алгоритм будет гарантировать, что все условия сделки будут выполнены. Например, предоплата. Алгоритм проверит выполнение условий сделки и не позволит вам снять деньги с виртуального кошелька, а арендодателю подсунуть неправильный адрес.Подобный набор условий – это обычный смарт-контракт. В сети Ethereum исполнение смарт-контракта гарантировано блокчейном. Вы можете создать в блокчейне Ethereum транзакцию с условием: “Я плачу 5000 рублей, но если меня обманут, то деньги должны быть возвращены”. Этот контракт будет невозможно подделать.Ethereum добавил возможность создавать условия. Подобный смарт-контракт реализован на языке Solidity, который чем-то напоминает JS.Благодаря такой системе можно создать единый смарт-контракт для каждого, кто хочет снять помещение. Прописать скидки, зависимость стоимости от сезона и т.д. Человеку достаточно прислать средства на виртуальный кошелёк и получить код от квартиры.Код контракта можно найти на GitHub. И после настроить его под свой конкретный случай.Языки, которые используются при создании смарт-контрактов значительно упрощены, но позволяют создавать любую логику, подвергаемую программированию. В таких смарт-контрактах есть и переменные, и функции, и даже условия с циклами. Более того, можно найти классы и наследование.Подобные смарт-контракты могут быть созданы для любых задач.Как исполняются смарт-контрактыEthereum имеет циклическую зависимость многих элементов, а смарт-контракты обладают некоторыми ограничениями, относящимися к особенностям сети Ethereum.Поэтому для начала следует разобраться в смарт-контрактах.Смарт-контракт – это код, чей результат исполнения будет навсегда зафиксирован в блокчейне.Контракт может быть вызван точно так же, как и функция. При помощи транзакции в сети на адрес контракта. В результате вы получите действие либо сообщение об ошибке.Смарт-контракты невозможно создать на любом ЯПе. Потому что:

  • Каждая операция должна иметь возможность быть забытой или получить откат изменений. При вызове функции смарт-контракта все майнеры выполняют код функции, чтобы включить её в собственный блок. Но блок может получить только один код, остальные должны будут откатить изменения.
  • Если вы сложите два числа на компьютере, то эту операцию можно легко удалить и забыть. Но если произойдёт HTTP-запрос, то операцию будет невозможно обратить. А значит, что каждый майнер сделает этот HTTP-запрос со своего компьютера. В результате сервер с сайтом падут.
  • Выполненные операции в смарт-контракте оплачиваются. А оплачивают их те, кто вызывают операции. Это нужно для того, чтобы устройства майнеров не висли от сложных вычислений.

В качестве оплаты в сети Ethereum используется Gas. Газ оплачивает процессоры майнеров, но реальные деньги платят только тому, кто нашёл блок.Операции в виртуальной машине имеют свою цену. Например, n-ое количество денег за запуск строки кода.Код смарт-контрактов работает только с данными и вызовами внутри ETH. Функция может быть вызвана из других смарт-контрактов.Все, кто захотят вызвать функцию смарт-контракта, обязаны оплатить это действие. Обычно это минимальная сумма, и она может быть заработана за несколько минут.Все строчки кода используют имеющийся Газ, который подкреплен к транзакции. Если Газ закончился, то контракт больше не исполняется. Если остаются излишки Газа, то он возвращается заказчику.

Смарт-контракты и Bitcoin

База смарт-контрактов была заложена ещё в блокчейне первой криптовалюты. Там каждый майнер верифицирует подпись транзакций для уверенности в том, что отправитель не платит не своими деньгами.Хеши в BTC вычисляются при помощи вызова набора инструкций, возвращающих ноль или единицу в зависимости от результата. Этот набор инструкций может разбавляться логикой. Набор обладает операторами, ветвлениями, переменными и всем остальным, что нужно для программирования. Язык именуется Script и чем-то напоминает допотопный Forth.Немного труда и смарт-контракт для арендодателя можно создать в сети Bitcoin. Но язык Script не обладает циклами и рекурсиями. Таким образом, он не является настолько же полным, как и Ethereum. А ещё у Bitcoin есть виртуальная машина.Существует два типа аккаунтов. До этого момента мы имели только кошельки, транзакции и блоки. Смарт-контракт представляет из себя кошелёк, называемый аккаунтом.При условии, что стандартный кошелёк находится под управлением связки публичных и приватных ключей. То смарт-контракт управляется хешем собственного кода. Если изменить хоть один символ в смарт-контракте, или комментарий в коде, то в результате получится абсолютно другой смарт-контракт. Это является гарантией уникальности.Смарт-контракты вечны. Блокчейн запоминает всё, и информация, которая находится в нём – не поддается изменениям.Стандартные пользовательские кошельки называются externally owned account. А смарт-контракты, которые созданы в сети именуются contract account (далее кошелёк и смарт-контракт).Взаимодействие с этими аккаунтами может проходить только посредством транзакций.Транзакция на пользовательский кошелек – это перевод средств. Точно так же, как и с BTC. Транзакция содержит в себе число отправляемых ETH и адрес, на который они направляются.Транзакции, отправляемые на контракт, представляют из себя вызов его метода. Поэтому очень часто их называют "сообщением". В транзакции, помимо числа ETH и адреса контракта, содержатся дополнительные параметры вызова и Газ (комиссия) за выполнение кода контракта.Если произвести транзакцию, но не указать получателя – то произойдёт создание нового смарт-контракта. Такая транзакция нуждается в передаче скомпилированного byte-кода контракта и Газа за создание контракта.Интересно то, что в контрактах нельзя реализовать таймеры, которые срабатывают по истечении конкретного времени. Контракт вызывается только посредством транзакций, и они всегда запускаются при помощи настоящего человека. В фоновом режиме контракты не работают, но если контракт был вызван, то он вполне способен вызывать другие контракты.А значит, что в нашем примере про возвращение предоплаты, вы должны самостоятельно запросить её у контракта.А теперь подробнее разберём, что из себя представляет блокчейн Ethereum.Команда Ethereum уделила огромное количество времени в своём документе для того, чтобы объяснить, что цепь изменений и цепь состояний являются одним и тем же.Состояние – это слепок абсолютно всех изменений, которые произведены на текущий момент времени.История и Состояние – разные подходы к пониманию одинаковых вещей. Даже Bitcoin-кошельки превращают историю в состояние для достижения более простого взаимодействия.Взгляните на эту аналогию, чтобы понимать выше описанное.Если понимать блокчейн, как историю состояний, то можно значительно упростить картину. Теперь не нужно бегать по истории и искать транзакции, которые не были использованы. Достаточно взглянуть на состояние сети на текущий момент.Ethereum представляет из себя машину с состоянием транзакций. Текущие балансы кошельков и данных контрактов, изменяемых посредством разработки новейших транзакций – это и есть Ethereum.Создателями Ethereum был модифицирован стандартный блокчейн. Суть модификации – добавление хранилища. По сути, это репозиторий GitHub, который загружается вместе с блокчейном.Все транзакции записывают изменения в репозиторий. То же самое, что и коммиты в GitHub.Хранилище реализовано по аналогии с деревом Меркла. Однако оно получило некоторые модификации для того, чтобы оптимизировать размеры. Главная цель дерева – хеширование соседей до получения главного хеша. Главный хеш представляет из себя корень дерева, который включен во все новые блоки.Имея информацию об одном блоке, мы можем знать о состоянии системы после извлечения из блока корня дерева хранилища.Во время первого запуска Ethereum вы должны проверить всю цепь блоков. Такова децентрализация, вы не можете верить кому-либо.Хранилище записывает в блок лишь новые изменения. Старые остаются на прежнем месте, но к ним создаются ссылки. Так, экономится огромное количество времени.Транзакции, вызывающие контракт – это сообщения, а транзакции между кошельками – переводы.Однако в техническом плане данные объекты идентичны.Транзакции в Bitcoin включают в себя 5 главных составляющих.Ethereum транзакции имеют схожую логику, однако, слегка меняют состав транзакций. Пользователю больше не нужно заниматься сбором входных данных, чтобы доказать присутствие средств. Каждый и так обладает информацией о текущем состоянии и балансе абсолютно всех кошельков, существующих в системе. При условии, что пользователь захочет перевести денежные средства, которых у него нет, майнеры отбросят транзакцию и пометят её как ошибочную.

Gas Limit и Gas Price

Сочетание Gas Limit и Gas Price – отвечает за комиссии, а не количество ETH. Газ, что был прикреплен к транзакции нужен для оплаты майнерской работы.Gas Limit – это число Газа, которое оплачивает выполнение строчек кода в смарт-контрактах. Цена подобной операций фиксирована в Газе и одинакова для всех машин. В Ethereum существуют как платные операции, так и бесплатные. К бесплатным, например, относится очистка временных данных. Это нужно для того, чтобы подталкивать пользователей к очистке этих данных и освобождению места в глобальном хранилище.Если газа не хватит, то операция будет полностью отменена, а если газа будет в переизбытке, то остаток вернётся отправителю.Gas Price – стоимость единицы газа. Чем больше цена, тем больше желание у майнеров обрабатывать ваши транзакции.Стоимость Газа в отношении основной валюты чрезмерно мала. Поэтому такие средства получили название 1 Wei.

  • 1012 Wei = 1 Szabo
  • 1015 Wei = 1 Finney
  • 1018 Wei = 1 Ether (тот самый Эфир или ETH)

Ethereum оперирует исключительно целыми числами. Сеть Ethereum просчитывает ETH с точностью до 18 знаков после запятой. За прочтение данных с контракта платить не нужно. Для прочтения баланса из существующего контракта достаточно загрузить новую версию блокчейна и найти значение нужных переменных в глобальном хранилище.Составляющая любого блокчейна – это блоки. Майнеры занимаются сбором транзакций с пула и составляют из них новые блоки, которые включатся в общую цепь. С этой целью они занимаются поиском случайного числа, которое удовлетворит некие глобальные правила сложности.Блоки Ethereum имеют отличия от блоков Bitcoin.

Знают состояние системы

Во всех случаях блок добавляет хеш всего текущего хранилища. Это происходит точно так же, если сделать хеш всех данных жёсткого диска. Подобный слепок отражает точное состояние системы на данных момент. Все данные контракты и балансы аккаунтов. В Ethereum – это корень Меркла, упомянутый выше.Хеш хранилища – важнейший компонент блока. Он во всех случаях включается во все найденные блоки и верифицируется абсолютно всеми участниками сети, чтобы никто не смог подделать текущее состояние системы. Дерево Меркла позволяет сделать это быстро, для этого нужно проверить лишь изменённые части дерева. Остальное остаётся прежним.Выписывают чеки на транзакцииПредставьте, что вы создали запрос на применение кода смарт-контракта, а тот ответил ошибкой. Или, например, вы прикрепили недостаточное количество газа. В результате чего выполнение операции было прекращено.Во всех случаях транзакция будет выполнена с точки зрения блокчейна. Код был исполнен, газ перечислен, а состояние подверглось изменению. Но отправитель транзакции получит ответ, что его операция была выполнена неудачно. Кроме списка транзакций в блоке добавляется информация, затрагивающая результаты исполнения. Эта информация получила название чек.При условии, что к транзакции прикреплено 1000 единиц Газа, а на исполнение ушло около 800, то в чеке будет сказано, что 800 было потрачено, 200 возвращено. Однако в транзакции будет числиться 1000 единиц Газа. В точности, как и было отправлено.

Блоки не забывают корни

Майнеры включают в новый блок ссылку на родителя и список на блоки, чей родитель равняется родителю родителя текущего блока.В итоге блок Ethereum имеет следующий вид:

Майнинг

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

Блок за 15 секунд

Сложность задачи устанавливается сетью автоматически. Средняя длительность создания нового блока в блокчейне Ethereum – 15 секунд.Нули появляются в хеше блоков по той причине, что в Bitcoin установлена сложность, которая достигается только при помощи хеша с кучей нулей в начале.Хеш блока должен быть меньше определённого числа. Таким образом, обеспечиваются 10 минут, во время которых все участники сети занимаются поиском нового блока. В Ethereum невозможно встретить нули в начале.

Проблема конкуренции

Новые блоки в Ethereum производятся каждые 15 секунд. В сети они распространяются на протяжении 12 секунд. Таким образом, блокчейн находятся расщеплённом состоянии. Ни один из участников сети не знает, какой последний блок окажется верным. Пока не будет найден следующий.Длинные цепи – единственно верные цепи. Только из-за короткого периода майнинга таких цепей появляется слишком много. По этой причине расщеплённый блокчейн живёт часами, откатывается и заново майнит львиную долю собственных транзакций.Более того, это не очень-то и удобно, когда человек желает расплатиться Ethereum и ждёт периода подтверждения по полчаса. Если майнеры занимаются майнингом в ненужных цепях, то они получают мотивацию для объединения в пул, где можно майнить определённые цепочки. Таким образом повышаются шансы на получение награды.При появлении пулов увеличивается риск атаки 51%. Это происходит тогда, когда 50% мощности находится в управлении одного владельца пула. Такая мощность позволяет менять историю блокчейна и откатывать транзакции. Сами майнеры могут узнать об этом только на Reddit.По этой причине в 2013 году был создан GHOST, вводящий понятия "дядя" блока.GHOST дает маленькое вознаграждение майнерам, которые сумели обнаружить дядю, являющегося логически верным блоком. Дядя получает 12.5% от стоимости блока.

Устойчивость перед ASIC

После перехода с CPU на GPU были изобретены ASIC. Специалисты создавали процессоры, которые способны на перебор хешей под майнинг Bitcoin.Большинство думает, что ASIC это нечестно.В Ethereum нужно не только перебирать хеши, но и запускать код смарт-контрактов. Сбор ASIC под Ethereum представляет из себя абсолютно точно такой же CPU.Теперь же, собирать ASIC под Ethereum не нужно. А всё из-за Proof-of-Stake.

Proof-of-Stake

Главный минус PoW в том, что он приводит к тратам ресурсов. А всё из-за гонки "железа".В данный момент Ethereum использует PoW, а алгоритм получил название Ethash. В скором времени платформа должна перейти на Proof-of-Stake.Майнеры больше не должны перебирать случайные числа для получения нужного хеша. Майнеры это называют лотерей, когда они фиксируют у себя на счёте транзакции на конкретную сумму, хешириют только их и проверяют получилось или нет.В Ethereum реализация получила название Casper.Давайте составим единую картину работы сети. Подключение пользователей происходит благодаря использованию приложения. Такого, как например, Ethereum Wallet. После этого они могут начинать производить транзакции.Любые транзакции подписываются и уходят в общий пул неподтверждённых транзакций, где ожидают, когда на них обратят внимание майнеры.Здесь не существует отличий от Bitcoin, несмотря на то, что Ethereum мыслит при помощи состояний.Если транзакция является переводом между пользователями, то майнинг в сети практически схож с Bitcoin. Но в Ethereum проверяется состояние кошельков пользователей.Первые отличия заметны с вызова смарт-контрактов. Тогда компьютер майнера находит данный смарт-контракт в загруженном хранилище. После чего запускается код с переданными параметрами внутри EVM. Так поступают абсолютно все майнеры, но результат анонсируется лишь один. По этой причине все операции детерминируются и беспрепятственно забываются.Каждый вызов контракта содержит в себе прописанный Gas Limit. Число вычислений, которые стоит произвести для выполнения контракта. Если в Bitcoin майнеры набирали транзакции до достижения нужного размера блока, в Ethereum они решают, сколько следует включить в блок по суммарной сложности. Условно можно быстро выполнить существенное число простых смарт-контрактов, а можно взять единственный, но сложный.Майнеры, кроме составления древа транзакций, занимаются перестройкой древа состояний, после чего выписывают чеки в каждую выполненную транзакцию и включают эту информацию в новые блоки. И только потом подбирают хеши нужной стоимости, чтобы включить свой блок в общую сеть. Кстати, вместо SHA-256 в сети Ethereum применяется KECCAK-256.В итоге блокчейн Ethereum представляет из себя классическую версию блокчейна с добавленным хранилищем и виртуальной машины EVM, которая исполняет произвольные коды смарт-контрактов на компьютерах майнеров.Все детали в Ethereum необходимы и решают конкретные задачи.Чтобы посмотреть работу сети в режиме реального времени вы можете перейти на сайт EthStats.net.Новая технология для программиста представляет из себя настоящий соблазн.Сейчас я расскажу о двух историях про смарт-контракты, которые помогут понять их возможности.

ICO

Сегодня мы имеем десятки методов для проведения ICO. Некоторые могут производиться на биржах, не связанных с технологией блокчейна. Но мы будем говорить об ICO, работающих посредством смарт-контрактов.ICO – это полезное применение смарт-контрактов.Допустим, вы производите какой-нибудь продукт.Вы создаёте этот продукт дома и продаёте его в сети. В один момент, ваша разработка становится чрезмерно востребованной. Вам нужно масштабировать бизнес, но как? Для решения этой проблемы и были созданы ICO, которые позволяют выпускать свои токены и продавать их.Вы создаёте смарт-контракт, в котором описана ваша валюта. Для этих целей у вас есть стандарт ERC20. Смарт-контракты для токенов банальны, в них описаны функции "купить", "продать", "передать" и "баланс". Пользователи могут покупать вашу валюту. Информация о покупателях хранится в хранилище Ethereum.Вы загружаете данные в блокчейн посредством Ethereum Wallet. Теперь вы можете распространять информацию о своём ICO. Это напоминает выпуск акций, но не представляет из себя полноценное ICO. Больше это походит на пожертвование за виртуальное вознаграждения.Маркетинг никак не относится к технической стороне ICO.Полноценное ICO должно обладать логикой продаж. Стоимость токена, лимит продаж, скидки для ранних покупателей и остальные особенности. Вы можете заложить подобную логику в токен, но она не может быть изменена. А лимиты и пределы не могут быть больше установлены.Эта задача решается разработкой второго смарт-контракта, который представляет из себя контракт продажи. В нём заложена абсолютно вся логика, которая требуется для проведения ICO. Такой смарт-контракт сможет удобно распределять токены среди инвесторов.Подобный контракт невозможно изменить после того, как он будет загружен в сеть. Это является гарантом честного проведения ICO. Но можно установить сроки работы, и создавать новые контракты. Во время проведения ICO предварительная загрузка контракта в сеть является обычной практикой. Ещё можно делать pre-sale, когда создаются временные контракты со скидкой, которые можно будет вызвать лишь ограниченное время.После ваши монеты существуют в качестве записей внутри контракта. Представляет он из себя обычные словари, записанные в глобальном хранилище. Монеты могут быть переданы или подарены кому-либо.Чтобы оценить их вам нужно добавить монеты на биржу. После чего на бирже формируется цена в зависимости от спроса и предложения.Таким образом, и работает ICO.

История провала: The DAO

Теперь поговорим об истории с The DAO.В 2016 году ICO не были популярны, но Ethereum-сообществу нравилась идея тотального краудфандинга. Тогда и появилась The DAO. Если так подумать, то The DAO это и есть огромный смарт-контракт с заложенными механизмами инвестиционных фондов. Участники вкладывают средства, заполучают долю и выбирают то, в какие проекты следует инвестировать средства для профита.Смарт-контракт – это гарантия отсутствия обмана и полной демократии.В смарт-контракте было учтено даже то, что участники захотят покинуть The DAO и создать свои фонды.The DAO ожидали многие. После запуска проект получил $165 млн. Это огромное событие для сообщества.Позже была найдена ошибка, заключающаяся в том, что доли передавались на адрес стороннего смарт-контракта, который позволял запросить средства до того, как основной контракт зафиксирует первый возврат. Таким образом можно было вывести всё.Таким образом мошенники своровали $65 млн. Толпа заревела и потребовала вернуть всё назад.Выйти можно было двумя путями. Отдать мошенникам деньги, либо приостановить блокчейн при помощи обновления. После чего нужно было произвести откат до ранних блоков и произвести новый запуск. Создатели решили, что второй вариант будет более рациональным. В результате появился второй блокчейн – Ethereum Classic.Сообщество негодовало. Оно не верило в произошедшее.Как так, создатели могут делать с нашими деньгами всё что угодно.История не из приятных.

Резюме

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

Источник: Vas3k

Присоединяйтесь к нашему чату. Мы рады каждому новому подписчику!

0
0.398 GOLOS
На Golos с May 2019
Комментарии (0)
Сортировать по:
Сначала старые