Один журнал на тысячи компьютеров
Если упростить, блокчейн представляет собой журнал записей, в который можно только дописывать. Новые записи добавляются в конец пачками, и эти пачки называются блоками. Стереть или поправить старую строку нельзя. Копию журнала хранит каждый участник сети, поэтому он не живёт на одном сервере и не принадлежит одной компании.
Название описывает устройство буквально: блоки сцеплены в цепочку, по-английски blockchain. В обычной базе данных у администратора есть право изменить любую строку. Здесь такого администратора нет, а соблюдение правил проверяют сами участники.
Что лежит внутри блока
Блок похож на страницу бухгалтерской книги с несколькими обязательными полями.
- Записи. Для криптовалюты это переводы: откуда, куда и сколько.
- Время. Метка, когда блок создан.
- Отпечаток предыдущего блока. Это и есть сцепка, о ней чуть ниже.
- Служебные данные. В сетях с майнингом сюда входит найденный майнером ответ.
Вот масштаб на примере биткоина: новый блок появляется примерно раз в 10 минут, весит обычно от одного до двух с небольшим мегабайт и вмещает несколько тысяч переводов. За годы вся цепочка выросла до сотен гигабайт.
Баланса как отдельной строки в блокчейне нет. Есть только история переводов, а кошелёк просматривает её и складывает сумму сам. Поэтому и монеты не лежат на телефоне: он хранит ключ, который даёт право ими распоряжаться.
Записью может быть не только перевод. В сетях вроде Ethereum в блоках хранятся ещё и смарт-контракты, небольшие программы, которые выполняются по заданным условиям без посредника.
Хеш-ссылки: почему подделку видно сразу
Хешем называют короткий отпечаток любых данных. Функция берёт текст, файл или целый блок и выдаёт строку фиксированной длины. Стоит изменить хотя бы символ, и отпечаток меняется полностью. Вот начало настоящих отпечатков SHA-256 для двух почти одинаковых строк:
- «Аня переводит Борису 5 монет»:
585c3f2e97cfebe9… - «Аня переводит Борису 6 монет»:
84f15c4027ea185d…
Одна цифра изменила весь результат, а подобрать текст под нужный отпечаток можно только перебором.
Теперь о сцепке. Блок 101 хранит отпечаток блока 100, блок 102 хранит отпечаток блока 101, и так до самого конца цепочки. Допустим, кто-то поменял сумму в блоке 100. Его отпечаток изменится, и запись в блоке 101 перестанет совпадать. Исправите её, изменится отпечаток блока 101, и разойдётся уже блок 102. Одна правка тянет за собой всю цепочку, и несовпадение увидит любой, кто сверит отпечатки.
Почему запись нельзя просто переписать
Пересчитать отпечатки на своём компьютере технически возможно, только остальной сети ваша копия не интересна. Тысячи других узлов хранят прежнюю версию и сравнивают всё новое со своими правилами. Чтобы навязать им другую историю, нужно ещё и опередить всю сеть в выпуске блоков. В сетях с майнингом это означает повторить работу всех майнеров за тот же период, а это очень дорого. Как устроена такая защита, рассказано в статье про Proof of Work.
Поэтому слово «нельзя» здесь точнее читать как «невыгодно и почти невозможно». Чем больше блоков легло сверху и чем мощнее сеть, тем надёжнее запись. У маленьких сетей запас прочности меньше.
У неизменности есть обратная сторона: службы поддержки, которая отменит перевод, нет. Отправили монеты не на тот адрес, и вернуть их можно, только если получатель сам захочет. Поэтому адрес и сеть стоит сверять перед отправкой, подробно об этом в статье про криптокошелёк.
Узлы: кто всё это хранит и проверяет
Узлом, или нодой, называют компьютер с программой сети. Он хранит копию цепочки, проверяет каждый новый блок и перевод по правилам и передаёт их дальше. Запустить узел может любой, и у крупных сетей таких узлов тысячи в разных странах.
Роли легко перепутать. Майнер предлагает новый блок. Узел решает, принимать его или нет. Кошелёк на телефоне обычно не хранит цепочку и обращается к чужим узлам. Поэтому даже крупный майнер не протащит блок с нарушением правил: узлы его отбросят.
Единого начальника в такой сети нет. Правила записаны в открытом коде, и изменить их можно, только если с новой версией согласится достаточная часть участников. Когда договориться не удаётся, сеть может разделиться на две, и это называют форком.
Что происходит, когда копии расходятся
Интернет не мгновенен, поэтому узлы узнают о новых блоках в разное время. Иногда два майнера находят блок почти одновременно, и часть сети принимает один вариант, часть другой. На короткое время цепочка раздваивается.
Решается это автоматически. Следующий найденный блок продолжит одну из веток, и все узлы переключатся на ту, в которую вложено больше работы. Проигравший блок отбрасывается, а его переводы возвращаются в очередь и попадают в следующие блоки. Теряет только майнер, чей блок не прошёл.
Из-за этого свежая запись надёжна меньше старой, и биржи зачисляют монеты после нескольких подтверждений. Подтверждениями называют блок с вашей записью и все блоки поверх него: чем их больше, тем меньше шанс оказаться на отброшенной ветке.
Как посмотреть на блокчейн своими глазами
Публичные сети открыты для всех. Обозреватель блокчейна, сайт с поиском по блокам и адресам, показывает любой перевод с момента запуска сети. Достаточно вставить в поиск хеш транзакции, и вы увидите сумму, адрес получателя, время и число подтверждений. Например, после вывода в криптовалюте из FlowHash хеш транзакции появляется в кабинете, и перевод можно проверить самостоятельно.
У открытости есть последствия. Имён в Bitcoin нет, но вся история адреса видна каждому, поэтому анонимность здесь условная. Есть сети, которые намеренно скрывают детали, например Monero.
Где блокчейн полезен, а где лишний
По сравнению с обычной базой данных блокчейн дорогой и медленный: каждую запись хранят и проверяют тысячи компьютеров. Платить такую цену есть смысл, только когда она что-то покупает.
| Ситуация | Подходит ли блокчейн | Почему |
|---|---|---|
| Цифровые деньги без банка | Да | Участники не доверяют друг другу, посредника нет |
| Переводы между странами | Часто да | Сеть работает одинаково везде и круглосуточно |
| Учёт товаров одной компании | Нет | Есть владелец данных, обычная база быстрее и дешевле |
| Хранение личных данных | Нет | Запись нельзя удалить или исправить |
| Большие файлы и видео | Нет | Копию хранит каждый узел, это дорого |
| Тысячи операций в секунду | Обычно нет | Биткоин обрабатывает в среднем единицы переводов в секунду |
| Проверка подлинности товара | Сомнительно | Цепочка не знает, что случилось в реальном мире |
Последняя строка важнее, чем кажется. Блокчейн надёжно хранит то, что в него записали, но не проверяет, правда ли это. Если на складе внесли ложные данные о партии товара, они так и останутся ложными, только уже навсегда.
Блокчейн, биткоин и криптовалюта: что чем называется
Фразу «блокчейн и есть биткоин» можно услышать часто, и она неверна. Вот как соотносятся эти слова.
- Блокчейн. Способ хранить записи цепочкой блоков. Это технология, и работают на ней многие сети.
- Биткоин. Первая и самая известная сеть на блокчейне вместе со своей монетой BTC.
- Криптовалюта. Цифровая монета, которая живёт в такой сети. Bitcoin, Litecoin, Monero и Pearl работают в разных сетях с разными правилами.
- Майнинг. Один из способов выбирать, кто запишет новый блок. Он есть не везде, в сетях на Proof of Stake майнеров нет. Подробнее в статье что такое майнинг.
Бывают и частные блокчейны, где участников заранее утверждает компания или группа компаний. Монеты там может вообще не быть, а надёжность держится на договорённости между известными сторонами.
От теории к своему компьютеру
Калькулятор покажет, какой хешрейт ваша видеокарта и процессор могут дать сетям на блокчейне и какой у них прогноз.