Documentation

Everything you need to build, deploy, and scale cross-VM applications on InterLayer.

CLI Reference

interlayer init

Initialize a new InterLayer project

$ interlayer init [project-name] --template [evm|svm|move]
Options:
  • --template: Choose VM template (evm, svm, polkavm, move)
  • --path: Custom directory path
  • --git: Initialize git repository

interlayer compile

Compile smart contracts

$ interlayer compile [--vm evm|svm|polkavm]

interlayer deploy

Deploy contracts to network

$ interlayer deploy --network [testnet|mainnet] --vm [evm|svm]
Options:
  • --network: Target network (testnet, mainnet, local)
  • --vm: Specify VM for deployment
  • --account: Deployer account
  • --gas-limit: Custom gas limit

interlayer node

Run local development node

$ interlayer node start [--dev]

SDK Documentation

TypeScript SDK

import
{ InterLayerClient } from '@interlayer/sdk';
const
client = new InterLayerClient({
rpcUrl: 'https://rpc.interlayer.one',
chain: 'testnet'
});
// Deploy EVM contract
const
tx = await client.deploy({
vm: 'evm',
bytecode,
abi
});

Rust SDK

use
interlayer_sdk::{Client, VmType};
let
client = Client::new("https://rpc.interlayer.one")?;
let
result = client.cross_vm_call(
VmType::EVM,
contract_address,
method_data
).await?;

JSON-RPC API

InterLayer exposes standard Substrate JSON-RPC endpoints plus custom MEL methods:

chain_getBlock

Get block details by hash or number

POST {"method": "chain_getBlock", "params": ["0x..."]}

mel_submitCrossVmTx

Submit atomic cross-VM transaction

POST {"method": "mel_submitCrossVmTx", "params": [{"vm": "evm", "calls": [...]}]}

state_getStorage

Query chain state directly

POST {"method": "state_getStorage", "params": ["key"]}