Управление биткоином: почему код принадлежит не разработчикам

В своей статье Питер Ван Валькенбург, глава отдела исследований Coin Center, член совета директоров Zcash Foundation, объясняет, почему развитие программного обеспечения с открытым исходным кодом важно для построения доверительных отношений и обеспечения безопасности в блокчейн-сетях.

Вопрос о том, кто контролирует возможность добавления кода в GitHub-репозиторий Bitcoin Core поднимается снова и снова, с завидной периодичностью. На протяжении многих лет возможность добавления кода упоминалась различными сторонами как «центральная точка контроля» протокола Биткойн, но я убежден, что такая постановка вопроса представляет собой ложный след, который может дать развитие авторитарной перспективе — а эта модель не применима к Биткойну. Для непрофессионала, конечно, не очевидно, почему это так, поэтому цель этой статьи — объяснить, как работает Bitcoin Core и, на более высоком уровне, как развивается протокол Биткойн как таковой.

История Bitcoin Core

Bitcoin Core — это, скорее, точка фокуса разработки протокола Биткойн, чем точка управления и контроля. Если она по какой-либо причине прекратит свое существование, возникнет новая точка фокуса; техническая коммуникационная платформа, на которой она поставлена (в настоящее время — репозиторий GitHub), всего лишь вопрос удобства, а не целостности проекта или его определения. Фактически, мы уже видели в прошлом, как точка фокуса разработки Биткойна меняла платформы и даже имена!

  • В начале 2009 года исходный код проекта Биткойн представлял собой обыкновенный файл .rar, размещенный на SourceForge. Первые разработчики на самом деле обменивались патчами с Сатоши по электронной почте;
  • 30 октября 2009 года Sirius (Марти Мальми/Martti Malmi) создал репозиторий для проекта Биткойн на SourceForge;
  • В 2011 году проект проект Биткойн перешел с SourceForge на GitHub;
  • В 2014 году проект проект Биткойн был переименован в Bitcoin Core.

Примеры адресов

В настоящее время используются три формата Биткоин адресов:

  1. P2PKH, которые начинаются с числа 1, например: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2.
  2. P2SH типа, начиная с числа 3, например: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy.
  3. Bech32 типа, начиная с bc1, например: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq.

Биткойн адрес — это одноразовый токен

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

 

Читайте также:  Ошибка выжившего: почему опасно необдуманно инвестировать в индексы?0 (0)

 

Большинство Биткойн-программ и веб-сайтов помогут вам получить новый уникальный адрес: каждый раз, когда вы создаете счет или запрос на оплату, они генерируют новый адрес.

Не доверяй никому

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

Core is transparent about the list that matters: the PGP keys who can sign merge commits.

The lesson to be learned here is to not trust GitHub! Even Bitcoin Core doesn’t know the full list of people who can change the repo, as that extends to probably dozens of GitHub employees.

— Peter Todd (@peterktodd) October 4, 2018

С точки зрения безопасности, GitHub — система с отсутствием доверия. Любое количество сотрудников проекта в GitHub может использовать свои административные привилегии для добавления кода в репозиторий без согласия мэйнтэйнеров. Но также, маловероятно, что злоумышленник на GitHub сможет скомпрометировать PGP-ключ мэйнтэйнера Bitcoin Core.

Вместо того, чтобы полагаться на целостность кода в зависимости от политики аккаунтов на GitHub, Bitcoin Core использует систему непрерывной интеграции, проверяющую доверенные ключи PGP, которые должны подписывать каждое добавление кода (коммит). Хотя эти ключи связаны с известными лицами, все-таки небезопасно предполагать, что так будет всегда — ключ может быть скомпрометирован, и мы об этом не узнаем, если подлинный владелец ключа не уведомит других мэйнтэйнеров. Таким образом, ключи для добавления кода также не гарантируют идеальную защиту; они просто затрудняют атакующему ввод произвольного кода.

Почему открытый исходный код важен

Криптовалюты и открытые блокчейны способны обеспечить функционал, который был бы регулируемым, если бы его источником была одна-единственная корпорация. Централизованные эмитенты цифровой валюты, такие как Liberty Reserve или E-gold, представляли собой финансовые сервисы и должны были регистрироваться в Управлении Министерства финансов США по борьбе с финансовыми преступлениями, а также получать лицензию, позволяющую переводить деньги, в каждом штате. Если такие токены будут продвигаться на рынке для привлечения инвесторов, они могут быть приравнены к ценным бумагам, и в таком случае потребуется регистрация в Комиссии по ценным бумагам и биржам США. Эти ограничения имеют смысл, поскольку централизованные сервисы связаны с риском того, что сторона, находящаяся в центре всей схемы, не сможет выполнить свои обещания, адекватно протестировав продукт и сделав его безопасным.

Однако технологии вроде биткоина способны предложить аналогичный функционал, будучи открытыми и никому не принадлежащими сетями. Здесь нет никакой корпорации. К этим сетям присоединяются пользователи, а открытое программное обеспечение стимулирует их стремление к сотрудничеству. В конечном счёте все участники приходят к согласию относительно каждого фрагмента данных, необходимых для создания валюты. Децентрализация держится на двух столпах: открытых механизмах консенсуса и программном обеспечении с открытым исходным кодом. Если бы код не был открытым, то как бы участники (не знакомые друг с другом люди в интернете) сумели бы понять систему, к которой они присоединяются, и довериться ей?

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

#Linux #open source #токены

Ключи от царства

На момент написания статьи, доверенными отпечатками PGP являются:

71A3B16735405025D447E8F274810B012346C9A6 133EAC179436F14A5CF1B794860FEB804E669320 32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B CA03882CB1FC067B5D3ACFE4D300116E1C875A3D

Эти ключи зарегистрированы на:

Wladimir J. van der Laan <[email protected]> Pieter Wuille <[email protected]> Jonas Schnelli <[email protected]> Marco Falke <[email protected]> Samuel Dobson <[email protected]>

Значит ли это, что мы доверяем этим пяти людям? Не совсем. Ключи не являются доказательством личности — эти ключи потенциально могут попасть в руки других людей. Какие гарантии вам действительно даёт запуск скрипта verify-commits на Питоне?

python3 contrib/verify-commits/verify-commits.py Using verify-commits data from bitcoin/contrib/verify-commits All Tree-SHA512s matched up to 309bf16257b2395ce502017be627186b749ee749 There is a valid path from “HEAD” to 82bcf405f6db1d55b684a1f63a4aabad376cdad7 where all commits are signed!

Скрипт verify-commits  выполняет проверку целостности. Любой разработчик может запустить его на своём компьютере. При выполнении, скрипт проверяет подпись PGP для каждого коммита добавления кода с момента коммита 82bcf405… в декабре 2015 года — более 3400 добавлений на момент написания. Если скрипт завершается успешно, он говорит, что каждая строка кода, которая была изменена с того момента, прошла через процесс разработки Bitcoin Core и была «подписана» кем-то с ключом мэйнтэйнера. Хотя это не является железной гарантией того, что никто не ввел вредоносный код (мэйнтэйнер может стать злонамеренным или у него могут быть украдены ключи), это значительно снижает вероятность атаки. Что такое мэйнтэйнеры и как они получили эту роль? Мы углубимся в это чуть позже.

Многоуровневая безопасность

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

 

Читайте также:  Что такое Airdrop: как включить и как им пользоваться — полная инструкция!

 

Безопасность пул реквестов

  1. Совершенно любой человек может свободно предлагать изменения кода для улучшения программного обеспечения, открывая запрос в пул реквест в основную ветку на bitcoin/bitcoin.
  2. Разработчики проверяют пул реквесты, чтобы убедиться, что они не являются вредоносными. Любой желающий может свободно просматривать пул реквесты и предоставлять обратную связь — нет никаких привратников или вступительных экзаменов для участия в Bitcoin Core. Если пул реквест доходит до того, что не имеется разумных возражений против его добавления, мэйнтэйнер выполняет коммит (слияние).
  3. Основные майнтайнеры установили это скрипт для гарантии, что не смогут разместить неподписанные коммиты в репозиторий.
  4. Коммитам добавления кода опционально проставляются метки времени через OpenTimestamps.
  5. “Система непрерывной интеграции Travis” (Travis Continuous Integration system) регулярно запускает этот скрипт для проверки целостности дерева git (истории) и для проверки того, что все коммиты в основной ветви были подписаны одним из доверенных ключей PGP.
  6. Любой желающий может запустить этот скрипт для проверки подписей PGP во всех коммитах, начиная с декабря 2020 года. Я запустил его во время написания этой статьи, и для его выполнения на моем ноутбуке потребовалось 25 минут.

Безопасность релизов

  1. Детерминистические системы сборки Gitian запускаются независимо несколькими разработчиками с целью создания идентичных бинарников. Если кому-то удаётся создать сборку, которая не соответствует сборкам других разработчиков, это признак того, что сборка недетерминированная, поэтому окончательный релиз не случится. Если обнаруживается не-детерминизм, разработчики отслеживают, что пошло не так, исправляют это, затем собирают другой релиз-кандидат. Как только детерминированная сборка прошла успешно, разработчики подписывают получившиеся бинарники, гарантируя, что бинарники и тулчейн не были подделаны, и что использовался один и тот же источник. Этот метод снимает с процесса сборки и распространения возможность стать единой точкой отказа. Любой пользователь, владеющий необходимыми техническими навыками, может запустить свою собственную систему сборки; инструкции здесь.
  2. Как только сборки Gitian завершены успешно и бинарники подписаны сборщиками, один из мэйнтэйнеров Bitcoin Core подписывает сообщение PGP с хэшами SHA256 каждой сборки. Если вы решите запустить предварительно собранный бинарник, можете проверить его хэш после загрузки, а затем проверить подлинность подписанного сообщения о релизе с помощью хешей. Инструкции для этого можно найти здесь.
  3. Всё вышеперечисленное — открытый исходный код и может быть проверено любым, кто обладает навыками и желанием проделать это.
  4. Наконец, даже после прохождения всех вышеперечисленных проверок качества и целостности, код, который вносится в Bitcoin Core и в конечном итоге превращается в релиз, не запускается в сети узлов какой-либо централизованной организацией. Скорее, каждый оператор узла должен принять осознанное решение обновить код, который он запускает. Bitcoin Core намеренно не включает в себя функцию автообновления, так как автообновление потенциально может заставить пользователей запустить код, который они не выбирали самостоятельно.

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

Охват кода

В Bitcoin Core много кода для тестирования. Существует набор интеграционных тестов, который работает с каждым PR (pull request), и расширенный набор тестов, который каждую ночь запускается на мастере.

Вы можете самостоятельно проверить покрытие кода тестами:

  1. Склонируйте репозиторий Bitcoin Core на GitHub;
  2. Установите необходимые зависимости для сборки из исходного кода;
  3. Запустите эти команды;
  4. Просмотрите отчет на ./total_coverage/index.html .

Также, вы можете увидеть отчет о покрытии кода, предоставленный здесь Марко Фальке.

Тестирование имеет большое значение, когда речь идет о программном обеспечении с критически важным консенсусом. Для особо сложных изменений разработчики иногда проводят кропотливое мутационное тестирование: то есть они проверяют сами тесты, намеренно взламывая код и проверяя, что тесты провалились, как и ожидалось. Грег Максвелл (Greg Maxwell) дал некоторое представление об этом процессе при обсуждении релиза 0.15:

“Тест — это тест программного обеспечения, но что тестирует этот тест? Программное обеспечение. Чтобы проверить тест, вы должны взломать программное обеспечение” — Грег Максвелл

Адреса часто чувствительны к регистру и точны

Биткойн-адреса старого образца чувствительны к регистру. Адреса Биткойнов должны копироваться и вставляться с использованием буфера обмена компьютера, если это возможно.

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

Вероятность того, что неверный адрес будет принят как действительный, составляет 1 к 2 32, то есть примерно 1 к 4,29 млрд.

Адреса bech32 нового стиля не чувствительны к регистру.

 

Читайте также:  Сервисы которые платят за использование мощностей компьютера. Лучший способ сдать вычислительную мощность компьютера в аренду? Что можно продавать

 

Конкуренция свободного рынка

BitMEX написали отличную статью об экосистеме имплементаций Биткойна. Существует более десятка различных имплементаций, совместимых с сетью Биткойн, и ещё больше имплементаций «конкурирующих» сетей. Это свобода открытого исходного кода — любой, кто недоволен усилиями проекта Bitcoin Core, может начать свой собственный проект. Они могут сделать это с нуля, или же «форкнуть» программное обеспечение Core.

На момент написания статьи 96% доступных узлов Биткойна были запущены на какой-либо версии Bitcoin Core. Почему это так? Как может Bitcoin Core иметь почти монопольный статус в сети узлов, если можно с минимальными усилиями перейти на программную имплементацию кого-то другого? В конце концов, многие другие имплементации предоставляют RPC API-интерфейсы, которые совместимы или, по крайней мере, очень похожи на Bitcoin Core.

Я считаю это результатом того, что Bitcoin Core — точка фокуса разработки. В этот проект вложены на порядки больше времени и поддерживающего его таланта, что означает, что код, созданный проектом Bitcoin Core, имеет тенденцию быть наиболее эффективным, надежным и безопасным. Когда речь идёт об управлении деньгами, операторы узлов не хотят запускать программное обеспечение второго сорта.

Кроме того, учитывая, что это консенсусное программное обеспечение, а протокол Биткойн не имеет — и, вероятно, не может иметь — формальной спецификации, потому что ни у кого нет права написать её, до какой-то степени безопаснее использовать имплементацию с наибольшим фокусом разработки, чтобы с большей вероятностью быть совместимым с большей частью остальной сети. В этом смысле код точки фокуса разработки наиболее близок к существующей спецификации.

Armory

Для пользователей, которым собственная безопасность важнее всего остального, мы рекомендуем использовать Armory — дополнение к Bitcoin Core. Этот кошелек способен обеспечить режим повышенной безопасности — при использовании функции Armory Offline Wallets ключи хранятся оффлайн на USB или бумажном носителе, не требуя онлайн-подключения, но при этом сохраняются все транзакции пользователя. Они сначала формируются в оффлайн-режиме, после чего ключи «убираются» в хранилище, кошелек переходит в режим онлайн и совершает обмен транзакциями с сетью. Более подробно о возможностях Armory, его интерфейсе и работе с ним смотрите в этой презентации

Кто такие разработчики Core?

Те, кто не знаком с процессом разработки Bitcoin Core, при взгляде на проект со стороны могут принять Core за монолитную организацию. Но такое мнение далеко от реальности! Между основными участниками часто возникают разногласия, и даже самые усердные участники написали много кода, который никогда не был добавлен в проект. Если вы прочитаете правила участия в проекте, то можете заметить, что они довольно расплывчаты — процесс лучше всего охарактеризовать как «грубый консенсус».

Мэйнтэйнеры примут во внимание, соответствует ли патч общим принципам проекта; соответствует ли минимальным стандартам для включения; и вынесут оценку консенсусу в целом участников проекта.

Кто же такие мэйнтэйнеры Bitcoin Core? Они участники, накопившие в рамках проекта достаточный социальный капитал, внося качественный вклад (то есть, закомитив полезный код) в течение определенного периода времени. Когда существующая группа мэйнтэйнеров считает, что будет разумно наделить этой ролью участника, проявившего компетентность, надежность и мотивацию в определенной области, они могут предоставить коммит-доступ аккаунту этого человека на GitHub. Роль ведущего мэйнтэйнера предназначена для тех, кто рассматривает все аспекты проекта и отвечает за координацию релизов. За прошедшие годы роль добровольно передавалась следующим образом:

  • atoshi Nakamoto: 1/3/09–2/23/11
  • Gavin Andresen: 2/23/11–4/7/14
  • Wladimir van der Laan: 4/7/14 — настоящее время

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

Например, Грегори Максвелл оставил свою должность мэйнтэйнера в 2017 году по личным причинам; вероятно, из-за общественного давления, которое он испытал во время дебатов о масштабировании. Владимир написал вдумчивый пост о стрессе, связанном с поддержкой Core, и о том, почему в свое время было целесообразным лишить Гавина доступа к коммитам, что огорчило многих людей:

Точно так же, когда Джефф Гарзик (Jeff Garzik) был исключен из организации на GitHub, он и другие были расстроены этим; но он не участвовал в Core в течение двух лет. Оставление его аккаунту на GitHub прав на коммиты в репозиторий не принесло бы пользы проекту — оно только создавало угрозу безопасности и нарушало принцип наименьших привилегий, на который ссылался Владимир в своем посте.

Другие могут взглянуть на Core и подумать, что это царство технократии, где присоединение новых участников затруднено. Но если поговорить с участниками, то вы обнаружите, что это не так. Хотя, за все эти годы лишь у тринадцати человек был коммит-доступ, сотни разработчиков внесли свой вклад. Я сам сделал несколько небольших коммитов; хотя я и не считаю себя «Core разработчиком» — технически я им являюсь. Никто не может помешать вам внести свой вклад!

In 2011, as a high school student who didn’t understand what a pointer was, the @bitcoincoreorg developer community (especially people like Greg Maxwell, @pwuille, etc) worked with me to make my shitty patches worth merging and made it a great environment to learn in.

— Matt Corallo (@TheBlueMatt) November 18, 2018

In 2020, @TheBlueMatt organised a residency at @ChaincodeLabs. I’d been reading everything about Bitcoin I could lay my hands on but hadn’t dared submit a PR. Matt, Alex and Suhas were extraordinarily generous with their time in teaching us about Bitcoin and how to contribute.

— John Newbery (@jfnewbery) November 18, 2018

I started making small commits to @bitcoincoreorg and was in awe of the engagement on my PRs by @MarcoFalke @pwuille @orionwl @LukeDashjr and @jfnewbery Such a welcoming project!

— Jeff Rade [Jan/3➞₿?] (@jeffrade) November 19, 2018

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

Даже без «переворота» как такового, если спорные изменения каким-то образом попали бы в Core, нашлись бы разработчики, которые форкнули бы софт, удалили спорные изменения и выложили новую версию в доступ для пользователей. В качестве примера, именно это и произошло, когда Амори Сэшэ (Amaury Sechet) для создания Bitcoin ABC форкнул Bitcoin Core и удалил функциональность Segregated Witness. В качестве альтернативы, если Core отклоняет предложенные изменения, которые требуются некоторым людям, разработчики могут форкнуть репозиторий и добавить эти изменения. Это случалось много раз, например, когда:

  • Mike Hearn форкнул Core чтобы создать Bitcoin XT;
  • Andrew Stone форкнул Core чтобы создать Bitcoin Unlimited;
  • Jeff Garzik форкнул Core чтобы создать BTC1.

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

I hold allegiance to no man, to no dev team in Bitcoin. My intention is to run the code that I judge best protects my financial sovereignty.

— Jameson Lopp (@lopp) March 18, 2017

Также сложно убедить многих, что пользователи не принимают слепо изменения в Bitcoin Core — это может быть самодоказывающимся убеждением, потому что если пользователи не участвуют в процессе консенсуса, осознавая доступные варианты, тогда они отдают часть своих полномочий разработчикам. Однако, власть пользователей была использована во время движения UASF (User Activated Soft Fork) 2017 года. Анонимный разработчик, использующий псевдоним shaolinfry, предложил BIP 148, который заставил бы майнеров активировать функцию Segregated Witness на высоте блока примерно в районе 1 августа 2020. Однако, BIP 148 оказался слишком спорным, чтобы быть принятым в Bitcoin Core, поэтому shaolinfry форкнул Core и опубликовал программное обеспечение «Bitcoin UASF». Эта имплементация привлекла нетривиальное количество пользователей и, похоже, создала достаточное давление, чтобы убедить майнеров принять BIP 91 для активации форка до истечения срока BIP148.

На мой взгляд, лучшие участники Bitcoin Core — это те, кто практикует “экстремальное владение” (extreme ownership). Показательный пример — хотя John Newbery и не был автором кода, который содержал этот конкретный баг консенсуса, он чувствует ответственность за то, что не предотвратил добавление этого кода посредством тщательного анализа и что не обнаружил ошибку позже, при написании тестов:

 

Читайте также:  Что такое биржевой рынок: объяснение человеческим языком на простом примере

 

I am responsible for the CVE-2018-17144 bug. https://t.co/BrPVivM296

— John Newbery (@jfnewbery) September 24, 2018

Мы все — Сатоши.

Доказательство владения вы получаете с адресом

Большинство кошельков Биткойн имеют функцию «подписей» сообщений, доказывая, что субъект, получающий средства с адресом, согласился на сообщение. Это может быть использовано, например, для окончательного оформления контракта криптографически обоснованным способом до его оплаты.

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

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

Текущие стандарты для подписей сообщений совместимы только с биткойн-адресами «нулевой версии» (которые начинаются с цифры 1).

Участие в Bitcoin Core

Начать участвовать в Core может показаться пугающим, хотя есть много ресурсов, которые будут в помощь целеустремлённым разработчикам. Инструкции для участия можно найти здесь, хотя, возможно, вам захочется начать с упрощённого введения Jimmy Song:

Разработчик Core Eric Lombrozo также написал статью о том, как происходят изменения в репозитории Core:

Alex B. написал отличную статью о философии развития Биткойна — статья ниже может сэкономить массу времени любому, кто всерьёз хочет стать участником процесса разработки:

Здесь может оказаться полезным конкретный пример — при написании этой статьи я столкнулся с трудностями при попытке запустить на моем компьютере скрипт verify-commits.py для проверки целостности истории коммитов на GitHub. Чтобы избавить будущих разработчиков от решения этих проблем, я открыл пул реквест для улучшения документации. Как вы можете видеть из истории PR, четыре разных разработчика внесли свои предложения о том, как улучшить мой запрос. Они варьировались от использования разного вики-маркапа до упрощенной команды bash и до нового параметра, который можно использовать в скрипте verify-commits.py.

Я согласился с тем, что все предложения имеют смысл, поэтому я включил их в свой код и обновил пул реквест. В этот момент разработчики, которые участвовали в просмотре кода, признали, что считают пул реквест приемлемым, и майнтаинер Марко Фальке пометил его для включения в релиз 0.18. После того, как прошло ещё несколько дней без каких-либо возражений со стороны разработчиков, код был добавлен в Core мэйнтэйнером Сэмюэлем Добсоном (Samuel Dobson).

Что в адресе?

Большинство биткойн-адресов состоят из 34 символов. Они состоят из случайных цифр и прописных и строчных букв, за исключением того, что заглавная буква «O», заглавная буква «I», строчная буква «l» и число «0» никогда не используются для предотвращения визуальной неоднозначности.

Некоторые Биткойн адреса могут быть короче 34 символов (всего 26) и при этом быть они являются действительными. Значительный процент Биткойн адресов составляет всего 33 символа, а некоторые адреса могут быть еще короче. Каждый Биткойн-адрес обозначает номер. Эти более короткие адреса действительны просто потому, что они обозначают числа, начинающиеся с нуля, а когда нули опущены, закодированный адрес становится короче.

Несколько символов внутри Биткойн адреса используются в качестве контрольной суммы, так что типографские ошибки могут быть автоматически найдены и отклонены. Контрольная сумма также позволяет программному обеспечению Биткойн подтверждать, что 33-значный (или более короткий) адрес действительно действителен, а не просто является адресом с пропущенным символом.

Понравилась статья? Поделиться с друзьями: