среда, 7 сентября 2016 г.

Формат блокчейна криптовалюты Биткойн


Заметка профессионального разработчика программного обеспечения Гэри МакГэфа (Gary McGath - на фото) была опубликована 30 августа 2016 года на его блоге «Сумасшедшая наука о файловых форматах» (Mad File Format Science), который посвящён «файловым форматам, проверке структуры файлов, программному обеспечению для архивации и прочим странным вещам».

Судьба криптовалюты «Биткойн» (Bitcoin) зависит от доверия и безопасности. Если вследствие ошибки в архитектуре будет потеряно доверие или удобство использования, вся система рухнет.

Поэтому странно то, что у «Биткойна» нет формальных спецификаций, причем это позиционируется не как ошибка, а как сознательное решение и достоинство системы:
«Документация для разработчиков» (Developer Documentation) на сайте  Bitcoin.org описывает, как функционирует Bitcoin, с тем, чтобы способствовать подготовке  новых Bitcoin- разработчиков, - но это не спецификации, и она никогда ими не будет.

Защищённость «Биткойна» зависит от консенсуса. ... Единственно правильными спецификациями поведения на основе консенсуса является фактическое поведение программ в поддерживающей консенсус сети. Поскольку на это поведение влияют произвольные воздействия в рамках очень  разнообразных уникальных сред, оно никогда не может быть в полное мере задокументировано здесь или где-либо еще.
Безусловно, это один из способов гарантировать безошибочность кода. Если фактическое поведение кода и является его спецификациями, оно не может быть неправильным. Но имеют ли подобные спецификации смысл?

«Биткойн» основан на технологии «блокчейн». По сути блокчейн представляет собой распределенный, подписанный электронным образом реестр. Все транзакции, подлинность которых заверяется их участниками, добавляются в блокчейн, который во времени просто продолжает расти. Каждая транзакция зафиксирована в блоке, который связан с предшествующим блоком (содержит его хеш – Н.Х.).

«Биткойн» задуман как децентрализованная система, но децентрализация в сфере файловых форматов идет рука об руку с открытыми спецификациями. Любой может создать файл формата Open Office, поскольку его спецификации являются публичными, и любой может написать код для проверки файлов на соответствие этим спецификациям. Проприетарные, неопубликованные форматы используют код в качестве спецификаций, а  остальным приходится заниматься их декомпиляцией.

Справочник разработчика ( https://bitcoin.org/en/developer-reference ) фактически содержит много подробностей о формате блокчейна. В него, однако, включен решительный отказ от ответственности (disclaimer), согласно которому «данная документация не была детально проанализирована экспертами Bitcoin, поэтому с большой вероятностью содержит многочисленные ошибки». В случае конфликта между кодом и документацией, код является окончательной инстанцией.

Блокчейн «Биткойна» позволяет хранить в нём произвольные данные ( http://www.righto.com/2014/02/ascii-bernanke-wikileaks-photographs.html ). Это не мешает чьим-либо финансовым транзакциям, но означает, что некто может постоянно хранить в каждом экземпляре блокчейна потенциально взрывоопасный контент. Что делать, если кто-то вставит в блокчейн данные, которые сделают обладание его копией преступлением?

У некоторых специалистов вызывает беспокойство возможность разделения блокчейна на независимо функционирующие части (split,  https://www.quora.com/What-would-happen-to-bitcoin-blockchain-if-the-internet-split-in-two-say-china-and-the-rest-world-in-2018-for-one-year-and-remerge-again ). Предположим, что, например, Китай на год отрезал себя от мирового Интернета, и в течение этого времени китайцы продолжали использовать «Биткойн» - а затем китайский национальный сетевой экран отключился. В этом случае будут существовать два сложившихся, расходящихся между собой блокчейна, которым затем придётся конкурировать друг с другом в рамках процедуры консенсуса. Люди, имеющие доступ к обоим частям Интернета, могли бы одни и те же деньги потратить дважды. Разрешением подобной ситуации может быть постоянное разделение, с созданием двух независимо функционирующих «Биткойнов».

В настоящее время идут горячие дебаты по поводу увеличения размера блока в «Биткойне» ( http://www.coindesk.com/bitcoin-core-segregated-witness-merge/ ). Валюта оказалась гораздо более популярной, чем ожидал её таинственный создатель, и существующий размер блока делает транзакции неэффективным по мере увеличения объёмов использования.

«Биткойн» выглядит как классический случай достаточно хорошего формата, который стал настолько популярным, что становится трудно заменить его на что-то лучшее.

Действительно ли «Биткойн» децентрализован? Он опирается на одну базу данных блокчейна (сколько бы копий её не существовало), и на один комплект программного обеспечения (пусть даже это программное обеспечение с открытым исходным кодом).

Возможность жесткого постоянного разделения «Биткойна» на два или более отдельных блокчейна (hard fork) может оказаться его спасением. Мир с несколькими блокчейнами и техническими вариациями может оказаться более устойчивым, чем мир с одной криптовалютой.

Я не претендую на то, чтобы считаться экспертом по этой технологии; я просто пытаюсь взглянуть на неё с точки зрения технологии файловых форматов и поднять ряд вопросов. Если вы думаете, что я огибаюсь, или же хотите подробнее обсудить соответствующие вопросы, пожалуйста, оставьте свой комментарий на блоге.

Гэри МакГэф (Gary McGath)

Источник: блог «Mad File Format Science»
https://madfileformatscience.garymcgath.com/2016/08/30/bitcoin-blockchain/

Комментариев нет:

Отправить комментарий