Блокчейн
- Плюс: старую запись нельзя изменить
- Плюс: работает без банка и без выходных
- Минус: ошибочный перевод не отменить
- Минус: все переводы видны всем
Копии блокчейна хранятся сразу у множества участников сети, то есть у компьютеров, которые вместе ведут её учёт. Новые записи собирают в блоки, а блоки сцепляют друг с другом по порядку, один за другим. Отсюда и название, цепочка блоков.
Представьте общую тетрадь, копия которой есть у множества людей. Каждый новый лист ссылается на предыдущий, поэтому вырвать или незаметно переписать старый лист не выйдет. У всех остальных копия останется прежней, и подмена сразу бросится в глаза.
Зачем это вам? Именно блокчейн позволяет криптовалюте работать без банка-посредника. Учёт ведёт сразу вся сеть, и доверять одной компании не нужно.
Каждый блок похож на страницу журнала с шапкой. В шапке, среди прочего, записан отпечаток предыдущей страницы, то есть длинная строка из цифр и букв, посчитанная по её содержимому. Проще всего это увидеть на первых двух блоках сети Bitcoin.
Отпечаток блока 0 слово в слово переписан в шапку блока 1. Так страницы и сцепляются: блок 1 «знает», какой блок был перед ним. Посмотреть эти блоки можно в обозревателе сети, то есть на сайте, где видны все блоки и переводы.
Отпечаток считает программа из содержимого записи. Главное его свойство в том, что при малейшем изменении исходных данных он меняется целиком. Запишем простой перевод «A -> B: 5» и посчитаем его отпечаток. Теперь поменяем в нём всего одну цифру, 5 на 6.
Отпечатки получились совсем разные, хотя запись изменилась на один знак. Такой отпечаток называют хешем. Именно поэтому незаметно подправить старую запись не получается, её хеш сразу выдаст подмену.
Сложим два свойства вместе. Если изменить в старом блоке хоть что-то, его отпечаток станет другим, и шапка следующего блока перестанет с ним сходиться, а за ней рассыплется и вся цепочка дальше. Вдобавок копия журнала есть у многих участников, и все постоянно сверяют её между собой. Поэтому подмену видно сразу у всех, а одной точки, поломка которой всё бы остановила, попросту нет.
Есть у такой защиты и слабое место. Если почти все компьютеры сети (или почти все монеты, которые участники вносят в залог за право проверять переводы) принадлежат нескольким владельцам, они могут диктовать сети свои условия. Даже тогда они не подделают чужую подпись под переводом (её ставит кошелёк владельца секретным ключом), не выпустят монеты из воздуха и не перепишут давние записи. Им по силам переписать несколько последних блоков, чтобы отменить свой недавний перевод и потратить те же монеты второй раз. В крупной сети собрать такую долю почти невозможно, в маленькой это дешевле, и такое уже случалось.
Нет, удалить или исправить уже записанный перевод в открытом блокчейне не может ни один человек или компания. Ошибку исправляют только новой записью. Например, получатель может вернуть монеты обратным переводом, но лишь если сам захочет. Не верьте «сервисам», которые обещают отменить перевод за плату, о таком обмане рассказывает статья фишинг и скам.
Изменить правила сети, чтобы исправить последствия, можно, только если согласится большая часть её участников. Так было в Ethereum в 2016 году после крупной кражи из одного проекта. Правила поменяли, а несогласные продолжили вести старую версию журнала, подробно это разобрано в статье хард-форк.
Об обратной стороне блокчейна новичку полезно знать заранее.
Блокчейн удобно сравнить с двумя привычными способами вести учёт. В банке все записи ведёт одна компания, а онлайн-таблицу ведут вместе все, у кого есть ссылка.
| Блокчейн | База банка | Онлайн-таблица | |
|---|---|---|---|
| Копия есть у многих? | да | нет | нет1 |
| Одна компания может изменить старую запись? | нет | да | да |
| Записи видны всем? | да2 | нет | иногда3 |
| Работает без посредника? | да | нет | нет |
| Можно исправить ошибку? | нет | да | да |
| Добавить запись быстро и почти бесплатно? | иногда4 | да | да |
Публичный блокчейн открыт всем. Читать его, отправлять переводы и участвовать в работе сети может любой. Частный ведёт одна организация или группа компаний, которая и даёт в него доступ. Bitcoin и Ethereum публичные, а частные блокчейны компании используют внутри себя, например для учёта поставок. Почти всё, о чём рассказывает наш сайт, работает на публичных блокчейнах.
Блоки добавляют майнеры или валидаторы, то есть участники, чьи компьютеры проверяют переводы и добавляют их в блокчейн за вознаграждение. О них рассказывает статья майнеры и валидаторы. Место в блоке ограничено, поэтому ваш перевод сначала ждёт своей очереди среди неподтверждённых. В Bitcoin и многих других сетях такую очередь называют мемпулом. Тот, кто собирает следующий блок, хочет заработать больше, поэтому обычно первыми берёт переводы, за которые предложили большую комиссию, то есть плату сети за запись перевода. Перевод с комиссией выше обычно подтверждают раньше. Как устроена сама комиссия и почему её размер скачет, разобрано в статье что такое газ.
Когда перевод попал в блок, он получает первое подтверждение, и каждый следующий блок делает запись надёжнее. Сколько подтверждений уже набрал ваш перевод, видно в обозревателе сети.
За работу блокчейна платят его пользователи комиссиями за переводы. В большинстве сетей тем, кто добавляет блоки, ещё и выдают в награду новые монеты, обычно это правило заложено в код сети. Есть исключения, например в сети XRP Ledger награды за блок нет вовсе, там валидаторы работают без неё. Новые монеты увеличивают их общее количество, то есть косвенно за них платят все держатели, об этом рассказывает статья что такое эмиссия. Отдельной компании или абонентской платы, как у банка, здесь нет.
Идею цепочки записей с метками времени описали исследователи Стюарт Хабер и Скотт Сторнетта ещё в 1991 году2, а первым массово используемым блокчейном стала сеть Bitcoin в 2009 году. Позже блокчейнов появилось много, и они очень разные, об этом рассказывает статья что такое криптовалюта.
Повторную трату тех же монет называют двойной тратой, а попытку переписать свежие блоки, собрав большую часть сети, — атакой 51%. Например, сеть Ethereum Classic пережила несколько атак 51% в августе 2020 года3. Подробно эта атака разобрана в статье майнеры и валидаторы.
Программам внутри блокчейна (смарт-контрактам) часто нужны данные извне, например цены. Откуда им брать верные данные, разбирает статья Chainlink.