Смарт-аккаунты SLH-DSA
Смарт-аккаунты Pali поддерживают модульные валидаторы. Постквантовый валидатор использует локальные подписи SLH-DSA-SHA2-128s, управляемые Pali. В API идентификатор аутентификатора — slh-dsa.
Смарт-аккаунты Pali и SLH-DSA — ранняя инфраструктура. Сначала используйте поддерживаемые тестовые сети или небольшие суммы, сохраняйте восстановление или запасной валидатор и не строьте UX dapp вокруг фиксированного времени настройки или подписи.
Запрос dapp
Запросите смарт-аккаунт через wallet_prepareSmartAccount:
const smartAccount = await window.ethereum.request({
method: 'wallet_prepareSmartAccount',
params: [
{
label: 'Постквантовый тестовый аккаунт',
authenticator: { id: 'slh-dsa' },
},
],
});
Не передавайте keyId, pkSeed, pkRoot или другой материал ключа SLH-DSA. Pali сама создает и управляет локальным подписантом. Ключи SLH-DSA, переданные dapp, отклоняются, чтобы dapp не создала аккаунт, который Pali не сможет подписывать.
Поток подписи
Pali подписывает hash действия смарт-аккаунта локальным подписантом SLH-DSA. Перед подписью Pali проверяет целевой аккаунт, загруженные метаданные, активный валидатор slh-dsa, совпадение публичного ключа и возможность сессии расшифровать локальное состояние.
Если проверка не проходит, Pali не подписывает и просит регенерировать локальное состояние или использовать другой метод подтверждения.
Лимиты и gas
- абсолютная емкость на ключ:
2^24; - обычный лимит подписи:
2^24 - 1,000; - подписи, зарезервированные для ротации:
1,000; - размер подписи:
3,856байт; - SLH-DSA
preVerificationGas:130,000; - SLH-DSA
verificationGasLimit:700,000как консервативная верхняя граница.
Когда signatureCount >= signatureLimit, Pali прекращает подписывать обычные операции этим ключом и разрешает зарезервированный бюджет только для явных выполнений rotateValidator. Dapp не должны предполагать фиксированное время подписи.