Визначення
Session key — це тимчасовий парний ключ із обмеженими повноваженнями, який дозволяє додатку виконувати визначені дії в мережі Solana без повторного підписання транзакцій основним приватним ключем користувача. Сесійний ключ створюється на обмежений час і зафіксований перелік дозволених операцій.
У контексті мобільної екосистеми Solana session key розв'язує проблему, коли кожна транзакція вимагає явного підпису в гаманці — на мобільному пристрої це створює незручності та перериває користувацький досвід.
Як працює
Механізм базується на делегуванні повноважень через смарт-контракт:
- Ініціалізація. Користувач один раз підписує транзакцію, яка реєструє сесійний ключ у програмі-делегаті. У цьому підписі вказуються: який публічний ключ отримує повноваження, які конкретно інструкції йому дозволено виконувати, на які токени або акаунти поширюються права та термін дії сесії.
- Використання. Під час сесії додаток підписує транзакції сесійним ключем автономно, без звернення до основного гаманця. Програма-делегат на ланцюгу перевіряє, чи відповідає транзакція заданим обмеженням, і лише тоді пропускає її.
- Завершення. Після спливу терміну дії або явного відкликання сесійний ключ втрачає чинність. Будь-яка спроба використати його після цього відхиляється програмою.
Технічно повноваження часто реалізуються через PDA (Program Derived Address), який виступає посередником і контролює відповідність транзакцій сесійним обмеженням. Це означає, що сесійний ключ ніколи не отримує прямого доступу до коштів — він може лише ініціювати дозволені інструкції через делегуючу програму.
Приклад
Користувач відкриває мобільну гру на Solana. При першому вході він підписує одну транзакцію, яка створює session key з такими обмеженнями: діє 24 години, дозволено лише виклик інструкції move у конкретному ігровому контракті, максимальна сума за сесію — 0,5 SOL. Протягом доби гра взаємодіє з ланцюгом безперешкодно. Після 24 годин сесія закінчується, і користувачу потрібно підписати нову, якщо він хоче грати далі.
Типова помилка
Змішування session key із біометричною автентифікацією. Біометрія (відбиток пальця, Face ID) на мобільному пристрої розблоковує доступ до локального сховища ключів — це спосіб підтвердження особи перед пристроєм. Session key — це механізм делегування повноважень на ланцюгу. Вони працюють на різних рівнях і часто функціонують разом: біометрія захищає локальний сесійний ключ, а сам ключ визначає, що саме дозволено робити в мережі Solana.
Інша поширена помилка — надання сесійному ключу надто широких повноважень. Якщо обмеження задані неточно (наприклад, вказано «будь-які інструкції контракту» замість конкретних), скомпрометований сесійний ключ може завдати значних збитків, незважаючи на його тимчасовість.
Пов'язані матеріали
Внутрішні переходи
- Біометрична автентифікація — як мобільні пристрої підтверджують особу користувача перед локальним сховищем ключів, у тому числі сесійних.
- Mobile RPC — як мобільні додатки Solana спілкуються з мережею під час виконання транзакцій, підписаних сесійним ключем.
Додаткові ресурси
- Документація Solana про делегування та PDA — для розуміння технічної реалізації обмежень сесійного ключа на рівні програм.
- Специфікація стандарту сесійних ключів у екосистемі (за наявності) — актуальний статус варто перевірити в офіційних репозиторіях Solana, оскільки підходи до реалізації можуть змінюватися.