Getting Started
Viem provides first-class support for the ZKsync chain.
Full viem/zksync
documentation is available at viem.sh/zksync.
Installation
First, install the viem
package:
npm i viem
Client Setup
1. Set up your Client & Transport
Firstly, set up your Client with a desired Transport and extend it with ZKsync EIP712 actions
import { createWalletClient, custom } from 'viem'
import { zksync } from 'viem/chains'
import { eip712WalletActions } from 'viem/zksync'
const walletClient = createWalletClient({
chain: zksync,
transport: custom(window.ethereum!),
}).extend(eip712WalletActions())
2. Use Actions
Now that you have a Client set up, you can send a transaction on ZKsync using a paymaster!
const hash = await walletClient.sendTransaction({
account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: 1000000000000000000n,
paymaster: '0xFD9aE5ebB0F6656f4b77a0E99dCbc5138d54b0BA',
paymasterInput: '0x123abc...'
})
...and even write to contracts:
const hash = await walletClient.writeContract({
address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
abi: parseAbi(['function mint(uint32 tokenId) nonpayable']),
functionName: 'mint',
args: [69420],
})
Next Steps
- Find full
viem/zksync
documentation with examples at viem.sh/zksync - Check out the ZKsync SSO built on top of
viem
to improve UX for users of your app with just few lines of code.