В прошлом уроке мы увидели обычную архитектуру:
Клиент → Сервер → База данных
У такой системы обычно есть владелец: компания или команда, которая управляет серверами и базой.
Блокчейн устроен иначе. Вместо одной организации, которая единолично хранит и изменяет данные, состояние системы проверяется сетью участников по общим правилам.
Обычная база данных
Представим интернет-магазин.
В его базе могут храниться:
- пользователи;
- товары;
- заказы;
- баланс бонусов.
Когда пользователь делает заказ, сервер проверяет запрос и изменяет записи в базе.
У владельца системы есть контроль над этой базой. Например, администратор с необходимыми правами может исправить ошибочную запись или изменить данные пользователя.
Упрощённо:
1Пользователь2 ↓3Сервер компании4 ↓5База данных компанииТо есть существует центральная сторона, которая управляет системой.
Что меняется в блокчейне
В блокчейне нет одной обычной базы на одном сервере, изменение которой автоматически становится истиной для всех.
Вместо этого сеть поддерживает общее состояние.
Например, в нём может быть записано:
1Alice: 5 ETH2Bob: 2 ETHили состояние смарт-контракта:
1owner = 0x...2members = 1253paused = falseУчастники сети проверяют новые действия по одинаковым правилам протокола.
Если изменение принято сетью, оно становится частью общей истории.
Что такое транзакция
Чтобы изменить состояние блокчейна, пользователь обычно отправляет транзакцию.
Транзакцию можно представить как запрос:
«Я хочу выполнить это действие в блокчейне».
Например:
1Отправить 1 ETH Bobили:
1Вызвать функцию register() смарт-контрактаНо одного желания пользователя недостаточно.
Сеть сначала должна обработать транзакцию по правилам блокчейна.
Что происходит с транзакцией
Упрощённый путь выглядит так:
11. Пользователь отправляет транзакцию2 ↓32. Сеть проверяет её по правилам4 ↓53. Транзакция включается в блок6 ↓74. Общее состояние обновляетсяНапример, если Alice отправляет Bob 1 ETH, состояние может измениться:
1До:2Alice: 5 ETH3Bob: 2 ETH45После:6Alice: 4 ETH7Bob: 3 ETHУчастники сети могут независимо проверить, что изменение соответствует правилам.
Зачем нужны блоки
Транзакции объединяются в группы — блоки.
Очень упрощённо блок можно представить так:
1Блок23├── Транзакция 14├── Транзакция 25├── Транзакция 36└── ...Новые блоки связываются с предыдущими, формируя последовательную историю.
Отсюда и название:
block + chain → blockchain
то есть цепочка блоков.
Почему нельзя просто переписать запись
В обычной централизованной базе администратор с достаточными правами может изменить запись напрямую.
В блокчейне уже принятую историю нельзя просто незаметно переписать на одном компьютере и заставить остальных считать новую версию правильной.
Другие участники сети проверяют данные по тем же правилам и не обязаны принимать произвольное изменение.
Именно поэтому блокчейн полезен там, где нескольким сторонам нужно иметь проверяемое общее состояние, не полагаясь полностью на одного владельца базы.
Важно понимать
Блокчейн не означает, что:
- все данные автоматически приватны;
- операции бесплатны;
- система всегда быстрее обычной базы;
- любую информацию обязательно нужно хранить в блокчейне.
Обычная база данных во многих задачах проще и эффективнее.
Главное отличие блокчейна — не в том, что это «лучшая база», а в том, как участники договариваются о правильном состоянии системы и проверяют его.
Связь со смарт-контрактами
Позже мы будем писать программы на Solidity — смарт-контракты.
Их состояние тоже хранится в блокчейне.
Например:
1uint256 public members = 10;Транзакция может вызвать функцию контракта, после чего значение изменится:
1members = 102 ↓3транзакция вызывает функцию4 ↓5members = 11Поэтому понимание транзакций и состояния пригодится практически во всех следующих уроках.
Задание
Соберите упрощённый путь изменения состояния блокчейна — от отправки транзакции до обновления общего состояния.
Один из доступных блоков описывает действие, которое противоречит принципу работы такой системы.