sendTransaction
Creates, signs, and sends a new transaction to the network.
Usage
import { account, walletClient } from './config'
const hash = await walletClient.sendTransaction({
account,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: 1000000000000000000n
})
// '0x...'
Account Hoisting
If you do not wish to pass an account
to every sendTransaction
, you can also hoist the Account on the Wallet Client (see config.ts
).
import { walletClient } from './config'
const hash = await walletClient.sendTransaction({
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: 1000000000000000000n
})
// '0x...'
Returns
The Transaction hash.
Parameters
account
- Type:
Account | Address
The Account to send the transaction from.
Accepts a JSON-RPC Account or Local Account (Private Key, etc).
const hash = await walletClient.sendTransaction({
account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: 1000000000000000000n
})
to
- Type:
0x${string}
The transaction recipient or contract address.
const hash = await walletClient.sendTransaction({
account,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: 1000000000000000000n,
nonce: 69
})
accessList (optional)
- Type:
AccessList
The access list.
const hash = await walletClient.sendTransaction({
accessList: [
{
address: '0x1',
storageKeys: ['0x1'],
},
],
account,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
authorizationList (optional)
- Type:
AuthorizationList
Signed EIP-7702 Authorization list.
const authorization = await walletClient.signAuthorization({
account,
contractAddress: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
})
const hash = await walletClient.sendTransaction({
account,
authorizationList: [authorization],
data: '0xdeadbeef',
to: account.address,
})
blobs (optional)
- Type:
Hex[]
Blobs for Blob Transactions.
import * as kzg from 'c-kzg'
import { toBlobs, stringToHex } from 'viem'
import { mainnetTrustedSetupPath } from 'viem/node'
const kzg = setupKzg(cKzg, mainnetTrustedSetupPath)
const hash = await walletClient.sendTransaction({
account,
blobs: toBlobs({ data: stringToHex('blobby blob!') }),
kzg,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8'
})
chain (optional)
- Type:
Chain
- Default:
walletClient.chain
The target chain. If there is a mismatch between the wallet's current chain & the target chain, an error will be thrown.
The chain is also used to infer its request type (e.g. the Celo chain has a gatewayFee
that you can pass through to sendTransaction
).
import { optimism } from 'viem/chains'
const hash = await walletClient.sendTransaction({
chain: optimism,
account,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: 1000000000000000000n
})
data (optional)
- Type:
0x${string}
A contract hashed method call with encoded args.
const hash = await walletClient.sendTransaction({
data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
account,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: 1000000000000000000n
})
gasPrice (optional)
- Type:
bigint
The price (in wei) to pay per gas. Only applies to Legacy Transactions.
const hash = await walletClient.sendTransaction({
account,
gasPrice: parseGwei('20'),
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})
kzg (optional)
- Type:
KZG
KZG implementation for Blob Transactions.
See setupKzg
for more information.
import * as kzg from 'c-kzg'
import { toBlobs, stringToHex } from 'viem'
import { mainnetTrustedSetupPath } from 'viem/node'
const kzg = setupKzg(cKzg, mainnetTrustedSetupPath)
const hash = await walletClient.sendTransaction({
account,
blobs: toBlobs({ data: stringToHex('blobby blob!') }),
kzg,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8'
})
maxFeePerGas (optional)
- Type:
bigint
Total fee per gas (in wei), inclusive of maxPriorityFeePerGas
. Only applies to EIP-1559 Transactions
const hash = await walletClient.sendTransaction({
account,
maxFeePerGas: parseGwei('20'),
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})
maxPriorityFeePerGas (optional)
- Type:
bigint
Max priority fee per gas (in wei). Only applies to EIP-1559 Transactions
const hash = await walletClient.sendTransaction({
account,
maxFeePerGas: parseGwei('20'),
maxPriorityFeePerGas: parseGwei('2'),
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})
nonce (optional)
- Type:
number
Unique number identifying this transaction.
const hash = await walletClient.sendTransaction({
account,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: 1000000000000000000n,
nonce: 69
})
value (optional)
- Type:
bigint
Value in wei sent with this transaction.
const hash = await walletClient.sendTransaction({
account,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1'),
nonce: 69
})
Tips
- For dapps: When using this action, it is assumed that the user has connected to their wallet (e.g. given permission for the dapp to access their accounts via
requestAddresses
). You can also check if the user has granted access to their accounts viagetAddresses
Live Example
Check out the usage of sendTransaction
in the live Sending Transactions Example below.
JSON-RPC Methods
- JSON-RPC Accounts:
- Local Accounts: