Исследование сравнивает доказательство кошелька, охватывающее публичную логику и владение, с разделённой конструкцией, где доказывается только знание секрета. Непосредственная проверка допуска проверяет открытую арифметику, HistoryStep доказывает канонический переход, а пакетирование по владельцу сохраняет почти неизменным размер одной капсулы авторизации при росте от одного до 1 020 входов.
Что должен доказывать кошелёк?
Открытое тело транзакции уже предоставляет нативной проверке балансы, количества, слоты и арифметику выходов. Приватный свидетель добавляет единственный факт, который тело не должно раскрывать: знание секрета, управляющего выбранными входами.
Эксперимент проверял, можно ли, разделив эти обязанности, убрать доказательство публичной логики со стороны кошелька, не ослабив переход принятого блока.
В исходной схеме кошелёк передавал два доказательства. Масштабируемое прозрачное доказательство знания (STARK) подтверждало открытую арифметику транзакции. Отдельное доказательство авторизации на основе протокола Голдвассер–Калай–Ротблум (GKR), названное AuthGKR, подтверждало знание секрета владельца. Позднее доказательство блока воспроизводило ту же открытую арифметику, поэтому эта часть вычисления доказывалась дважды.
В разделённой схеме приватное доказательство владения передаётся в капсуле авторизации — рандомизированном объекте доказательства, связанном с транзакцией и выбранными ею входами.
Разделённая конструкция
State — аутентифицированный набор текущих непотраченных выходов и счётчиков консенсуса. HistoryStep — рекурсивное доказательство, которое несёт каждый принятый блок; оно проверяет точный переход блока от родительского State к дочернему.
- при допуске в мемпул публичный предикат выводится из тела транзакции и проверяется;
- кошелёк доказывает знание секрета владельца выбранных аутентифицированных входов;
- утверждение авторизации выводится проверяющей стороной и не может быть заменено вариантом, выбранным кошельком;
- HistoryStep восстанавливает публичную логику по порядку и доказывает полученный переход State.
Строгое декодирование отвергает лишние байты, неизвестные варианты и доказательство для иной формы транзакции. Мутационные тесты независимо меняли тело, владельца, набор секретов и поля доказательства — каждый такой случай должен был быть отвергнут.
Эксперимент 1. Удаление дублирующего публичного доказательства
Первое измерение охватывало стандартные транзакции с одним–восемью входами и консолидацию с двадцатью пятью входами. Время относится к доказательству авторизации; в разделённой конструкции вклад публичного STARK со стороны кошелька равен нулю.
| Сценарий | Медиана построения | Медиана проверки | Пакет кошелька |
|---|---|---|---|
| Стандартная: 1 вход / 2 выхода | 76,02 мс | 15,93 мс | 117,75 КиБ |
| Стандартная: 4 входа / 8 выходов | 78,90 мс | 13,84 мс | 120,85 КиБ |
| Консолидация: 25 входов / 2 выхода | 269,69 мс | 40,27 мс | 165,47 КиБ |
Эти измерения относятся к испытанной геометрии, в которой доказывалась только авторизация, а не к окончательному сетевому формату PagedSpend, разбивающему крупную транзакцию на физические страницы фиксированной ёмкости. Сравнительный результат состоит в том, что удаление избыточного доказательства не устранило публичную проверку: её выполняют нативное правило допуска и каноническое доказательство блока.
Эксперимент 2. Масштабирование по владельцам, а не по страницам
Входы, выведенные из одного мастер-секрета, объединяются под одним логическим утверждением авторизации. PagedSpend способен представить 1–128 физических страниц, до 1 020 входов и 256 выходов, а кошелёк создаёт для владельца одну заново рандомизированную капсулу авторизации — объект доказательства того, что секрет владельца управляет всеми выбранными входами.
В таблице указаны медиана (p50) и 95-й процентиль (p95) по серии измерений.
| Входы | Страницы | Капсула p50 / p95 | Полный локальный путь p50 / p95 |
|---|---|---|---|
| 1 | 1 | 218,99 / 341,71 мс | 228,30 / 352,47 мс |
| 100 | 13 | 204,43 / 243,58 мс | 217,32 / 255,46 мс |
| 1 020 | 128 | 199,98 / 250,82 мс | 233,06 / 285,81 мс |
Размер объекта транзакции (intent) растёт примерно с 56,81 до 96,50 КиБ из-за увеличения числа публичных входов. Размер капсулы остаётся около 56 КиБ, а время её построения — в пределах разброса измеренной выборки. Стоимость доказательства определяется числом различных владельцев, а не физических страниц транзакции.
Граница безопасности и приватности
Капсула скрывает секрет расходования и рандомизирует каждое доказательство. Это не доказательство конфиденциальной транзакции: пока тело доступно, владельцы, суммы, слоты и структура транзакции остаются публичными. Публичная арифметика остаётся прозрачной, поскольку её сокрытие увеличило бы стоимость доказательства, не изменив безопасность владения.
Результат
Закрытое знание доказывается один раз для каждого владельца. Открытая логика транзакции проверяется нативно при допуске и один раз доказывается в каноническом переходе блока.
То же разделение применимо и за пределами этого кошелька: нулевое разглашение должно покрывать зависимое от секрета отношение, а не дублировать детерминированные проверки, которые всё равно должно воспроизвести окончательное доказательство.