В SPL Token есть функция Approve, которая дает учетной записи делегата возможность передавать определенное количество токенов. Пока я вижу, что это работает только для пользовательского токена.
Можно ли дать учетной записи делегата возможность передавать SOL?
Поток, который мне нужен:
Ресурсы:
Лучше всего обернуть SOL в учетную запись токена SPL (чеканка So11111111111111111111111111111111111111112
) и использовать SOL в качестве токена SPL, например:
$ spl-token wrap 1
Wrapping 1 SOL into GJTxcnA5Sydy8YRhqvHxbQ5QNsPyRKvzguodQEaShJje
Signature: 4f4s5QVMKisLS6ihZcXXPbiBAzjnvkBcp2A7KKER7k9DwJ4qjbVsQBKv2rAyBumXC1gLn8EJQhwWkybE4yJGnw2Y
$ spl-token approve So11111111111111111111111111111111111111112 1 pubkey_to_approve_to
Подробнее о переносе в https://spl.solana.com/token#wrapping-sol и https://spl.solana.com/token#example-wrapping-sol-in-a-token
В итоге мы использовали другой подход с несколькими подписями, который больше подходит Солане, вместо того, чтобы пользователь одобрял расходные токены, а затем API забирал средства.