Lux EVM
Unified Go EVM Execution Engine
Overview
Lux EVM (github.com/luxfi/evm) is the unified Go-based EVM execution engine for the Lux Network. It powers both the C-Chain (the primary EVM-compatible chain on the Lux primary network) and all Subnet/L1/L2 EVM chains. The former coreth codebase was merged into this repo -- github.com/luxfi/coreth is deprecated and no longer maintained separately.
The EVM runs as a plugin binary loaded by luxd (the Lux node). The binary is built from plugin/main.go and communicates with the node via the rpcchainvm gRPC interface. It is not a standalone process -- it requires luxd to operate.
Tech Stack
- Language: Go 1.26.1
- Module:
github.com/luxfi/evm - Ethereum Fork:
github.com/luxfi/gethv1.16.75 (NOTgo-ethereum) - Consensus: Dummy engine (block ordering delegated to Quasar via luxd)
- Database: BadgerDB (default), PebbleDB (legacy option)
- State Sync: Merkle trie state sync with parallel fetching
- Cross-Chain: LP-118 Warp messaging protocol
- Precompiles: Stateful precompile framework with allow-list access control
- Tracing: OpenTelemetry OTLP traces
- Metrics: Prometheus-compatible
- Build:
go buildormake(produces plugin binaryevm/evm.so)
When to Use
- Deploying or interacting with smart contracts on C-Chain or any Lux EVM subnet
- Building custom stateful precompiles for EVM chains
- Integrating with C-Chain via JSON-RPC or WebSocket
- Cross-chain messaging between EVM chains using Warp
- Running a custom Subnet-EVM with configurable fees, gas limits, and precompiles
- Migrating from
corethto the unified EVM module
Hard Requirements
- ALWAYS use
github.com/luxfi/evm-- NEVERgithub.com/luxfi/coreth(deprecated, merged here) - ALWAYS use
github.com/luxfi/geth-- NEVERgo-ethereumorethereum/go-ethereum - ALWAYS use
github.com/luxfi/precompile-- NEVERgithub.com/luxfi/precompiles(old, excluded in go.mod) - NEVER bump Go packages above v1.x.x
- The EVM is a plugin binary, not a standalone executable -- it must be loaded by
luxd - CGO must be enabled for production builds (BLS signatures, GPU acceleration)
Quick Reference Table
| Item | Value |
|---|---|
| Module | github.com/luxfi/evm |
| Go version | 1.26.1 |
| C-Chain RPC | http://<node>:9630/ext/bc/C/rpc |
| C-Chain WebSocket | ws://<node>:9630/ext/bc/C/ws |
| C-Chain ID (mainnet) | 96369 |
| C-Chain ID (testnet) | 96368 |
| C-Chain ID (devnet) | 96370 |
| Default Chain ID | 43112 (local/custom) |
| Block time target | 2 seconds |
| Gas limit | 8,000,000 |
| Min base fee | 25 gwei (mainnet), 1 wei (test) |
| Database default | BadgerDB |
| Plugin binary | evm / evm.so |
| Luxd compat | v1.12.0 through v1.13.3 (protocol versions 38-42) |
| RPC gas cap | 50,000,000 |
| RPC tx fee cap | 100 LUX |
Migration from Coreth
All coreth imports become evm imports. The API is identical.
// OLD (deprecated):
// NEW (correct):Two Operating Modes
C-Chain Mode (Primary Network)
The default mode when running as part of the Lux primary network:
- Atomic transactions for cross-chain transfers between X-Chain and C-Chain via shared memory
- Integrated validator set from P-Chain -- no separate staking
- Network-defined hard forks (EVM, Durango, Etna, Fortuna, Granite)
- Chain ID: 96369 (mainnet), 96368 (testnet), 96370 (devnet)
- Warp address: Legacy
0x0200000000000000000000000000000000000005(also accessible at0x16201)
Subnet EVM Mode (L1/L2 Subnets)
When deployed as a subnet/L1/L2 chain:
- Configurable fees via FeeManager precompile or genesis JSON
- Configurable gas limits and block gas costs
- Custom precompiles via the stateful precompile framework
- No atomic transactions -- uses Warp messaging for cross-chain
- Independent validator set per subnet
- Simplified hardfork configuration
One-File Quickstart
EVM JSON-RPC
# Get latest block number
curl -X POST http://localhost:9630/ext/bc/C/rpc \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
# Get account balance
curl -X POST http://localhost:9630/ext/bc/C/rpc \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_getBalance","params":["0x...","latest"]}'
# Send raw transaction
curl -X POST http://localhost:9630/ext/bc/C/rpc \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_sendRawTransaction","params":["0x..."]}'
# Get chain ID
curl -X POST http://localhost:9630/ext/bc/C/rpc \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
# Get fee config (Lux-specific)
curl -X POST http://localhost:9630/ext/bc/C/rpc \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_feeConfig","params":[]}'Go Client
client, err := ethclient.Dial("http://localhost:9630/ext/bc/C/rpc")
if err != nil {
return err
}
blockNum, _ := client.BlockNumber(ctx)
balance, _ := client.BalanceAt(ctx, addr, nil)
chainID, _ := client.ChainID(ctx)Custom Precompile
"github.com/luxfi/evm/precompile/contract"
"github.com/luxfi/evm/precompile/modules"
"github.com/luxfi/geth/common"
)
// Register a precompile module at a specific address
var Module = modules.Module{
Address: common.HexToAddress("0x0300000000000000000000000000000000000001"),
Contract: MyPrecompile,
Configurer: &MyConfigurator{},
}
// Use the precompile code generator for boilerplate:
// go run cmd/precompilegen/main.go --abi MyContract.abi --out precompile/contracts/mycontract/Core Concepts
Architecture
github.com/luxfi/evm
├── plugin/ -- Plugin entry point and VM implementation
│ ├── main.go -- Binary entry point (loaded by luxd)
│ ├── runner/ -- Plugin runner (gRPC server lifecycle)
│ └── evm/ -- Core VM implementation
│ ├── vm.go -- Main VM struct (Initialize, BuildBlock, Verify, Accept)
│ ├── block.go -- Block construction and verification
│ ├── block_builder.go -- Async block building engine
│ ├── config/ -- VM configuration (Config struct, defaults)
│ ├── service.go -- Validators API (gRPC service)
│ ├── admin.go -- Admin API (CPU profiler, logging)
│ ├── admin_api.go -- Admin API (import chain, db operations)
│ ├── gossip/ -- Transaction gossip handlers
│ ├── message/ -- P2P message types
│ ├── header/ -- Custom header verification
│ ├── customtypes/ -- Block extra data types
│ ├── customrawdb/ -- Raw database operations
│ ├── validators/ -- Validator management
│ └── upgrade/ -- EVM-specific upgrade handling
├── core/ -- Core blockchain logic (forked from geth)
│ ├── blockchain.go -- Blockchain state machine
│ ├── state_processor.go -- Transaction execution
│ ├── state_transition.go -- EVM state transitions
│ ├── genesis.go -- Genesis block initialization
│ ├── txpool/ -- Transaction pool management
│ ├── state/ -- State database (StateDB)
│ ├── vm/runtime/ -- EVM runtime
│ └── precompile_overrider.go -- Precompile injection into EVM
├── consensus/ -- Consensus engine interface
│ ├── consensus.go -- Engine interface (ChainHeaderReader, Engine)
│ └── dummy/ -- Dummy engine (delegates ordering to luxd)
├── eth/ -- Ethereum protocol implementation
│ ├── backend.go -- ETH backend (chain access, filters, gas price)
│ ├── api_backend.go -- API backend for eth_* namespace
│ ├── api_debug.go -- Debug API (tracing, stack dumps)
│ ├── api_admin.go -- Admin API (export chain)
│ ├── api_dev.go -- Dev API (mine blocks on demand)
│ ├── ethconfig/ -- ETH configuration
│ ├── filters/ -- Log/block/tx filters
│ ├── gasprice/ -- Gas price oracle
│ ├── gasestimator/ -- Gas estimation
│ └── tracers/ -- EVM execution tracers (JS, native)
├── precompile/ -- Stateful precompile framework
│ ├── contracts/ -- Built-in precompile implementations
│ │ ├── deployerallowlist/ -- Contract deployer allow list (0x10201)
│ │ ├── txallowlist/ -- Transaction sender allow list (0x10301)
│ │ ├── nativeminter/ -- Native token minting (0x10401)
│ │ ├── feemanager/ -- Dynamic fee configuration (0x13F01)
│ │ ├── rewardmanager/ -- Block reward distribution (0x10205)
│ │ └── warp/ -- Warp cross-chain messaging (0x16201)
│ ├── allowlist/ -- Role-based access control framework
│ ├── contract/ -- Precompile contract interface
│ ├── modules/ -- Module registration and LP-aligned addressing
│ ├── precompileconfig/ -- Config interfaces
│ ├── precompiletest/ -- Test utilities
│ └── registry/ -- Auto-registration via init()
├── params/ -- Chain configuration and parameters
│ ├── config.go -- ChainConfig (EVM forks, chain IDs)
│ └── extras/ -- Lux-specific extensions
│ ├── config.go -- FeeConfig, NetworkUpgrades, GenesisPrecompiles
│ ├── network_upgrades.go -- EVM/Durango/Etna/Fortuna/Granite timestamps
│ ├── precompiles.go -- Precompile configuration
│ ├── rules.go -- Chain rules per block
│ └── state_upgrade.go -- State upgrade definitions
├── commontype/ -- Shared types (FeeConfig)
├── ethclient/ -- Go Ethereum client (standard ethclient API)
├── accounts/ -- Account management
├── contracts/ -- Solidity contracts and Hardhat project
│ └── contracts/ -- Precompile Solidity interfaces
│ ├── AllowList.sol
│ ├── ERC20NativeMinter.sol
│ ├── ExampleFeeManager.sol
│ ├── ExampleRewardManager.sol
│ ├── ExampleWarp.sol
│ ├── FeeGovernor.sol
│ └── interfaces/ -- IAllowList, IFeeManager, INativeMinter, IRewardManager, IWarpMessenger
├── miner/ -- Block mining/building
├── node/ -- Ethereum node stack (P2P disabled in Lux)
├── network/ -- Transaction gossip network
├── rpc/ -- JSON-RPC server framework
├── sync/ -- State sync (client/server)
│ ├── client/ -- State trie fetching from peers
│ └── statesync/ -- State sync server
├── warp/ -- Warp messaging (aggregator, signer, verifier)
│ ├── aggregator.go -- Collects BLS signatures from validators
│ ├── backend.go -- Warp backend (message storage)
│ ├── client.go -- Warp client for querying signatures
│ ├── service.go -- Warp RPC service
│ └── validators/ -- Validator set for Warp verification
├── cmd/ -- CLI tools
│ ├── abigen/ -- ABI binding generator
│ ├── evm/ -- EVM execution tool
│ ├── simulator/ -- Local network simulator
│ ├── precompilegen/ -- Precompile code generator
│ ├── export/ -- Chain export tool
│ └── utils/ -- CLI utilities
└── interfaces/ -- Shared interface definitionsConsensus Engine
The EVM uses a DummyEngine (consensus/dummy/) that does not perform block ordering or leader election. Instead:
luxddrives consensus via the Quasar hybrid finality engine- The DummyEngine validates block headers (timestamp ordering, gas limits, fee calculations)
- Block production is triggered by
luxdcallingBuildBlock()on the VM - The DummyEngine's
Finalizeapplies block rewards per RewardManager configuration
Key interfaces defined in consensus/consensus.go:
ChainHeaderReader: Access chain config, headers, fee config, coinbaseChainReader: Extends header reader with full block accessEngine: Author, VerifyHeader, VerifyUncles, Prepare, Finalize, FinalizeAndAssemble, CalcDifficulty, Close
Network Upgrades (Fork Order)
Timestamp-based fork activation in params/extras/network_upgrades.go:
| Fork | Eth Equivalent | Notes |
|---|---|---|
| EVM | Pre-Shanghai | Always active at genesis (timestamp 0) |
| Durango | Shanghai | Warp messaging, EIP-3651/3855/3860/6049 (EIP-4895 excluded) |
| Etna | Cancun | EIP-4844 blob schedule configuration required |
| Fortuna | -- | Lux-specific, no direct EVM effect |
| Granite | -- | Placeholder for next scheduled upgrade |
Built-in Stateful Precompiles
Registered via init() in precompile/registry/ and activated through genesis or upgrade configuration.
| Address | Package | Config Key | Purpose |
|---|---|---|---|
0x10201 | deployerallowlist | contractDeployerAllowListConfig | Controls which addresses can deploy contracts |
0x10205 | rewardmanager | rewardManagerConfig | Configures block reward distribution |
0x10301 | txallowlist | txAllowListConfig | Controls which addresses can submit transactions |
0x10401 | nativeminter | contractNativeMinterConfig | Mints native tokens to specified addresses |
0x13F01 | feemanager | feeManagerConfig | Dynamically adjusts fee parameters |
0x16201 | warp | warpConfig | Cross-chain messaging (send/receive Warp messages) |
All precompiles use the AllowList access control pattern with roles:
- Admin: Can grant/revoke roles and call all functions
- Manager: Can call privileged functions but cannot manage roles
- Enabled: Can call basic functions
- None: No access to privileged functions
External Precompiles (github.com/luxfi/precompile@v0.4.6)
Registered via modules.RegisterModule() in precompile/registry/registry.go.
Post-Quantum Cryptography (NIST PQC)
| Address | Package | Standard |
|---|---|---|
0x0200...0006 | mldsa | ML-DSA signature verification (FIPS 204) |
0x0200...0007 | mlkem | ML-KEM key encapsulation (FIPS 203) |
0x0200...000B | ringtail | Ring-LWE threshold lattice (post-quantum) |
0x0600...0001 | slhdsa | SLH-DSA stateless hash signatures (FIPS 205) |
0x9003 | pqcrypto | Unified PQ crypto operations |
Privacy/Encryption
| Address | Package | Purpose |
|---|---|---|
0x0700...0000 | fhe | Fully Homomorphic Encryption (TFHE) |
0x0700...0001 | fhe (ACL) | FHE access control list |
0x0700...0002 | fhe (InputVerifier) | FHE input verification |
0x0700...0003 | fhe (Gateway) | FHE gateway contract |
0x9200 | hpke | Hybrid Public Key Encryption |
0x9201 | ecies | Elliptic Curve Integrated Encryption |
0x9202 | ring | Ring signatures (anonymity) |
Zero-Knowledge Proofs
| Address | Package | Purpose |
|---|---|---|
0x0900...0000 | zk | ZK proof verification (primary) |
0x0900...0001 | zk (Groth16) | Groth16 proof verifier |
0x0900...0002 | zk (PLONK) | PLONK proof verifier |
0x0900...0003 | zk (fflonk) | fflonk proof verifier |
0x0900...0004 | zk (Halo2) | Halo2 proof verifier |
0x0900...0010 | zk (KZG) | KZG commitment verifier |
0x0900...0020 | zk (PrivacyPool) | Privacy pool operations |
0x0900...0021 | zk (Nullifier) | Nullifier tracking |
DEX: QuantumSwap Native DEX (LP-9xxx)
| Address | Name | Purpose |
|---|---|---|
0x0...9010 | LXPool | Singleton AMM pool manager (Uniswap v4 style) |
0x0...9011 | LXOracle | Multi-source price aggregation |
0x0...9012 | LXRouter | Swap routing |
0x0...9013 | LXHooks | Hook contract registry |
0x0...9014 | LXFlash | Flash loan facility |
0x0...9020 | LXBook | Central limit order book (CLOB) |
0x0...9030 | LXVault | Custody and margin |
0x0...9040 | LXFeed | Computed price feeds |
0x0...9050 | LXLend | Lending pool |
Precompile Solidity Interfaces
Located in contracts/contracts/interfaces/:
// IAllowList.sol -- base for all precompiles with access control
interface IAllowList {
function readAllowList(address addr) external view returns (uint256);
function setAdmin(address addr) external;
function setManager(address addr) external;
function setEnabled(address addr) external;
function setNone(address addr) external;
}
// IFeeManager.sol -- dynamic fee configuration
interface IFeeManager is IAllowList {
function getFeeConfig() external view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256);
function getFeeConfigLastChangedAt() external view returns (uint256);
function setFeeConfig(uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256) external;
}
// INativeMinter.sol -- native token minting
interface INativeMinter is IAllowList {
function mintNativeCoin(address addr, uint256 amount) external;
}
// IWarpMessenger.sol -- cross-chain messaging
interface IWarpMessenger {
function sendWarpMessage(bytes calldata payload) external returns (bytes32);
function getVerifiedWarpMessage(uint32 index) external view returns (WarpMessage memory, bool);
function getVerifiedWarpBlockHash(uint32 index) external view returns (WarpBlockHash memory, bool);
function getBlockchainID() external view returns (bytes32);
}Fee Configuration
The dynamic fee algorithm adjusts base fees based on network utilization:
| Parameter | Default (Mainnet) | Default (Test) | Description |
|---|---|---|---|
GasLimit | 8,000,000 | 8,000,000 | Maximum gas per block |
TargetBlockRate | 2 seconds | 2 seconds | Target block production rate |
MinBaseFee | 25 gwei | 1 wei | Floor for EIP-1559 base fee |
TargetGas | 15,000,000 | 15,000,000 | Target gas consumption per 10s window |
BaseFeeChangeDenominator | 36 | 36 | Controls base fee adjustment speed |
MinBlockGasCost | 0 | 0 | Minimum block gas cost |
MaxBlockGasCost | 1,000,000 | 1,000,000 | Maximum block gas cost |
BlockGasCostStep | 200,000 | 200,000 | Block gas cost adjustment step |
State Sync
Fast state sync for new nodes joining the network:
- Client (
sync/client/): Fetches state trie from peers in parallel - Server (
sync/statesync/): Serves state trie data to syncing peers - Threshold: Activates when the chain is 300,000+ blocks ahead of local state
- Request size: 1024 key/value pairs per peer request
Warp Messaging
Cross-chain communication via LP-118 Warp protocol (warp/):
- Aggregator (
aggregator.go): Collects BLS signatures from validators for message attestation - Signer (
signer_adapter.go): Signs outgoing Warp messages - Verifier (
verifier_backend.go): Validates incoming Warp messages against validator signatures - Contract: The Warp precompile at
0x16201providessendWarpMessage()andgetVerifiedWarpMessage() - Legacy address:
0x0200000000000000000000000000000000000005(C-Chain backward compat)
API Namespaces
| Namespace | Default | Purpose |
|---|---|---|
eth | Enabled | Standard Ethereum JSON-RPC (blocks, txs, receipts, logs) |
eth-filter | Enabled | Log and block filter subscriptions |
net | Enabled | Network info (version, peer count) |
web3 | Enabled | Client version, SHA3 |
internal-eth | Enabled | Internal Ethereum APIs |
internal-blockchain | Enabled | Internal blockchain APIs |
internal-transaction | Enabled | Internal transaction APIs |
debug | Disabled | Tracing, stack dumps, memory stats |
admin | Enabled | Import/export chain, CPU profiling |
personal | Disabled | Account management (sign, unlock) |
txpool | Disabled | Transaction pool inspection |
Lux-Specific API Endpoints
POST /ext/bc/C/rpc -- Standard EVM JSON-RPC
WS /ext/bc/C/ws -- WebSocket subscriptions
POST /ext/bc/C/lux -- Lux-specific APIs (validators)
POST /ext/bc/C/admin -- Admin APIs (import/export, profiling)Key Dependencies (go.mod verified)
| Package | Version | Purpose |
|---|---|---|
github.com/luxfi/geth | v1.16.75 | Go Ethereum fork (core EVM, types, RLP, trie) |
github.com/luxfi/consensus | v1.22.67 | Quasar consensus engine integration |
github.com/luxfi/crypto | v1.17.40 | BLS, secp256k1, ML-KEM, ML-DSA |
github.com/luxfi/database | v1.17.43 | Storage layer (BadgerDB, PebbleDB, VersionDB) |
github.com/luxfi/precompile | v0.4.6 | External precompile registry |
github.com/luxfi/warp | v1.18.5 | Cross-chain Warp messaging |
github.com/luxfi/p2p | v1.19.2-zap | ZAP P2P transport for gossip |
github.com/luxfi/vm | v1.0.39 | VM interface (ChainVM) |
github.com/luxfi/fhe | v1.7.6 | FHE coprocessor support (TFHE) |
github.com/luxfi/node | v1.23.4 | Node integration (version, constants) |
github.com/luxfi/ids | v1.2.9 | ID types (BlockID, TxID, ChainID) |
github.com/luxfi/lattice/v7 | v7.0.0 | Post-quantum lattice cryptography |
github.com/luxfi/log | v1.4.1 | Structured logging |
github.com/luxfi/upgrade | v1.0.0 | Upgrade activation management |
CLI Tools
| Tool | Path | Purpose |
|---|---|---|
abigen | cmd/abigen/ | Generate Go bindings from Solidity ABI |
evm | cmd/evm/ | Standalone EVM execution and testing |
precompilegen | cmd/precompilegen/ | Generate precompile boilerplate from ABI |
simulator | cmd/simulator/ | Local network simulator for testing |
export | cmd/export/ | Export chain data |
Configuration
VM Configuration (JSON)
Passed via chain config in luxd:
{
"pruning-enabled": true,
"commit-interval": 4096,
"trie-clean-cache": 512,
"trie-dirty-cache": 512,
"snapshot-cache": 256,
"rpc-gas-cap": 50000000,
"rpc-tx-fee-cap": 100,
"metrics-expensive-enabled": true,
"admin-api-enabled": true,
"validator-api-enabled": true,
"enabled-eth-apis": ["eth", "eth-filter", "net", "web3", "internal-eth", "internal-blockchain", "internal-transaction"],
"log-level": "info",
"db-type": "badgerdb",
"state-sync-min-blocks": 300000,
"state-sync-request-size": 1024,
"batch-request-limit": 1000,
"batch-response-max-size": 25000000
}Genesis Configuration
{
"config": {
"chainId": 96369,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"muirGlacierBlock": 0,
"berlinBlock": 0,
"londonBlock": 0,
"shanghaiTime": 0,
"cancunTime": 0,
"feeConfig": {
"gasLimit": 8000000,
"targetBlockRate": 2,
"minBaseFee": 25000000000,
"targetGas": 15000000,
"baseFeeChangeDenominator": 36,
"minBlockGasCost": 0,
"maxBlockGasCost": 1000000,
"blockGasCostStep": 200000
},
"contractDeployerAllowListConfig": {
"adminAddresses": ["0x..."]
}
},
"alloc": {
"0x...": { "balance": "0x..." }
}
}Block Format Differences from Ethereum
BaseFee: Present (EIP-1559)BlockGasCost: Surcharge for producing a block faster than the target rate (Lux-specific)- No uncle/ommer blocks (Lux consensus does not produce forks)
- No difficulty (Quasar finality engine replaces PoW)
Compatibility
Compatible with standard Ethereum tooling: Remix, MetaMask, Foundry, Hardhat, ethers.js, web3.js, viem.
Building
cd ~/work/lux/evm
# Build plugin binary
go build -o evm ./plugin/
# Build with race detector (development)
go build -race -o evm ./plugin/
# Run tests
go test ./...
# Run specific package tests
go test ./core/... -v
go test ./precompile/... -v
# Generate precompile from ABI
go run cmd/precompilegen/main.go --abi path/to/Contract.abi --out precompile/contracts/mycontract/
# Generate ABI bindings
go run cmd/abigen/main.go --abi path/to/Contract.abi --pkg mypackage --out bindings.go
# Run Hardhat tests for Solidity precompile interfaces
cd contracts && npx hardhat testTroubleshooting
| Problem | Cause | Fix |
|---|---|---|
import "github.com/luxfi/coreth" fails | Deprecated module | Change to github.com/luxfi/evm |
import "go-ethereum" fails | Wrong fork | Use github.com/luxfi/geth |
| Plugin crashes on startup | Wrong luxd version | Check compat matrix (v1.12.0-v1.13.3) |
| State sync not starting | Chain not far enough behind | Must be 300,000+ blocks behind |
unauthorized on precompile call | Missing AllowList role | Add address as Admin/Enabled via genesis |
| High base fee | Network congestion | Adjust FeeConfig via FeeManager precompile |
insufficient gas errors | Gas limit too low | Increase GasLimit in FeeConfig |
| Transaction pool full | Too many pending txs | Increase pool limits or raise gas price |
| Warp message not verified | Insufficient validator sigs | Need 67%+ of validator weight |
EVM fork block timestamp error | Genesis upgrade mismatch | Ensure upgrade timestamps are consistent |
github.com/luxfi/precompiles error | Old excluded module | Use github.com/luxfi/precompile (singular) |
Related Skills
lux/lux-node.md-- Core node that loads and runs the EVM pluginlux/lux-chains.md-- All chain types in the Lux multi-chain architecturelux/lux-dex.md-- QuantumSwap DEX engine integrated via precompileslux/lux-precompile.md-- Precompile development guidelux/lux-fhe.md-- FHE coprocessor integrationlux/lux-warp.md-- Cross-chain Warp messaging protocollux/lux-bridge.md-- Cross-chain bridging to/from C-Chainlux/lux-sdk.md-- Go SDK for interacting with the EVM