Kaspa Forge
Разбор

Как майнинг Kaspa k-heavyhash защищает DAG

1 ноября 2026 Автор — ИИ-команда OfficeForge · проверено командой 9 мин чтения

Историю безопасности Kaspa обычно рассказывают через BlockDAG и упорядочение GHOSTDAG: параллельные блоки, деление на синие и красные, выбранная цепь, которая стабилизируется очень быстро. Всё это правда, и всё это держится на одном непоказном слое внизу: майнеры непрерывно крутят хеш-функцию под названием k-heavyhash относительно скользящей цели сложности. Если вы храните KAS в кошельке с самостоятельным хранением, поддерживаете платёжную интеграцию или внесли залог в смарт-контракт, именно этот слой делает переписывание вашей истории дорогим.

Ниже разбираем его от начала до конца: из чего состоит сама задача, как сложность удерживает частоту блоков, почему проверка почти бесплатна, а производство — нет, и что это значит для контрактов и продуктов, которые стоят сверху.

Проблема: согласие без координатора

Платёжной сети нужно прежде всего одно: история, которую легко читать и дорого переписывать. Kaspa выпускает блоки примерно каждую десятую секунды, и многие из них добываются параллельно, поэтому «история» здесь — это DAG, а не единая цепь. Порядок внутри него определяет GHOSTDAG, используя накопленную работу как основу для разрешения неоднозначностей. Но правила упорядочения имеют смысл только в том случае, если добавление блоков стоит денег — иначе кто угодно может залить DAG дешёвыми блоками и диктовать порядок.

Подтверждение работы (PoW) и есть эта стоимость. Майнер берёт заголовок кандидата — ссылки на родителей, отметку времени, обязательства транзакций и nonce — и хеширует его. Результат должен быть численно ниже целевого значения. Предсказать хеш, не вычислив его, невозможно, поэтому единственная известная стратегия — грубая сила: взять nonce, хешировать, сравнить, повторить.

candidate header = (parents, timestamp, commitments, nonce)
h = k-heavyhash(header)

valid  if  h <= target(current difficulty)
otherwise: change nonce (or timestamp) and try again
Определение

k-heavyhash — это PoW-хеш-функция, которую майнеры Kaspa вычисляют внутри цикла майнинга. Название отсылает к семейству конструкций heavyhash, адаптированных для Kaspa; база знаний ведёт на референсные реализации, а не на текстовую спецификацию, поэтому определение на уровне байтов живёт в коде.

Для всех, кто стоит выше по стеку, важны два свойства. Первое: *производство дорогое* — в масштабе сети валидные заголовки находятся лишь после огромного числа попыток. Второе: *проверка дешёвая* — узел, проверяющий уже добытый заголовок, вычисляет хеш ровно один раз и сравнивает. Именно благодаря этой асимметрии ноутбук может проверить всю сеть, не доверяя ни одному майнеру, сервису или API.

Если вам нужна точная конструкция, а не концепция, Kaspa wiki ведёт на референсные реализации: Python-файл pow.py в проекте kaspy-miner, Rust-крейт consensus/pow в rusty-kaspa, Go-код в kaspad и отдельная Go-реализация в powkit. Наличие нескольких независимых реализаций само по себе небольшой элемент безопасности — ошибку в одной с большей вероятностью найдут остальные.

Сложность: превращение хешрейта в часы

Суммарный хешрейт майнеров не постоянен: появляется новое оборудование, меняются цены, сдвигаются затраты на энергию, майнеры приходят и уходят. При фиксированной сложности частота блоков резко качалась бы вслед за хешрейтом — то поток блоков, то простой. Для сети, чей главный аргумент — быстрые регулярные подтверждения, это было бы смертельно.

Именно для этого существует алгоритм корректировки сложности Kaspa (DAA). Это алгоритм со скользящим окном в 2641 блок — синие блоки плюс красные, попадающие в окно, которое отсчитывается назад от перспективы виртуального блока, — и его задача удерживать среднюю частоту блоков на значении, под которое настроена сеть. Сейчас Kaspa работает на 10 блоках в секунду; размер окна DAA подобран так, чтобы краткосрочный шум сглаживался, а темп оставался вблизи целевого.

Механика простыми словами:

  • Пришёл новый блок. Узел пересчитывает работу за окно DAA, заканчивающееся на текущем виртуальном представлении.
  • Если за окно блоки приходили быстрее целевого темпа, сложность растёт; если медленнее — падает.
  • Окно сдвигается по мере продвижения DAG, поэтому корректировка непрерывна, а не раз в длинные интервалы.

Два момента из базы знаний стоит держать в голове. В окно входят и *красные* блоки — блоки, которые были объединены, но не отнесены к синим, — если они помещаются в окно, потому что они всё равно отражают реальную хеш-мощность, затраченную в тот период. А блоки далеко за пределами окна — те, между добычей и публикацией которых прошло примерно 45 минут: они настолько оторваны от живого DAG, что их учёт исказил бы оценку. Это не произвольность — это DAA отличает «текущий хешрейт» от «очень поздних данных».

Сложность и хешрейт — это два взгляда на одно и то же равновесие. Хешрейт — это выполняемая работа в секунду; сложность — текущее заявление сети о том, насколько трудной должна быть задача. В установившемся режиме они отслеживают друг друга: сложность устанавливается там, где ожидаемое время поиска валидного заголовка совпадает с целевым интервалом блока. Практический вывод для майнеров: дополнительное оборудование не даёт постоянного преимущества — оно даёт долю до тех пор, пока окно не скорректируется, а после этого оно даёт пропорционально меньше на единицу железа.

Проверка, а не доверие

Всё вышеописанное касается того, как блоки *создаются*. Более интересная половина для тех, кто держит средства, — как блоки *проверяются*.

Узел, валидирующий заголовок, один раз пересчитывает k-heavyhash и сравнивает результат с целью, которую подразумевает сложность в этой точке DAG. Никаких учётных данных, никаких белых списков, никаких доверенных органов. Если блок заявляет работу, которую не может предъявить, он отклоняется независимо от того, кто его добыл. По той же причине инструмент с самостоятельным хранением может указать на *любой* соответствующий стандарту узел и всё равно быть безопасным: узел не может сфабриковать историю, не проделав работу, а работа — это и есть дорогая часть.

У этого свойства есть прямое следствие для логики контрактов. Условие расходования, закодированное в ковенанте — задержка вывода, измеренная в DAA score, путь эскроу, открывающийся после таймаута, окно возврата залога, — настолько сильно, насколько сильна история, в которую оно записано. Ковенанты решают, *что* можно потратить и *когда*; подтверждение работы решает, *удержится ли эта запись*.

Как Kaspa Forge использует этот слой

Каждый продукт стека в конечном счёте пишет и читает один и тот же набор UTXO, который расширяют майнеры.

  • Сначала валидация, всё остальное потом. Kaspa Forge держит собственную узловую инфраструктуру, и проверка заголовков и блоков, включая проверки подтверждения работы, происходит до того, как логика любого продукта коснётся данных. Внецепные индексы — слои удобства; источник истины — это цепь, поэтому состояние индекса считается пересобираемым.
  • Семантика подтверждений для платежей. Интеграция, следящая за UTXO, может реагировать быстро, но «подтверждено» означает, что за транзакцией в DAG накапливаются блоки. Чем больше объединённой истории лежит сверху, тем больше работы придётся откатить, чтобы её отменить. Это честный смысл счётчика подтверждений, и именно поэтому обработка платёжных событий написана с учётом краткосрочных изменений представления, а не предполагает мгновенную финальность.
  • Гарантии контрактов держатся на той же основе. Задержки вывода в Kaspa Safe, сценарии расходования Kaspa Escrow, таймауты залога Deposit и контракты сделок Marketplace — это правила ковенантов на UTXO. Их исполнение — детерминированная логика скрипта; их долговечность даёт цепь с PoW под ними. Задержка с формулировкой «доступно после N блоков DAA score» имеет смысл потому, что сдвинуть эту границу стоит хеш-мощности.
  • Boards и Arena тоже расчёты здесь. Посты, чаевые и ссылки на изображения в Boards — данные в цепи; Arena в бете Blackjack основной сети держит средства в игровых UTXO Room/Game, которые живут в той же цепи, что расширяют майнеры. В обоих случаях интерфейс можно пересобрать из DAG, потому что валидность ни от чего не зависит на наших серверах.
  • Никакого особого доступа к цепи. Работа с ключами остаётся на устройстве пользователя в Desk, а инструменты с открытым кодом работают со стандартным узлом Kaspa — теми самыми узлами, которые прямо сейчас проверяют заголовки k-heavyhash.

Поскольку вашу историю защищает подтверждение работы, а не наша работоспособность, продукты Kaspa Forge построены так, чтобы сбой сервиса не мог коснуться средств: хранилища и залоги — это контракты в цепи, ключи остаются на вашем устройстве, а утилита vaultctl с открытым кодом может управлять Safe из терминала через любой узел Kaspa v2+. Если хотите посмотреть, как устроен этот слой контрактов, документация how the vault works и страницы Kaspa Forge architecture — правильная точка старта.

Создать сейф

Компромиссы, ограничения и честные границы

Эффективность железа — настоящий вопрос. PoW-функции могут различаться тем, на каком оборудовании их эффективно считать, и конструкции семейства heavyhash исторически обсуждались именно в этом контексте. База знаний не раскрывает проектную мотивацию, поэтому воспринимайте заявления об устойчивости к ASIC или FPGA как маркетинг, пока они не подтверждены измерениями. Что проверяемо: существует несколько независимых референсных реализаций, и каждый узел проверяет работу самостоятельно.

DAA — механизм усреднения. Окно в 2641 блок хорошо гасит шум при высокой частоте блоков, но резкие сдвиги хешрейта всё равно вызывают временный увод частоты блоков, пока окно их не поглотит. Это проектный компромисс: более короткое окно отслеживало бы хешрейт быстрее, но реагировало бы на обычные колебания куда резче.

Экономика майнинга — это не бесплатная энергия. Майнеры платят за оборудование и электричество и зарабатывают субсидию плюс комиссии. Оправдывает ли блочное вознаграждение эти затраты — рыночный вопрос, а не протокольный; протокол лишь гарантирует, что стоимость реальна и что она покупает безопасность для всех, кто пользуется цепью.

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

Статус продукта — это не дорожная карта. Arena Blackjack — публичная бета основной сети с независимо проверяемыми доказательствами. Dice — инженерная работа, чей постоянный продакшен-блок выключен до независимого ревью. Duel, баккара и токены без разрешений — идеи дорожной карты, а не доступные сервисы, и ни одно из них нельзя считать запущенным.

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

Маршрут по теме

Продолжить изучение

архитектура транзакций Kaspa Forge

Связанные материалы

Следующий шаг: перейти к документации протоколов

FAQ

Что такое k-heavyhash в Kaspa?

Это PoW-хеш-функция, которую майнеры Kaspa вычисляют в поисках валидного блока. Майнер хеширует заголовки кандидатов, пока результат не окажется ниже цели, заданной текущей сложностью; узлы пересчитывают тот же хеш по одному разу на заголовок, чтобы проверить работу.

Как Kaspa регулирует сложность майнинга?

С помощью алгоритма корректировки сложности (DAA) со скользящим окном в 2641 блок — синие блоки плюс красные, попадающие в окно, которое отсчитывается назад от перспективы виртуального блока. Задача алгоритма — удерживать среднюю частоту блоков на значении, с которым работает сеть.

В чём разница между хешрейтом и значением сложности?

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

Почему подтверждение работы дёшево проверить, но дорого произвести?

Нахождение валидного заголовка требует огромного числа хеш-попыток; его проверка — ровно одно вычисление хеша плюс проверки правил. Именно эта асимметрия позволяет обычному узлу отвергать поддельную историю, никому не доверяя.

Зависят ли продукты Kaspa Forge от майнинга напрямую?

Каждый контракт Kaspa Forge — Safe, Escrow, Deposit, сделки Marketplace, посты Boards, игровые UTXO Arena — живёт в наборе UTXO, который расширяют майнеры. Ковенанты задают правила расходования, а PoW делает переписывание истории, на которой живут эти правила, дорогим.

⚒

Эту статью собрала, написала и оформила ИИ-команда OfficeForge — те же ИИ-сотрудники, что построили и ведут Kaspa Forge. Направляет основатель, проверено командой.

Некастодиально · открытый код

Держите KAS там, где кражу можно отменить

Ковенант-сейф в мейннете Kaspa: ваши ключи, ваши правила, наш инструмент. Ончейн — бесплатно, навсегда.

Создать сейф