Biconomy Smart Accounts
This guide will walk you through how to use Biconomy’s smart accounts with Dynamic. You can find more info on how Biconomy works here: https://docs.biconomy.io/account
Install Dynamic and Biconomy
In your app’s repository, install @dynamic-labs/sdk-react-core
, @dynamic-labs/ethereum
and @biconomy/{account, bundler, common, core-types, paymaster}
:
@dynamic-labs/ethereum will help you to enable all EVM compatible chains including layer 2’s i.e. Base as well as Dynamic-powered embedded wallets. Learn more about WalletConnectors here.
Initialize & configure Dynamic
Add the DynamicContextProvider
All you need to get started is the DynamicContextProvider - you will want to wrap your app with this component at the highest possible level, like so:
We are using Ethers here instead of the default Viem, as Biconomy requires an Ethers signer object. Learn more about switching between Viem and Ethers here.
To enable embedded wallets for your users, toggle it on along with email/social auth in the dashboard.
Access the wallet
Inside any component which is wrapped by DynamicContextProvider, you can access any of the provided hooks. While you can access the full context via usedynamiccontext, we are most interested in the users currently connected wallets which we can easily access via useUserWallets.
A user can have branded wallets connected as well as Dynamic-powered embedded wallets, so here we will filter for a users embedded wallet, assuming they had one created when they signed up.
Configure your Biconomy bundler and paymaster
Go to the Biconomy Dashboard and configure a Paymaster and a Bundler for your app. Make sure these correspond to the desired network for your user’s smart accounts. You can learn more about the dashboard here
Configure Biconomy to create the smart accounts
Once a user signs up through Dynamic, you can create a Biconomy smart account and use their Dynamic wallet as a signer for that new smart account. This means that the user will be able to use Biconomy’s account abstraction features out of the box! Just before you do that though, you need to follow two more steps:
Initialize a bundler and paymaster
You will need to initialize instances of a Biconomy bundler and paymaster for the user, like so:
Initialize a ECDSAOwnershipValidationModule
Now you’re ready to allow the user to authorize actions from their Biconomy smart account by signing messages with their Dynamic wallet. This is done by initializing a ECDSAOwnershipValidationModule for the user’s smart account and passing in a signer from the user’s wallet.
Create the smart account
Lastly, using the user’s paymaster, bundler, and validation module instances from above, initialize the user’s smart account using Biconomy’s BiconomySmartAccountV2.create method:
End to end flow
You can find a complete example of the integration here: https://github.com/dynamic-labs/dynamic-biconomy-example
Was this page helpful?