Как разрабатывают Биткойн

18
ПОДЕЛИТЬСЯ


Биткойн-экономика стремительно развивается, венчурные компании вкладывают сотни миллионов долларов в биткойн-стартапы, стоимость всех биткойнов составляет миллиарды… За всем этим непросто разглядеть небольшую — несколько десятков — группу людей, которая поддерживает разработку Bitcoin Core — эталонной реализации протокола Bitcoin. Как организовано создание технологии, обещающей изменить мир? Кто определяет стратегию развития сети? И кто может заблокировать неугодные биткойн-адреса?

5 октября пользователь xiando сообщил об ошибке в реализации bitcoind для Gentoo — дистрибутива GNU/Linux, известного широкими возможностями конфигурации. Биткойн-клиент для Gentoo не позволял отправить биткойны на адрес, принадлежащий онлайн-казино Satoshi Dice, выдавая ошибку: «ignoring transaction … with blacklisted output».

Черные списки

black-listНа претензии автор обсуждаемой версии bitcoind, пользователь под ником Luke-Jr, ответил, что адреса онлайн-казино заблокированы намеренно. В черный список попали также адреса, используемые протоколами Counterparty и Mastercoin, которые кодируют дополнительную информацию в обычных биткойн-транзакциях.

Завязался спор: пользователи обвиняли разработчика в нарушении базового принципа сетевого нейтралитета, Luke-Jr же настаивал на том, что онлайн-казино и метапротоколы засоряют блокчейн множеством мелких транзакций, преследуя собственные цели, и назвал подобную практику «DdoS-атакой на биткойн»:

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

Впрочем, в черный список попал и адрес, с которого в мае 2013 года было одновременно отправлено более 8000 мелких транзакций — вероятно, с целью атаки на сеть.

Один из разработчиков Bitcoin Core Майк Херн (Mike Hearn) не одобряет действия Luke-Jr:

«Тот, кто хочет распространять биткойн со столь существенными изменениями, должен создать отдельный проект под собственным именем, чтобы никого не вводить в заблуждение».

Разработчик Bitcoin Core Грегори Максвелл также не поддерживает идею черных списков:

«В некоторых аспектах все участники сети биткойн должны соглашаться, иначе сеть не будет работать. Мы называем это правилами консенсуса, они отвечают на вопросы вроде «валиден ли блок?». Разногласия в правилах консенсуса опасны для всей системы».

Впрочем, Максвелл добавил, что это всего лишь его личное мнение, а условия лицензии MIT, на условиях которой распространяется код биткойна, в данном случае нарушены не были.

Luke-Jr впоследствии извинился перед пользователями, но только за то, что оставил свой спам-фильтр по умолчанию включенным и не составил достаточно подробной документации к нему. Сам же подход, допускающий цензуру отдельных адресов, он считает действенным способом борьбы со спамом и надеется, что рано или поздно такой вариант спам-фильтра в качестве дополнительной опции войдет в стандартную реализацию Bitcoin Core.

«Подобные изменения никогда не войдут в официальный репозиторий биткойна, но если люди хотят использовать измененную версию, они могут это делать», —

комментирует ситуацию Владимир ван дер Лаан, ведущий разработчик биткойна.
Но кто вообще может решать, какие изменения войдут в официальную версию Bitcoin Core?

Как разрабатывают биткойн

Для людей, интересующихся криптовалютами, давно уже не новость, что слово «биткойн» многозначно. Оно обозначает и валюту, и сеть, и протокол, и программное обеспечение. Заметим, что «протокол» и «ПО» — это не одно и то же. Протокол — это формальное описание набора правил, следуя которым можно организовать распределенную сеть. Описание протокола было опубликовано Сатоши Накамото в конце 2008 года. Сама же сеть биткойн появилась в январе 2009 года, когда Сатоши опубликовал первую версию эталонной реализации своего протокола и «вручную» создал первый блок.

Программа, которую создал Сатоши, долгое время не имела аналогов и была единственной реализацией протокола Биткойн. Сейчас она называется Bitcoin Core, а ранее была известна как Bitcoin-qt. Заметим, что некоторые современные проекты децентрализованных сетей уже на первом этапе разрабатывают несколько реализаций протокола: например, команда Ethereum одновременно работает над клиентами на языках C++, Go и Python.

Программисты, заинтересовавшиеся идеями Сатоши, постепенно улучшали код Bitcoin Core, написанный на C++. Перед тем как исчезнуть Сатоши делегировал право принятия окончательных решений, касающихся официальной версии кода, Гэвину Андресену. В 2014 году Андресен передал это право Владимиру ван дер Лаану, чтобы сконцентрироваться на исследовательской работе в Bitcoin Foundation.

Основной задачей разработчиков биткойн является стабильность работы сети. Изменения может предложить любой, но принимаются они с большой осторожностью. Как же устроен механизм принятия решений при разработке биткойна?

Контроль версий

GithubИсходный код Bitcoin Core управляется системой управления версиями Git. Git — одна из популярных подобных систем, созданная автором Linux Линусом Торвальдсом. Она используется при разработке таких проектов как Linux kernel, Debian, Ubuntu, Android и Mediawiki. Git позволяет разработчикам видеть, над какой версией проекта они работают, и отслеживать, кто, когда и какие изменения внес.

Разработчики биткойна запускают Git на своих компьютерах и подключаются к центральному серверу, что позволяет работать над проектом одновременно. Этот сервер — Github — хранит множество проектов, принадлежащих разным людям. Биткойн — лишь один из таких проектов.

Может возникнуть вопрос: как вышло так, что разработка инструмента всеобщей децентрализации ведется на централизованном ресурсе? Не могут ли владельцы Github незаметно внести изменения в код биткойна? А что будет, если Github уйдет в офлайн (что в России более чем реально)? На самом деле, никакой проблемы в этом нет.

Git относится к распределенным СКМ с адресацией по содержимому. Это означает, что, во-первых, каждый разработчик перед началом работы должен скопировать последнюю версию кода на свой компьютер. Так что в любой момент времени последняя версия исходного кода биткойн находится как минимум на компьютерах десятков разработчиков. Во-вторых, файлы в Git нельзя незаметно подделать. Для контроля целостности файлов Git использует хэш-функцию (SHA-1), порождающую для каждого набора данных уникальный цифровой отпечаток. Кстати, вычислением похожих функций занимаются и биткойн-майнеры.

Страница на Github считается официальным хранилищем кода Bitcoin Core. Желающие внести изменения в код должны сначала создать его копию — форк. Разработчики могут изменять форки по своему усмотрению (как Luke-Jr изменил свой форк, заблокировав платежи на некоторые адреса). Они также могут создать пулл-реквест, то есть попросить разработчиков о включении своих изменений в основную ветвь проекта.

«Идея состоит в том, что другие разработчики из сообщества будут просматривать предложенные изменения. Если обнаруживаются ошибки, автор пулл-реквеста исправляет их. Иногда приходится объединить усилия сообщества для тестирования, особенно если речь идет о сложных нововведениях или критически важных компонентах», —

объясняет Ван дер Лаан.

Если достаточное количество людей высказывается в поддержку пулл-реквеста, его код сливается с главной веткой. Но кто все-таки принимает окончательное решение?

Таким правом обладают лишь несколько человек. Помимо Ван дер Лаана и Андресена, это Джефф Гарзик, Грегори Максвелл и Питер Вулль. Не очень похоже на демократию, правда?

«Каждый отдельный Github-репозиторий недемократичнен. Технически сложные вопросы не могут решаться всеобщим голосованием», —

считает Ван дер Лаан.

Предложения по улучшению

Разработка Bitcoin Core намеренно очень консервативна, и большинство изменений не носят революционного характера и не вызывают споров. Разработчики биткойна имеют дело скорее с небольшими, последовательными изменениями, а не с революционными нововведениями. Типичный биткойн-патч может переоформить участок кода, сделав его более удобным для чтения, или немного уменьшить расход памяти.

Но есть и изменения, последствия которых могут быть куда более существенными: изменения в правилах консенсуса. Для корректной работы сети среди биткойн-клиентов не должно быть разногласий по поводу этих правил.

«Такие изменения изучаются очень внимательно. Сначала идет их обсуждение в списках рассылки, потом формулируется «предложение к улучшению», а пулл-реквесты обычно вызывают споры и долго остаются открытыми, чтобы предоставить время для дискуссии», —

разъясняет Ван дер Лаан.

Предложение к улучшению (Bitcoin Improvement Proposal, BIP) — это документ, предлагающий существенное глобальное изменения в каком-либо аспекте биткойна. Он может затрагивать сущности и вне Bitcoin Core, например, мобильные кошельки или генерацию ключей в аппаратных кошельках. В таком документе также могут выноситься предложения по изменениям процессов вокруг разработки биткойна, в том числе и по алгоритму принятия решений.

Кто угодно может создать BIP, следуя установленному формату. Сообщество обсуждает документ, и если он находит поддержку, его статус может быть изменен на «активное» или «финальное». По словам Ван дер Лаана, шансы предложения быть реализованным повышаются, если автор приложит к нему пример исходного кода, который другие участники могли бы просмотреть и протестировать.

Не читал, но утверждаю

Биткойн-консультант и аудитор по безопасности Сержио Лернер выступает за большую формализацию процесса принятия изменений.

«Когда вы видите, что пулл-реквест слит с основной веткой, сложно сказать, кто принял это решение и насколько тщательно были изучены изменения в коде. Требуется прочесть множество комментариев вроде “+1”, которые могут означать как “я согласен”, так и “я поддерживаю идею, но не читал код”».

keysЛернер выступает за то, чтобы включение изменение в основную ветку требовало бы согласия одновременно нескольких ключевых участников разработки. Этот процесс схож с алгоритмом работы некоторых биткойн-кошельков, где требуется несколько подписей для подтверждения транзакции.

Среди других предложений Лернера — тщательный анализ того, почему обнаруженные баги не были замечены вовремя, организация независимого анализа исходного кода с упором на информационную безопасность, формальное описание документации, которая должна сопровождать каждое изменение кода и пояснять, что именно было изменено.

Проблема в том, что для этого нужны человеческие ресурсы и время:

«Очевидно, что реализация этих идей требует административной работы, бюджета и большего количества разработчиков, которых сейчас не хватает. Но для кода, на котором держится шестимиллиардная индустрия, это оправдано».

Не только Bitcoin Core

В то время как Лернер подчеркивает важность процессов при анализе предлагаемых изменений, Ван дер Лаан соглашается с точкой зрений Гэвина Андресена, высказанной на Bitcoin Conference 2014:

«В процессах с BIP еще требуется работа. Я был бы счастлив, если бы разработчики альтернативных реализаций протокола, в том числе полных узлов, активнее бы участвовали в обсуждении и написании предложений к улучшению».

Впрочем, как и всегда в разработке ПО с открытым исходным кодом, слово теперь за пользователями: только они могут воплотить идеи в жизнь. Причем, развитие биткойна — это не только усовершенствования Bitcoin Core. Ван дер Лаан считает, что:

«Так как биткойн по природе своей глобален, распределен и не организован, не существует организации, чьей прямой обязанностью было бы поддержание механизма принятия предложений по улучшению. Так что дело за людьми и организациями, которые считают это важным и могут объединиться ради этой цели. В своей речи на конференции Bitcoin Conference 2014 Гэвин отметил, что для него важна диверсификация. Он говорил об альтернативных реализациях полных узлов и даже сказал, что, чем больше их, тем лучше. И хотя моя работа — поддерживать разработку Bitcoin Core, я, скорее, согласен с ним. В первые годы Bitcoin Core был невероятно важен, и разработчики должны были поддерживать инфраструктуру узлов и исправлять баги в любое время дня и ночи. Но для того, чтобы стать глобальной распределенной сетью, биткойн должен мыслить шире».

Так что, хотя окончательные решения о развитии биткойна действительно принимает небольшая группа людей, но это не значит, что в своих решениях она не опирается на общественную дискуссию — ровно наоборот.

Некоторые разработчики Bitcoin Core даже активно призывают создавать альтернативные реализации протокола, предполагая, что, если какая-то из них не будет следовать протоколу, такие клиенты быстро потеряют согласованность с сетью и будут вынуждены играть по общим правилам.

Развитие биткойна в этом направлении создаст условия для воплощения востребованных пользователями идей, сохраняя при этом правила консенсуса. Это также уменьшит давление на небольшую группу людей, поддерживающих технологию, на которой основана быстро растущая отрасль. Если все будет сделано правильно, некоторые из процессов, предложенных Лернером, также могут быть внедрены.

Вопрос заключается в том, сможет ли множество реализаций протокола биткойна бесконфликтно и эффективно сосуществовать. И должны ли авторы альтернативных реализаций протокола обладать правом вводить собственные правила, например, цензурировать неугодные адреса?

По материалам Coindesk

18 КОММЕНТАРИИ

  1. Просто скачать блокчейн торентом- мало. При первом запуске его еще клиент биткоин кор будет распаковывать. И это займет также долгие часы. Пробывал ради эксперимента, на 4х ядерном проце с ssd диском ждал часов 5, недождался, плюнул на это дело и выключил.

  2. Однако, визуализация разработки завораживает… из упорной работы всего одного человека, возникла и развилась целая сеть.

  3. Не знаю, чем там занимаются все эти “жрецы святого Биткойна”, но вот что официальным клиентом вот уже два года пользоваться абсолютно невозможно, это факт. Неудивительно, что число полных нод во всем мире резко сократилось, и скоро вообще приблизится к нулю.

    • Почему невозможно? Пользуюсь как и раньше, что-то непонятно что вы имеете ввиду.

      • Пробовали установить новую версию Core на новом компьютере без базы? Знаете, сколько времени это занимает? Для новичка, этот многонедельный “танец с бубном” просто непосилен… Да и старички, уже тоже потихоньку сдаются, и переходят на что-то более вменяемое.

        • Бред…
          Скачайте более легкую версию чтобы не закачивать весь блокчейн.
          Причем тут полная версия? не хотите не качайте…

        • “Легкую версию” чего, собственно? У Bitcoin Core нет “легкой версии”. Речь как раз и идет о том, что из-за сложности установки Bitcoin Core, люди массово переходят на альтернативные “облегченные” кошельки, а число “полных нод” с блокчейном стремительно падает.

          Вместо того, чтобы решать эту главную проблему – как сделать так, чтобы люди могли реально установить Bitcoin Core, не сойдя при этом с ума – разработчики “официального клиента” занимаются какой-то откровенной фигней, типа “платежного протокола” или увеличения размера блоков: http://bitnovosti.io/2014/10/10/masshtabirovanie-bitcoina/

        • Дракорекс, у тебя имеется опыт пользования торрентов? Уверен, все новички знают как качать файлы с торрент трекеров. Так вот, скачать блокчейн, под Bitcoin Core, не составит труда ни у кого. Ссылка на торрент закачку имеется на офф. сайте. Так что никаких танцев с бубном, недель ожидания и т.д не должно быть.
          Если же человек не имеет понятия что такое торрент, то мне сложно догадаться, как он вообще попал в крипто сообщество.

        • Ну, все-таки про торрент еще сначала догадаться нужно, чего и куда качать. Для этого нужен опыт, а этого-то у новичков и нет. Их опыт: скачал-установил-работает. Если нет, то ну его нафиг – все остальное – именно танцы с бубном. Статистика загрузок и установок это подтверждает, как бы мы себя не успокаивали, что все путем.

        • скачал- подождал синхронизацию- пользуйся. Правда надо докачивать постоянно блоки, а как иначе?
          Предположим как-то уменьшили блокчеин до 5 мегабайт, но сихронизация никуда не исчезнет. И со временем блокчеин опять вырастет. Придется существенно что-то менять и как бы запороли. Пока размер блокчеина не достиг хотябы 100 гб, особо переживать не стоит.

          Да и чем вас не устраивют тонкие клиенты, сервис блочеин.info?
          традиционные платежные системы – обычные сервисы, ведь ими пользуются и они сверхпопулярны.
          Не стоит забывать что биткоин это еще бета.
          А вот размер блока,что будет если вам придется ждать свою транзакцию неизвестно сколько? Мысли про размер блокчеина улетучатся вмиг , только бы перевод скорее пришел.

          Независимая,простая,удобная,легкая платежная система …. ну не знаю,может такое и возможно.

        • Ну великоват размер блокчеина, что поделать. Чем-то придется пожертвовать пока что-то не придумают и очевидно не так это просто как вам кажется, иначе бы давно сделали.
          Хотя все это относительно, сколько там последние игры занимают? а фильмы высокого качества?

          Как тут заметили новички пусть пользуются тонкими клиентами. Хотя у кого быстрый интернет за день скачают. Я несколько раз за последний год качал с нуля весь блокчеин, точно сказать не могу сколько это заняло, т.к. включал и уходил по делам, ну дня два наверно качало, хотя скорость у меня не очень.

          “многонедельный «танец с бубном» ” это что ж за скорость должна быть?

          Это конечно проблема, но пока,имхо, не настолько острая.

    • Это не жрецы – Апостолы. Вы разве не видите зараждающуюся новую религию. Еще Нострадамус, кстати, предрек.

      • Для того, чтобы религия стала по-настоящему убедительной, Сатоши должен был бы вознестись на облацех. А он, свинья такая анонимная, просто взял и слинял по-английски…

        • Чего вдруг? Новая религия – новые критерии убедительности. 21й век то уже, не 1й от РХ 🙂

        • Ну, как минимум должны быть криптические крипто-свидетельства крипто-апостолов о том, как Он чудодейственным образом бесследно растворился в крипто-эфире. Подписанные их крипто-ключами, для верности. А иначе, не добиться, чтобы все заверте…

        • Ну это понятно, все будет. 6й год всего от GB.
          Я лично думаю, что цивилизация сначала в ближайшем будущем претерпит некие сильные непредсказуемые изменения. Мы все, ныне живущие, канем в лету. А потом только данная религия наберет свою силу и тогда уже и появятся/проявятся все ее атрибуты. На “золотого тельца” – старого Мессию – молиться уже никто не будет.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here