К основному содержанию
T TON Adoption
← Словарь
NODE/03 · Term

Публичный ключ

Открытая часть пары асимметричного ключа. В TON используется Ed25519, публичный ключ длиной 32 байта; из него детерминированно получается адрес кошелька. Может публиковаться без риска для приватного ключа.

Синонимы: public key, открытый ключ, pubkey

Публичный ключ — открытая половина криптографической пары ключей. В TON используется схема Ed25519: публичный ключ — это 32 байта (256 бит), вычисляемые из приватного ключа путём умножения на базовую точку эллиптической кривой.

Что можно делать с публичным ключом

  • Проверять подписи. Любой держатель публичного ключа может проверить, что транзакция или сообщение подписаны соответствующим приватным ключом — без знания приватного ключа.
  • Получить адрес кошелька. Адрес — это, по сути, хэш от состояния смарт-контракта, в которое включён публичный ключ. То есть зная публичный ключ и версию контракта (v3, v4, v5), можно вычислить все возможные адреса этого кошелька.
  • Шифровать сообщения (теоретически — на практике в TON шифрование сообщений делается отдельным механизмом).

Что нельзя делать: тратить средства, подписывать транзакции, восстанавливать приватный ключ. Из публичного ключа в Ed25519 нельзя обратно получить приватный — это однонаправленная операция.

Связь с адресом

В TON адрес кошелька — это workchain:hash(StateInit), где StateInit включает код контракта и его начальные данные (среди которых — публичный ключ). Поэтому:

  • Один публичный ключ → разные адреса для разных версий контракта (v3R2, v4R2, v5R1).
  • Поменять контракт без смены ключа можно — это «миграция» на новую версию кошелька.
  • Поменять ключ без смены seed нельзя — нужна новая мнемоника.

Когда виден

Публичный ключ становится известен сети при первой исходящей транзакции с кошелька — он включается в подпись. До первой транзакции (deploy) публичный ключ присутствует только в коде на стороне пользователя; на блокчейне виден лишь адрес.

Это даёт небольшое преимущество в приватности: адрес, никогда не отправлявший транзакции, не раскрывает свой публичный ключ. Для постквантовой безопасности это потенциально важно, но в текущей сети — скорее курьёз.

Где встречается в интерфейсах

Публичный ключ обычно скрыт от пользователя — кошельки показывают только адрес. В продвинутых сценариях (multisig, ручной деплой контракта, проверка сторонних подписей) ключ можно увидеть в Tonscan или Tonviewer как поле pubkey в данных контракта.

См. также