Skip to main content

Create Wallets with RPC Provider

Sometimes you have a RPC provider such as Web3Auth, Magic, or MetaMask that can sign transactions over a connection, and you want to use them as the owner of your AA wallet.

An Example with Magic

Say you want to use Magic to handle social logins, but you want to use ZeroDev to create AA wallets for your users.

Magic exposes an rpcProvider. To create a ZeroDev wallet using Magic, simply pass the rpc provider to the SDK:

import { getZeroDevSigner, getRPCProviderOwner } from '@zerodevapp/sdk'
import { Magic } from 'magic-sdk';

const magic = new Magic('MAGIC_API_KEY', {
// some magic options...
})

const signer = await getZeroDevSigner({
projectId: "<project id>",
owner: getRPCProviderOwner(magic.rpcProvider),
})

API

Ethers

import { getZeroDevSigner, getRPCProviderOwner } from '@zerodevapp/sdk'

const signer = await getZeroDevSigner({
projectId: "<project id>",
owner: getRPCProviderOwner(rpcProvider),
})

Example using MetaMask as an owner (only works if you have MetaMask installed):

Code Editor
Result
Loading...

Wagmi

import { ZeroDevConnector } from '@zerodevapp/wagmi'
import { getPrivateKeyOwner } from '@zerodevapp/sdk'
const connector = new ZeroDevConnector({chains, options: {
projectId: <your-project-id>,
owner: getRPCProviderOwner(<provider>),
}})

Example:

Code Editor
Result
Loading...

You can also "wrap" an existing Wagmi connect with enhanceConnectorWithAA, which will create an AA wallet and use the connector as a signer/owner for the AA wallet.

import { enhanceConnectorWithAA } from '@zerodevapp/wagmi'
import { MetaMaskConnector } from 'wagmi/connectors/metaMask'

const client = createClient({
connectors: [
enhanceConnectorWithAA(
new MetaMaskConnector({ chains }),
{ projectId: "<your-project-id>" }
),
],
})
Code Editor
Result
Loading...