414 / 736GLOZOW

Gloria Zhao

Разработчица mempool, передачи транзакций и проверки кода

Gloria Zhao работает над тем, как транзакции Bitcoin передаются по сети и ждут подтверждения. Её вклад в mempool, Package Relay и повышение комиссий помогает ответить на практический вопрос: как доставить нужный платёж майнерам, если первоначальной комиссии уже недостаточно?

Gloria Zhao — разработчица Bitcoin Core и автор BIP 331 и BIP 431. Она занимается mempool, локальным хранилищем неподтверждённых транзакций каждого узла, и правилами их приёма и передачи. Эти незаметные части программы определяют, о каких платежах узел узнает и какие передаст дальше. Их развитие требует написания кода, внимательной проверки и поиска защиты от злоупотреблений.

Gloria Zhao пришла в Brink 4 января 2021 года как первая стипендиатка организации. В 2022 году она стала мейнтейнером Bitcoin Core — одним из людей, отвечающих за исходный код и процесс разработки. Это работа над конкретной программой, а не назначение руководителем Bitcoin. Проверенная при этой редакции страница выпускников Brink называет её бывшим мейнтейнером. Поэтому в биографии важны даты: сообщение о прошлом назначении ещё не доказывает, какую должность человек занимает сегодня. [1] [2]

Даже хороший код должен проверять кто-то ещё. Zhao участвовала в Bitcoin Core PR Review Club, где новые участники учатся читать предлагаемые изменения и разбирать их последствия. PR, или pull request, — запрос на включение изменения в проект. Клуб помогает понять, какую проблему оно решает и как его проверять; главная цель — не добиться слияния конкретного PR. Обсуждение служит обучению и подготовке, а не автоматическому одобрению кода или выпуска. [2] [3]

Mempool — не единая очередь на всю сеть. Каждый узел решает, какие неподтверждённые транзакции принимать и передавать, учитывая, например, комиссии и защиту от перегрузки. Это локальная политика, отличная от правил консенсуса, по которым проверяется действительность блоков. Zhao подписала заявление разработчиков от 6 июня 2025 года, подчёркивающее выбор программы пользователем. Разработчик может предложить другую политику, но ни его подпись, ни права сопровождения репозитория не переписывают программы на всех чужих узлах. [4]

Транзакция может тратить средства из другой, ещё не подтверждённой транзакции. Предшествующую называют родительской, а зависящую от неё — дочерней. BIP 331 авторства Zhao предлагает Package Relay, передачу связанных транзакций пакетом. Узлы согласовывали бы поддержку через sendpackages, сначала получали сведения о необходимых предках, затем сами данные транзакций. Так не пришлось бы по отдельности искать каждое отсутствующее звено. Документ имеет статус Draft, то есть проекта; его наличие не доказывает полное внедрение протокола во всей сети. [5]

Представьте, что вам пришёл неподтверждённый платёж со слишком низкой комиссией. Если вы можете потратить его выход, можно создать следующую транзакцию с более высокой комиссией. Это CPFP, Child Pays for Parent: чтобы получить комиссию дочерней транзакции, майнер должен включить и родительскую, поэтому может оценивать их вместе. Но узел, которому неизвестен родитель, обычно не может принять только потомка. BIP 331 рассматривает именно такое препятствие для передачи. Высокая комиссия не заменяет действительные подписи и входы и не гарантирует подтверждение к определённому сроку. [5]

Bitcoin Core 28.0 ввёл ограниченную процедуру 1P1C: одна родительская и одна дочерняя транзакция. Через существующую связь P2P, прямой обмен между узлами, программа могла соединять подходящие транзакции и оценивать их вместе. Это конкретное улучшение, но не полное внедрение BIP 331. Примечания к выпуску прямо исключают в этой сетевой процедуре потомка с несколькими неподтверждёнными родителями и предупреждают о ненадёжности при атаке. Разработчику кошелька, который полагается на передачу, важно отличать ограниченную функцию от более широкого предложения. [5] [6]

Атакующий может использовать ограничения mempool, чтобы затруднить замену транзакции или повышение её комиссии. Это называют pinning. Политика TRUC ограничивает зависимости между транзакциями до подтверждения, упрощая оценку приёма или замены. Bitcoin Core 28.0 ввёл её для транзакций с nVersion=3. BIP 431 авторства Zhao описывает этот подход как информационный документ со статусом Draft. Ограничение неподтверждённых предков и потомков помогает, но защита зависит и от принятия политики другими узлами. Это не гарантия против любого pinning и не обещание своевременного включения в блок. [6] [7]

Приложение может передать пакет своему узлу командой submitpackage. Документация Bitcoin Core 28.0 объясняет, что эта команда через интерфейс RPC для связи с узлом проверяет и правила консенсуса, и политику mempool. Прошедшие проверки транзакции могут быть приняты, даже если другая часть пакета не прошла. Поэтому ошибка не обязательно отменяет весь результат. Нужно читать и общее package_msg, и отдельные tx-results. Даже локальный успех не доказывает распространение пакета по всей сети или включение его транзакций в блок. [8]

Для полной картины прочитайте эту статью вместе с Mike Hearn, Mempool, Package Relay. На эту статью также ссылаются Package Relay, Mike Hearn, Sergio Demian Lerner.

DOC · 001Brink — Gloria Zhao dated contribution historyДокументация DOC · 002Brink — program alumniДокументация DOC · 003Bitcoin Core PR Review Club — purposeДокументация DOC · 004Bitcoin Core — relay policy statementДокументация DOC · 005BIP 331 — Ancestor Package RelayДокументация DOC · 006Bitcoin Core 28.0 — release notesДокументация DOC · 007BIP 431 — Topology Restrictions for PinningДокументация DOC · 008Bitcoin Core 28.0 — submitpackageДокументация
Обновлено: Сначала источники · Не является инвестиционной рекомендацией