Визначення

Signature (підпис) — це криптографічне підтвердження, що власник приватного ключа санкціонував конкретну транзакцію. У мережі Solana підписи створюються за алгоритмом Ed25519 і мають фіксований розмір 64 байти. Підпис не містить приватного ключа й не дозволяє його відновити, але будь-хто може перевірити його дійсність за допомогою відповідного відкритого ключа.

Як працює

Процес формування підпису в Solana складається з кількох кроків:

  1. Серіалізація транзакції. Усі дані транзакції (відправник, отримувач, інструкції, останній блок) перетворюються на послідовність байтів у суворо визначеному порядку.
  2. Підписування. Приватний ключ платника застосовується до цієї послідовності за алгоритмом Ed25519. Результат — 64-байтовий підпис.
  3. Додавання до транзакції. Підпис включається до структури транзакції перед відправкою в мережу.
  4. Верифікація. Кожен валідатор Solana перевіряє підпис за допомогою відкритого ключа платника. Якщо підпис недійсний або не відповідає серіалізованим цим, транзакція відхиляється ще до потрапляння в блок.

Одна транзакція може містити кілька підписів, якщо в ній беруть участь кілька підписантів (наприклад, multisig-акаунти або додаткові підписанти інструкцій). Проте мінімум один підпис — від платника комісії — є обов'язковим.

Приклад

Коли ви відправляєте 0,5 SOL з гаманця Phantom на інший акаунт, гаманець у фоновому режимі:

  • Формує транзакцію з вашою інструкцією transfer.
  • Бере ваш приватний ключ (який ніколи не покидає гаманець) і підписує серіалізовану транзакцію.
  • Відправляє готову транзакцію з підписом через RPC-вузол у мережу.

У відповіді від RPC ви отримаєте поле signature — рядок у кодуванні base58, який виглядає приблизно так:

5UfDuX7XhGtFk2bN6FRhJsvFAPoH4pGJkG8gDmZsVWvVhRqJ3YbEeFkQm9LpNwSsX

Цей рядок є унікальним ідентифікатором вашої транзакції в мережі. За ним можна знайти транзакцію в експлорерах.

Типова помилка

Часто плутають підпис із хешем транзакції (transaction hash). У багатьох інших блокчейнах це різні речі, але в Solana підпис першого підписанта фактично слугує ідентифікатором транзакції. Помилка полягає в тому, що користувачі шукають «окремий хеш транзакції», не розуміючи, що підпис вже виконує цю роль. Інша поширена помилка — вважати, що наявність підпису автоматично означає виконання транзакції. Підпис лише доводить авторизацію; транзакція все одно має пройти валідацію, потрапити в блок і бути підтвердженою мережею.

Пов'язані матеріали

Внутрішні переходи

  • Transaction (транзакція) — загальна структура, до якої входить підпис та інші компоненти.
  • Комісія (Fee) — плата за обробку транзакції, яку сплачує підписант-платник.

Додаткові ресурси

  • Офіційна документація Solana щодо формату транзакції та підписів — для розуміння бітової структури серіалізації.
  • Специфікація Ed25519 — для поглибленого знайомства з криптографічною основою підписів у мережі.