Блокчейн/Уровень X · Круг замкнулся/10.3 Жизнь на биткоине/Урок 5
На основе биткоина
Регтесты, описатели и дисциплина публичного рецензирования
МатериалыКомпьютер с установленным Bitcoin Core (скачанным и проверенным)Справка по bitcoin-cli (bitcoin-cli help)Документация по BIP 174 и BIP 380
Любопытство
- Почему для внесения изменений в одну строку кода в Bitcoin Core требуются месяцы обсуждений, прежде чем она попадет в стабильную версию?
- Как разработчики тестируют логику, критически важную для достижения консенсуса, не рискуя реальными средствами и не нарушая работу основной сети?
- В чем разница между описателем и PSBT, и почему оба необходимы для разработки современных кошельков?
Исследование
- Bitcoin Core предоставляет два основных средства для тестирования: regtest и Signet. Regtest позволяет разработчикам мгновенно добывать блоки без необходимости выполнения процедуры proof-of-work, что делает его идеальным инструментом для unit-тестов и быстрой корректировки правил консенсуса. Signet (BIP 325) — это публичная тестовая сеть, в которой блоки также должны иметь подпись установленных подписчиков; это обеспечивает стабильные интервалы между блоками и предотвращает перегрузку сети высокой производительностью алгоритмов хеширования. Она подходит для тестирования программного обеспечения других людей без использования реальных денег.
- Интерфейс удаленных вызовов процедур (RPC) позволяет внешним скриптам получать доступ к внутреннему состоянию Bitcoin Core. Разработчики используют команды RPC для манипулирования цепями транзакций, проверки транзакций и запуска процесса добычи в режиме regtest. Такой программный доступ имеет ключевое значение при создании программ-кошельков, которым необходимо напрямую взаимодействовать с структурами данных узла, полностью обходя графический интерфейс пользователя.
- Описатели определяют способ преобразования ключей в условия для осуществления транзакций, в то время как частично подписанные транзакции Bitcoin (PSBT) облегчают процесс многопартитной подписи. BIP 174 стандартизировал формат PSBT, позволяя различным устройствам — хардверным кошелькам, мобильным устройствам или серверам — добавлять свои подписи к транзакции без раскрытия приватных ключей. Такое разделение процессов управления ключами и формирования транзакций имеет решающее значение для обеспечения безопасности многоподписных схем.
- Bitcoin Dev Kit (BDK) и Lightning Dev Kit (LDK) снижают сложность управления узлами для разработчиков приложений. BDK — это библиотека на языке Rust для кошельков, основанных на описателях; она позволяет читать данные с сети Bitcoin Core, сервера Electrum или API Esplora. LDK предоставляет легкую реализацию протокола Lightning Network, подходящую для мобильных устройств. Эти библиотеки снижают барьеры для создания приложений, работающих с Bitcoin, не требуя глубоких знаний в области системного программирования.
- Общественный аудит является основой модели безопасности Bitcoin. Изменения, предлагаемые с помощью pull-реквестов, проходят тщательную проверку со стороны мирового сообщества разработчиков. Проект PR Review Club способствует этому, организуя регулярные сессии, в ходе которых участники анализируют изменения по строкам. Благодаря коллективному опыту удается обнаруживать тонкие ошибки и гарантировать полное понимание предлагаемых изменений перед их внедрением — процесс, отличающийся от быстрых циклов выпуска, характерных для других программных экосистем.
- Запустите частную цепь: выполните команду bitcoind -regtest -daemon, создайте кошелек с помощью команды bitcoin-cli -regtest createwallet dev, а затем добыйте 101 блок для одного из его адресов с использованием команды generatetoaddress, чтобы первый коинбейс созрел. Сформируйте платеж с помощью команды walletcreatefundedpsbt, прочитайте его с помощью команды decodepsbt, затем подпишите и передайте его с помощью команд walletprocesspsbt и sendrawtransaction. Добыйте еще один блок и посмотрите, как он будет подтвержден.
Ключевые факты
- Regtest позволяет осуществлять майнинг в реальном времени без необходимости использования механизма proof-of-work для изолированных тестов.
- Блоки Signet (BIP 325) должны подписываться указанными ключами, что обеспечивает стабильную публичную тестовую сеть.
- BIP 174 определяет формат частично подписанной транзакции Bitcoin (PSBT) для процессов подписи с участием нескольких сторон.
- Описатели скриптов в BIP 380 определяют пути производства ключей и условия траты для кошельков.
- Bitcoin Dev Kit (BDK) — это библиотека на языке Rust для создания кошельков, основанных на описателях, для различных баз данных блокчейнов.
- Проверка публичных запросов на внесение изменений обеспечивает то, что изменения, получившие консенсус, проходят тщательную многоэтапную проверку перед выпуском.
Упражнение девять, шесть, три, один
9СобратьВыделите 9 отдельных компонентов экосистемы разработки Bitcoin: regtest, Signet, Mainnet, интерфейс RPC, дескрипторы, PSBTs, BDK, LDK и PR Review Club. Для каждого из них укажите его основную функцию в жизненном цикле программного обеспечения.
6СгруппироватьСгруппируйте эти 9 компонентов в 6 категорий по функции: приватные тесты, публичные тесты, интерфейсы узлов, стандарты кошельков, библиотеки для разработки и проверка.
3Выделить главноеСократите 6 групп до 3 основных принципов, которые регулируют разработку программного обеспечения Bitcoin: изоляция для безопасности, стандартизация для совместимости и прозрачность для защиты.
1КристаллизоватьPSBT необходим, поскольку аппаратный кошелек, не способный напрямую подключаться к узлу сети, требует способа для обмена данными между собой и внешними системами.
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.