diff --git a/Makefile b/Makefile index c0ab83097..6e78199a5 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,24 @@ ROOT_DIR := $(shell pwd) BUILD_OUTPUT_DIR := $(ROOT_DIR)/src/Nethermind/src/Nethermind/artifacts/bin/Nethermind.Runner/debug -.PHONY: run clean clean-monitoring clean-all clean-restart-monitoring stop clean-run run-sepolia run-sepolia-verify clean-run-sepolia clean-run-sepolia-verify build test format coverage coverage-staged coverage-report help +# Default values (can be overridden) +ARBOS_VERSION ?= 51 +ACCOUNTS_FILE ?= src/Nethermind.Arbitrum/Properties/accounts/defaults.json +MAX_CODE_SIZE ?= 0x6000 +CONFIG_NAME := arbitrum-system-test -all: run ## Default target +# Generate config dynamically +generate-system-test-config: + @./src/Nethermind.Arbitrum/Properties/scripts/generate-system-test-config.sh $(ARBOS_VERSION) $(ACCOUNTS_FILE) $(CONFIG_NAME) $(MAX_CODE_SIZE) + +# Run with custom parameters +run-system-test: generate-system-test-config + @echo "Starting Nethermind with system-test config..." + cd $(BUILD_OUTPUT_DIR) && dotnet nethermind.dll -c $(CONFIG_NAME) --data-dir $(ROOT_DIR)/.data --log debug + +clean-run-system-test: clean generate-system-test-config + @echo "Clean start with system-test config..." + @$(MAKE) run-system-test run-local: ## Start Nethermind Arbitrum node without cleaning .data cd $(BUILD_OUTPUT_DIR) && dotnet nethermind.dll -c arbitrum-local --data-dir $(ROOT_DIR)/.data @@ -15,47 +30,6 @@ clean-run-local: ## Clean .data and start Nethermind Arbitrum node @$(MAKE) clean @$(MAKE) run-local -run-system-test-arbos11: ## Start Nethermind Arbitrum node without cleaning .data - cd $(BUILD_OUTPUT_DIR) && dotnet nethermind.dll -c arbitrum-system-test-arbos11 --data-dir $(ROOT_DIR)/.data --log debug - -clean-run-system-test-arbos11: ## Clean .data and start Nethermind Arbitrum node - @$(MAKE) clean - @$(MAKE) run-system-test-arbos11 - -run-system-test-arbos20: ## Start Nethermind Arbitrum node without cleaning .data - cd $(BUILD_OUTPUT_DIR) && dotnet nethermind.dll -c arbitrum-system-test-arbos20 --data-dir $(ROOT_DIR)/.data --log debug - -clean-run-system-test-arbos20: ## Clean .data and start Nethermind Arbitrum node - @$(MAKE) clean - @$(MAKE) run-system-test-arbos20 - -run-system-test-arbos30: ## Start Nethermind Arbitrum node without cleaning .data - cd $(BUILD_OUTPUT_DIR) && dotnet nethermind.dll -c arbitrum-system-test-arbos30 --data-dir $(ROOT_DIR)/.data --log debug - -clean-run-system-test-arbos30: ## Clean .data and start Nethermind Arbitrum node - @$(MAKE) clean - @$(MAKE) run-system-test-arbos30 - -run-system-test-arbos40: ## Start Nethermind Arbitrum node without cleaning .data - cd $(BUILD_OUTPUT_DIR) && dotnet nethermind.dll -c arbitrum-system-test-arbos40 --data-dir $(ROOT_DIR)/.data --log debug - -clean-run-system-test-arbos40: ## Clean .data and start Nethermind Arbitrum node - @$(MAKE) clean - @$(MAKE) run-system-test-arbos40 - -run-system-test-arbos50: ## Start Nethermind Arbitrum node without cleaning .data - cd $(BUILD_OUTPUT_DIR) && dotnet nethermind.dll -c arbitrum-system-test-arbos50 --data-dir $(ROOT_DIR)/.data --log debug - -clean-run-system-test-arbos50: ## Clean .data and start Nethermind Arbitrum node - @$(MAKE) clean - @$(MAKE) run-system-test-arbos50 - -run-system-test-arbos51: ## Start Nethermind Arbitrum node without cleaning .data - cd $(BUILD_OUTPUT_DIR) && dotnet nethermind.dll -c arbitrum-system-test-arbos51 --data-dir $(ROOT_DIR)/.data --log debug - -clean-run-system-test-arbos51: ## Clean .data and start Nethermind Arbitrum node - @$(MAKE) clean - @$(MAKE) run-system-test-arbos51 run-sepolia: ## Start Nethermind Arbitrum node (Sepolia) without cleaning .data @echo "Starting Nethermind Arbitrum node (Sepolia) with metrics..." @@ -96,6 +70,7 @@ clean-run-sepolia-monitoring: ## Clean .data, start monitoring and Nethermind Ar clean: ## Remove .data directory @echo "Cleaning .data directory..." @rm -rf $(ROOT_DIR)/.data + @rm -f $(ROOT_DIR)/.generated-chainspec.json clean-monitoring: ## Clean monitoring data (Prometheus metrics) @echo "Cleaning monitoring data..." @@ -177,3 +152,29 @@ format: ## Format code using dotnet format help: ## Show this help message @echo "Available targets:" @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-15s %s\n", $$1, $$2}' $(MAKEFILE_LIST) | sort + +list-system-test-accounts: ## List available account configurations for System Tests + @echo "Available account configurations:" + @ls -1 src/Nethermind.Arbitrum/Properties/accounts/*.json 2>/dev/null || echo " No accounts files found" + +list-system-test-configs: ## Example configurations for System Tests + @echo "Example usage:" + @echo "" + @echo "1. Run with default settings (ArbOS 40, default accounts):" + @echo " make run-system-test" + @echo "" + @echo "2. Run with specific ArbOS version:" + @echo " make run-system-test ARBOS_VERSION=50" + @echo "" + @echo "3. Run with specific accounts:" + @echo " make run-system-test ACCOUNTS_FILE=src/Nethermind.Arbitrum/Properties/accounts/contract-tx.json" + @echo "" + @echo "4. Run with custom max code size (default is 0x6000 = 24KB):" + @echo " make run-system-test MAX_CODE_SIZE=0xC000" + @echo "" + @echo "5. Combine all parameters:" + @echo " make run-system-test ARBOS_VERSION=51 ACCOUNTS_FILE=src/Nethermind.Arbitrum/Properties/accounts/contract-tx.json MAX_CODE_SIZE=0xC000" + @echo "" + @echo "6. Clean run with custom settings:" + @echo " make clean-run-system-test ARBOS_VERSION=30 ACCOUNTS_FILE=src/Nethermind.Arbitrum/Properties/accounts/contract-tx.json" + @echo "" diff --git a/src/Nethermind.Arbitrum/Properties/accounts/contract-tx.json b/src/Nethermind.Arbitrum/Properties/accounts/contract-tx.json new file mode 100644 index 000000000..b1caa9ca9 --- /dev/null +++ b/src/Nethermind.Arbitrum/Properties/accounts/contract-tx.json @@ -0,0 +1,11 @@ +{ + "26E554a8acF9003b83495c7f45F06edCB803d4e3": { + "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" + }, + "aF24Ca6c2831f4d4F629418b50C227DF0885613A": { + "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" + }, + "0000000000000000000000000000123412341234": { + "balance": "0xDE0B6B3A7640000" + } +} diff --git a/src/Nethermind.Arbitrum/Properties/accounts/defaults.json b/src/Nethermind.Arbitrum/Properties/accounts/defaults.json new file mode 100644 index 000000000..766936e51 --- /dev/null +++ b/src/Nethermind.Arbitrum/Properties/accounts/defaults.json @@ -0,0 +1,8 @@ +{ + "26E554a8acF9003b83495c7f45F06edCB803d4e3": { + "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" + }, + "aF24Ca6c2831f4d4F629418b50C227DF0885613A": { + "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" + } +} diff --git a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos20.json b/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos20.json deleted file mode 100644 index a3e4fef06..000000000 --- a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos20.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "name": "Arbitrum System Test Chain", - "dataDir": "arbitrum-system-test", - "engine": { - "Arbitrum": { - "initialArbOSVersion": 20, - "initialChainOwner": "0x0000000000000000000000000000000000000000", - "genesisBlockNum": 0, - "enableArbOS": true, - "allowDebugPrecompiles": true, - "dataAvailabilityCommittee": false - } - }, - "params": { - "gasLimitBoundDivisor": "0x400", - "accountStartNonce": "0x0", - "maximumExtraDataSize": "0x20", - "minGasLimit": "0x1388", - "networkID": "0x64aba", - "forkBlock": "0x0", - "maxCodeSize": "0x6000", - "maxCodeSizeTransition": "0x0", - "eip150Transition": "0x0", - "eip160Transition": "0x0", - "eip161abcTransition": "0x0", - "eip161dTransition": "0x0", - "eip155Transition": "0x0", - "eip140Transition": "0x0", - "eip211Transition": "0x0", - "eip214Transition": "0x0", - "eip658Transition": "0x0", - "eip145Transition": "0x0", - "eip1014Transition": "0x0", - "eip1052Transition": "0x0", - "eip1283Transition": "0x0", - "eip1283DisableTransition": "0x0", - "eip152Transition": "0x0", - "eip1108Transition": "0x0", - "eip1344Transition": "0x0", - "eip1884Transition": "0x0", - "eip2028Transition": "0x0", - "eip2200Transition": "0x0", - "eip2565Transition": "0x0", - "eip2929Transition": "0x0", - "eip2930Transition": "0x0", - "eip1559Transition": "0x0", - "eip3198Transition": "0x0", - "eip3529Transition": "0x0", - "eip3541Transition": "0x0", - "terminalTotalDifficulty": "3C6568F12E8000", - "mergeForkIdTransition": "0x0", - "beaconChainGenesisTimestamp": "0x62b07d60", - "eip3855TransitionTimestamp": "0x63FD7D60", - "eip3651TransitionTimestamp": "0x63FD7D60", - "eip3860TransitionTimestamp": "0x63FD7D60", - "eip1153TransitionTimestamp": "0x65B97D60", - "eip4788TransitionTimestamp": "0x65B97D60", - "eip5656TransitionTimestamp": "0x65B97D60", - "eip6780TransitionTimestamp": "0x65B97D60", - "eip2537TransitionTimestamp": "0x67C7FD60", - "eip2935TransitionTimestamp": "0x67C7FD60", - "eip2935RingBufferSize": "0x5FFD0", - "eip7702TransitionTimestamp": "0x67C7FD60", - "minHistoryRetentionEpochs": "0x0", - "eip7934MaxRlpBlockSize": "0x0" - }, - "genesis": { - "seal": { - "ethereum": { - "nonce": "0x1", - "mixHash": "0x0000000000000000000000000000000000000000000000140000000000000000" - } - }, - "number": "0x0", - "difficulty": "0x1", - "author": "0x0000000000000000000000000000000000000000", - "timestamp": "0x0", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000", - "gasLimit": "0x4000000000000", - "baseFeePerGas": "0x5f5e100" - }, - "nodes": [], - "accounts": { - "26E554a8acF9003b83495c7f45F06edCB803d4e3": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "aF24Ca6c2831f4d4F629418b50C227DF0885613A": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "0000000000000000000000000000123412341234": { - "balance": "0xDE0B6B3A7640000" - } - } -} diff --git a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos30.json b/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos30.json deleted file mode 100644 index 351496b6f..000000000 --- a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos30.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "name": "Arbitrum System Test Chain", - "dataDir": "arbitrum-system-test", - "engine": { - "Arbitrum": { - "initialArbOSVersion": 30, - "initialChainOwner": "0x0000000000000000000000000000000000000000", - "genesisBlockNum": 0, - "enableArbOS": true, - "allowDebugPrecompiles": true, - "dataAvailabilityCommittee": false - } - }, - "params": { - "gasLimitBoundDivisor": "0x400", - "accountStartNonce": "0x0", - "maximumExtraDataSize": "0x20", - "minGasLimit": "0x1388", - "networkID": "0x64aba", - "forkBlock": "0x0", - "maxCodeSize": "0x6000", - "maxCodeSizeTransition": "0x0", - "eip150Transition": "0x0", - "eip160Transition": "0x0", - "eip161abcTransition": "0x0", - "eip161dTransition": "0x0", - "eip155Transition": "0x0", - "eip140Transition": "0x0", - "eip211Transition": "0x0", - "eip214Transition": "0x0", - "eip658Transition": "0x0", - "eip145Transition": "0x0", - "eip1014Transition": "0x0", - "eip1052Transition": "0x0", - "eip1283Transition": "0x0", - "eip1283DisableTransition": "0x0", - "eip152Transition": "0x0", - "eip1108Transition": "0x0", - "eip1344Transition": "0x0", - "eip1884Transition": "0x0", - "eip2028Transition": "0x0", - "eip2200Transition": "0x0", - "eip2565Transition": "0x0", - "eip2929Transition": "0x0", - "eip2930Transition": "0x0", - "eip1559Transition": "0x0", - "eip3198Transition": "0x0", - "eip3529Transition": "0x0", - "eip3541Transition": "0x0", - "terminalTotalDifficulty": "3C6568F12E8000", - "mergeForkIdTransition": "0x0", - "beaconChainGenesisTimestamp": "0x62b07d60", - "eip3855TransitionTimestamp": "0x63FD7D60", - "eip3651TransitionTimestamp": "0x63FD7D60", - "eip3860TransitionTimestamp": "0x63FD7D60", - "eip1153TransitionTimestamp": "0x65B97D60", - "eip4788TransitionTimestamp": "0x65B97D60", - "eip5656TransitionTimestamp": "0x65B97D60", - "eip6780TransitionTimestamp": "0x65B97D60", - "eip2537TransitionTimestamp": "0x67C7FD60", - "eip2935TransitionTimestamp": "0x67C7FD60", - "eip2935RingBufferSize": "0x5FFD0", - "eip7702TransitionTimestamp": "0x67C7FD60", - "minHistoryRetentionEpochs": "0x0", - "eip7934MaxRlpBlockSize": "0x0" - }, - "genesis": { - "seal": { - "ethereum": { - "nonce": "0x1", - "mixHash": "0x00000000000000000000000000000000000000000000001E0000000000000000" - } - }, - "number": "0x0", - "difficulty": "0x1", - "author": "0x0000000000000000000000000000000000000000", - "timestamp": "0x0", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000", - "gasLimit": "0x4000000000000", - "baseFeePerGas": "0x5f5e100" - }, - "nodes": [], - "accounts": { - "26E554a8acF9003b83495c7f45F06edCB803d4e3": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "aF24Ca6c2831f4d4F629418b50C227DF0885613A": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "0000000000000000000000000000123412341234": { - "balance": "0xDE0B6B3A7640000" - } - } -} diff --git a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos40.json b/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos40.json deleted file mode 100644 index 6ccff30b1..000000000 --- a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos40.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "name": "Arbitrum System Test Chain", - "dataDir": "arbitrum-system-test", - "engine": { - "Arbitrum": { - "initialArbOSVersion": 40, - "initialChainOwner": "0x0000000000000000000000000000000000000000", - "genesisBlockNum": 0, - "enableArbOS": true, - "allowDebugPrecompiles": true, - "dataAvailabilityCommittee": false - } - }, - "params": { - "gasLimitBoundDivisor": "0x400", - "accountStartNonce": "0x0", - "maximumExtraDataSize": "0x20", - "minGasLimit": "0x1388", - "networkID": "0x64aba", - "forkBlock": "0x0", - "maxCodeSize": "0x6000", - "maxCodeSizeTransition": "0x0", - "eip150Transition": "0x0", - "eip160Transition": "0x0", - "eip161abcTransition": "0x0", - "eip161dTransition": "0x0", - "eip155Transition": "0x0", - "eip140Transition": "0x0", - "eip211Transition": "0x0", - "eip214Transition": "0x0", - "eip658Transition": "0x0", - "eip145Transition": "0x0", - "eip1014Transition": "0x0", - "eip1052Transition": "0x0", - "eip1283Transition": "0x0", - "eip1283DisableTransition": "0x0", - "eip152Transition": "0x0", - "eip1108Transition": "0x0", - "eip1344Transition": "0x0", - "eip1884Transition": "0x0", - "eip2028Transition": "0x0", - "eip2200Transition": "0x0", - "eip2565Transition": "0x0", - "eip2929Transition": "0x0", - "eip2930Transition": "0x0", - "eip1559Transition": "0x0", - "eip3198Transition": "0x0", - "eip3529Transition": "0x0", - "eip3541Transition": "0x0", - "terminalTotalDifficulty": "3C6568F12E8000", - "mergeForkIdTransition": "0x0", - "beaconChainGenesisTimestamp": "0x62b07d60", - "eip3855TransitionTimestamp": "0x63FD7D60", - "eip3651TransitionTimestamp": "0x63FD7D60", - "eip3860TransitionTimestamp": "0x63FD7D60", - "eip1153TransitionTimestamp": "0x65B97D60", - "eip4788TransitionTimestamp": "0x65B97D60", - "eip5656TransitionTimestamp": "0x65B97D60", - "eip6780TransitionTimestamp": "0x65B97D60", - "eip2537TransitionTimestamp": "0x67C7FD60", - "eip2935TransitionTimestamp": "0x67C7FD60", - "eip2935RingBufferSize": "0x5FFD0", - "eip7702TransitionTimestamp": "0x67C7FD60", - "minHistoryRetentionEpochs": "0x0", - "eip7934MaxRlpBlockSize": "0x0" - }, - "genesis": { - "seal": { - "ethereum": { - "nonce": "0x1", - "mixHash": "0x0000000000000000000000000000000000000000000000280000000000000000" - } - }, - "number": "0x0", - "difficulty": "0x1", - "author": "0x0000000000000000000000000000000000000000", - "timestamp": "0x0", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000", - "gasLimit": "0x4000000000000", - "baseFeePerGas": "0x5f5e100" - }, - "nodes": [], - "accounts": { - "26E554a8acF9003b83495c7f45F06edCB803d4e3": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "aF24Ca6c2831f4d4F629418b50C227DF0885613A": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "0000000000000000000000000000123412341234": { - "balance": "0xDE0B6B3A7640000" - } - } -} diff --git a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos50.json b/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos50.json deleted file mode 100644 index d727af50a..000000000 --- a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos50.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "name": "Arbitrum System Test Chain", - "dataDir": "arbitrum-system-test", - "engine": { - "Arbitrum": { - "initialArbOSVersion": 50, - "initialChainOwner": "0x0000000000000000000000000000000000000000", - "genesisBlockNum": 0, - "enableArbOS": true, - "allowDebugPrecompiles": true, - "dataAvailabilityCommittee": false - } - }, - "params": { - "gasLimitBoundDivisor": "0x400", - "accountStartNonce": "0x0", - "maximumExtraDataSize": "0x20", - "minGasLimit": "0x1388", - "networkID": "0x64aba", - "forkBlock": "0x0", - "maxCodeSize": "0x6000", - "maxCodeSizeTransition": "0x0", - "eip150Transition": "0x0", - "eip160Transition": "0x0", - "eip161abcTransition": "0x0", - "eip161dTransition": "0x0", - "eip155Transition": "0x0", - "eip140Transition": "0x0", - "eip211Transition": "0x0", - "eip214Transition": "0x0", - "eip658Transition": "0x0", - "eip145Transition": "0x0", - "eip1014Transition": "0x0", - "eip1052Transition": "0x0", - "eip1283Transition": "0x0", - "eip1283DisableTransition": "0x0", - "eip152Transition": "0x0", - "eip1108Transition": "0x0", - "eip1344Transition": "0x0", - "eip1884Transition": "0x0", - "eip2028Transition": "0x0", - "eip2200Transition": "0x0", - "eip2565Transition": "0x0", - "eip2929Transition": "0x0", - "eip2930Transition": "0x0", - "eip1559Transition": "0x0", - "eip3198Transition": "0x0", - "eip3529Transition": "0x0", - "eip3541Transition": "0x0", - "terminalTotalDifficulty": "3C6568F12E8000", - "mergeForkIdTransition": "0x0", - "beaconChainGenesisTimestamp": "0x62b07d60", - "eip3855TransitionTimestamp": "0x63FD7D60", - "eip3651TransitionTimestamp": "0x63FD7D60", - "eip3860TransitionTimestamp": "0x63FD7D60", - "eip1153TransitionTimestamp": "0x65B97D60", - "eip4788TransitionTimestamp": "0x65B97D60", - "eip5656TransitionTimestamp": "0x65B97D60", - "eip6780TransitionTimestamp": "0x65B97D60", - "eip2537TransitionTimestamp": "0x67C7FD60", - "eip2935TransitionTimestamp": "0x67C7FD60", - "eip2935RingBufferSize": "0x5FFD0", - "eip7702TransitionTimestamp": "0x67C7FD60", - "minHistoryRetentionEpochs": "0x0", - "eip7934MaxRlpBlockSize": "0x0" - }, - "genesis": { - "seal": { - "ethereum": { - "nonce": "0x1", - "mixHash": "0x0000000000000000000000000000000000000000000000320000000000000000" - } - }, - "number": "0x0", - "difficulty": "0x1", - "author": "0x0000000000000000000000000000000000000000", - "timestamp": "0x0", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000", - "gasLimit": "0x4000000000000", - "baseFeePerGas": "0x5f5e100" - }, - "nodes": [], - "accounts": { - "26E554a8acF9003b83495c7f45F06edCB803d4e3": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "aF24Ca6c2831f4d4F629418b50C227DF0885613A": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "0000000000000000000000000000123412341234": { - "balance": "0xDE0B6B3A7640000" - } - } -} diff --git a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos51.json b/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos51.json deleted file mode 100644 index 12cccf6fc..000000000 --- a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos51.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "name": "Arbitrum System Test Chain", - "dataDir": "arbitrum-system-test", - "engine": { - "Arbitrum": { - "initialArbOSVersion": 51, - "initialChainOwner": "0x0000000000000000000000000000000000000000", - "genesisBlockNum": 0, - "enableArbOS": true, - "allowDebugPrecompiles": true, - "dataAvailabilityCommittee": false - } - }, - "params": { - "gasLimitBoundDivisor": "0x400", - "accountStartNonce": "0x0", - "maximumExtraDataSize": "0x20", - "minGasLimit": "0x1388", - "networkID": "0x64aba", - "forkBlock": "0x0", - "maxCodeSize": "0x6000", - "maxCodeSizeTransition": "0x0", - "eip150Transition": "0x0", - "eip160Transition": "0x0", - "eip161abcTransition": "0x0", - "eip161dTransition": "0x0", - "eip155Transition": "0x0", - "eip140Transition": "0x0", - "eip211Transition": "0x0", - "eip214Transition": "0x0", - "eip658Transition": "0x0", - "eip145Transition": "0x0", - "eip1014Transition": "0x0", - "eip1052Transition": "0x0", - "eip1283Transition": "0x0", - "eip1283DisableTransition": "0x0", - "eip152Transition": "0x0", - "eip1108Transition": "0x0", - "eip1344Transition": "0x0", - "eip1884Transition": "0x0", - "eip2028Transition": "0x0", - "eip2200Transition": "0x0", - "eip2565Transition": "0x0", - "eip2929Transition": "0x0", - "eip2930Transition": "0x0", - "eip1559Transition": "0x0", - "eip3198Transition": "0x0", - "eip3529Transition": "0x0", - "eip3541Transition": "0x0", - "terminalTotalDifficulty": "3C6568F12E8000", - "mergeForkIdTransition": "0x0", - "beaconChainGenesisTimestamp": "0x62b07d60", - "eip3855TransitionTimestamp": "0x63FD7D60", - "eip3651TransitionTimestamp": "0x63FD7D60", - "eip3860TransitionTimestamp": "0x63FD7D60", - "eip1153TransitionTimestamp": "0x65B97D60", - "eip4788TransitionTimestamp": "0x65B97D60", - "eip5656TransitionTimestamp": "0x65B97D60", - "eip6780TransitionTimestamp": "0x65B97D60", - "eip2537TransitionTimestamp": "0x67C7FD60", - "eip2935TransitionTimestamp": "0x67C7FD60", - "eip2935RingBufferSize": "0x5FFD0", - "eip7702TransitionTimestamp": "0x67C7FD60", - "minHistoryRetentionEpochs": "0x0", - "eip7934MaxRlpBlockSize": "0x0" - }, - "genesis": { - "seal": { - "ethereum": { - "nonce": "0x1", - "mixHash": "0x0000000000000000000000000000000000000000000000330000000000000000" - } - }, - "number": "0x0", - "difficulty": "0x1", - "author": "0x0000000000000000000000000000000000000000", - "timestamp": "0x0", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000", - "gasLimit": "0x4000000000000", - "baseFeePerGas": "0x5f5e100" - }, - "nodes": [], - "accounts": { - "26E554a8acF9003b83495c7f45F06edCB803d4e3": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "aF24Ca6c2831f4d4F629418b50C227DF0885613A": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "0000000000000000000000000000123412341234": { - "balance": "0xDE0B6B3A7640000" - } - } -} diff --git a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos11.json b/src/Nethermind.Arbitrum/Properties/chainspec/system-test-chainspec.template similarity index 82% rename from src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos11.json rename to src/Nethermind.Arbitrum/Properties/chainspec/system-test-chainspec.template index 1cf480a83..a79735137 100644 --- a/src/Nethermind.Arbitrum/Properties/chainspec/arbitrum-system-test-arbos11.json +++ b/src/Nethermind.Arbitrum/Properties/chainspec/system-test-chainspec.template @@ -3,7 +3,7 @@ "dataDir": "arbitrum-system-test", "engine": { "Arbitrum": { - "initialArbOSVersion": 11, + "initialArbOSVersion": {{ARBOS_VERSION}}, "initialChainOwner": "0x0000000000000000000000000000000000000000", "genesisBlockNum": 0, "enableArbOS": true, @@ -18,7 +18,7 @@ "minGasLimit": "0x1388", "networkID": "0x64aba", "forkBlock": "0x0", - "maxCodeSize": "0x6000", + "maxCodeSize": "{{MAX_CODE_SIZE}}", "maxCodeSizeTransition": "0x0", "eip150Transition": "0x0", "eip160Transition": "0x0", @@ -68,7 +68,7 @@ "seal": { "ethereum": { "nonce": "0x1", - "mixHash": "0x00000000000000000000000000000000000000000000000B0000000000000000" + "mixHash": "{{MIX_HASH}}" } }, "number": "0x0", @@ -81,15 +81,5 @@ "baseFeePerGas": "0x5f5e100" }, "nodes": [], - "accounts": { - "26E554a8acF9003b83495c7f45F06edCB803d4e3": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "aF24Ca6c2831f4d4F629418b50C227DF0885613A": { - "balance": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7" - }, - "0000000000000000000000000000123412341234": { - "balance": "0xDE0B6B3A7640000" - } - } + "accounts": {{ACCOUNTS}} } diff --git a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos11.json b/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos11.json deleted file mode 100644 index 06c3ab0ac..000000000 --- a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos11.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/NethermindEth/core-scripts/refs/heads/main/schemas/config.json", - "Init": { - "ChainSpecPath": "chainspec/arbitrum-system-test-arbos11.json", - "BaseDbPath": "nethermind_db/arbitrum-system-test", - "LogFileName": "arbitrum-system-test.log" - }, - "TxPool": { - "BlobsSupport": "Disabled" - }, - "Sync": { - "NetworkingEnabled": false, - "FastSync": false, - "SnapSync": false, - "FastSyncCatchUpHeightDelta": "10000000000" - }, - "Discovery": { - "DiscoveryVersion": "V5" - }, - "JsonRpc": { - "Enabled": true, - "Port": 20545, - "EnginePort": 20551, - "UnsecureDevNoRpcAuthentication": true, - "AdditionalRpcUrls": [ - "http://localhost:28551|http;ws|net;eth;subscribe;web3;client;debug" - ], - "EnabledModules": [ - "Admin", - "Clique", - "Consensus", - "Db", - "Debug", - "Deposit", - "Erc20", - "Eth", - "Evm", - "Net", - "Nft", - "Parity", - "Personal", - "Proof", - "Subscribe", - "Trace", - "TxPool", - "Vault", - "Web3", - "Arbitrum" - ] - }, - "Pruning": { - "PruningBoundary": 192 - }, - "Blocks": { - "SecondsPerSlot": 2 - }, - "Merge": { - "Enabled": true - } -} diff --git a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos20.json b/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos20.json deleted file mode 100644 index fe68ed4f5..000000000 --- a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos20.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/NethermindEth/core-scripts/refs/heads/main/schemas/config.json", - "Init": { - "ChainSpecPath": "chainspec/arbitrum-system-test-arbos20.json", - "BaseDbPath": "nethermind_db/arbitrum-system-test", - "LogFileName": "arbitrum-system-test.log" - }, - "TxPool": { - "BlobsSupport": "Disabled" - }, - "Sync": { - "NetworkingEnabled": false, - "FastSync": false, - "SnapSync": false, - "FastSyncCatchUpHeightDelta": "10000000000" - }, - "Discovery": { - "DiscoveryVersion": "V5" - }, - "JsonRpc": { - "Enabled": true, - "Port": 20545, - "EnginePort": 20551, - "UnsecureDevNoRpcAuthentication": true, - "AdditionalRpcUrls": [ - "http://localhost:28551|http;ws|net;eth;subscribe;web3;client;debug" - ], - "EnabledModules": [ - "Admin", - "Clique", - "Consensus", - "Db", - "Debug", - "Deposit", - "Erc20", - "Eth", - "Evm", - "Net", - "Nft", - "Parity", - "Personal", - "Proof", - "Subscribe", - "Trace", - "TxPool", - "Vault", - "Web3", - "Arbitrum" - ] - }, - "Pruning": { - "PruningBoundary": 192 - }, - "Blocks": { - "SecondsPerSlot": 2 - }, - "Merge": { - "Enabled": true - } -} diff --git a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos30.json b/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos30.json deleted file mode 100644 index f16b1b695..000000000 --- a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos30.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/NethermindEth/core-scripts/refs/heads/main/schemas/config.json", - "Init": { - "ChainSpecPath": "chainspec/arbitrum-system-test-arbos30.json", - "BaseDbPath": "nethermind_db/arbitrum-system-test", - "LogFileName": "arbitrum-system-test.log" - }, - "TxPool": { - "BlobsSupport": "Disabled" - }, - "Sync": { - "NetworkingEnabled": false, - "FastSync": false, - "SnapSync": false, - "FastSyncCatchUpHeightDelta": "10000000000" - }, - "Discovery": { - "DiscoveryVersion": "V5" - }, - "JsonRpc": { - "Enabled": true, - "Port": 20545, - "EnginePort": 20551, - "UnsecureDevNoRpcAuthentication": true, - "AdditionalRpcUrls": [ - "http://localhost:28551|http;ws|net;eth;subscribe;web3;client;debug" - ], - "EnabledModules": [ - "Admin", - "Clique", - "Consensus", - "Db", - "Debug", - "Deposit", - "Erc20", - "Eth", - "Evm", - "Net", - "Nft", - "Parity", - "Personal", - "Proof", - "Subscribe", - "Trace", - "TxPool", - "Vault", - "Web3", - "Arbitrum" - ] - }, - "Pruning": { - "PruningBoundary": 192 - }, - "Blocks": { - "SecondsPerSlot": 2 - }, - "Merge": { - "Enabled": true - } -} diff --git a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos40.json b/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos40.json deleted file mode 100644 index 9ad3bf4c9..000000000 --- a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos40.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/NethermindEth/core-scripts/refs/heads/main/schemas/config.json", - "Init": { - "ChainSpecPath": "chainspec/arbitrum-system-test-arbos40.json", - "BaseDbPath": "nethermind_db/arbitrum-system-test", - "LogFileName": "arbitrum-system-test.log" - }, - "TxPool": { - "BlobsSupport": "Disabled" - }, - "Sync": { - "NetworkingEnabled": false, - "FastSync": false, - "SnapSync": false, - "FastSyncCatchUpHeightDelta": "10000000000" - }, - "Discovery": { - "DiscoveryVersion": "V5" - }, - "JsonRpc": { - "Enabled": true, - "Port": 20545, - "EnginePort": 20551, - "UnsecureDevNoRpcAuthentication": true, - "AdditionalRpcUrls": [ - "http://localhost:28551|http;ws|net;eth;subscribe;web3;client;debug" - ], - "EnabledModules": [ - "Admin", - "Clique", - "Consensus", - "Db", - "Debug", - "Deposit", - "Erc20", - "Eth", - "Evm", - "Net", - "Nft", - "Parity", - "Personal", - "Proof", - "Subscribe", - "Trace", - "TxPool", - "Vault", - "Web3", - "Arbitrum" - ] - }, - "Pruning": { - "PruningBoundary": 192 - }, - "Blocks": { - "SecondsPerSlot": 2 - }, - "Merge": { - "Enabled": true - } -} diff --git a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos50.json b/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos50.json deleted file mode 100644 index 05a7bc4cf..000000000 --- a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos50.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/NethermindEth/core-scripts/refs/heads/main/schemas/config.json", - "Init": { - "ChainSpecPath": "chainspec/arbitrum-system-test-arbos50.json", - "BaseDbPath": "nethermind_db/arbitrum-system-test", - "LogFileName": "arbitrum-system-test.log" - }, - "TxPool": { - "BlobsSupport": "Disabled" - }, - "Sync": { - "NetworkingEnabled": false, - "FastSync": false, - "SnapSync": false, - "FastSyncCatchUpHeightDelta": "10000000000" - }, - "Discovery": { - "DiscoveryVersion": "V5" - }, - "JsonRpc": { - "Enabled": true, - "Port": 20545, - "EnginePort": 20551, - "UnsecureDevNoRpcAuthentication": true, - "AdditionalRpcUrls": [ - "http://localhost:28551|http;ws|net;eth;subscribe;web3;client;debug" - ], - "EnabledModules": [ - "Admin", - "Clique", - "Consensus", - "Db", - "Debug", - "Deposit", - "Erc20", - "Eth", - "Evm", - "Net", - "Nft", - "Parity", - "Personal", - "Proof", - "Subscribe", - "Trace", - "TxPool", - "Vault", - "Web3", - "Arbitrum" - ] - }, - "Pruning": { - "PruningBoundary": 192 - }, - "Blocks": { - "SecondsPerSlot": 2 - }, - "Merge": { - "Enabled": true - } -} diff --git a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos51.json b/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos51.json deleted file mode 100644 index d483789d4..000000000 --- a/src/Nethermind.Arbitrum/Properties/configs/arbitrum-system-test-arbos51.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/NethermindEth/core-scripts/refs/heads/main/schemas/config.json", - "Init": { - "ChainSpecPath": "chainspec/arbitrum-system-test-arbos51.json", - "BaseDbPath": "nethermind_db/arbitrum-system-test", - "LogFileName": "arbitrum-system-test.log" - }, - "TxPool": { - "BlobsSupport": "Disabled" - }, - "Sync": { - "NetworkingEnabled": false, - "FastSync": false, - "SnapSync": false, - "FastSyncCatchUpHeightDelta": "10000000000" - }, - "Discovery": { - "DiscoveryVersion": "V5" - }, - "JsonRpc": { - "Enabled": true, - "Port": 20545, - "EnginePort": 20551, - "UnsecureDevNoRpcAuthentication": true, - "AdditionalRpcUrls": [ - "http://localhost:28551|http;ws|net;eth;subscribe;web3;client;debug" - ], - "EnabledModules": [ - "Admin", - "Clique", - "Consensus", - "Db", - "Debug", - "Deposit", - "Erc20", - "Eth", - "Evm", - "Net", - "Nft", - "Parity", - "Personal", - "Proof", - "Subscribe", - "Trace", - "TxPool", - "Vault", - "Web3", - "Arbitrum" - ] - }, - "Pruning": { - "PruningBoundary": 192 - }, - "Blocks": { - "SecondsPerSlot": 2 - }, - "Merge": { - "Enabled": true - } -} diff --git a/src/Nethermind.Arbitrum/Properties/scripts/generate-system-test-config.sh b/src/Nethermind.Arbitrum/Properties/scripts/generate-system-test-config.sh new file mode 100755 index 000000000..7e550f689 --- /dev/null +++ b/src/Nethermind.Arbitrum/Properties/scripts/generate-system-test-config.sh @@ -0,0 +1,127 @@ +#!/bin/bash + +set -e + +# Parse arguments +ARBOS_VERSION=${1:-40} +ACCOUNTS_FILE=${2:-"src/Nethermind.Arbitrum/Properties/accounts/default.json"} +CONFIG_NAME=${3:-"arbitrum-system-test"} +MAX_CODE_SIZE=${4:-"0x6000"} +TEMPLATE_FILE="src/Nethermind.Arbitrum/Properties/chainspec/chainspec.template" +BUILD_DIR="src/Nethermind/src/Nethermind/artifacts/bin/Nethermind.Runner/debug" + +# Output files +CHAINSPEC_FILE="${BUILD_DIR}/chainspec/${CONFIG_NAME}.json" +CONFIG_FILE="${BUILD_DIR}/configs/${CONFIG_NAME}.json" + +# Validate MAX_CODE_SIZE is hex format +if [[ ! $MAX_CODE_SIZE =~ ^0x[0-9a-fA-F]+$ ]]; then + echo "Error: MAX_CODE_SIZE must be in hex format (e.g., 0x6000)" + exit 1 +fi + +# Auto-calculate mixHash from ArbOS version +VERSION_HEX=$(printf '%02X' $ARBOS_VERSION) +MIX_HASH="0x0000000000000000000000000000000000000000000000${VERSION_HEX}0000000000000000" + +# Check if accounts file exists +if [ ! -f "$ACCOUNTS_FILE" ]; then + echo "Error: Accounts file '$ACCOUNTS_FILE' not found" + exit 1 +fi + +# Read accounts +ACCOUNTS=$(cat "$ACCOUNTS_FILE" | jq -c .) + +# Check if template exists +if [ ! -f "$TEMPLATE_FILE" ]; then + echo "Error: Template file not found at $TEMPLATE_FILE" + exit 1 +fi + +# Create directories if needed +mkdir -p "${BUILD_DIR}/chainspec" +mkdir -p "${BUILD_DIR}/configs" + +# Generate chainspec +echo "Generating configuration:" +echo " Config Name: $CONFIG_NAME" +echo " ArbOS Version: $ARBOS_VERSION" +echo " MixHash: $MIX_HASH (auto-calculated)" +echo " Max Code Size: $MAX_CODE_SIZE" +echo " Accounts: $ACCOUNTS_FILE" +echo " Chainspec: $CHAINSPEC_FILE" +echo " Config: $CONFIG_FILE" + +# Create chainspec file +sed "s|{{ARBOS_VERSION}}|$ARBOS_VERSION|g" "$TEMPLATE_FILE" | \ +sed "s|{{MIX_HASH}}|$MIX_HASH|g" | \ +sed "s|{{MAX_CODE_SIZE}}|$MAX_CODE_SIZE|g" | \ +sed "s|{{ACCOUNTS}}|{}|g" | \ +jq --argjson accounts "$ACCOUNTS" '.accounts = $accounts' > "$CHAINSPEC_FILE" + +# Create config file that points to the chainspec +cat > "$CONFIG_FILE" << EOF +{ + "\$schema": "https://raw.githubusercontent.com/NethermindEth/core-scripts/refs/heads/main/schemas/config.json", + "Init": { + "ChainSpecPath": "chainspec/${CONFIG_NAME}.json", + "BaseDbPath": "nethermind_db/arbitrum-system-test", + "LogFileName": "arbitrum-system-test.log" + }, + "TxPool": { + "BlobsSupport": "Disabled" + }, + "Sync": { + "NetworkingEnabled": false, + "FastSync": false, + "SnapSync": false, + "FastSyncCatchUpHeightDelta": "10000000000" + }, + "Discovery": { + "DiscoveryVersion": "V5" + }, + "JsonRpc": { + "Enabled": true, + "Port": 20545, + "EnginePort": 20551, + "UnsecureDevNoRpcAuthentication": true, + "AdditionalRpcUrls": [ + "http://localhost:28551|http;ws|net;eth;subscribe;web3;client;debug" + ], + "EnabledModules": [ + "Admin", + "Clique", + "Consensus", + "Db", + "Debug", + "Deposit", + "Erc20", + "Eth", + "Evm", + "Net", + "Nft", + "Parity", + "Personal", + "Proof", + "Subscribe", + "Trace", + "TxPool", + "Vault", + "Web3", + "Arbitrum" + ] + }, + "Pruning": { + "PruningBoundary": 192 + }, + "Blocks": { + "SecondsPerSlot": 2 + }, + "Merge": { + "Enabled": true + } +} +EOF + +echo "✓ Configuration generated successfully"