buildDepositTransaction
Builds & prepares parameters for a deposit transaction to be initiated on an L1 and executed on the L2.
Usage
import { account, clientL2, clientL1 } from './config'
const request = await clientL2.buildDepositTransaction({
account,
mint: parseEther('1'),
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
const hash = await clientL1.depositTransaction(request)
import { account, clientL2, clientL1 } from './config'
const request = await clientL2.buildDepositTransaction({
account,
mint: parseEther('1'),
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
const hash = await clientL1.depositTransaction(request)
import { createClient, custom, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet, base } from 'viem/chains'
import { publicActionsL2, walletActionsL1 } from 'viem/op-stack'
export const clientL1 = createClient({
chain: mainnet,
transport: custom(window.ethereum)
}).extend(walletActionsL1())
export const clientL2 = createClient({
chain: base,
transport: http()
}).extend(publicActionsL2())
// JSON-RPC Account
export const [account] = await clientL1.getAddresses()
// Local Account
export const account = privateKeyToAccount(...)
import { createClient, custom, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet, base } from 'viem/chains'
import { publicActionsL2, walletActionsL1 } from 'viem/op-stack'
export const clientL1 = createClient({
chain: mainnet,
transport: custom(window.ethereum)
}).extend(walletActionsL1())
export const clientL2 = createClient({
chain: base,
transport: http()
}).extend(publicActionsL2())
// JSON-RPC Account
export const [account] = await clientL1.getAddresses()
// Local Account
export const account = privateKeyToAccount(...)
Account Hoisting
If you do not wish to pass an account
to every buildDepositTransaction
, you can also hoist the Account on the Wallet Client (see config.ts
).
import { clientL2, clientL1 } from './config'
const request = await clientL2.buildDepositTransaction({
mint: parseEther('1')
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
const hash = await clientL1.depositTransaction(request)
import { clientL2, clientL1 } from './config'
const request = await clientL2.buildDepositTransaction({
mint: parseEther('1')
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
const hash = await clientL1.depositTransaction(request)
import { createClient, custom, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet, base } from 'viem/chains'
import { publicActionsL2, walletActionsL1 } from 'viem/op-stack'
// Retrieve Account from an EIP-1193 Provider.
const [account] = await window.ethereum.request({
method: 'eth_requestAccounts'
})
export const clientL1 = createClient({
account,
transport: custom(window.ethereum)
}).extend(walletActionsL1())
export const clientL2 = createClient({
chain: base,
transport: http()
}).extend(publicActionsL2())
import { createClient, custom, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet, base } from 'viem/chains'
import { publicActionsL2, walletActionsL1 } from 'viem/op-stack'
// Retrieve Account from an EIP-1193 Provider.
const [account] = await window.ethereum.request({
method: 'eth_requestAccounts'
})
export const clientL1 = createClient({
account,
transport: custom(window.ethereum)
}).extend(walletActionsL1())
export const clientL2 = createClient({
chain: base,
transport: http()
}).extend(publicActionsL2())
import { createClient, custom, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet, base } from 'viem/chains'
import { publicActionsL2, walletActionsL1 } from 'viem/op-stack'
export const clientL1 = createClient({
account: privateKeyToAccount('0x...'),
transport: custom(window.ethereum)
}).extend(walletActionsL1())
export const clientL2 = createClient({
chain: base,
transport: http()
}).extend(publicActionsL2())
import { createClient, custom, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet, base } from 'viem/chains'
import { publicActionsL2, walletActionsL1 } from 'viem/op-stack'
export const clientL1 = createClient({
account: privateKeyToAccount('0x...'),
transport: custom(window.ethereum)
}).extend(walletActionsL1())
export const clientL2 = createClient({
chain: base,
transport: http()
}).extend(publicActionsL2())
Returns
DepositTransactionParameters
The parameters required to execute a deposit transaction.
Parameters
account (optional)
- Type:
Account | Address
The Account to send the transaction from.
Accepts a JSON-RPC Account or Local Account (Private Key, etc).
const request = await client.buildDepositTransaction({
account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})
const request = await client.buildDepositTransaction({
account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})
data (optional)
- Type:
Hex
Contract deployment bytecode or encoded contract method & arguments.
const request = await client.buildDepositTransaction({
data: '0x...',
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
const request = await client.buildDepositTransaction({
data: '0x...',
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
gas (optional)
- Type:
bigint
Gas limit for transaction execution on the L2.
const request = await client.buildDepositTransaction({
gas: 21_000n,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})
const request = await client.buildDepositTransaction({
gas: 21_000n,
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})
isCreation (optional)
- Type:
boolean
Whether or not this is a contract deployment transaction.
const request = await client.buildDepositTransaction({
data: '0x...',
isCreation: true
})
const request = await client.buildDepositTransaction({
data: '0x...',
isCreation: true
})
mint (optional)
- Type:
bigint
Value in wei to mint (deposit) on the L2. Debited from the caller's L1 balance.
const request = await client.buildDepositTransaction({
mint: parseEther('1')
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
const request = await client.buildDepositTransaction({
mint: parseEther('1')
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
to (optional)
- Type:
Address
L2 Transaction recipient.
const request = await client.buildDepositTransaction({
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})
const request = await client.buildDepositTransaction({
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})
value (optional)
- Type:
bigint
Value in wei sent with this transaction on the L2. Debited from the caller's L2 balance.
const request = await client.buildDepositTransaction({
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})
const request = await client.buildDepositTransaction({
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: parseEther('1')
})