⚠ Beta — this documentation describes features under active revision and may change.

Documentation

L2aaS gives you your own private EVM chain — a self-contained dev appchain reachable over a single RPC URL. It is not a shared testnet and it is not a layer built on top of another network: it is a standalone blockchain that is yours alone, ideal for developers and students who want a real EVM environment to build, deploy, and experiment on.

Quick start

Your chain is a standard EVM blockchain. Any tool that works with Ethereum works with your chain — MetaMask, Remix, Hardhat, Foundry, ethers.js, viem, web3.js.

First step: Get your free key on the homepage. Your key identifies your account — no email, no password. Save it immediately.

Your wallet (non-custodial)

When your chain is created we generate a wallet for it and show you the public address, the private key, and the BIP39 mnemonic exactly once, at creation time.

Save your key and mnemonic now — we cannot recover them. We store nothing and we never show them again. There is no password reset and no support path to retrieve them. Copy them into a password manager or write them down before you leave the page. Losing them means losing control of that wallet permanently.

Because we keep no copy, your funds and signing authority are yours alone. L2aaS operates the chain infrastructure; you hold the keys.

Your RPC endpoint

Every tier — including Free — gets an RPC endpoint. It looks like this:

https://rpc.l2aas.net/l2k_YOUR_KEY

Your Chain ID and exact endpoint are shown on your account page.

Example: ethers.js v6

import { JsonRpcProvider } from 'ethers';

const provider = new JsonRpcProvider(
  'https://rpc.l2aas.net/l2k_YOUR_KEY'
);
const block = await provider.getBlockNumber();
console.log('Current block:', block);

Example: viem

import { createPublicClient, http, defineChain } from 'viem';

const myChain = defineChain({
  id: YOUR_CHAIN_ID,  // from your account page
  name: 'My Chain',
  nativeCurrency: { name: 'OPGas', symbol: 'OPG', decimals: 18 },
  rpcUrls: { default: { http: ['https://rpc.l2aas.net/l2k_YOUR_KEY'] } },
});

const client = createPublicClient({
  chain: myChain,
  transport: http(),
});

Example: curl

curl -X POST https://rpc.l2aas.net/l2k_YOUR_KEY \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

MetaMask setup

Add your chain to MetaMask in under 60 seconds:

  1. Open MetaMask → click the network dropdown (top-left)
  2. Click Add a custom network
  3. Fill in the fields below
  4. Click Save
FieldValue
Network nameMy Chain (or any name you prefer)
New RPC URLhttps://rpc.l2aas.net/l2k_YOUR_KEY
Chain IDYour Chain ID (shown on account page)
Currency symbolOPG
Block explorer URLLeave blank (optional)

After adding the network, switch to it. Your OPGas balance will appear as the native-currency balance in MetaMask.

Hardhat config

// hardhat.config.js
require('@nomicfoundation/hardhat-toolbox');

module.exports = {
  solidity: '0.8.24',
  networks: {
    mychain: {
      url: 'https://rpc.l2aas.net/l2k_YOUR_KEY',
      chainId: YOUR_CHAIN_ID,
      accounts: [process.env.PRIVATE_KEY],
    },
  },
};
# Deploy to your chain
npx hardhat run scripts/deploy.js --network mychain

Foundry config

# foundry.toml
[profile.default]
src = "src"
out = "out"
libs = ["lib"]

[rpc_endpoints]
mychain = "https://rpc.l2aas.net/l2k_YOUR_KEY"
# Deploy
forge script script/Deploy.s.sol \
  --rpc-url mychain \
  --private-key $PRIVATE_KEY \
  --broadcast

Remix

Remix works two ways with your chain:

Via MetaMask (recommended)

  1. Add your chain to MetaMask (see above)
  2. In Remix, select Injected Provider — MetaMask as the environment
  3. Make sure MetaMask is on your chain's network
  4. Deploy and interact normally

Via direct RPC

  1. In Remix, select Custom — External Http Provider
  2. Enter https://rpc.l2aas.net/l2k_YOUR_KEY
  3. Click OK

OPGas — one prepaid balance

OPGas is a single prepaid balance that runs everything about your chain. You buy it with USDC (or USDT) on Base, and it funds both:

There is no separate hosting invoice and no separate gas top-up — it is one balance for both. Nothing to move between networks: you pay once, into one balance.

OPGas is a self-contained token. It exists only inside the L2aaS system to meter your chain. It is not backed by, redeemable for, or secured by ETH, USDC, Base, or Ethereum — buying OPGas is prepaying for service, not acquiring a crypto asset. Your private chain is likewise self-contained: it does not inherit the security or finality of any other network.

How to buy OPGas

  1. Go to your account page
  2. Choose an amount to prepay (larger amounts get volume discounts)
  3. Pay with USDC or USDT on Base
  4. Your OPGas balance is credited — rental and gas both draw from it automatically

OPGas volume discounts

Prepay amountDiscount
$20Base rate
$50~10% off
$200~25% off
$1,000~40% off

Service tiers

TierPriceChainResilienceSize cap
Free$0Shared demo chainNone~250 MB
Basic$20/moYour own private chainNo SLA~5–10 GB
Pro$200/moYour own private chain, kept warm + replicated with frequent backups97% SLA~25–50 GB
Enterprise$1,500/moDedicated real Ethereum daemon on its own box99.9% SLA~unlimited

Basic and Pro run the same engine, so upgrading from Basic to Pro is seamless — we simply add the warm replica and tighter backups. Rental for a paid tier is drawn from your OPGas balance.

Size caps & read-only mode

Each tier has a size cap on how large its chain can grow (see the table above). A blockchain only ever grows, so the cap is there to keep your chain fast and to keep pricing honest.

Chain lifecycle

Your chain's state depends on your OPGas balance and your tier:

StateConditionWhat happens
ActiveOPGas balance covers the rentalEverything running normally. Paid tiers are kept warm; Free unloads after ~1h idle and reloads on demand.
Read-onlyChain at 100% of its size capWrites rejected, reads still work. Upgrade, prune, or reset to resume writing.
SuspendedOPGas balance depletedChain stops processing. Data is retained for a grace period — top up OPGas to reactivate.
ScrappedFree: after 3 months. Paid: after 3 months unpaid.The chain and its data are permanently removed and cannot be recovered.

To reactivate a suspended chain, go to your account page and top up OPGas. It restarts automatically.

Billing

Billing is simple: one prepaid OPGas balance, bought with USDC or USDT on Base (chain ID 8453). That balance covers both your monthly rental and your on-chain gas — there is no second billing system and no separate gas purchase.

  1. On your account page, choose an amount to prepay
  2. Pay with USDC or USDT on Base
  3. Your OPGas balance is credited; rental is drawn from it each month and gas is drawn from it per transaction
  4. To stop, simply stop topping up — when the balance is depleted the chain suspends, then is scrapped after the retention window

Every purchase is an on-chain transaction on Base, which is your receipt. Prepaid OPGas is non-refundable.

Common errors

ErrorMeaning
401 UnauthorizedInvalid or unknown key
402 Payment RequiredOPGas balance depleted — top up from your account page
403 ForbiddenMethod not allowed for customer traffic (only eth_*, net_*, and web3_* methods are exposed)
429 Too Many RequestsFree tier rate limit exceeded
503 Service UnavailableChain is suspended or being provisioned
write rejected: size cap reachedChain is at its size cap and in read-only mode — upgrade, prune, or reset
execution revertedContract error — check your Solidity logic
insufficient fundsWallet OPGas balance too low for this transaction's gas

Frequently asked questions

Is this a real blockchain?

Yes. Your chain processes real transactions, runs real EVM contracts, and maintains a real chain of blocks. It is a private, self-contained chain isolated from other customers. What you deploy there is yours.

Can I use ERC-20 tokens on my chain?

Yes. Deploy any ERC-20 contract and it works exactly as on any EVM chain. OPGas is only the native gas token — you can still deploy arbitrary tokens on top.

Does my chain connect to Ethereum or Base?

No. Your chain is standalone — it does not connect to, or inherit the security of, any other network. The only link to Base is that you pay for OPGas there; the chain itself runs entirely on its own.

Is my key the same as my private key?

No. Your L2aaS key (starts with l2k_) is an access key for the L2aaS service — similar to an API key. Your wallet private key is separate, held only by you, used for signing on-chain transactions.

What happens if I lose my key or my wallet mnemonic?

Neither can be recovered. We show the wallet key and mnemonic once, at creation, and store nothing. There is no email reset and no support path to retrieve them. Save both in a password manager immediately.

Can I run my own validator?

Not in the current version. The chain infrastructure is managed by L2aaS. You control your contracts, your wallet, and your OPGas balance. More control may arrive with the Enterprise tier.