Читаем Больше денег: что такое Ethereum и как блокчейн меняет мир полностью

2. Вычислить комиссию за транзакцию по формуле STARTGAS × GASPRICE и определить адрес отправителя по цифровой подписи. Вычесть величину комиссии из баланса отправителя и прирастить одноразовый код отправителя. Если баланс отправителя меньше значения взимаемой комиссии, выдать ошибку.

3. Присвоить GAS = STARTGAS и взимать определенное количество газа за каждый обработанный майнером байт транзакции.

4. Переслать сумму транзакции с аккаунта отправителя на аккаунт получателя. Если аккаунта получателя не существует, создать его. Если аккаунт получателя – контракт, запустить код контракта, где контракт будет вычислен либо до конца, либо пока не закончится газ.

5. Если перевод не удался по причине того, что у отправителя не было суммы перевода или при вычислении контракта закончился газ, откатить все изменения, кроме выплаты комиссий за вычисления, и добавить комиссии к аккаунту майнера.

6. В противном случае вернуть отправителю комиссию за весь оставшийся газ и отправить майнеру комиссию, уплаченную за потраченный газ.

Для примера рассмотрим следующий код контракта:

if!self.storage[calldataload(0)]:

self.storage[calldataload(0)] = calldataload(32)

Заметим, что в реальности контракт пишется на низкоуровневом EVM-коде, но этот пример для ясности написан на Serpent, одном из наших высокоуровневых языков, который можно скомпилировать до EVM-кода. Предположим, что до транзакции хранилище нашего контракт-аккаунта было пустым, а затем посылается транзакция с 10 единицами эфира, 2000 газа, 0,001 GASPRICE и 64 байтами данных, где байты 0–31 представляют число 2, а байты 32–63 – строчку CHARLIE[114]. Здесь функция изменения состояния сработает так.

1. Убедиться, что транзакция валидна и корректно оформлена.

2. Убедиться, что у отправителя есть как минимум 2000 × 0,001 = 2 единицы эфира. После успешной проверки вычесть 2 эфира из баланса аккаунта отправителя.

3. При 2000 газа, если предположить, что транзакция занимает 170 байт и комиссия за байт равна 5, вычтем 850, и останется 1150 единиц газа.

4. Вычесть еще 10 единиц эфира из баланса аккаунта отправителя и добавить их к балансу получателя.

5. Запустить выполнение кода. В нашем примере это совсем просто: код проверяет, есть ли в хранилище контракт-аккаунта информация по адресу 2, замечает, что ее там нет, и прописывает туда значение CHARLIE. Предположим, это стоит 187 единиц газа, и газа остается 1150 – 187 = 963.

6. Добавить 963 × 0,001 = 0,963 единиц эфира в аккаунт отправителя и выдать получившееся состояние.

Если на принимающей стороне транзакции нет контракта, комиссия будет равняться GASPRICE, умноженной на длину транзакции в байтах, и никаких данных вместе с транзакцией отправлено не будет.

Отметим, что с точки зрения возврата сообщения работают эквивалентно транзакциям: если при выполнении сообщения заканчивается газ, то происходит откат к моменту вызова этого сообщения в контракте, но не к моменту начала всего контракта. Это означает, что один контракт может «безопасно» вызвать другой: если контракт A вызовет контракт B с g газа, то выполнение A гарантированно приведет к потере не более g газа. Наконец, обратим внимание, что существует операционный код CREATE, который создает контракт; его механика выполнения в целом аналогична CALL, за исключением того, что результат выполнения определяет код вновь созданного контракта.

<p>ВЫПОЛНЕНИЕ КОДА</p>

Код, понимаемый контрактами Ethereum, пишется на низкоуровневом байткод-языке на основе стека, который мы назвали «код виртуальной машины Ethereum», или EVM-код. Код состоит из последовательности байтов, и каждый байт представляет какую-либо операцию. В целом выполнение кода представляет собой бесконечный цикл, состоящий из повторного выполнения операции текущего счетчика программ (начиная с 0) и последующего его увеличения на 1. Процесс может закончиться в случае достижения конца кода, ошибки в коде или обнаружения в коде инструкции STOP/RETURN. Есть три типа мест, где операции могут хранить данные:

◊ стек, контейнер типа last-in-first-out, куда можно записывать и откуда можно извлекать значения;

◊ память, байтовый массив произвольного размера;

◊ долговременное хранилище контракта, информация в котором хранится парами «ключ – значение». В отличие от стека и памяти, которые очищаются после выполнения кода, в хранилище параметры могут находиться долго.

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

Принцип выполнения EVM-кода на удивление прост. Во время вычисления все текущее состояние представляет собой кортеж (block_state, transaction, message, code, memory, stack, pc, gas), где block_state – полное состояние, содержащее информацию о балансах и состояниях хранилищ всех аккаунтов. В начале каждого раунда выполнения берется pc-байткод (или 0, если pc >= len(code)), выполняется инструкция, соответствующая этому байту, и каждая из инструкций по-своему действует на кортеж.

Перейти на страницу:

Все книги серии Individuum

Больше денег: что такое Ethereum и как блокчейн меняет мир
Больше денег: что такое Ethereum и как блокчейн меняет мир

В 2013 году девятнадцатилетний программист Виталик Бутерин опубликовал концепцию новой платформы для создания онлайн-сервисов на базе блокчейна. За десять лет Ethereum стал не только второй по популярности криптовалютой, но и основой для целого мира децентрализованных приложений, смарт-контрактов и NFT-искусства. В своих статьях Бутерин размышляет о развитии криптоэкономики и о ключевых идеях, которые за ней стоят, – от особенностей протокола Ethereum до теории игр, финансирования общественных благ и создания автономных сетевых организаций. Как блокчейн-сервисы могут помочь людям добиваться общих целей? Могут ли криптовалюты заменить традиционные финансовые инструменты? Ведут ли они к построению прекрасного нового мира, в котором власть будет принадлежать не правительствам и корпорациям, а людям, объединенным общими ценностями и интересами, или служат источником неравенства и циничных финансовых спекуляций? В этой книге Бутерин предстает увлеченным мыслителем, глубоким социальным теоретиком и активистом, который рассуждает о том, что гораздо больше денег, не боится задавать сложные вопросы и предлагать решения противоречивых проблем.

Виталий Дмитриевич Бутерин

Публицистика
Инцелы. Как девственники становятся террористами
Инцелы. Как девственники становятся террористами

В современном мире, зацикленном на успехе, многие одинокие люди чувствуют себя неудачниками. «Не целовался, не прикасался, не обнимался, за руку не держался, друзей нет, девственник» – так описывают себя завсегдатаи форумов инцелов, сообществ мужчин, отчаявшихся найти пару. Тысячи инцелов горько иронизируют над обществом, мечутся между попытками улучшить внешность и принятием вечного (как им кажется) целибата и рассуждают, кого ненавидят больше: женщин или самих себя. А некоторые решают отомстить – и берутся за оружие.В книге «Инцелы» практикующий шведский психиатр Стефан Краковски приоткрывает дверь в этот мир. Он интервьюирует инцелов, анализирует кризис мужественности и исследует связи радикальных одиночек с ультраправыми движениями, чтобы ответить на важные вопросы: как становятся инцелами? Насколько они опасны? И что мы можем сделать, чтобы облегчить их бремя, пока еще не поздно?В формате PDF A4 сохранен издательский макет книги.

Стефан Краковски

Психология и психотерапия
Отец шатунов. Жизнь Юрия Мамлеева до гроба и после
Отец шатунов. Жизнь Юрия Мамлеева до гроба и после

Биографии недавно покинувших нас классиков пишутся, как правило, их апологетами, щедрыми на елей и крайне сдержанными там, где требуется расчистка завалов из мифов и клише. Однако Юрию Витальевичу Мамлееву в этом смысле повезло: сам он, как и его сподвижники, не довольствовался поверхностным уровнем реальности и всегда стремился за него заглянуть – и так же действовал Эдуард Лукоянов, автор первого критического жизнеописания Мамлеева. Поэтому главный герой «Отца шатунов» предстает перед нами не как памятник самому себе, но как живой человек со всеми своими недостатками, навязчивыми идеями и творческими прорывами, а его странная свита – как общность жутковатых существ, которые, нравится нам это или нет, во многом определили черты и характер современной русской культуры.В формате PDF A4 сохранен издательский макет книги.

Эдуард Лукоянов

Биографии и Мемуары / Критика / Литературоведение / Документальное
Новые боги. Как онлайн-платформы манипулируют нашим выбором и что вернет нам свободу
Новые боги. Как онлайн-платформы манипулируют нашим выбором и что вернет нам свободу

IT-корпорации успешно конкурируют с государствами в том, что касается управления людьми. Наши данные — новая нефть, и, чтобы эффективно добывать их, IT-гиганты идут на многочисленные ухищрения. Вы не считаете себя зависимым от соцсетей, мессенджеров и видеоплатформ человеком? «Новые боги» откроют глаза на природу ваших отношений с технологиями. Немецкий профессор, психолог Кристиан Монтаг подробно показывает, как интернет стал машиной слежки и манипуляций для корпораций Кремниевой долины и компартии КНР, какие свойства человеческой натуры технологические гиганты используют для контроля над пользователями — и что мы можем сделать, чтобы перестать быть рабами экрана.В формате PDF A4 сохранён издательский дизайн.

Кристиан Монтаг

ОС и Сети, интернет / Обществознание, социология / Психология и психотерапия

Похожие книги

Абсолютное зло: поиски Сыновей Сэма
Абсолютное зло: поиски Сыновей Сэма

Кто приказывал Дэвиду Берковицу убивать? Черный лабрадор или кто-то другой? Он точно действовал один? Сын Сэма или Сыновья Сэма?..10 августа 1977 года полиция Нью-Йорка арестовала Дэвида Берковица – Убийцу с 44-м калибром, более известного как Сын Сэма. Берковиц признался, что стрелял в пятнадцать человек, убив при этом шестерых. На допросе он сделал шокирующее заявление – убивать ему приказывала собака-демон. Дело было официально закрыто.Журналист Мори Терри с подозрением отнесся к признанию Берковица. Вдохновленный противоречивыми показаниями свидетелей и уликами, упущенными из виду в ходе расследования, Терри был убежден, что Сын Сэма действовал не один. Тщательно собирая доказательства в течение десяти лет, он опубликовал свои выводы в первом издании «Абсолютного зла» в 1987 году. Терри предположил, что нападения Сына Сэма были организованы культом в Йонкерсе, который мог быть связан с Церковью Процесса Последнего суда и ответственен за другие ритуальные убийства по всей стране. С Церковью Процесса в свое время также связывали Чарльза Мэнсона и его секту «Семья».В формате PDF A4 сохранен издательский макет книги.

Мори Терри

Публицистика / Документальное
1917. Разгадка «русской» революции
1917. Разгадка «русской» революции

Гибель Российской империи в 1917 году не была случайностью, как не случайно рассыпался и Советский Союз. В обоих случаях мощная внешняя сила инициировала распад России, используя подлецов и дураков, которые за деньги или красивые обещания в итоге разрушили свою собственную страну.История этой величайшей катастрофы до сих пор во многом загадочна, и вопросов здесь куда больше, чем ответов. Германия, на которую до сих пор возлагают вину, была не более чем орудием, а потом точно так же стала жертвой уже своей революции. Февраль 1917-го — это начало русской катастрофы XX века, последствия которой были преодолены слишком дорогой ценой. Но когда мы забыли, как геополитические враги России разрушили нашу страну, — ситуация распада и хаоса повторилась вновь. И в том и в другом случае эта сила прикрывалась фальшивыми одеждами «союзничества» и «общечеловеческих ценностей». Вот и сегодня их «идейные» потомки, обильно финансируемые из-за рубежа, вновь готовы спровоцировать в России революцию.Из книги вы узнаете: почему Николай II и его брат так легко отреклись от трона? кто и как организовал проезд Ленина в «пломбированном» вагоне в Россию? зачем английский разведчик Освальд Рейнер сделал «контрольный выстрел» в лоб Григорию Распутину? почему германский Генштаб даже не подозревал, что у него есть шпион по фамилии Ульянов? зачем Временное правительство оплатило проезд на родину революционерам, которые ехали его свергать? почему Александр Керенский вместо борьбы с большевиками играл с ними в поддавки и старался передать власть Ленину?Керенский = Горбачев = Ельцин =.?.. Довольно!Никогда больше в России не должна случиться революция!

Николай Викторович Стариков

Публицистика
10 мифов о 1941 годе
10 мифов о 1941 годе

Трагедия 1941 года стала главным козырем «либеральных» ревизионистов, профессиональных обличителей и осквернителей советского прошлого, которые ради достижения своих целей не брезгуют ничем — ни подтасовками, ни передергиванием фактов, ни прямой ложью: в их «сенсационных» сочинениях события сознательно искажаются, потери завышаются многократно, слухи и сплетни выдаются за истину в последней инстанции, антисоветские мифы плодятся, как навозные мухи в выгребной яме…Эта книга — лучшее противоядие от «либеральной» лжи. Ведущий отечественный историк, автор бестселлеров «Берия — лучший менеджер XX века» и «Зачем убили Сталина?», не только опровергает самые злобные и бесстыжие антисоветские мифы, не только выводит на чистую воду кликуш и клеветников, но и предлагает собственную убедительную версию причин и обстоятельств трагедии 1941 года.

Сергей Кремлёв

Публицистика / История / Образование и наука
188 дней и ночей
188 дней и ночей

«188 дней и ночей» представляют для Вишневского, автора поразительных международных бестселлеров «Повторение судьбы» и «Одиночество в Сети», сборников «Любовница», «Мартина» и «Постель», очередной смелый эксперимент: книга написана в соавторстве, на два голоса. Он — популярный писатель, она — главный редактор женского журнала. Они пишут друг другу письма по электронной почте. Комментируя жизнь за окном, они обсуждают массу тем, она — как воинствующая феминистка, он — как мужчина, превозносящий женщин. Любовь, Бог, верность, старость, пластическая хирургия, гомосексуальность, виагра, порнография, литература, музыка — ничто не ускользает от их цепкого взгляда…

Малгожата Домагалик , Януш Вишневский , Януш Леон Вишневский

Публицистика / Семейные отношения, секс / Дом и досуг / Документальное / Образовательная литература