canonical: drop SubnetEVMTimestamp alias — single evmTimestamp field

Lux EVM activation is gated by a single canonical chain config field:
  EVMTimestamp / json:'evmTimestamp'

The legacy 'SubnetEVMTimestamp' / 'subnetEVMTimestamp' field was a duplicate
alias for the same activation. Removed:
  - geth/params/config.go: ChainConfig.SubnetEVMTimestamp field
  - geth/params/config.go: IsEVM() now checks EVMTimestamp only
  - geth/params/config.go: isLuxL2Chain check uses EVMTimestamp only
  - all genesis JSON configs (mainnet/testnet/devnet × all chains)
  - all helm chart genesis files (charts/lux/genesis/*.json)
  - all docs (LLM.md, *.mdx)

One field, one way.
This commit is contained in:
Hanzo AI
2026-05-05 21:30:08 -07:00
parent 1c0d11b5de
commit 20150c0ec2
25 changed files with 146 additions and 216 deletions
+1 -1
View File
@@ -138,7 +138,7 @@ C-Chain protocol upgrades activated Dec 25, 2024 @ 4:20pm UTC (timestamp 1735143
```json
{
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"durangoTimestamp": 0,
"etnaTimestamp": 1735143600,
"fortunaTimestamp": 1735143600,
+1 -1
View File
@@ -65,7 +65,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 0,
+1 -1
View File
@@ -347,7 +347,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 0,
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -51,7 +51,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 0,
+1 -1
View File
@@ -51,7 +51,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 0,
+1 -1
View File
@@ -51,7 +51,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 0,
+1 -1
View File
@@ -19,7 +19,7 @@
"shanghaiTime": 0,
"cancunTime": 0,
"terminalTotalDifficulty": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"durangoTimestamp": 0,
"etnaTimestamp": 0,
"fortunaTimestamp": 0,
+1 -75
View File
@@ -1,75 +1 @@
{
"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,
"arrowGlacierBlock": 0,
"grayGlacierBlock": 0,
"mergeNetsplitBlock": 0,
"shanghaiTime": 0,
"cancunTime": 253399622400,
"terminalTotalDifficulty": 0,
"banffBlockTimestamp": 253399622400,
"cortinaBlockTimestamp": 253399622400,
"durangoBlockTimestamp": 253399622400,
"etnaTimestamp": 253399622400,
"fortunaTimestamp": 253399622400,
"graniteTimestamp": 253399622400,
"blobSchedule": {
"cancun": {
"max": 6,
"target": 3,
"baseFeeUpdateFraction": 3338477
}
},
"feeConfig": {
"gasLimit": 12000000,
"targetBlockRate": 2,
"minBaseFee": 25000000000,
"targetGas": 60000000,
"baseFeeChangeDenominator": 36,
"minBlockGasCost": 0,
"maxBlockGasCost": 1000000,
"blockGasCostStep": 200000
},
"subnetEVMTimestamp": 0,
"warpConfig": {
"blockTimestamp": 1730446786,
"quorumNumerator": 67,
"requirePrimaryNetworkSigners": false
}
},
"nonce": "0x0",
"timestamp": "0x672485c2",
"extraData": "0x",
"gasLimit": "0x5f5e100",
"difficulty": "0x0",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"0200000000000000000000000000000000000005": {
"balance": "0x0",
"nonce": "0x1",
"code": "0x01"
},
"0x9011E888251AB053B7bD1cdB598Db4f9DEd94714": {
"balance": "0x193e5939a08ce9dbd480000000"
}
},
"stateRoot": "0x2d1cedac263020c5c56ef962f6abe0da1f5217bdc6468f8c9258a0ea23699e80",
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"baseFeePerGas": "0x5d21dba00",
"skipPostMergeFields": true,
"genesisHash": "0x3f4fa2a0b0ce089f52bf0ae9199c75ffdd76ecafc987794050cb0d286f1ec61e"
}
{"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,"arrowGlacierBlock":0,"grayGlacierBlock":0,"mergeNetsplitBlock":0,"shanghaiTime":253399622400,"cancunTime":253399622400,"terminalTotalDifficulty":0,"banffBlockTimestamp":253399622400,"cortinaBlockTimestamp":253399622400,"durangoBlockTimestamp":253399622400,"etnaTimestamp":253399622400,"fortunaTimestamp":253399622400,"graniteTimestamp":253399622400,"blobSchedule":{"cancun":{"max":6,"target":3,"baseFeeUpdateFraction":3338477}},"feeConfig":{"gasLimit":12000000,"targetBlockRate":2,"minBaseFee":25000000000,"targetGas":60000000,"baseFeeChangeDenominator":36,"minBlockGasCost":0,"maxBlockGasCost":1000000,"blockGasCostStep":200000},"evmTimestamp":0,"warpConfig":{"blockTimestamp":1730446786,"quorumNumerator":67,"requirePrimaryNetworkSigners":false}},"nonce":"0x0","timestamp":"0x672485c2","extraData":"0x","gasLimit":"0xb71b00","difficulty":"0x0","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","coinbase":"0x0000000000000000000000000000000000000000","alloc":{"0200000000000000000000000000000000000005":{"balance":"0x0","nonce":"0x1","code":"0x01"},"0x9011E888251AB053B7bD1cdB598Db4f9DEd94714":{"balance":"0x193e5939a08ce9dbd480000000"}},"stateRoot":"0x2d1cedac263020c5c56ef962f6abe0da1f5217bdc6468f8c9258a0ea23699e80","number":"0x0","gasUsed":"0x0","parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","baseFeePerGas":"0x5d21dba00","skipPostMergeFields":true,"genesisHash":"0x3f4fa2a0b0ce089f52bf0ae9199c75ffdd76ecafc987794050cb0d286f1ec61e"}
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -50,7 +50,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 1768946194,
+1 -1
View File
@@ -50,7 +50,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 1768946194,
+1 -1
View File
@@ -50,7 +50,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 1768946194,
+1 -1
View File
@@ -50,7 +50,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 0,
+1 -1
View File
@@ -50,7 +50,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 1731369637,
+1 -1
View File
@@ -50,7 +50,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 0,
+1 -1
View File
@@ -18,7 +18,7 @@
"shanghaiTime": 0,
"cancunTime": 253399622400,
"terminalTotalDifficulty": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"durangoTimestamp": 0,
"etnaTimestamp": 253399622400,
"fortunaTimestamp": 253399622400,
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -86,7 +86,7 @@
]
}
],
"cChainGenesis": "{\n \"config\": {\n \"chainId\": 96368,\n \"homesteadBlock\": 0,\n \"eip150Block\": 0,\n \"eip155Block\": 0,\n \"eip158Block\": 0,\n \"byzantiumBlock\": 0,\n \"constantinopleBlock\": 0,\n \"petersburgBlock\": 0,\n \"istanbulBlock\": 0,\n \"muirGlacierBlock\": 0,\n \"berlinBlock\": 0,\n \"londonBlock\": 0,\n \"arrowGlacierBlock\": 0,\n \"grayGlacierBlock\": 0,\n \"mergeNetsplitBlock\": 0,\n \"shanghaiTime\": 0,\n \"cancunTime\": 253399622400,\n \"terminalTotalDifficulty\": 0,\n \"subnetEVMTimestamp\": 0,\n \"durangoTimestamp\": 0,\n \"etnaTimestamp\": 253399622400,\n \"feeConfig\": {\n \"gasLimit\": 12000000,\n \"targetBlockRate\": 2,\n \"minBaseFee\": 25000000000,\n \"targetGas\": 60000000,\n \"baseFeeChangeDenominator\": 36,\n \"minBlockGasCost\": 0,\n \"maxBlockGasCost\": 1000000,\n \"blockGasCostStep\": 200000\n },\n \"warpConfig\": {\n \"blockTimestamp\": 0,\n \"quorumNumerator\": 67,\n \"requirePrimaryNetworkSigners\": false\n }\n },\n \"alloc\": {\n \"0200000000000000000000000000000000000005\": {\n \"balance\": \"0x0\",\n \"nonce\": \"0x1\",\n \"code\": \"0x01\"\n },\n \"9011E888251AB053B7bD1cdB598Db4f9DEd94714\": {\n \"balance\": \"0x193e5939a08ce9dbd480000000\"\n }\n },\n \"stateRoot\": \"0x2d1cedac263020c5c56ef962f6abe0da1f5217bdc6468f8c9258a0ea23699e80\",\n \"nonce\": \"0x0\",\n \"timestamp\": \"0x67259912\",\n \"baseFeePerGas\": \"0x5d21dba00\",\n \"genesisHash\": \"0x1c5fe37764b8bc146dc88bc1c2e0259cd8369b07a06439bcfa1782b5d4fb0995\",\n \"extraData\": \"0x\",\n \"gasLimit\": \"0xb71b00\",\n \"difficulty\": \"0x0\",\n \"mixHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n \"coinbase\": \"0x0000000000000000000000000000000000000000\",\n \"number\": \"0x0\",\n \"gasUsed\": \"0x0\",\n \"parentHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n}\n",
"cChainGenesis": "{\n \"config\": {\n \"chainId\": 96368,\n \"homesteadBlock\": 0,\n \"eip150Block\": 0,\n \"eip155Block\": 0,\n \"eip158Block\": 0,\n \"byzantiumBlock\": 0,\n \"constantinopleBlock\": 0,\n \"petersburgBlock\": 0,\n \"istanbulBlock\": 0,\n \"muirGlacierBlock\": 0,\n \"berlinBlock\": 0,\n \"londonBlock\": 0,\n \"arrowGlacierBlock\": 0,\n \"grayGlacierBlock\": 0,\n \"mergeNetsplitBlock\": 0,\n \"shanghaiTime\": 0,\n \"cancunTime\": 253399622400,\n \"terminalTotalDifficulty\": 0,\n \"evmTimestamp\": 0,\n \"durangoTimestamp\": 0,\n \"etnaTimestamp\": 253399622400,\n \"feeConfig\": {\n \"gasLimit\": 12000000,\n \"targetBlockRate\": 2,\n \"minBaseFee\": 25000000000,\n \"targetGas\": 60000000,\n \"baseFeeChangeDenominator\": 36,\n \"minBlockGasCost\": 0,\n \"maxBlockGasCost\": 1000000,\n \"blockGasCostStep\": 200000\n },\n \"warpConfig\": {\n \"blockTimestamp\": 0,\n \"quorumNumerator\": 67,\n \"requirePrimaryNetworkSigners\": false\n }\n },\n \"alloc\": {\n \"0200000000000000000000000000000000000005\": {\n \"balance\": \"0x0\",\n \"nonce\": \"0x1\",\n \"code\": \"0x01\"\n },\n \"9011E888251AB053B7bD1cdB598Db4f9DEd94714\": {\n \"balance\": \"0x193e5939a08ce9dbd480000000\"\n }\n },\n \"stateRoot\": \"0x2d1cedac263020c5c56ef962f6abe0da1f5217bdc6468f8c9258a0ea23699e80\",\n \"nonce\": \"0x0\",\n \"timestamp\": \"0x67259912\",\n \"baseFeePerGas\": \"0x5d21dba00\",\n \"genesisHash\": \"0x1c5fe37764b8bc146dc88bc1c2e0259cd8369b07a06439bcfa1782b5d4fb0995\",\n \"extraData\": \"0x\",\n \"gasLimit\": \"0xb71b00\",\n \"difficulty\": \"0x0\",\n \"mixHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n \"coinbase\": \"0x0000000000000000000000000000000000000000\",\n \"number\": \"0x0\",\n \"gasUsed\": \"0x0\",\n \"parentHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n}\n",
"initialStakeDuration": 31536000,
"initialStakeDurationOffset": 5400,
"initialStakedFunds": [],
+1 -1
View File
@@ -348,7 +348,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 0,
+1 -1
View File
@@ -51,7 +51,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 0,
+1 -1
View File
@@ -348,7 +348,7 @@
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 0,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"terminalTotalDifficulty": 0,
"warpConfig": {
"blockTimestamp": 0,
+5 -5
View File
@@ -30,7 +30,7 @@ This hash is computed from the canonical genesis configuration below. Any deviat
"londonBlock": 0,
"terminalTotalDifficulty": 0,
"terminalTotalDifficultyPassed": true,
"subnetEVMTimestamp": 0,
"evmTimestamp": 0,
"durangoTimestamp": 0
},
"nonce": "0x0",
@@ -66,14 +66,14 @@ This hash is computed from the canonical genesis configuration below. Any deviat
| `chainId` | 96369 | Lux Mainnet chain ID |
| `terminalTotalDifficulty` | 0 | Post-merge (PoS) from genesis |
| `terminalTotalDifficultyPassed` | true | Merge already happened |
| `subnetEVMTimestamp` | 0 | SubnetEVM features active from genesis |
| `evmTimestamp` | 0 | SubnetEVM features active from genesis |
| `durangoTimestamp` | 0 | Durango upgrade (Shanghai EIPs) from genesis |
### SubnetEVM-Specific Fields
These fields are **REQUIRED** in `luxfi/geth` for SubnetEVM compatibility:
#### `subnetEVMTimestamp`
#### `evmTimestamp`
Enables SubnetEVM gas accounting:
- Coinbase receives full `gasPrice * gasUsed` (no EIP-1559 burning)
@@ -162,7 +162,7 @@ If you see a different hash, check:
| Mistake | Effect |
|---------|--------|
| `difficulty: "0x1"` | Different hash, all state roots fail |
| Missing `subnetEVMTimestamp` | Gas accounting mismatch |
| Missing `evmTimestamp` | Gas accounting mismatch |
| Missing `durangoTimestamp` | EIP-3860 gas mismatch (876 gas per contract deploy) |
| Different timestamp | Different genesis hash |
| Different alloc balances | Different genesis state root |
@@ -177,7 +177,7 @@ If state roots match until block N then fail:
## Code References
### geth Configuration
- `params/config.go`: ChainConfig with SubnetEVMTimestamp, DurangoTimestamp
- `params/config.go`: ChainConfig with EVMTimestamp, DurangoTimestamp
- `params/config.go:1518`: Rules() enables Shanghai when Durango active
### State Transition
+4
View File
@@ -51,6 +51,10 @@ const (
// PChainFeeReserve is 10,000 LUX per validator for P-Chain fees
PChainFeeReserve = 10_000 * Lux
// LightMnemonic is the well-known dev mnemonic for local networks (network-id >= 1337).
// NEVER use on public networks (mainnet, testnet, devnet).
LightMnemonic = "light light light light light light light light light light light energy"
)
// KeyInfo contains parsed key information for a node
+1 -1
View File
@@ -206,7 +206,7 @@ type CChainParams struct {
ShanghaiTime uint64 `json:"shanghaiTime,omitempty"`
CancunTime uint64 `json:"cancunTime,omitempty"`
TerminalTotalDifficulty uint64 `json:"terminalTotalDifficulty,omitempty"`
SubnetEVMTimestamp uint64 `json:"subnetEVMTimestamp,omitempty"`
EVMTimestamp uint64 `json:"evmTimestamp,omitempty"`
DurangoTimestamp uint64 `json:"durangoTimestamp,omitempty"`
EtnaTimestamp uint64 `json:"etnaTimestamp,omitempty"`
FeeConfig FeeConfig `json:"feeConfig"`