Documentation Index
Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
Use this file to discover all available pages before exploring further.
Check if a wallet is an Ethereum wallet
import { isEthereumWallet } from '@dynamic-labs/ethereum';
if (!isEthereumWallet(wallet)) {
throw new Error('This wallet is not a Ethereum wallet');
}
Read only actions/Viem Public Client
If you want to read data from the blockchain, you will want a “Public Client” (Viem terminology)
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
const { primaryWallet } = useDynamicContext();
const getEnsName = async () => {
const publicClient = await primaryWallet?.getPublicClient()
// Now you can use the public client to read data from the blockchain
const ens = await publicClient?.getEnsName({ address: primaryWallet.address })
return ens
}
Write actions/Viem Wallet Client
If you want to write data to the blockchain, you will need a “Wallet Client” (Viem terminology), or a “Signer” (Ethers terminology). Both allow you to sign transactions with the private key.
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
import { isEthereumWallet } from '@dynamic-labs/ethereum';
const { primaryWallet } = useDynamicContext();
const sendTransaction = async () => {
if(!primaryWallet || !isEthereumWallet(primaryWallet)) {
return;
}
const walletClient = await primaryWallet.getWalletClient();
// Now you can use the wallet client to write data to the blockchain
const tx = await walletClient?.sendTransaction({
to: '0x1234567890abcdef',
value: '1000000000000000000'
});
return tx
}
Send multiple transactions atomically
If you want to send multiple transactions atomically, you can use the sendCalls method. This requires the wallet to support EIP-5792.
import { parseEther } from 'viem';
import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
import { isEthereumWallet } from '@dynamic-labs/ethereum';
const { primaryWallet } = useDynamicContext();
const sendTransactions = async () => {
if(!primaryWallet || !isEthereumWallet(primaryWallet) || !primaryWallet.isAtomicSupported()) {
return;
}
// Now you can use the wallet client to write data to the blockchain
const { id } = await primaryWallet.sendCalls({
calls: [
{
to: '0x1111111111111111111111111111111111111111',
value: parseEther('0.001'),
},
{
to: '0x2222222222222222222222222222222222222222',
value: parseEther('0.001'),
},
],
version: '2.0.0',
});
return id
}
Examples
We’ve included a few examples of how to use the EVM wallet connector in this section: