Ветеран криптовалютной индустрии и технический директор стартапа Casa Джеймсон Лопп ответил на критику в адрес разработчиков Bitcoin Core, которых периодических упрекают в захвате контроля над сетью биткоина, рассказав, как в действительности устроен весь этот процесс.
В частности, в своей обширной записи в блоге на Medium Лопп объясняет, как именно принимаются решения и что ключевым моментом во всей работе разработчиков является достижение консенсуса касательно того, будет ли внесен тот или иной код в репозиторий GitHub.
По его словам, несмотря на то, что отдельные разработчики Bitcoin Core действительно имеют так называемые эксплуатационные аккаунты (maintainer), при помощи которых могут вносить код в основную ветвь разработки, эти аккаунты носят больше технически-обслуживающий характер. Их владельцы выбираются на определенное время и имеют уникальный PGP-ключ, при помощи которых могут подтверждать вносимые изменения.
На сегодняшний день имеется пять таких доверенных PGP-ключей:
71A3B16735405025D447E8F274810B012346C9A6
133EAC179436F14A5CF1B794860FEB804E669320
32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC
B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B
CA03882CB1FC067B5D3ACFE4D300116E1C875A3D
Их владельцами являются Владимир ван дер Лаан, Питер Велле, Йонас Шнелли, Марко Фальке и Самуэль Добсон.
В теории злоумышленник, впрочем, по-прежнему может использовать свои административные привилегии, чтобы внедрить в репозиторий код без согласия владельца эксплуатационного аккаунта, используя для этих целей функцию запроса на включение кода (Pull Request). Таким злоумышленником может, например, оказаться, сотрудник GitHub.
По этой причине Bitcoin Core имеет обширную систему интеграции, в том числе предполагающую проверку доверенных PGP-ключей.
«Несмотря на то, что эти ключи привязаны к известным лицам, по-прежнему небезопасно предполагать, что так будет всегда – ключ может быть скомпрометирован, и мы не будем об этом знать до тех пор, пока его владелец не поставит об этом в известность других владельцев эксплуатационных аккаунтов», — пишет Джеймсон Лопп.
Код, который был верифицирован при помощи PGP-ключа, может быть подвергнут дополнительному аудиту. Например, любой другой разработчик может провести на своем компьютере так называемую проверку целостности (verify-commits).
«Если скрипт завершен успешно, это говорит нам о том, что каждая строка кода, которая подверглась изменениям, прошла через процесс разработки Bitcoin Core и была подписана одним из владельцев эксплуатационного ключа», — говорит Лопп.
Тем не менее он также признает, что даже этот метод не гарантирует полной безопасности, хотя и служит весьма мощным заслоном на пути злоумышленников. По этой причине последней линией обороны для Bitcoin Core, как и для любого другого opensource-проекта, говорит Лопп, остается постоянная бдительность – чем больше разработчиков проверяют код, тем меньше остается возможностей, что зловредный код попадет в репозиторий.
Процесс разработки Bitcoin Core также включает в себя специальный пакет комплексного тестирования, которому подвергается каждый запрос на включение кода. Его дополняет более обширный процесс тестирования, выполняемый каждую ночь. Доступный каждому разработчику, код может быть открыто протестирован посредством клонирования репозитория GitHub. Покрытие кода можно, например, увидеть на странице Марко Фальке.
Такое обширное тестирование, говорит Джеймсон Лопп, означает более высокую вероятность того, что итоговый код будет функционировать должным образом и играет большую роль в достижении консенсуса.
Более того, если речь идет о крупных изменениях кода, разработчики могут прибегнуть еще к одному методу – тестированию тестирования. С этой целью они преднамеренно взламывают код, чтобы убедиться, что тест завершился неудачно.
Об этом же, например, говорил Грегори Максвелл летом 2017 года во время презентации релиза Bitcoin Core 0.15:
«Тест – это тестирование софта. Но что такое тест теста? Это софт. Чтобы протестировать тест, необходимо взломать софт».
Джеймсон Лопп допускает, что все это может оказаться сложным для понимания обычным пользователям, однако подчеркивает, что ключевой аспект безопасности биткоина заключается в том, что если бы была одна точка контроля, то была бы и одна точка отказа, которую бы смогли атаковать те, кому биткоин несет угрозу.
«В конечном счете, сетью управляют все операторы ноды, обеспечивая соблюдение правил, с которыми они согласились. Эта модель безопасности является фундаментом коллегиального управления биткоином», — заключил Лопп.
Напомним, последний крупный релиз Bitcoin Core под версией 0.17.0 состоялся в начале октября этого года.
Источник: forklog.com