To transfer assets on the Solana network the user has to hold SOL. While some users might have sufficient SOL in their wallets but for new users, this can be a pain. To obtain SOL the users have to go through centralized exchanges which takes considerable time and effort. Also, some users might not want to hold SOL in their wallets due to its volatile nature. So, it’ll be a great feature to allow users to send transactions without spending SOL.
We started this project during
Solana Wormhole Hackathon. This project is a smaller version of SolGSN which supports meta transactions for SPL tokens. This protocol will allow users to send any SPL token without having SOL in their wallets. The transaction fee will be deducted from the same SPL token. The protocol will be fully non-custodial.
This has been achieved using a Solana Program which does the cross-program invocation to send SPL tokens to the receiver.
- The user will create a transaction to send the token. In that tx, the user will have to add the relayer’s address as the fee payer. The user can select any available relayer as the fee payer. However, in the current version, there is just one.
- Then, the user needs to partially sign the transaction from his account.
- After partially signing the tx, the user will send tx to the relayer. The relayer runs a service at its end to receive the transactions from the user.
- Then, the relayer will sign the tx from its private key and can send tx to the chain. Here, the signature will be needed because the relayer will pay for tx fee in SOL.
- Once submitted, the
MetaSolthe program will do a cross-program invocation to send the token from sender to receiver. At the same time, a fee will be deducted in the same token and transferred to the relayer. This will incentivize the relayer to provide the relay service.
This way the sender will pay for the transaction in the same SPL token instead of SOL. This will remove the necessity to have some SOL in the wallet to pay for the transfer.
What if the relayer tries to manipulate the SPL transfer transaction?
The signature verification will fail because the sender has already partially signed the tx from his account.
Note: We will release a user interface soon. From the user interface, anyone will be able to transfer SPL tokens using meta transactions.
Our long-term vision is to support any type of transaction (not just token transfers). It will support gasless transactions. We also want to build a permission-less network of relayers. Where relayers are incentivized to provide services using governance tokens.