signTransaction method
AptosSignedTransaction
signTransaction({
- required AptosAccount<
AptosAccountPublicKey, AptosAccountAuthenticator, AptosSignature> account, - required AptosRawTransaction transaction,
- AptosAccount<
AptosAccountPublicKey, AptosAccountAuthenticator, AptosSignature> ? feePayerAccount, - List<
AptosAccount< ? secondarySignerAccounts,AptosAccountPublicKey, AptosAccountAuthenticator, AptosSignature> >
Signs an Aptos raw transaction with the provided account
.
account
: The primary account responsible for signing the transaction.transaction
: The raw transaction to be signed.feePayerAccount
(optional): An additional account that covers the transaction fee, if applicable.secondarySignerAccounts
(optional): A list of secondary accounts for multi-agent transactions.
Returns an AptosSignedTransaction containing the raw transaction and its corresponding authenticator.
Implementation
AptosSignedTransaction signTransaction(
{required AptosAccount account,
required AptosRawTransaction transaction,
AptosAccount? feePayerAccount,
List<AptosAccount>? secondarySignerAccounts}) {
final digest = transaction.signingSerialize(
feePayerAddress: feePayerAccount?.toAddress(),
secondarySignerAddresses:
secondarySignerAccounts?.map((e) => e.toAddress()).toList());
// Sign the transaction digest with the primary account
final sender = account.signWithAuth(digest);
// Sign with fee payer account if provided
AptosAccountAuthenticator? feePayerAuthenticator =
feePayerAccount?.signWithAuth(digest);
// Sign with secondary signer accounts if provided
List<AptosAccountAuthenticator>? secondarySignerAuthenticator =
secondarySignerAccounts?.map((e) => e.signWithAuth(digest)).toList();
// Build the transaction authenticator based on the provided signers
final txAuthenticated = _toTransactionAuthenticated(
sender: sender,
feePayerAddress: feePayerAccount?.toAddress(),
feePayerAuthenticator: feePayerAuthenticator,
secondarySignerAddressess:
secondarySignerAccounts?.map((e) => e.toAddress()).toList(),
secondarySignerAuthenticated: secondarySignerAuthenticator);
return AptosSignedTransaction(
rawTransaction: transaction, authenticator: txAuthenticated);
}