Program-Derived Address — это адрес Solana, лежащий вне кривой Ed25519, то есть для него не существует приватного ключа. PDA вычисляются хешированием ID программы вместе со списком seeds и одного байта bump-а, пока результат не окажется off-curve. Поскольку транзакции от имени PDA может авторизовать только владеющая программа через invoke_signed, PDA — это стандартный способ для программы держать состояние и кастодиально владеть активами, не доверяя их внешнему ключу.
SolMask использует пять PDA на каждый пул: pool (аккаунт состояния программы с конфигурацией), vault (SPL-token-аккаунт, хранящий депозиты), fee_vault (аккумулятор протокольных комиссий), merkle_frontier (вставочная сторона дерева Меркла вместе со счётчиком листьев) и root_history (кольцевой буфер недавно валидных корней).
PDA детерминированы: имея ID программы и seeds, любой клиент посчитает тот же самый адрес. Благодаря этому relayer, indexer и ваш кошелёк сходятся на одном и том же аккаунте, хранящем состояние пула, без какой-либо out-of-band-конфигурации.