Алекс сидит за своим столом. На столе – пара пустых чашек, хаотичные заметки, открытый ноутбук. На экране — десятки вкладок с новыми терминами и диаграммами. В голове у него буря. Он шепчет:
— «Кажется, я нащупал. Эта идея может сработать. Впервые за долгое время всё складывается в одну картину».
Он встаёт и начинает шагать по комнате:
— «Мой проект может стать по-настоящему независимым. Без серверов, без риска блокировки, без централизованного контроля. Я хочу, чтобы он работал сам по себе — как живой механизм. В любой точке мира. Без меня.».
Его взгляд останавливается на вкладке Ethereum: Smart Contracts.
— «Они пишут, что можно создать программу на специальном языке программирования – Solidity. Такая программа будет жить в сети из множества компьютеров, её нельзя выключить или взломать. Ей можно доверить деньги, управление, правила. Это и есть блокчейн».
Он всю ночь изучал тему. И чем больше читал, тем больше понимал — он на пороге чего-то большого.
Алекс говорит сам себе:
— «Представь библиотеку, в которой каждая книга есть у миллионов читателей. Попробуй подделать одну страницу — остальные сразу заметят, что-то не так. Вот так работает блокчейн. Данные в нём нельзя просто стереть или заменить».
Термины
Блокчейн — это система, где информация хранится децентрализовано. Каждая новая запись подтверждается всеми участниками сети, никто не может тайно изменить историю. Ключевым компонентом технологии являются смарт-контракты — автономные программы, функционирующие в блокчейн-среде и доступные для развёртывания и вызова пользователями. Они управляют правилами, активами, событиями. Их невозможно обмануть или остановить. Всё работает автоматически и прозрачно, пока в сети есть работающие сервера – узлы
Транзакция — это операция, которая проходит через блокчейн. Например, отправка денег, выполнение кода смарт-контракта. Транзакция подтверждается всеми участниками сети и не может быть изменена или удалена. Для подтверждения подлинности личности создателя транзакции используется криптографическая подпись, которую он ставит при отправке транзакции.
Смарт-контракт — программа, которая разворачивается в блокчейне и исполняется одновременно на тысячах компьютеров. Если все участники сети исполняют один и тот же код, то и результат будет одинаковым – принцип детерминированности. Соглашаясь между собой о результате выполнения кода, компьютеры сети создают огромный виртуальный компьютер, распределённый по всему миру. Этот компьютер не может быть остановлен или подвержен вмешательству одного владельца
Solidity — язык программирования, который используется для создания смарт-контрактов. Он позволяет создавать программы, способные взаимодействовать с блокчейном и другими смарт-контрактами. Программы на языке Solidity компилируются в специальный набор инструкций – байткод, предназначенный для виртуальной машины EVM – Ethereum Virtual Machine, запущенной на каждом узле сети Ethereum.
Ethereum — одна из самых популярных блокчейн сетей, где развернуто большинство контрактов.
Ethereum Virtual Machine (EVM) — это виртуальная машина, которая выполняет байткод смарт-контрактов. Она берет последовательность инструкций и выполняет их одну за другой. Это как виртуальная машина Java, но работающая одновременно на тысячах компьютеров по всему миру, обеспечивая децентрализованное и неизменяемое выполнение кода.
Криптографическая подпись — это механизм, который позволяет доказать, что транзакция была отправлена конкретным лицом. Каждый пользователь сети Ethereum имеет свой уникальный ключ, который используется для подписи транзакций. Этот ключ хранится в кошельке пользователя и используется для подтверждения личности создателя транзакции. Подписав транзакцию, пользователь делает ее достоверной – чем-то похоже на подпись на банковском чеке. Получив подпись, узел сети может проверить, что транзакция была создана именно этим пользователем.
Основные особенности смарт-контрактов:
Работают на тысячах и миллионах компьютеров
Не зависят от одного владельца
Не могут быть изменены после развертывания, если изначально не предусмотрено
Открыты и проверяемые, код может посмотреть кто угодно
Могут управлять токенами и цифровыми активами
— Вся система работает как армия бессменных, неподкупных нотариусов, которые никогда не ошибаются и не поддаются давлению. Каждый из них проверяет работу остальных».
Почему это важно
В обычных приложениях все данные хранятся на серверах компаний, возможна блокировка или цензура, правила можно менять без предупреждения. В децентрализованных приложениях нет единого сервера — всё работает в распределённой сети. Нельзя просто так изменить правила — они зашиты в код. Код доступен для проверки и анализа.
Алекс задумчиво смотрит в окно:
— «Если мой проект живёт в блокчейне, он не умрёт вместе с моей компанией. Его смогут смотреть, использовать и вызывать другие разработчики. Он станет чем-то большим, чем я сам. И это вдохновляет».
Инструменты для работы
Для работы с блокчейном используются специальные инструменты. Они помогают писать код, тестировать его, развертывать в сети и просматривать транзакции. Платформа BlockFirst предоставляет все необходимые инструменты для работы с блокчейном внутри платформы, однако будет крайне полезным самостоятельно посмотреть на существующие инструменты.
Remix — онлайн среда разработки для написания, компиляции, тестирования и развертывания смарт-контрактов. Не требует установки программ на компьютер — всё работает прямо в браузере.
Etherscan — сайт, где можно просматривать любые транзакции и контракты
MetaMask — кошелёк сети ethereum для хранения и отправки криптовалют, создания транзакций и взаимодействия с смарт-контрактами
Hardhat — среда для тестирования и написания смарт-контрактов
Разбираем простой код
Рассмотрим простой код смарт-контракта, который будет хранить сообщение "Hello, Blockchain!" и возвращать его, когда кто-нибудь запросит сообщение.
Solidity
// SPDX-License-Identifier: MIT
pragmasolidity ^0.8.19;
contractHelloBlockchain{
stringpublic message ="Hello, Blockchain!";
}
Алекс начинает разбирать:
// SPDX-License-Identifier: MIT — строка, обозначающая лицензию, под которой распространяется код. Это важно: в блокчейне всё прозрачно, и даже права на использование должны быть явно указаны
pragma solidity ^0.8.19; — директива для компилятора: использовать версию языка Solidity не ниже 0.8.19. Так мы убеждаемся, что код будет работать предсказуемо и стабильно
contract HelloBlockchain { — создаётся смарт-контракт с названием HelloBlockchain. По сути, это как класс в привычных языках программирования — самостоятельная единица логики
string public message = "Hello, Blockchain!"; — переменная, хранящая текстовое сообщение. Благодаря модификатору public автоматически создается функция для чтения этой переменной, и любой пользователь сети может получить её значение, обратившись к контракту
} — Закрываем контракт
Он открывает Remix IDE, копирует код и развертывает контракт. Через несколько секунд его сообщение разлетается по узлам сети. Где-то в Токио, Берлине, Сан-Франциско и Риге — код хранится на тысячах машин. Он смеётся:
— «Я только что поздоровался со всем блокчейном!».
Взгляд на код
Изучаем контракт на etherscan
После развертывания, Алексу высветился адрес смартконтракта – странная последовательность цифр и букв. Адрес был следующим – 0xaf508A803E4E0602fD6f5083741c4C3B3f7cE02D
Адрес – уникальный идентификатор развернутого смарт-контракта, по которому его можно найти в блокчейне. По адресу можно посмотреть содержимое контракта или вызвать в транзакции. В визуализаторе транзакций, например в etherscan, по адресу контракта можно посмотреть всю информацию о нем. Посмотрим, как выглядит задеплоенный контракт Алекса – https://sepolia.etherscan.io/address/0xaf508A803E4E0602fD6f5083741c4C3B3f7cE02D#code
Перейдя по ссылке, можно увидеть такую информацию как адрес создателя смарт-контракта, баланс и код контракта.
Во вкладке Read Contract можно увидеть нашу переменную с сообщением. Нажимаем на нее, и видим наше приветствие!
Визуализация приветствия
Практическое задание
Теперь настал твой момент. Алекс, вдохновлённый тем, что только что увидел, поворачивается к тебе. В его глазах — смесь восторга и лёгкого волнения:
— «Слушай, это же реально работает. Эта штука только что сказала “Привет, Блокчейн!”, и это увидели тысячи машин по всему миру... А что, если мне ответят – “Привет, Алекс!”? Хочу, чтобы сеть поприветствовала меня лично. Поможешь?»
Он протягивает тебе блокнот с кодом и ручку.
— «Вот этот фрагмент. Всего одна строчка… но это уже история. Персональное сообщение, записанное в вечную цифровую книгу, это ж круто!. Помоги реализовать, а?»
Твоя задача — изменить сообщение так, чтобы оно стало персональным. Пусть блокчейн обратится к Алексу по имени. Когда ты закончишь, этот код станет частью общей сети. Его смогут увидеть, прочитать и проверить тысячи людей. И каждый из них увидит, что Алекс был здесь. Что он начал путь. Что он не один.