Chain Info
ClawWallet is deployed on Abstract Mainnet, a zkSync ERA-based L2 chain.
Network Details
| Property | Value |
|---|---|
| Network Name | Abstract Mainnet |
| Chain ID | 2741 |
| Currency | ETH |
| VM | zkSync ERA (zkEVM) |
| Consensus | zkRollup on Ethereum L1 |
| Block Time | ~1-2 seconds |
| Finality | Soft finality on L2, hard finality after L1 proof |
RPC Endpoints
| Provider | URL |
|---|---|
| Official RPC | https://api.mainnet.abs.xyz |
Block Explorer
| Explorer | URL |
|---|---|
| AbsScan | https://abscan.org |
Bridge
| Bridge | URL |
|---|---|
| Abstract Portal | https://portal.abs.xyz/bridge |
Adding Abstract to MetaMask
Manual Setup
- Open MetaMask → Settings → Networks → Add Network
- Fill in:
| Field | Value |
|---|---|
| Network Name | Abstract Mainnet |
| RPC URL | https://api.mainnet.abs.xyz |
| Chain ID | 2741 |
| Currency Symbol | ETH |
| Block Explorer | https://abscan.org |
Programmatic (ethers.js v6)
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider('https://api.mainnet.abs.xyz');
// Verify connection
const network = await provider.getNetwork();
console.log('Chain ID:', network.chainId); // 2741n
console.log('Name:', network.name);
const blockNumber = await provider.getBlockNumber();
console.log('Latest block:', blockNumber);
Programmatic (viem)
import { createPublicClient, http, defineChain } from 'viem';
export const abstractMainnet = defineChain({
id: 2741,
name: 'Abstract Mainnet',
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
rpcUrls: {
default: { http: ['https://api.mainnet.abs.xyz'] },
},
blockExplorers: {
default: { name: 'AbsScan', url: 'https://abscan.org' },
},
});
const client = createPublicClient({
chain: abstractMainnet,
transport: http(),
});
const blockNumber = await client.getBlockNumber();
console.log('Latest block:', blockNumber);
Wagmi / RainbowKit
import { defineChain } from 'viem';
export const abstractMainnet = defineChain({
id: 2741,
name: 'Abstract Mainnet',
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
rpcUrls: {
default: { http: ['https://api.mainnet.abs.xyz'] },
},
blockExplorers: {
default: { name: 'AbsScan', url: 'https://abscan.org' },
},
});
// Use in wagmi config
import { createConfig, http } from 'wagmi';
const config = createConfig({
chains: [abstractMainnet],
transports: {
[abstractMainnet.id]: http(),
},
});
zkSync ERA Compatibility
Abstract Chain is built on zkSync ERA, which has some differences from standard EVM chains:
Key Differences
| Feature | EVM | zkSync ERA (Abstract) |
|---|---|---|
| Account Model | EOA + Smart Contracts | All accounts are smart contracts |
| Paymasters | ERC-4337 bundlers | Native protocol support |
| Contract Deployment | CREATE / CREATE2 | ContractDeployer system contract |
| Bytecode | EVM bytecode | zkEVM bytecode (compiled via zksolc) |
| Gas | gasleft() works normally | Different gas model |
| Precompiles | Standard EVM | Different set of precompiles |
What This Means for ClawWallet
- ClawWalletFactory uses
DEPLOYER_SYSTEM_CONTRACT.create2Account()instead ofCREATE2 - Wallet bytecode must be compiled with
zksolc(not standardsolc) - The factory stores a
walletBytecodeHash(from zksolc artifact) for deployment - All wallets are natively AA-compatible (AccountAbstractionVersion.Version1)
- Paymasters work at the protocol level — no bundler infrastructure needed
Compiling for zkSync ERA
# hardhat.config.ts must include:
zksolc: {
version: "1.5.x",
settings: {
enableEraVMExtensions: true, // Required for system contract calls
},
}
Gas & Fees
Abstract Chain uses zkSync ERA's gas model:
- Gas token: ETH
- Gas pricing: L2 gas + L1 data posting costs
- Paymaster support: Native (ClawPaymaster leverages this)
- Typical costs: Significantly cheaper than Ethereum L1
Estimating Gas
// Standard ethers.js estimation works
const gasEstimate = await provider.estimateGas({
from: walletAddress,
to: targetAddress,
data: calldata,
value: 0n,
});
console.log('Estimated gas:', gasEstimate.toString());
Useful Links
| Resource | URL |
|---|---|
| Abstract Chain Website | https://abs.xyz |
| Abstract Portal | https://portal.abs.xyz |
| AbsScan Explorer | https://abscan.org |
| Abstract Bridge | https://portal.abs.xyz/bridge |
| zkSync ERA Docs | https://docs.zksync.io |
| ClawWallet GitHub | https://github.com/0xChitlin/clawwallet |