нашёл это почти случайно сегодня вечером, роясь в GitHub-issues Dusk вместо его документации — тред о том, как Phoenix реально выводит ключи, и признанный недостаток в том, как это сделано сейчас.

Phoenix, как и большинство защищённых протоколов, разделяет ключи на две роли:

ключ для трат, который может перемещать средства, и ключ просмотра, который может только видеть их. Поделитесь ключом просмотра с бухгалтером или аудитором — и они видят вашу активность, не имея возможности к ней прикоснуться. Теоретически всё просто. Но @Dusk Foundation собственные инженеры указали на реальную слабость в текущей реализации: чтобы вывести новый ключ, сейчас нужно передавать саму полную seed-фразу, а не какое-то промежуточное значение, полученное из неё. Это нарушает базовый принцип безопасности — наименьшие привилегии: любой код, который занимается выведением ключей, в итоге хранит больше секретного материала, чем ему действительно нужно.
Их исправление, всё ещё в процессе: ввести отдельный master key между seed и каждым выведенным ключом, чтобы сырой seed больше никогда не приходилось прогонять через логику выведения. Небольшое архитектурное изменение, но это разница между тем, когда баг кошелька остаётся локальным, и когда он заодно раскрывает всё сразу.
Что меня зацепило: они делают это публично, в середине миграции, параллельно с переработкой ключей Moonlight в духе EIP-2333. Большинство сетей тихо бы это починили. $DUSK -кошельки будут безопаснее после релиза — но должна ли privacy-first сеть выполнять такой патч, оставляя уязвимости видимыми в переходный период, или же прозрачная итерация на самом деле более заслуживает доверия? #dusk $DUSK @Dusk