Визначення
Signature (підпис) — це криптографічне підтвердження, що власник приватного ключа санкціонував конкретну транзакцію. У мережі Solana підписи створюються за алгоритмом Ed25519 і мають фіксований розмір 64 байти. Підпис не містить приватного ключа й не дозволяє його відновити, але будь-хто може перевірити його дійсність за допомогою відповідного відкритого ключа.
Як працює
Процес формування підпису в Solana складається з кількох кроків:
- Серіалізація транзакції. Усі дані транзакції (відправник, отримувач, інструкції, останній блок) перетворюються на послідовність байтів у суворо визначеному порядку.
- Підписування. Приватний ключ платника застосовується до цієї послідовності за алгоритмом Ed25519. Результат — 64-байтовий підпис.
- Додавання до транзакції. Підпис включається до структури транзакції перед відправкою в мережу.
- Верифікація. Кожен валідатор Solana перевіряє підпис за допомогою відкритого ключа платника. Якщо підпис недійсний або не відповідає серіалізованим цим, транзакція відхиляється ще до потрапляння в блок.
Одна транзакція може містити кілька підписів, якщо в ній беруть участь кілька підписантів (наприклад, multisig-акаунти або додаткові підписанти інструкцій). Проте мінімум один підпис — від платника комісії — є обов'язковим.
Приклад
Коли ви відправляєте 0,5 SOL з гаманця Phantom на інший акаунт, гаманець у фоновому режимі:
- Формує транзакцію з вашою інструкцією transfer.
- Бере ваш приватний ключ (який ніколи не покидає гаманець) і підписує серіалізовану транзакцію.
- Відправляє готову транзакцію з підписом через RPC-вузол у мережу.
У відповіді від RPC ви отримаєте поле signature — рядок у кодуванні base58, який виглядає приблизно так:
5UfDuX7XhGtFk2bN6FRhJsvFAPoH4pGJkG8gDmZsVWvVhRqJ3YbEeFkQm9LpNwSsX
Цей рядок є унікальним ідентифікатором вашої транзакції в мережі. За ним можна знайти транзакцію в експлорерах.
Типова помилка
Часто плутають підпис із хешем транзакції (transaction hash). У багатьох інших блокчейнах це різні речі, але в Solana підпис першого підписанта фактично слугує ідентифікатором транзакції. Помилка полягає в тому, що користувачі шукають «окремий хеш транзакції», не розуміючи, що підпис вже виконує цю роль. Інша поширена помилка — вважати, що наявність підпису автоматично означає виконання транзакції. Підпис лише доводить авторизацію; транзакція все одно має пройти валідацію, потрапити в блок і бути підтвердженою мережею.
Пов'язані матеріали
Внутрішні переходи
- Transaction (транзакція) — загальна структура, до якої входить підпис та інші компоненти.
- Комісія (Fee) — плата за обробку транзакції, яку сплачує підписант-платник.
Додаткові ресурси
- Офіційна документація Solana щодо формату транзакції та підписів — для розуміння бітової структури серіалізації.
- Специфікація Ed25519 — для поглибленого знайомства з криптографічною основою підписів у мережі.