В биткоине награды за блоки просты: майнер блока *N* получает «коинбейс» блока *N*. Один блок, одна награда, один получатель. BlockDAG Kaspa ломает эту простоту — множество блоков создаются параллельно, и каждый из них потенциально *сливает* другие блоки в общую историю. Протоколу нужны четкие правила: кто получает оплату, когда и от кого.
В этой статье эти правила рассматриваются с нуля. Если вы читали наше объяснение упорядочения GHOSTDAG, вы уже знаете, как параллельные блоки упорядочиваются линейно. Здесь мы углубимся на один уровень: в экономический механизм, который превращает это упорядочение в реальные выплаты.
Выбранная цепь и почему она важна для наград
Каждый блок в DAG имеет выбранного родителя — единственного «любимого» родителя, выбранного алгоритмом GHOSTDAG. Следуя ссылкам выбранных родителей вниз от виртуального блока (текущего представления узла о кончиках DAG), вы прослеживаете выбранную цепь. Эта цепь играет особую роль: она определяет канонический порядок событий, и только блоки *на* этой цепи генерируют действительные транзакции «коинбейс».
Блок цепи — блок, находящийся на выбранной цепи. Только транзакции «коинбейс» блоков цепи считаются действительными после стабилизации DAG. «Коинбейсы» всех остальных блоков отбрасываются.
Почему отбрасываются «коинбейсы» не блоков цепи? Потому что в широком DAG выбранная цепь может сдвинуться (это называется *реорганизацией* или *реоргом*). GHOSTDAG гарантирует, что такие реорги быстро стабилизируются и затрагивают только небольшой суффикс. Основывая награды на выбранной цепи, распределение выплат сходится к единой общепринятой истине, даже когда дюжины блоков майнятся параллельно.
Мерджсеты: групповое фото на каждом блоке цепи
Представьте мерджсет как групповое фото, сделанное в определённой точке вдоль выбранной цепи.
Мерджсет блока цепи *C* — набор всех блоков в каузальном прошлом *C* (достижимых из *C*), которые *не* находятся в прошлом выбранного родителя *C*. Сам выбранный родитель включается в мерджсет.
[E] [F] ← кончики (параллельные блоки)
/ \ / \
[C]──[D] ← не блоки цепи, слитые с A
\ /
[B] ← выбранный родитель A (блок цепи)
|
[A] ← более ранний блок цепи
Здесь блок *B* является блоком цепи. Его мерджсет содержит *C*, *D*, *E*, *F* — каждый блок, который *B* поглощает в каноническую историю, но который еще не был поглощен *A*. Мерджсет — это то, за что *B* «берет на себя ответственность» на этом этапе цепи.
Синие и красные: кто хорошо связан?
Внутри каждого мерджсета каждый блок классифицируется как синий или красный:
- Синий — блок был хорошо связан в момент майнинга. Множество других блоков ссылаются на него в своем прошлом. Синие блоки укрепляют безопасность DAG и зарабатывают прямые награды.
- Красный — блок был плохо связан. Он по-прежнему сливается в историю, но получает менее благоприятное отношение.
Критический инвариант протокола: каждый синий блок автоматически находится внутри окна DAA. Красные блоки могут находиться внутри, а могут и нет. Это различие определяет, генерирует ли красный блок какую-либо ценность награды вообще.
Окно DAA: фильтр новизны протокола
Окно DAA (алгоритма корректировки сложности) имеет ширину 2641 блок. В контексте наград оно действует как фильтр новизны. Как задокументировано в вики Kaspa, блоки за пределами этого окна считаются сильно отключенными — между их майнингом и публикацией прошло примерно 45 минут или больше. Эти блоки теряют любое право на награду.
Окно DAA — скользящее окно из 2641 блока (синих плюс квалифицированных красных), отсчитываемое назад от перспективы виртуального блока. Оно управляет корректировкой сложности *и* определяет, какие красные блоки генерируют ценность награды для блока цепи, который их сливает.
П текущих 10 блоках в секунду в Kaspa, 2641 блок соответствует примерно 4,4 минутам глубины DAG — хотя точный эквивалент в реальном времени колеблется в зависимости от хешрейта и ширины DAG. Окно считает по весу блока (синяя работа), а не по меткам реального времени.
Алгоритм наград, шаг за шагом
Вот где части собираются вместе. Когда блок цепи *C* конструирует свою транзакцию «коинбейс», он выполняет следующую логику:
Шаг 1 — Рассчитайте субсидию. На основе текущего DAA скор (накопительного счета всех блоков, слитых и вознагражденных на данный момент), *C* смотрит график эмиссии, чтобы определить субсидию «коинбейс» за блок.
Шаг 2 — Отсортируйте мерджсет. Блоки в мерджсете сортируются по порядку GHOSTDAG: по возрастанию синей работы, с хешем блока в качестве тай-брейкера. Это детерминированное упорядочение гарантирует, что каждый узел вычисляет одно и то же распределение наград независимо.
Шаг 3 — Итерируйте и распределяйте. *C* проходит через отсортированный мерджсет:
для каждого блока B в мерджсете (порядок GHOSTDAG):
если B синий:
coinbase_output[i] → B.miner_address (субсидия + комиссии за транзакции B)
i++
# Последний выход всегда идет самому C:
coinbase_output[i] → C.miner_address (субсидия C + Σ субсидий красных-в-DAA)
Шаг 4 — Не блоки цепи отбрасываются. Если позже обнаруживается, что *C* не находится на выбранной цепи (из-за реорга), его весь «коинбейс» игнорируется всеми узлами. Это правило консенсуса, которое сохраняет стабильность наград даже во время реорганизаций DAG.
Результатом является «коинбейс» с ровно |СиниеМерджсета| + 1 выходами: по одному на каждого майнера синего блока, плюс один финальный выход, выплачивающий майнеру блока цепи (который агрегирует собственную субсидию блока цепи и все субсидии от красных-в-окне-DAA блоков).
Конкретный пример
Представьте, что блок цепи *C* имеет мерджсет из четырех других блоков:
мерджсет = [A, B, D, E] (отсортировано по порядку GHOSTDAG)
A: синий, в окне DAA → майнер A получает 1 субсидию + комиссии A
B: синий, в окне DAA → майнер B получает 1 субсидию + комиссии B
D: красный, в окне DAA → награда сворачивается в выход C
E: красный, за пределами окна DAA → награда не генерируется
Сам C → майнер C получает субсидию C + субсидию D
Выходы «коинбейс»: 4 (= |2 синих| + 1). Майнеры *A* и *B* каждый получают одну субсидию плюс комиссии за транзакции, которые они приняли. Майнер *C* получает две субсидии (свою собственную, плюс *D*). Майнер *E* не получает ничего — этот блок был слишком отключен. Майнер *D* также не получает ничего напрямую; ценность майнинга *D* переходит к майнеру *C*.
Этот дизайн создает четкий стимул: майнить блоки, которые будут хорошо связаны, и публиковать их оперативно. Задержанные или плохо распространенные блоки рискуют стать красными, а если они достаточно красные, чтобы оказаться за пределами окна DAA, их майнинг не генерирует никакой награды для кого-либо.
Как Kaspa Forge использует DAA скор
DAA скор и механизм синего скор не просто определяют, кто получает оплату — они также являются родными часами протокола. Вместо того чтобы полагаться на метки времени блоков (которыми майнеры могут манипулировать в определенных пределах), инструменты Kaspa с поддержкой ковенантов измеряют прошедшее время в приращениях DAA скор.
Это важно для инструментов, построенных на Kaspa Toccata:
- Kaspa Safe использует возраст UTXO — измеренный в DAA скоре — для обеспечения задержек вывода из хранилища. Когда вы устанавливаете задержку на своем хранилище, ковенант не проверяет часы на стене; он проверяет, состарился ли UTXO достаточно по приращениям DAA скор. Окно отмены для тревожного ключа работает так же. Посмотрите, как работает хранилище.
- Kaspa Escrow определяет окна споров и сроки арбитра в DAA скоре. 72-часовое окно спора для сделки с товарами преобразуется в определенную дельту DAA скор, делая тайм-аут устойчивым к манипуляциям с метками времени любой стороной.
- Принятие платежей в коммерции на основе Kaspa полагается на прогрессию синего скор как глубину подтверждения. Порог подтверждения — сколько приращений синего скор ждать — является прямым применением той же метрики, которая лежит в основе алгоритма наград.
Понимание DAA скор как хронометрического примитива объясняет, почему Kaspa Forge выражает каждый тайм-аут — задержки хранилищ, окна споров эскроу, подтверждения платежей — в приращениях DAA, а не в часах по человеческим часам. Это самые устойчивые к манипуляциям часы протокола, и та же метрика, которая определяет, кто зарабатывает награды за блоки. Попробуйте Kaspa Safe, чтобы увидеть задержки на основе DAA в действии на мейннете.
Компромиссы и честные ограничения
Наказание красных блоков целенаправленно, но имеет свою цену. Перенаправляя награды красных блоков майнеру блока цепи (или полностью аннулируя их для блоков за пределами окна DAA), Kaspa стимулирует хорошо связанный майнинг. Компромисс: майнеры с плохим сетевым подключением теряют потенциал награды, даже когда они находят действительные блоки. Это осознанный выбор безопасности — он поощряет плотную связность и более быструю конвергенцию DAG — но это означает, что майнеры в средах с высокой задержкой сталкиваются с присущим недостатком.
«Коинбейсы» не блоков цепи отбрасываются после стабилизации. В ходе нормальной работы узлы могут временно принимать «коинбейс» не блока цепи как действительный. Только когда DAG стабилизируется (выбранная цепь фиксируется), консенсус сходится к тому, какой «коинбейс» фактически выплачивается. Для майнеров, отслеживающих доход в реальном времени, награда за блок не полностью подтверждена, пока он не находится на или явно не слит выбранной цепью.
Время окна DAA ≠ реальное время. Окно из 2641 блоков примерно соответствует нескольким минутам реального времени при 10 BPS, но точная продолжительность варьируется в зависимости от изменений хешрейта и ширины DAG. Тайм-ауты ковенантов в Kaspa Safe и Kaspa Escrow поэтому являются тайм-аутами *времени протокола* — абсолютно согласованными внутри протокола, но они не соответствуют точной продолжительности по человеческим часам. Задержка хранилища «24 часа» может разрешиться на несколько процентов быстрее или медленнее в зависимости от условий сети. Для большинства практических целей эта разница незначительна; для критичного по времени финансового планирования стоит об этом знать.
FAQ
Что такое мерджсет (mergeset) в Kaspa?
Мерджсет блока цепи — это набор блоков в его каузальном прошлом, которые не находятся в прошлом его выбранного родителя. Он включает самого выбранного родителя и все блоки, которые были вновь поглощены в этом месте в выбранной цепи.
Получают ли красные (не синие) блоки майнинг-награды?
Только если они попадают внутрь окна DAA. Когда красный блок внутри окна DAA сливается блоком цепи, награда переходит майнеру блока цепи — а не майнеру красного блока. Красные блоки за пределами окна DAA не зарабатывают ничего.
Каков размер окна DAA в Kaspa?
2641 блок. При 10 BPS это соответствует примерно 4,4 реальных минут, хотя окно измеряется в единицах количества блоков, а не реального времени.
Чем отличается синий скор от DAA скор?
Синий скор считает только синие блоки в каузальном прошлом блока. DAA скор равен синему скору плюс количество красных блоков, которые были успешно слиты и вознаграждены на данный момент. DAA скор управляет графиком эмиссии.
Что происходит с «коинбейсом» не блока цепи?
Он отбрасывается. Только блоки цепи — блоки на выбранной цепи — генерируют действительные транзакции «коинбейс», которые другие узлы принимают после стабилизации DAG.
Как Kaspa Forge использует DAA скор?
Инструменты Kaspa Forge, такие как Kaspa Safe и Kaspa Escrow, выражают тайм-ауты и окна споров в DAA скоре, а не в реальном времени, поскольку DAA скор — это родные часы протокола, устойчивые к манипуляциям с метками времени.
Держите KAS там, где кражу можно отменить
Ковенант-сейф в мейннете Kaspa: ваши ключи, ваши правила, наш инструмент. Ончейн — бесплатно, навсегда.
Создать сейф
