Sponsored Transactions (Fee Payer)
The Kotlin SDK provides support for sponsored transactions also known as fee payer transactions.
The standard flow for sending a sponsored transaction is as follows:
- Determine upon operation by creating a Transaction
- The sender signs the transaction
- The fee payer signs the transaction
- Submit the transaction
Determine Upon Operation
Section titled “Determine Upon Operation”As we’d already seen in the previous section, you can build a transaction by yourself
using the buildTransaction.simple
method or use the pre-built transaction builders
like transferCoinTransaction
. However, in the case of sponsored transactions, you
need to specify the optional withFeePayer
parameter as true
in all cases.
val txn = aptos.buildTransaction.simple( sender = alice.accountAddress, data = entryFunctionData { function = "0x1::coin::transfer" typeArguments = typeArguments { +TypeTagStruct("0x1::aptos_coin::AptosCoin") } functionArguments = functionArguments { +bob.accountAddress +U64(SEND_AMOUNT_UNITS.toULong()) } }, withFeePayer = true, )
OR
val txn = aptos.transferCoinTransaction( sender = alice, receiver = bob.accountAddress, amount = SEND_AMOUNT_UNITS, withFeePayer = true, )
Sign the Transaction
Section titled “Sign the Transaction”Once you have built a transaction, you (the sender) can sign it using the sign
method.
val aliceAuthenticator = aptos.sign( sender = alice, transaction = txn,)
Sign the Transaction as Fee Payer
Section titled “Sign the Transaction as Fee Payer”To sign the transaction as a fee payer, you can use the signAsFeePayer
method.
val signerAuthenticator = aptos.signAsFeePayer( feePayer = sponsor, transaction = txn,)
Submit the Transaction
Section titled “Submit the Transaction”Finally, you can submit the transaction to the network using the submit
method.
val committedTxn = aptos.submitTransaction.simple( transaction = txn, senderAuthenticator = aliceAuthenticator, feePayerAuthenticator = signerAuthenticator, )