Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/lanelayer/core-lane/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Core Lane nodes support multiple deployment modes with extensive configuration options. This reference covers all configuration parameters extracted from the source code.

Command-Line Arguments

Global Options

Available across all commands:
ParameterTypeDefaultDescription
--plainflagfalsePlain output mode (no emojis, machine-readable)
--data-dirstring.Data directory for wallet databases and state

Node Operation Modes

Standard Node (start)

Runs a full Core Lane node that anchors to Bitcoin.
core-lane-node start \
  --bitcoin-rpc-read-url http://127.0.0.1:18443 \
  --bitcoin-rpc-read-user user \
  --bitcoin-rpc-read-password <password> \
  --mnemonic-file /path/to/mnemonic.txt \
  --http-host 0.0.0.0 \
  --http-port 8545

Bitcoin RPC Configuration

Read Operations (required):
  • --bitcoin-rpc-read-url: Bitcoin RPC URL for reading blockchain data (default: http://127.0.0.1:18443)
  • --bitcoin-rpc-read-user: Bitcoin RPC username (default: user)
  • --bitcoin-rpc-read-password: Bitcoin RPC password (required)
Write Operations (optional):
  • --bitcoin-rpc-write-url: Separate URL for wallet operations (defaults to read URL)
  • --bitcoin-rpc-write-user: Username for write operations (defaults to read user)
  • --bitcoin-rpc-write-password: Password for write operations (defaults to read password)
Separating read and write RPC endpoints allows you to use a public Bitcoin node for reading while keeping wallet operations on a trusted local node.

Chain Synchronization

  • --start-block: Bitcoin block height to start processing from (optional)
    • If not specified, node resumes from last processed block
    • Only used on fresh start; ignored if state exists on disk
  • --electrum-url: Electrum server URL for mainnet/testnet/signet (optional)
    • Example: ssl://electrum.blockstream.info:50002
    • Not required for regtest networks

HTTP Server

  • --http-host: HTTP server bind address (default: 127.0.0.1)
    • Use 0.0.0.0 to accept connections from all interfaces
  • --http-port: HTTP server port (default: 8545)

Security & Authentication

Mnemonic Configuration (required): Three methods to provide the mnemonic, checked in priority order:
  1. File (recommended): --mnemonic-file /path/to/file
    • Most secure, not visible in process listings
  2. Environment variable: CORE_LANE_MNEMONIC="your words here"
    • Secure for containerized environments
  3. Command-line flag: --mnemonic "your words here"
    • Not recommended: visible in process list and shell history
Never use --mnemonic flag in production. Use --mnemonic-file or environment variable to prevent exposure of sensitive keys.

Sequencer Configuration

  • --sequencer-rpc-url: Sequencer RPC endpoint (optional)
    • When set, eth_sendRawTransaction forwards transactions to this endpoint
    • Used for submitting transactions to a centralized sequencer
  • --sequencer-address: Sequencer address for priority fees (hex format)
    • Default: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (first Anvil address)
    • Important: Change this in production environments

Polling Mode

  • --on-demand-polling: Enable on-demand polling mode (flag)
    • Disables continuous block scanning
    • Blocks are only processed when POST /do_poll is called
    • Useful for testing or manual control

Derived Node (derived-start)

Runs a derived node that reads bundles from another Core Lane node via DA.
core-lane-node derived-start \
  --core-rpc-url http://127.0.0.1:8545 \
  --chain-id 1281453634 \
  --derived-da-address 0x0000000000000000000000000000000000000046 \
  --http-host 0.0.0.0 \
  --http-port 8546

Configuration Parameters

  • --core-rpc-url: Upstream Core Lane JSON-RPC URL (required)
  • --chain-id: Chain ID for the derived chain (default: 1281453634)
  • --derived-da-address: Data availability contract address (required)
  • --start-block: Starting block number (default: 0)
  • --http-host: HTTP bind address (default: 127.0.0.1)
  • --http-port: HTTP port (default: 8545)
  • --sequencer-rpc-url: Forward endpoint for transactions (optional)
  • --sequencer-address: Sequencer fee recipient address (optional)
  • --on-demand-polling: Enable manual polling mode (flag)

Espresso Derived Node (derived-espresso-start)

Runs a derived node that reads bundles from Espresso.
core-lane-node derived-espresso-start \
  --espresso-base-url https://query.decaf.testnet.espresso.network/v1 \
  --espresso-namespace 1281453637 \
  --core-lane-rpc-url http://127.0.0.1:8545 \
  --chain-id 1281453634 \
  --http-host 0.0.0.0 \
  --http-port 8547

Configuration Parameters

  • --espresso-base-url: Espresso query service URL (default: https://query.decaf.testnet.espresso.network/v1)
  • --espresso-namespace: Namespace ID for Core Lane bundles (default: 1281453637)
    • Default is “LanE” as big-endian u32: 0x4C616E45
  • --core-lane-rpc-url: Upstream Core Lane RPC for reorg detection (required)
  • --chain-id: Chain ID (default: 1281453634)
  • --start-block: Starting Core Lane block (optional)
  • --start-anchor: Starting Espresso anchor height (optional)
  • --http-host: HTTP bind address (default: 127.0.0.1)
  • --http-port: HTTP port (default: 8545)
  • --sequencer-rpc-url: Transaction forwarding endpoint (optional)
  • --sequencer-address: Fee recipient address (optional)

Bitcoin Cache Server (bitcoin-cache)

Runs a caching proxy for Bitcoin RPC with block archiving.
core-lane-node bitcoin-cache \
  --host 0.0.0.0 \
  --port 8332 \
  --cache-dir ./bitcoin-cache \
  --bitcoin-rpc-url http://upstream-node:8332 \
  --bitcoin-rpc-user user \
  --bitcoin-rpc-password password

Configuration Parameters

  • --host: Bind address (default: 127.0.0.1)
  • --port: Bind port (default: 8332)
  • --cache-dir: Local cache directory (default: ./bitcoin-cache)
  • --bitcoin-rpc-url: Upstream Bitcoin RPC URL (required)
  • --bitcoin-rpc-user: Upstream RPC username (default: empty)
  • --bitcoin-rpc-password: Upstream RPC password (default: empty)
  • --no-rpc-auth: Disable RPC authentication (flag)
  • --block-archive: HTTP block archive URL (default: http://144.76.56.210/blocks)
  • --starting-block-count: Initial block height (optional)
  • --disable-archive-fetch: Disable fetching from archive (flag)

S3 Configuration

  • --s3-bucket: S3 bucket name for uploading cached blocks (optional)
  • --s3-region: AWS region (default: us-east-1)
  • --s3-endpoint: Custom S3 endpoint URL (optional)
S3 credentials (S3_ACCESS_KEY and S3_SECRET_KEY) are passed via environment variables, not command-line arguments, to prevent exposure in process listings.

Wallet Management Commands

Create Wallet

Creates a BDK wallet for a specific network:
core-lane-node create-wallet \
  --network mainnet \
  --electrum-url ssl://electrum.blockstream.info:50002
  • --network: Network type (bitcoin, testnet, testnet4, signet, regtest) (default: regtest)
  • --mnemonic: Optional mnemonic to restore wallet (12 or 24 words)
  • --mnemonic-only: Generate mnemonic without creating database file (flag)
  • --electrum-url: Electrum server for initial sync (mainnet/testnet/signet only)

Get Address

Retrieve the next receiving address from wallet:
core-lane-node get-address \
  --network regtest \
  --mnemonic-file /path/to/mnemonic.txt
  • --network: Network type (default: regtest)
  • --mnemonic or --mnemonic-file: Wallet credentials (required)

Get Bitcoin Balance

Check wallet balance:
core-lane-node get-bitcoin-balance \
  --network regtest \
  --mnemonic-file /path/to/mnemonic.txt \
  --rpc-url http://127.0.0.1:18443 \
  --rpc-user bitcoin \
  --rpc-password password
  • --network: Network type (default: regtest)
  • --mnemonic or --mnemonic-file: Wallet credentials
  • --electrum-url: Electrum server (mainnet/testnet/signet)
  • --rpc-url: Bitcoin RPC URL (regtest) (default: http://127.0.0.1:18443)
  • --rpc-user: Bitcoin RPC username (regtest)
  • --rpc-password: Bitcoin RPC password (regtest)

Transaction Commands

Burn BTC

Burn Bitcoin to mint tokens on Core Lane:
core-lane-node burn \
  --burn-amount 500000 \
  --chain-id 1281453634 \
  --eth-address 0x1234567890123456789012345678901234567890 \
  --network regtest \
  --mnemonic-file /path/to/mnemonic.txt \
  --rpc-password bitcoin123
  • --burn-amount: Amount in satoshis (required)
  • --chain-id: Target chain ID (required)
  • --eth-address: Ethereum address to receive minted tokens (required)
  • --network: Bitcoin network (default: regtest)
  • --mnemonic or --mnemonic-file: Wallet credentials
  • --rpc-url: Bitcoin RPC URL (regtest) (default: http://127.0.0.1:18443)
  • --rpc-user: Bitcoin RPC username (regtest) (default: bitcoin)
  • --rpc-password: Bitcoin RPC password (regtest)
  • --electrum-url: Electrum server (mainnet/testnet/signet)

Send Transaction

Broadcast a signed Bitcoin transaction:
core-lane-node send-transaction \
  --raw-tx-hex <hex> \
  --network regtest \
  --mnemonic-file /path/to/mnemonic.txt

Send Bundle

Broadcast a bundle of transactions:
core-lane-node send-bundle \
  --raw-tx-hex <hex1> \
  --raw-tx-hex <hex2> \
  --network regtest \
  --mnemonic-file /path/to/mnemonic.txt \
  --marker standard
  • --raw-tx-hex: Transaction hex (can be specified multiple times)
  • --sequencer-payment-recipient: Payment address (optional)
  • --marker: Bundle marker type: “head” or “standard” (default: standard)

Environment Variables

Runtime Configuration

  • CORE_LANE_MNEMONIC: Wallet mnemonic phrase
    • Used when no --mnemonic or --mnemonic-file provided
    • Recommended for Docker/container environments
  • RUST_LOG: Logging level configuration
    • Examples: info, debug, warn, error
    • Module-specific: RUST_LOG=core_lane=debug,info

Bitcoin Cache Server (entrypoint script)

  • BITCOIN_CACHE_HOST: Cache server hostname (default: 127.0.0.1)
  • BITCOIN_CACHE_PORT: Cache server port (default: 8332)
  • BITCOIN_CACHE_PROTOCOL: Protocol (http/https) (default: http)
  • BITCOIN_UPSTREAM_RPC_URL: Upstream Bitcoin RPC
  • BLOCK_ARCHIVE_URL: Block archive endpoint
  • STARTING_BLOCK_COUNT: Initial block count
  • DISABLE_ARCHIVE_FETCH: Disable archive fetching (true/false)

S3 Storage

  • S3_BUCKET: S3 bucket name
  • S3_REGION: AWS region (default: us-east-1)
  • S3_ENDPOINT: Custom S3 endpoint
  • S3_ACCESS_KEY: AWS access key ID
  • S3_SECRET_KEY: AWS secret access key

Core Lane RPC Server

  • DATA_DIR: Data directory path (default: /data)
  • CACHE_DIR: Cache directory path (default: /cache)
  • HTTP_HOST: HTTP bind address (default: 0.0.0.0)
  • HTTP_PORT: HTTP port (default: 8545)
  • ELECTRUM_URL: Electrum server URL
  • NETWORK: Bitcoin network (mainnet, testnet4, signet, regtest)

Derived Node Configuration

  • CHAIN_ID: Chain identifier
  • DERIVED_DA_ADDRESS: DA contract address
  • START_BLOCK: Starting block number
  • LANE_LAYER_SNAPSHOT_DIR: Snapshot directory for derived nodes
  • CORE_RPC_URL: Upstream Core Lane RPC (default: https://rpc.lanelayer.com)

Service Control

  • ONLY_START: Control which services to start
    • Values: bitcoin-cache, core-lane, derive-node
    • When unset, all configured services start

Data Directory Structure

Core Lane stores persistent state in the data directory:
<data-dir>/
├── blocks/              # Per-block state snapshots
│   ├── 0               # Genesis state
│   ├── 1               # Block 1 state
│   └── ...
├── metastate/          # Fee manager and sequencer config per block
│   ├── 0
│   ├── 1
│   └── ...
├── deltas/             # State changes per block
│   ├── 1
│   └── ...
├── chain_index/        # Block metadata for restoration
│   ├── 1
│   └── ...
├── tip                 # Current chain tip (atomic commit marker)
├── wallet_regtest.sqlite3      # BDK wallet (per network)
├── wallet_mainnet.sqlite3
└── wallet_testnet4.sqlite3
The tip file is the source of truth for node state. If corrupted or version-mismatched, all block data is wiped and the node restarts from genesis.

Network Configurations

Regtest (Development)

core-lane-node start \
  --bitcoin-rpc-read-url http://127.0.0.1:18443 \
  --bitcoin-rpc-read-user bitcoin \
  --bitcoin-rpc-read-password bitcoin123 \
  --mnemonic-file .dev-wallets/mnemonic_regtest.txt \
  --http-host 127.0.0.1 \
  --http-port 8546

Testnet4

core-lane-node start \
  --bitcoin-rpc-read-url http://bitcoin-cache:8332 \
  --bitcoin-rpc-read-user user \
  --bitcoin-rpc-read-password <password> \
  --electrum-url ssl://electrum.blockstream.info:40002 \
  --mnemonic-file /secure/mnemonic.txt \
  --http-host 0.0.0.0 \
  --http-port 48332

Mainnet

core-lane-node start \
  --bitcoin-rpc-read-url http://bitcoin-cache:8332 \
  --bitcoin-rpc-read-user user \
  --bitcoin-rpc-read-password <password> \
  --electrum-url ssl://electrum.blockstream.info:50002 \
  --mnemonic-file /secure/mnemonic.txt \
  --sequencer-address 0x<production-address> \
  --http-host 0.0.0.0 \
  --http-port 8545

Docker Configuration

Example Fly.io configuration for mainnet:
[env]
  BITCOIN_CACHE_HOST = 'bitcoin-cache.internal'
  BITCOIN_CACHE_PORT = '8545'
  DATA_DIR = '/data'
  ELECTRUM_URL = 'ssl://electrum.blockstream.info:50002'
  HTTP_PORT = '8545'
  NETWORK = 'mainnet'
  ONLY_START = 'core-lane'

[[mounts]]
  source = 'core_lane_storage'
  destination = '/data'

[http_service]
  internal_port = 8545
  [[http_service.checks]]
    interval = '15s'
    timeout = '10s'
    grace_period = '1m0s'
    method = 'get'
    path = '/health'

Configuration Best Practices

  1. Security:
    • Always use --mnemonic-file or environment variables for mnemonics
    • Never commit mnemonics to version control
    • Use separate read/write RPC endpoints when possible
    • Change default sequencer address in production
  2. Performance:
    • Use bitcoin-cache for production deployments
    • Mount persistent volumes for data-dir
    • Set appropriate --start-block to avoid full chain replay
  3. Reliability:
    • Configure health checks at /health
    • Monitor last_block_processing_time_ms metric
    • Enable adequate disk space for block data
    • Use Electrum servers for non-regtest networks
  4. Monitoring:
    • Set RUST_LOG=info for production
    • Use RUST_LOG=debug for troubleshooting
    • Monitor reorg metrics via /health endpoint

Build docs developers (and LLMs) love