Перейти к основному содержимому

Смарт-аккаунты 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 не должны предполагать фиксированное время подписи.

Ссылки