Биткойн — децентрализованная денежная система, peer-to-peer сеть, обрабатывающая платежи на триллионы долларов в год без участия доверенной третьей стороны. Но в основе своей сеть Биткойна представляет собой набор программ, работающих одновременно на десятках тысяч компьютеров по всему миру и постоянно обновляющих состояние общего реестра данных, называемого блокчейном.
Биткойн известен прежде всего изобретательным использованием технологии блокчейн, лежащей в его основе, однако определяющей его характеристикой в конечном счете является делегирование власти и полномочий пользовательской базе. В этом отчете авторы NYDIG рассказывают о техническом развитии Биткойна и об активном сообществе опенсорс-разработчиков, которые поддерживают и развивают кодовую базу Биткойна и его экосистемы.
Содержание:
Кто такой Сатоши Накамото?
Сатоши Накамото — это псевдоним человека (или группы людей), создавшего Биткойн, первый успешный децентрализованный цифровой актив. Многие годы загадка личности Сатоши привлекала к себе пристальное внимание. Многие люди были так или иначе связаны с Сатоши или даже считались им в какой-то момент, но достоверно идентифицирован создатель Биткойна так и не был. В ранние годы Биткойна Сатоши коммуницировал с сообществом через имейл-рассылки, доски объявлений и в прямой переписке по электронной почте. Однако о нем ничего не слышно уже более десяти лет, и за это время вклад Сатоши был вытеснен или дополнен обширным сообществом опенсорс-разработчиков. Для кого-то может быть трудно принять тот факт, что личность Сатоши так и осталась неизвестной, однако всё, что нужно, чтобы оценить элегантность сети Биткойна, — это это некоторое высокоуровневое представление о программном коде Биткойна и сообществе, которое его поддерживает. Код публично доступен для ознакомления, критики и анализа уже более 13 лет. Он прошел проверку временем и продолжает эволюционировать, а сообщество поддерживающих его разработчиков с годами становится все более многочисленным и активным.
Предыстория Биткойна до опенсорс-разработки
Запуск сети Bitcoin состоялся 3 января 2009 года, когда Сатоши добыл блок генезиса, в котором зашифровал ставшее знаменитым сообщение «The Times 03/Jan/2009 Chancellor on the brink of second bailout for banks» («Канцлер готов во второй раз предоставить банкам государственное субсидирование») — отсылка к свежему заголовку лондонской газеты The Times. Оглядываясь назад, можно сказать, что это было знаменательное событие для технологии с открытым исходным кодом, в итоге сыгравшее роль «большого взрыва» для всей индустрии цифровых активов. Но на тот момент таких перспектив совершенно не просматривалось, и момент рождения Биткойна, вероятно, был засвидетельствован только Сатоши. Впервые оригинальная идея Биткойна была озвучена несколькими месяцами ранее, 31 октября 2008 года. В тот хэллоуин Сатоши отправил письмо в список рассылки для энтузиастов криптографии под названием Cryptography Mailing List. «Я работаю над новой системой электронных наличных, полностью p2p, не требующей участия доверенных посредников», — так начинался тот имейл. Далее Сатоши описал свойства технологии и приложил ссылку на статью “Bitcoin: A Peer-to-Peer Electronic Cash System”, размещенную на bitcoin.org, домене, зарегистрированном несколькими месяцами ранее, 18 августа 2008 года.
Реакция на его заявление была неоднозначной, с нотками осторожного оптимизма и здоровой долей скепсиса. В следующие несколько месяцев Сатоши, который признавался, что создание Биткойна потребовало нескольких попыток в течение нескольких лет до его нынешней итерации, собирал отзывы, распространяя предрелизную версию протокола среди части подписчиков рассылки, что можно считать первым актом опенсорс-разработки Биткойна. Однако в окончательной первой релизной версии Биткойн станет доступен для общественности только 8 января 2009 года. Прошло пять дней после того, как Сатоши добыл блок генезиса, когда на SourceForge была выложена в открытый доступ версия v0.1, которую уже мог скачать любой желающий. Ученый в области компьютерных наук Хэл Финни стал первым получателем биткойн-транзакции, когда 12 января Сатоши отправил ему 10 биткойнов.
Ранние участники разработки Биткойна
На ранней странице на SourceForge, созданной Сатоши, признавался вклад в проект нескольких человек, хотя сам код был полностью написан Сатоши. Среди названных контрибуторов — Hal Finney, первый получатель биткойн-транзакции; разработчик Laszlo Hanyecz, известный как автор первой реальной коммерческой транзакции с использованием Биткойна — 10 000 BTC за две пиццы Papa John’s; энтузиаст David Parrish; студент финского колледжа Martti Malmi, который создал первые форумы биткойн-комьюнити и помог донести информацию о Биткойне до первых пользователей; и некто под псевдонимом madhatter2. Включая Сатоши, в числе авторов проекта было названо 6 участников, но только Сатоши непосредственно обновлял код.
Построение сообщества
На ранних этапах все обновления в кодовой базе Биткойна вносились самим Сатоши, а отдельные лица общались с ним в частной переписке по электронной почте или публично в списке рассылки Биткойна. Появилось множество чат-каналов и досок объявлений, посвященных развитию и поддержке Биткойна, и Сатоши часто общался с комьюнити через эти площадки. Однако, поскольку разработка кода была сильно централизована вокруг фигуры Сатоши, разработчики в конечном итоге разочаровались в «узком месте», которое стал представлять собой основатель проекта. В 2010 года вклад Сатоши в развитие кодовой базы и в целом его участие в жизни сообщества стали ослабевать. В конце концов Сатоши передал управление проектом разработчику по имени Гевин Андресен (Gavin Andresen), который перенес код Биткойна на GitHub. GitHub упростил участие в проекте сообщества разработчиков, что сделало процесс более открытым и инклюзивным. С появлением GitHub любой член биткойн-комьюнити мог предлагать изменения, а некоторые разработчики получали статус «мейнтейнера» проекта и могли фактически утверждать (или нет) предлагаемые изменения в коде Биткойна. Новые мейнтейнеры добавляются на основе консенсуса текущих мейнтейнеров.
Сатоши отходит от проекта
К концу 2010 года, менее чем через 2 года после запуска Биткойна, Сатоши отошел от участия в проекте. Последнее публичное сообщение Сатоши датировано декабрем 2010 года. Тогда же Сатоши в последний раз сам внес изменение в код, а Гевин Андресен создал репозиторий с кодом Биткойна GitHub. Отойдя от проекта, Сатоши сделал Андресена де-факто «ведущим разработчиком» Биткойна. В последнем письме разработчику Майку Хирну (Mike Hearn) Сатоши писал: «Я переключился на другие вещи. Проект в хороших руках с Гевином и остальными».
Путь Биткойна к децентрализации
С уходом Сатоши Биткойн перешел — технически и духовно — из-под опеки своего создателя к сообществу, хотя это еще не означает, что разработка была полностью децентрализована. В следующие несколько лет Андресен возглавлял проект Bitcoin. В своей ведущей роли он иногда принимал волевые решения несмотря на возражения некоторых членов комьюнити, в частности, при введении в код софтфорка Pay-to-Script-Hash.
В 2014 году Андресен уступил роль «ведущего разработчика» (хотя и сохранил администраторский доступ) голландскому разработчику Владимиру ван дер Лаану (Wladimir van der Laan), чтобы сосредоточиться на работе в роли «главного научного консультанта» в Bitcoin Foundation, некоммерческой организации (ныне в основном не функционирующей), занимавшейся продвижением использования Биткойна в качестве криптографических денег на благо пользователей по всему миру. Ван дер Лаан рассматривал себя не столько как лидера, сколько как координатора, поэтому его «правление» в основном основывалось на консенсусе. Через несколько лет после «вступления в должность» его лидерство было поставлено под сомнение самым большим расколом в истории Биткойна. «Спор о масштабировании», философская и техническая дискуссия о том, следует ли увеличивать пропускную способность Биткойна в отношении количества транзакций и как именно, многие годы будоражил сообщество разработчиков, разрешившись только после хардфорка Bitcoin Cash в августе 2017 года. На пике этих дебатов Андресен, выступавший за увеличение размера блока, был лишен ван дер Лааном администраторского доступа к кодовой базе Биткойна (хотя Андресен не был активен в Bitcoin Core уже многие месяцы). Этот спор был разрешен, когда сообщество так называемых биг-блокеров объединилось вокруг форка под названием Bitcoin Cash, где размер блока был увеличен. Четыре года спустя, в 2021 году, сам ван дер Лаан объявил о намерении уйти с поста ведущего мейнтейнера, а после того успел сообщить о намерении отказаться и от роли мейнтейнера. На позиции ведущего мейнтейнера его заменил уже не один, но группа разработчиков, что означает следующий шаг Биткойна по пути децентрализации.
Как Биткойн обновляется сегодня?
Сегодня Биткойн — это полностью открытый опенсорс-проект, создаваемый и поддерживаемый разработчиками со всего мира. Есть множество способов внести свой вклад в код Биткойна, включая участие в обсуждении через список рассылки, на одном из форумов или IRC-чатов, участие в митапах и учебных группах и внесение предложений по обновлению кода на GitHub. Крупные обновления Биткойна обычно начинаются с Bitcoin Improvement Proposals (BIP) (предложений по улучшению Биткойна), которые представляют собой проектные документы, описывающие предлагаемые изменения кода. Эти предложения обсуждаются сообществом, разрабатываются и тщательно тестируются, прежде чем они будут включены в основную кодовую базу Биткойна. Процесс ревью в Биткойне очень сложен, и тщательность проверки является существенным отличием от прочих криптовалютных проектов. Биткойн известен тем, как много времени занимает внесение изменений, требуя проверки всех нюансов несколькими мейнтейнерами (разработчиками, имеющими право вносить изменения непосредственно в код Bitcoin Core) после периода открытого обсуждения в комьюнити. Весь процесс рассмотрения изменений правил консенсуса сети часто занимает месяцы и годы. Ревью могут охватывать криптографический анализ, экономическую теорию, оценку удобства использования, проектирование ПО и, наконец, качество кода.
Время от времени ряд изменений в код Биткойна объединяются вместе и формируют работоспособную версию Биткойна, называемую «релизом». До выхода Bitcoin Core v22.0 в сентябре 2021 года все финальные релизы были криптографически подписаны ван дер Лааном или Андресеном (Сатоши никогда не подписывал свои релизы). Те, кто загружает Bitcoin Core, могут проверить подлинность кода, сверив его с общедоступным открытым ключом ведущего мейнтейнера. В версии 22.0 Bitcoin добавил возможность для пользователей проверять подлинность скачанного приложения по ключам прочих доверенных разработчиков, помимо ван дер Лаана. В этом релизе подписантами были 0XB10C (анонимный разработчик), Andrew Chow, Ben Carman, Antoine Poinsot, Duncan Dean, Stephan Oeste, Michael Ford, Oliver Gugger, Геннадий Степанов, Jon Atack, Aaron Clauson и Will Clark, хотя в дальнейшем состав этой группы, вероятно, будет меняться. Процесс подтверждает, что эти разработчики лично подписали в точности ту версию кода, которую загружают пользователи.
Открытые ключи этих разработчиков подтверждают подлинность Bitcoin Core, гарантируя, что код скачанного приложения не был изменен после подписания. Тем не менее, Биткойн — это проект с открытым исходным кодом, и внести свою лепту в развитие его кодовой базы может каждый, поэтому необходимо также иметь процессы, гарантирующие, что в результате совместной работы будет создан функциональный и не вредоносный код. Исходный код Биткойна размещен на GitHub, сайте и инструменте для совместной разработки ПО. Предлагаемые изменения в коде Биткойна вносятся разработчиками через пулл-реквесты, которые вручную рассматриваются и, если были приняты, «мёрджатся» в кодовую базу мейнтейнерами проекта. Пулл-реквесты обычно включают несколько небольших изменений кода, называемых коммитами, статистику по которым мы будем анализировать в следующем разделе.
Биткойн сначала стал проще (и безопаснее), прежде чем добавлять новую функциональность
При разработке Биткойна, хоть он сам и является оригинальной концепцией, в целом предпочтение отдавалось в первую очередь безопасности и надежности, а не техническим новациям и гибкости, особенно по сравнению с другими блокчейнами. Биткойн сконцентрировался на том, чтобы стать системой электронных платежей и хранения стоимости для цифровой эпохи, начиная с его настойчивой приверженности обратно совместимым обновлениям и заканчивая тем, как сообщество разработчиков приходит к согласию в принятии решений. Исходя из этого разработчики Биткойна в ранние годы фактически удаляли функциональность во имя безопасности и лишь потом стали осторожно добавлять новый функционал. Отследить изменение сложности сети Биткойна можно в том числе по так называемым опкодам. Код Bitcoin Core написан на языке C++, однако его работа зависит от того, что называется Script, простого языка программирования, на котором реализована логика проверки транзакций в сети. Опкоды — это основные операционные компоненты, которые запускают Script и помогают определить спектр возможных транзакций. Отслеживая количество опкодов в последовательных версиях Bitcoin Core, мы видим, что разработчики сначала исключили функции, которые сочли небезопасными, а затем уже стали постепенно добавлять новые. Последним добавленным опкодом был OP_CHECKSIGADD с обновлением Taproot в 2021 году.
Хронология развития Биткойна
2008
18 августа — Зарегистрирован сайт bitcoin.org
31 октября — Сатоши Накамото публикует уайтпейпер Биткойна
2009
3 января — Сатоши майнит первый блок Биткойна, блок генезиса
8 января — Bitcoin v0.1 выложен на опенсорс-платформе SourceForge
11 января — Первая транзакция в сети: Сатоши отправляет Хэлу Финни 10 BTC
30 августа — Martti Malmi создает репозиторий subversion (SVN) на SourceForge для лучшего отслеживания изменений и совместной работы над кодом Bitcoin Core
9 октября — На freenode зарегистрирован IRC-канал #bitcoin-dev
22 ноября — Запущена доска обмена сообщениями Bitcointalk.org
2010
11 июня — Гевин Андресен (Gavin Andresen) запускает Bitcoin Faucet, «биткойн-кран», позволяющий любому получить 5 BTC бесплатно
14 июля — Сатоши добавляет в код Биткойна ограничение на размер блока в 1 МБ, закладывая основу для последующих споров о масштабировании
11 октября — Гевин Андресен коммитит первый фрагмент кода, что подразумевает получение доступа к коммитам в SVN.
12 декабря — Последнее публичное сообщение от Сатоши
15 декабря — Последний коммит в кодовую базу от Сатоши
19 декабря — Андресен переносит код Биткойна с SourceForge на GitHub для улучшения процессов совместной разработки
2011
23 апреля — Сатоши в письме Майку Хирну (Mike Hearn) сообщает о передаче проекта Bitcoin под управление Гевина Андресена
26 апреля — Последнее частное письмо от Сатоши Андресену
2012
1 апреля — В сети активирован софтфорк Pay-to-Script-Hash, крупное обновление способа генерации биткойн-адресов
27 сентября — Гевин Андресен создает Bitcoin Foundation по образцу Linux Foundation для поддержки сети Bitcoin
2013
12 марта — Блокчейн Биткойна разделился на 6 часов после неуклюжего обновления ПО
16 декабря — Программное приложение Bitcoin переименовано в Bitcoin Core
2014
7 апреля — Гевин Андресен покинул «пост» главного мейнтейнера проекта, его заменил Владимир ван дер Лаан (Wladimir van der Laan)
2015
28 февраля — Joseph Poon и Thaddeus Dryja опубликовали первый черновик уайтпейпер Lightning Network
22 июня — Гевин Андресен публикует BIP101, предлагая дорожную карту для хардфорка, который позволит увеличить размер блока Биткойна до 8 МБ
2016
6 мая — Владимир ван дер Лаан лишает Гевина Андресена привилегий коммита — следствие дискуссии о масштабировании
2017
1 августа — хардфорк с образованием Bitcoin Cash, версии Биткойна с бóльшим размером блока (8 МБ)
23 августа — Segregated Witness (SegWit), предложенный ранее компромисс в споре о размере блоков, позволивший увеличить пропускную способность сети, реализован через софтфорк
2018
15 марта — Запуск бета-версии Lightning Network от Lightning Labs на блокчейне Биткойна
2021
21 января — Владимир ван дер Лаан объявил о намерении уйти с поста ведущего мейнтейнера
13 сентября — Релиз Bitcoin Core 22.0, включающего новый метод проверки подписей одновременно от многих разработчиков
14 ноября — Активация софтфорка Taproot, позволяющего проводить более сложные типы транзакций, способствующие повышению безопасности, конфиденциальности и пропускной способности сети.
Анализ активности разработки Биткойна
Измерив вклад сообщества опенсорс-разработчиков в кодовую базу Биткойна, мы можем оценить динамику его развития. В этом анализе мы смотрим на коммиты кода, представляющие собой небольшие, как правило, самодостаточные наборы обновлений в общем репозитории программного кода. Статистика по коммитам может рассказать нам о том, кто вносил наибольший вклад в кодовую базу проекта с течением времени. Это помогает понять темпы развития определенных проектов, а также ключевых игроков в них в каждый момент времени.
Мы разделяем Биткойн на две основных составляющих: (1) основной протокол, известный также как ПО Bitcoin Core, плюс другие ключевые репозитории (bitcoin/bitcoin, bitcoin-core/secp256k1, bitcoin-core/gitian.sigs, bitcoin-core/guix.sigs), и (2) экосистема Биткойна, состоящая из 2584 GitHub-репозиториев, кошельков, платежных систем, образовательного контента и других программ, которые полагаются на сеть Биткойна и расширяют ее возможности. Инвесторам стоит рассматривать основной протокол как основное программное обеспечение Биткойна, а экосистему — как окружающую его инфраструктуру. Анализ экосистемы в значительной степени опирается на данные и карты кода проектов, созданные для своего ежегодного отчета Electric Capital, венчурной фирмой, специализирующейся на криптовалютных проектах. Код Bitcoin Core имеет наибольшее значение для экосистемы, поскольку составляет основу сети Bitcoin, но он полезен также для наблюдения за более общими тенденциями.
Этот вид анализа имеет свои недостатки. Во-первых, больше — не всегда лучше в плане коммитов (обновлений) кода или даже в отношении активности разработчиков. Содержание коммитов может варьироваться от значительных обновлений функциональности до исправления опечаток в документации. Этот тип анализа также не учитывает различия в качестве выполняемой работы. Это особенно актуально в контексте анализа экосистемы, где каждый проект может отличаться по значимости, а также по правилам в отношении размеров коммитов кода (Bitcoin Core, например, имеет довольно последовательный подход к тому, насколько большими должны быть коммиты). Во-вторых, этот анализ учитывает только тот вклад разработчиков, что был реализован в коде Биткойна, и не учитывает предложенные обновления, которые так и не попали в кодовую базу. В-третьих, такой анализ упускает важную область развития, которую представляет собой создание экосистемы: внутреннюю разработку в централизованных организациях, таких как NYDIG, например. Но несмотря на эти недостатки, мы считаем, что такой вид анализа может быть полезен.
Разработка основного протокола
Контрибуторами Bitcoin Core стали 1140 уникальных разработчиков (по состоянию на сентябрь 2022 года). Хотя с момента создания Биткойна 13 лет назад можно констатировать впечатляющий рост, это довольно небольшая цифра по меркам крупных опенсорс-проектов. Например, в разработке Linux, пионера в области опенсорс-разработки, приняло участие около 100 000 контрибуторов. Более широкая экосистема Биткойна значительно больше, насчитывая 13 057 уникальных разработчиков, хотя, опять же, эта цифра не учитывает разработчиков, занятых в проектах с закрытым исходным кодом, как, например, тот же NYDIG.
Активные разработчики
Под активным разработчиком мы понимаем любого, кто сделал коммит в данном месяце. Хотя это число может меняться от месяца к месяцу, для основного протокола оно составляет примерно 40-60.
Для более широкой экосистемы Биткойна число активных разработчиков в месяц варьируется в пределах 600-1000. Хотя рост числа активных разработчиков в экосистеме представляет собой отдельный долгосрочный тренд, можно проследить и определенную корреляцию с 4-летними ценовыми циклами биткойна.
Важнейшие разработчики Биткойна по годам
При взгляде на состав ведущих разработчиков протокола Bitcoin Core по годам обращают на себя внимание несколько вещей. Во-первых, Сатоши не входит в десятку наиболее активных контрибуторов кода Биткойна с 2010 года (фактически он и не вносил своего вклада в код с того времени). Во-вторых, многие из наиболее заметных разработчиков Биткойна неизменно оставались ведущими контрибуторами на протяжении большей части истории Биткойна. При этом активность некоторых разработчики выросла, а других снизилась, поскольку они перешли к работе над другими проектами. В-третьих, хотя часть разработчиков используют псевдонимы, реальная личность большинства разработчиков — каждого из топ-10 для 2021 и 2022 года — общеизвестна. И это очень далеко от распространенного представления о разработчиках Биткойна как о некоей таинственной группе анонимных кодеров.
Самые активные контрибуторы Биткойна
Ранжировав разработчиков Биткойна по общему количеству коммитов, можно сделать несколько интересных наблюдений. Во-первых, сам Сатоши находится довольно далеко внизу в рейтинге наиболее активных контрибуторов. Может возникнуть соблазн заключить, что Биткойн в значительной мере был переписан другими (и во многом так и есть), однако значительная часть вклада Сатоши была сделана еще до того, как отслеживание коммитов в кодовую базу стало применимо к Биткойну в октябре 2009 года. Во-вторых, хотя свой вклад в создание Биткойна за эти годы внесло множество людей, за основную часть разработки ответственно довольно небольшое число контрибуторов: на долю 37 наиболее активных разработчиков приходится 80% от общего количества коммитов в Биткойн, а на долю топ-50 активных разработчиков — 84% коммитов. В-третьих, глядя на общее количество коммитов каждого из разработчиков по годам, можно сделать вывод о его вовлеченности или отстраненности от проекта.
Доля вклада разработчиков по географическому признаку
Поскольку реальная личность большинства ведущих разработчиков Биткойна известна, можно сгруппировать их по географическому признаку, чтобы увидеть, в каких регионах разработка Биткойна ведется активнее всего. Согласно нашему анализу, страной происхождения для большинства крупнейших контрибуторов в кодовую базу Биткойна являются США. Очевидная оговорка состоит в том, что разработка программного обеспечения с открытым исходным кодом не подразумевает привязки к географическому расположению, и разработчики могут перемещаться по миру. Однако мы считаем, что можно с уверенностью сказать, что бóльшая часть разработки Биткойна приходится на Северную Америку и Европу. Дополнительным подтверждением этого может служить и то, что для коммуникации во всех основных каналах разработки Биткойна, как правило, используется только английский язык.
Приток новых разработчиков в месяц: небольшой, но стабильный
Каждый месяц в работу над основным протоколом Биткойна вовлекаются новые разработчики. Для Bitcoin Core приток составляет от 5 до 20 новых разработчиков в месяц. В абсолютном выражении число небольшое, но со временем оно увеличивается. В то же время число разработчиков в более широкой экосистеме Биткойна ежемесячно увеличивается, с некоторой корреляцией с ценовыми циклами.
Количество изменений в кодовой базе в месяц продолжает расти
В активности разработки Биткойна, измеряемой по количеству коммитов в месяц, наблюдается устойчивый рост. Число коммитов выросло до 200–400 в месяц. Это значительный рост по сравнению с ранним периодом Биткойна, когда нерегулярные коммиты исчислялись единицами в месяц.
Опытность контрибуторов
Разбивка по опыту контрибуторов (доли коммитов в квартал сгруппированные по дате первого коммита разработчика в код Bitcoin Core) показывает, как менялась с годами зрелость базы разработчиков Биткойна. Хотя некоторые из ранних разработчиков Биткойна активны и сегодня, в 2021 году более половины коммитов поступило от разработчиков, присоединившихся к сообществу после предыдущего рыночного цикла с пиком в 2017 году.
В заключение
С момента публикации уайтпейпер в 2008 году разработка Биткойна прошла через множество этапов от закрытого проекта, самостоятельно разрабатываемого псевдонимным автором, до сегодняшнего открытого и децентрализованного сообщества разработчиков, на что могут претендовать лишь немногие из прочих цифровых активов. Возможно, мы так никогда и не узнаем подлинную личность создателя Биткойна, но сегодня это уже и не важно, потому что Биткойн разрабатывается совместными усилиями тысяч разработчиков по всему миру, личность большинства из которых нам известна. В самой своей сути Биткойн — это программное обеспечение, а более широкая экосистема ПО дополняет собой основной протокол. Экосистема приложений и разработчиков продолжает расти, и вклад в нее вносят разработчики со всего мира, расширяя сферу влияния Биткойна как глобальной денежной системы.
Источник: bitnovosti.com