Viem Extension for OP Stack Chains
With the upstreaming of most op-viem features into Viem consider this library deprecated. We recommend using Viem's native OP Stack support instead.
- Simplifies cross L1 & L2 interactions
- Seamless extension to Viem
- TypeScript ready
- Test suite running against forked Ethereum network
// import modules import { createWalletClient, createPublicClient, custom, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet, base } from 'viem/chains' import { baseAddresses } from 'op-viem/chains' import { walletL1OpStackActions, publicL1OpStackActions, publicL2OpStackActions } from 'op-viem' // create clients export const opStackL1WalletClient = createWalletClient({ chain: mainnet, transport: custom(window.ethereum) }).extend(walletL1OpStackActions) export const opStackL1PublicClient = createPublicClient({ chain: mainnet, transport: http() }).extend(publicL1OpStackActions) export const opStackL2PublicClient = createPublicClient({ chain: base, transport: http() }).extend(publicL2OpStackActions) // perform an action opStackL1PublicClient.getOutputForL2Block(blockNumber: 2725977n, ...baseAddresses)
Check out the following places for more viem-related content:
- Follow @wilsoncusack Twitter for project updates
If you're interested in contributing, please read the contributing docs before submitting a pull request.
- @wilsoncusack (wilsoncusack.eth Twitter)
- @zencephalon (zencephalon.eth, Twitter)
- @roninjin10 (fucory.eth, Twitter)
MIT License