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, )