Fees / Rent

Background

All Solana transactions require transaction fees in order to be processed. The Solana Protocol requires that these fees be paid by an externally owned account. Program accounts are not eligible to pay transaction fees, and therefore the Strike wallet program itself is ineligible to pay the fees for its transactions.
The Solana network also charges a time and space-based fee for all accounts, which is known as Rent in order to compensate validators for maintaining the network. Each of the Solana accounts used to implement a Strike program wallet require rent for creation and maintenance. Unlike transaction fees, these fees can be paid by the Strike program PDA. Accounts which maintain a minimum balance equivalent to 2 years of rent payments are exempt.
This section explains how fees and rent are paid on the wallet and any associated accounts.

Transaction Fees

Strike transactions are multisig ops originating in the Strike wallet program PDA. The PDA is ineligible to pay transaction fees and therefore an externally owned account (“EOA”) must always be specified to pay these fees.
There are 2 ways that the fees for a multisig op may be paid:
  • Op is initiated from Strike web app - in this case, the fee is paid by a Strike Protocols owned EOA and the program sends an estimate of that amount to Strike Protocols using the feature described below. We refer to this as Fee Delegation
  • Op is initiated from the Strike dApp - in this case the user creates a dApp transaction that allows their EOA to pay the fee directly for the multisig op and Strike Protocols is not involved.
  • Transaction fee, expressed in lamports
  • GUID of a balance account in the wallet to use for the fees
  • Address of an EOA that will receive the fee, which must be included in the user’s wallet address book and also be whitelisted if whitelisting is turned on.
The wallet program provides a feature to allow the software that invokes the transaction the capability to pay the fee and as part of the op reclaim an estimate of the fee from the owner of the wallet.
Any fees reclaimed using this feature must be approved by the user when the transaction is initiated.
When initiating a multisig op the following parameters are required by the wallet:
  • Transaction fee, expressed in lamports
  • GUID of a balance account in the wallet to use for the fees
  • Address that will receive the fee, which must be included in the user’s wallet address book and also be whitelisted if whitelisting is turned on
To use Fee Delegation:
  • Each multisig op includes the estimated transaction fee required to process the transaction at the time of initiation, along with the details of where that estimated transaction fee will be sent.
  • Once the user approves the initiation of the multisig op, the wallet program will collect the fee required to fund all transaction activity associated with the initiation request. Regardless of whether the multisig op is approved, denied, or expired, when the multisig op is finalized, the program will attempt to send the fee to the EOA.
  • If for any reason the fee cannot be sent to the EOA (for example, an account balance insufficient to cover the estimated transaction fee), the program will continue to process the multisig op, notwithstanding the deficiency.
  • Upon finalization of the multisig op, the estimated transaction fees will be sent to the EOA.
  • A user requests a multisig op (for example to the strike web app)
  • The app that is providing an interface to the wallet estimates the expected fee for the complete multisig op
  • The app sends an initiation command to the wallet program with the estimated fee, balance account, and the fee address.
  • The multisig op is approved by the user who initiated it. As part of the approval display they will see the amount of the estimated fee as well as any other balance changes that might result from the transaction. If they do not approve the op, no fee will be charged and the transaction will be discarded before ever reaching the wallet.
  • At this point the transaction has been successfully initiated and regardless of the multisig op outcome (approved, denied, or expired), when it is finalized, the program will attempt to send the fee to the address specified.
  • If for any reason the fee cannot be sent (for example, an account balance is insufficient), the program will continue to process the multisig op. Under no circumstances will the lack of collection of this fee block an op from completing in the program.

Rent

At the moment a Strike wallet is created, the wallet program PDA must be deployed on its behalf. This PDA deployment requires rent, and Strike Protocols pays the rent exempt amount on behalf of the user.
After an introductory period, the user will have the option of paying the rent exempt amount to maintain their wallet or otherwise relinquish their wallet. Because the amount paid by a user is ‘rent exempt’ as defined by Solana, the user may recover that amount in full at any time after their payment by relinquishing their wallet.
Specific program operations related to rent and user interaction are described in Program Upgrades in more detail, since it related to the process of program upgrades and sovereignty over the user’s account.