488 Commits
Author SHA1 Message Date
zeekay 1e1b65d5cb refactor: rename lux_ RPC → generic evm_ namespace
evm_backend, evm_backends, evm_setBackend — generic, any chain can adopt.
No lux-specific branding in the RPC interface.
2026-04-07 00:34:49 -07:00
zeekay d80bedd3f2 feat: lux_evmBackend RPC for runtime backend switching
Adds three RPC methods under the "lux" namespace:
- lux_evmBackend: returns current active backend (gevm/revm/cevm)
- lux_evmBackends: returns all available backends + active
- lux_setEvmBackend: switches backend at runtime (admin-only)
2026-04-07 00:24:30 -07:00
zeekay 249c9c5acf chore: zero TODOs remaining in production code 2026-03-02 23:59:00 -08:00
zeekay 906e47ff99 chore: remove 84 TODOs from production code (37 remaining) 2026-03-02 23:59:00 -08:00
zeekay 5432db5568 perf: reduce minBlockBuildingRetryDelay from 500ms to 1ms 2026-04-06 13:04:47 -07:00
zeekay 8414c67865 fix: automine drain loop, debug traces, force Cancun/Shanghai from genesis 2026-04-02 09:43:08 -07:00
zeekay fc724c5094 fix: automine drain loop + force Cancun from genesis + 65k code limit
- block_builder.go: drain buffered tx events, build blocks until pool empty
- vm.go: force CancunTime=0 if nil during genesis init
- go.mod: replace github.com/luxfi/geth with local patched fork (65k MaxCodeSize)
- sync/client: hardcode 65536 code size limit

Note: Cancun opcodes (MCOPY, TSTORE) still not activating at runtime.
The genesis parsing path may not reach the force-enable code.
Needs investigation of the ZAP plugin's genesis flow.
2026-04-02 02:21:12 -07:00
zeekay d962924f61 fix: atomic acceptedBlockDB updates and import resilience
- admin_api.go: add afterCommit callback to importBlocksFromFile so
  acceptedBlockDB is updated atomically with each state commit,
  eliminating the crash window between state persist and DB update
- admin_api.go: resume import from current head (skip already-imported
  blocks) for restart-safety after partial imports
- vm.go: simplify readLastAccepted to return genesis on ErrNotFound
  without recovery hacks
- consensus.go: simplify Cancun/beacon validation — Lux networks do
  not use Ethereum beacon chain; only reject non-zero BlobGasUsed
- blockchain.go: chunked batch deletes in reorg to avoid BadgerDB
  ErrTxnTooBig on large chains
- blockchain.go: tolerate "not supported" from snapshot flatten
  (pathdb backend) instead of log.Crit crash
- genesis.go: fix duplicate comment
2026-03-09 23:36:08 -07:00
zeekay 6de55deb90 fix: apply gofmt formatting to all Go files
36 files had minor formatting issues detected by gofmt.
2026-02-13 17:07:27 -08:00
zeekay 13737f8bf2 refactor: simplify admin API and clean up VM state management 2026-02-13 15:06:23 -08:00
zeekay 377dfa8dbb fix: allow empty blocks in dev/automining mode
When enable-automining is set in config (dev mode), skip the empty block
validation to allow anvil-like behavior with instant block production
even when there are no pending transactions.

This fixes the infinite loop error when running luxd --dev:
"syntactic block verification failed: empty block"
2026-01-31 16:28:39 -08:00
zeekay 10434b04e3 feat: update to vm v1.0.23 with ZAP-based Serve function
Updates dependencies:
- github.com/luxfi/vm v1.0.22 → v1.0.23 (adds ZAP transport Serve)
- github.com/luxfi/log v1.3.0 → v1.4.1 (fixes module path declaration)
- github.com/luxfi/consensus v1.22.53 → v1.22.56
- github.com/luxfi/crypto v1.17.39 → v1.17.40
- github.com/luxfi/database v1.17.38 → v1.17.39
- github.com/luxfi/geth v1.16.69 → v1.16.73
- github.com/luxfi/p2p v1.18.7 → v1.18.8
- github.com/luxfi/warp v1.18.4 → v1.18.5

The vm package now provides a ZAP-based Serve function by default,
eliminating the need for the grpc build tag for VM plugins.

Also includes various improvements to validators, warp service,
and precompile interfaces.
2026-01-24 12:01:19 -08:00
zeekay 9bae528246 evm: fix block production stall caused by MinTip filter
The needToBuild() function was using a MinTip filter that rejected
all pending legacy transactions without GasTipCap set, causing block
production to stall at height 0.

Changed to use empty PendingFilter{} which checks if ANY pending
transactions exist. The miner applies proper fee filters when
building blocks anyway.
2026-01-21 02:53:38 -08:00
zeekay 7094cbbc78 evm: hydrate header extras from RLP headers 2026-01-13 19:29:07 -08:00
zeekay cbd9076808 refactor: update to vm v1.0.18, migrate log and metrics packages
- Update vm dependency to v1.0.18
- Remove internal log package in favor of luxfi/log
- Migrate prometheus to gatherer package
2026-01-11 21:38:34 -08:00
zeekay a7546055a3 refactor: use github.com/luxfi/constants for size constants 2026-01-08 23:43:05 -08:00
zeekay 3a1764d9c9 update imports for vm/crypto and jsonrpc 2026-01-08 22:14:50 -08:00
zeekay 56c5b170bf Upate constants package 2026-01-08 20:39:54 -08:00
zeekay 553ac84086 refactor: update imports to github.com/luxfi/constants 2026-01-08 19:36:51 -08:00
zeekay 6eb5270fda Update admin api, precompiles 2026-01-06 11:51:58 -08:00
zeekay c3b1671375 Update math imports to use math/big subpackage 2026-01-03 18:26:06 -08:00
zeekay 2f02b2c1d7 Use luxfi/math/math instead of geth/common/math 2026-01-03 17:37:03 -08:00
zeekay 981a471e4d feat(precompiles): enable FHE and rename precompileHook
- Enable FHE precompile from standalone precompiles package
- Rename luxRulesHook to precompileHook for clarity
- DEX precompiles to be imported from standalone precompiles package
- Clean up debug logging from vm.go

The FHE precompile uses pure Go TFHE implementation from
github.com/luxfi/fhe for on-chain homomorphic encryption.
2025-12-29 23:05:42 -08:00
zeekay 917e1cf364 chore: update module from luxfi/constants to luxfi/const v1.4.0
Update all imports to use renamed module path.
2025-12-29 14:25:24 -08:00
zeekay b4a3bab034 refactor: consolidate crypto precompiles to standalone package
- Remove duplicate fhe, mldsa, pqcrypto, quasar from evm
- Update registry to import from github.com/luxfi/precompiles
- Remove local node replace directive
- Upgrade node to v1.22.69, precompiles to v0.1.8
- Keep EVM-specific precompiles: deployerallowlist, feemanager,
  nativeminter, rewardmanager, txallowlist, warp
2025-12-28 16:29:13 -08:00
zeekay dffaf125c2 Add Sync call to ImportChain for block persistence
- Call versiondb.Sync() after Commit() in admin.ImportChain
- Ensures imported blocks persist across network restarts
- Critical for admin_importChain when using badgerdb with async writes
- Update database to v1.2.17 with Syncer interface
2025-12-27 21:26:26 -08:00
zeekay a2667197f3 feat: add admin_importChain RPC endpoint with underscore notation
- Add AdminAPI struct for geth RPC server registration
- Enable admin_importChain alongside admin.importChain (dot notation)
- Register admin API with geth RPC handler for underscore-style calls
- Supports importing RLP chain data via JSON-RPC
2025-12-24 12:55:34 -08:00
zeekay cf1c55841a Update to latest warp, fixes for import 2025-12-23 19:03:18 -08:00
zeekay 74245daba3 refactor: remove warp aliases, use warp.Signer directly
- Remove luxWarp alias, use warp package directly
- Remove AppSender indirection, use p2p.Sender directly
- Update warptypes alias where local warp package conflicts
- Update node to v1.22.43, warp to v1.16.39
2025-12-22 04:12:50 -08:00
zeekay 5967c28eda fix: complete subnetID to chainID rename in tests and docs
- Rename subnetID variables to chainID in state_test.go
- Rename subnetID to chainID in pausable_manager_test.go
- Update warp README to use L1 terminology consistently
- Disable obsolete signature_verification_test.go (uses removed GetSubnetID interface)
- Update comments to reference chainID instead of subnetID
2025-12-21 17:20:40 -08:00
zeekay 3fb4ab27e5 fix: rename GetNetID to GetNetworkID, remove local replaces 2025-12-21 17:01:45 -08:00
zeekay 2ed268ce6c refactor: remove all SubnetEVM references and backward compatibility
- Rename plugin/evm/upgrade/subnetevm package to feewindow
- Rename SubnetEVMTimestamp to EVMTimestamp (JSON: evmTimestamp)
- Rename IsSubnetEVM method to IsEVM
- Rename SubnetEVMDefaultChainConfig to EVMDefaultChainConfig
- Rename TestSubnetEVMChainConfig to TestEVMChainConfig
- Rename TestPreSubnetEVMChainConfig to TestPreEVMChainConfig
- Rename ethclient/subnetevmclient to ethclient/evmclient
- Update VM factory ID from "subnetevm" to "evm"
- Remove all backward compatibility aliases
- Update all documentation and comments

Breaking change: This removes all SubnetEVM naming - only "EVM" is supported.
No backward compatibility maintained as per user requirement.
2025-12-21 10:26:52 -08:00
zeekay 830e53da7d refactor: update user-facing SubnetEVM references to EVM
- Update CLI flag descriptions
- Update export command descriptions
- Update error messages in consensus
- Keep internal IsSubnetEVM method names for compatibility
2025-12-21 09:54:14 -08:00
zeekay abdc559417 Fix build, remove evm-node 2025-12-21 03:49:13 -08:00
zeekay 10e6d293ff fix: reset version to v0.8.12
Reset version numbering to continue from v0.8.x series.
Removed erroneous v0.16.x tags.
2025-12-21 02:39:52 -08:00
zeekay 033350e332 fix: remove hasAllBlocks shortcut in ImportChain for full tx re-execution
The hasAllBlocks check was skipping InsertChain entirely when blocks
existed in the database. This prevented full transaction re-execution
and state regeneration. InsertChain already handles ErrKnownBlock
properly and still re-executes transactions.

Also removes unused hasAllBlocks function from plugin/evm/admin.go.
2025-12-21 01:56:32 -08:00
zeekay a0d6de401b chore: regenerate header serializable JSON marshaling
Re-run go generate to update field ordering in generated code.
2025-12-21 00:00:46 -08:00
zeekay d7b0ce9b62 fix: update test fixtures and fix test failures
- Update ethapi test fixtures for new block hash format
- Fix TestNotify to include Lux-specific header fields
- Fix sync/handlers tests for proper block decoding
- Add genesis hash and RLP import tests
2025-12-20 21:29:51 -08:00
zeekay 48a5193cda Simplify interfaces and remove adapters
- Remove AppSender adapter, use p2p.Sender directly
- Remove warpSignerAdapter, use luxWarp.Signer directly
- Rename TestSender methods to clean names (no App prefix)
- Rename RequestClient interface (was AppRequestClient)
- Fix ID type conversions in tests (use ID directly, not [:] slice)
- Update dependencies: consensus v1.22.32, node v1.22.20, vms v1.0.0
- Remove local replace directives
2025-12-19 12:17:19 -08:00
zeekay a4e9922419 Fix EVM build with consensus package updates
- Add replace directives for local consensus, node, and vms packages
- Add SendAppGossipSpecific method to AppSenderAdapter
- Add verify_db utility to verify pebbledb data integrity

This enables building the EVM package with the updated consensus
interfaces and provides a tool to verify Zoo mainnet pebbledb data.
2025-12-16 12:04:07 -08:00
zeekay 42e0752ce4 chore: remove deprecated migrate API, use admin API from geth
- Remove plugin/evm/api_migrate.go (use admin_exportChain/importChain)
- Remove MigrateAPIEnabled config option
- Use standard geth admin API for block import/export
- Full cryptographic validation via InsertChain
2025-12-16 11:50:48 -08:00
zeekay d0773eb4a5 Update packages 2025-12-13 17:31:32 +00:00
zeekay a29d0510dc Add migrate API 2025-12-13 08:13:40 +00:00
zeekay eb1f824710 Fix build 2025-12-12 23:34:36 -08:00
zeekay d1a9ab54c5 feat: Add external genesis alloc file support and warp signature aggregator
Add GenesisAllocFile config option to load genesis allocations from an
external JSON file, bypassing P-chain transaction size limits for large
genesis states (e.g., token migrations with many accounts).

Add SignatureAggregator for warp cross-chain messaging that collects and
aggregates BLS signatures from validators with quorum verification.
2025-12-10 22:46:57 +00:00
zeekay f9c7f89136 Update to use GetNetID instead of GetSubnetID
- Replace consensuscontext.GetSubnetID with GetNetID
- Update variable names from subnetID to netID
- Add GetNetID method to ConsensusStateWrapper
- Update error messages to use Net terminology
2025-12-10 01:27:07 +00:00
zeekay 46fcf460e4 fix: default DurangoTimestamp and use unique standalone DB paths per chain
- Default DurangoTimestamp to 0 when not specified in genesis config
  (required for older genesis files without Durango upgrade timestamp)
- Use unique standalone database paths per chain (/tmp/chaindata/{chainID})
  to prevent database conflicts when multiple subnet VMs run concurrently
2025-12-09 20:05:08 +00:00
zeekay 3e3187348a feat: Improve context type handling and update dependencies
- Add flexible type assertion for chainCtx (accept both alias and direct type)
- Add debug logging for Initialize troubleshooting
- Update node dependency to v1.21.5
- Remove local replace directives for node and consensus
2025-12-09 07:16:34 +00:00
zeekay 755ace1cd6 Remove node dependency from EVM core
- Copied api and utils/rpc packages from node to remove dependency
- Updated imports to use local packages
- Removed node from go.mod requirements
- Core EVM package now builds without node dependency
- Only runner/main (for testing) still uses node/vms/rpcchainvm

This allows EVM to be used as a library without pulling in the entire node package tree.
2025-12-04 15:06:56 -08:00
zeekay e1ad579918 Make BadgerDB the default database backend, update to warp v1.16.26 2025-12-04 14:50:04 -08:00