Leveraging Particle’s AA SDK within applications built using Flutter.
particle-flutter
repository on GitHub, with each including demos/examples. It may be worthwhile taking a look at the AA Flutter SDK’s architecture and implementation flow before continuing to build some context.
particle_aa
to your Flutter project through the following command:
Before initializing the SDK, there are a few points to keep in mind, specifically regarding the utilization of Paymasters (to sponsor gas fees, pay for gas in ERC-20 tokens, etc.)
- All Testnets automatically have the Verifying Particle Network Omnichain Verifying Paymaster enabled. Transactions requesting it will automatically be sponsored and thus gasless.
- On the occasion that you’d like to use the Particle Network Omnichain Verifying Paymaster for Mainnets, you’ll need to deposit USDT on either Ethereum or BNB Chain within the Particle dashboard. This USDT will then automatically be converted as needed into the native token of the network you’re requesting (and qualifying for) sponsorship on.
- The Particle Network AA SDK automatically uses Biconomy’s Token Paymaster; transactions that request it will be able to leverage it without additional configuration.
ParticleAA.init
, which takes the following parameters:
name
, the smart account implementation to be used (any of these choices):
AccountName.BICONOMY_V1
, a Biconomy smart account.AccountName.BICONOMY_V2
, a Biconomy smart account.AccountName.CYBERCONNECT
, a CyberConnect smart account.AccountName.SIMPLE_V1
, a SimpleAccount implementation.AccountName.SIMPLE_V2
, a SimpleAccount implementation.AccountName.LIGHT
, a Light Account implementation.init
has been called, you can close off initialization by enabling AA mode with ParticleAA.enableAAMode
.
Evm.getAddress
, then pass that into ParticleAA.isDeploy
, which returns a Boolean indicating deployment status.
E.g.:
ParticleAA.disableAAMode
. This will immediately render the usage of AA incompatible. Additionally, if you’re unsure whether or not AA mode is enabled, you can call ParticleAA.isAAModeEnable
, which will return a Boolean representing this status. E.g.:
ParticleConnect
or Evm
in particle_auth_core
and just passing in an additional parameter, feeMode
. There are two ways to send transactions with the AA SDK: The first is with signAndSendTransaction
of sendTransaction
, which will send a singular transaction to the network. Alternatively, you can use batchSendTransactions
to send batched transactions within a single UserOperation.
ParticleConnect.signAndSendTransaction
or Evm.sendTransaction
in particle_auth_core
takes the following parameters:
walletType
, dictates the specific adapter being used/targeted.account
, the public address of the smart account sending the transaction, which can be retrieved through EvmService.getSmartAccount
.transaction
, a stringified standard transaction object.feeMode
, the mechanism to be used for paying gas fees, can be:
AAFeeMode.gasless
, for sponsored transactions. This will happen automatically for Testnets and will pull from your previously defined (or configured) Paymaster for Mainnets. Takes one parameter:
wholeFeeQuote
, which can be retrieved through ParticleAA.rpcGetFeeQuotes
.AAFeeMode.native
, paying for gas fees in a native token (such as ETH). Takes one parameter:
wholeFeeQuote
, which can be retrieved through ParticleAA.rpcGetFeeQuotes
.AAFeeMode.token
, paying for gas fees in an ERC-20 token (such as USDC). Takes one parameter:
feeQuote
, to be used when leveraging a Token Paymaster. It can be retrieved through ParticleAA.rpcGetFeeQuotes
.tokenPaymasterAddress
, which can be retrieved through ParticleAA.rpcGetFeeQuotes
.ParticleConnect.batchSendTransactions
or ParticleAuthCore Evm.batchSendTransactions
, the parameters will be the same, with the exception of transaction
being an array of transactions.
signAndSendTransaction
), as shown here.