Что такое валидатор Solana-адресов?
Валидатор Solana-адресов проверяет, что строка — это Base58-кодировка ровно 32 байт (размер публичного ключа ed25519), а затем тестирует, декодируются ли эти байты в точку на кривой ed25519. Ключи на кривой принадлежат обычным кошелькам; значения вне кривой — это program-derived addresses (PDA). Solana-адреса не содержат контрольной суммы, поэтому проверка кривой — единственный доступный способ обнаружить опечатку.
Что говорит результат
- Корректен, аккаунт кошелька: строка декодируется в 32 байта, и ключ лежит на кривой ed25519. Именно это показывают как адрес кошельки Phantom, Solflare и Backpack.
- Корректен, PDA / вне кривой: сформирован правильно, но приватного ключа для него существовать не может. Типично для токен-аккаунтов и хранилищ программ.
- Некорректен: неправильная длина, недопустимый символ, либо строка на самом деле является адресом другой сети.
Как работает проверка кривой
Публичный ключ ed25519 кодирует координату y точки кривой плюс один бит знака. Из y инструмент вычисляет x² = (y² − 1) / (d·y² + 1) по модулю 2²⁵⁵ − 19 и проверяет, есть ли у x² квадратный корень. Если есть, точка существует и у ключа может быть приватный ключ; если нет, адрес вне кривой. Арифметика выполняется в вашем браузере с помощью BigInt.
Типичные ошибки с Solana-адресами
- Потерян последний символ. Мессенджеры иногда обрезают длинные строки. Адрес из 43 символов вместо 44 декодируется в неправильную длину и не проходит проверку.
- Путаница между mint и кошельком. Адрес mint USDC EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v — корректный адрес, но отправка токенов на него их сжигает. Отправляйте только на адреса, которые человек назвал своим кошельком.
- Вставлен Ethereum-адрес. 0x… — это не Solana. Если не считать мостов, активы, отправленные в чужой формат, теряются.
Создайте код Solana Pay для проверенного адреса в генераторе QR-кода Solana Pay.