mirror of
https://github.com/datahaven-xyz/datahaven
synced 2026-05-24 09:50:01 +00:00
This PR restructures and port the block validation test suite from Moonbeam and add the necessary infrastructure for contract-based testing. ### Test Suites Added **Block Validation Suite 1** (`test-block-1.ts`) - *Refactored from original `test-block.ts`* - T01: Validates block number increments correctly after manual block creation - T02: Checks block timestamps are valid and within expected bounds - T03: Verifies complete block structure including gasLimit, difficulty, receiptsRoot, transactionsRoot, logsBloom, and other Ethereum-compatible fields - T04: Confirms blocks are retrievable by hash - T05: Confirms blocks are retrievable by number **Block Validation Suite 2** (`test-block-2.ts`) - *New* - T01: Verifies block number persistence across test cases - T02: Validates parent-child block hash linkage in the chain **Block Gas Limits Suite** (`test-block-gas.ts`) - *New* - T01-T06: Tests all three transaction types (legacy, eip1559, eip2930) can deploy contracts at max extrinsic gas limit, and correctly reject transactions exceeding that limit - T07: Deploys `BlockVariables` contract and verifies runtime gas limit is accessible from within contract execution **Block Genesis Suite** (`test-block-genesis.ts`) - *New* - T01: Validates genesis block (block 0) contains correct Ethereum-compatible structure and empty transaction/uncle lists - T02: Confirms genesis block is retrievable by hash ### Infrastructure Additions **Contract Deployment Helpers** - `fetchCompiledContract`: Loads compiled Solidity artifacts with ABI and bytecode from JSON output - `deployCompiledContract`: Handles contract deployment with support for legacy, EIP-1559, and EIP-2930 transaction types, including gas parameter configuration **Solidity Test Fixtures** - `BlockVariables.sol`: Exposes `block.gaslimit`, `block.chainid`, `block.number` via view functions for runtime validation - `Fibonacci.sol`: Provides `fib2(n)` pure function for computational gas testing - `MultiplyBy7.sol`: Minimal pure function contract for basic deployment testing **Enhanced Runtime Constants** - Added `EXTRINSIC_GAS_LIMIT` (52M), `BLOCK_WEIGHT_LIMIT` (2T), `MAX_POV_SIZE` (10MB) for all three environments - Constants derived from and documented against Rust runtime configuration in `operator/runtime/*/src/lib.rs` ### Dependencies - Added `solc@0.8.30` and supporting packages (`yargs`, `command-exists`, `js-sha3`, `memorystream`) for local Solidity compilation
85 lines
No EOL
3.9 KiB
JSON
85 lines
No EOL
3.9 KiB
JSON
{
|
|
"name": "@datahaven/e2e-test",
|
|
"module": "index.ts",
|
|
"type": "module",
|
|
"private": true,
|
|
"scripts": {
|
|
"cli": "bun run cli/index.ts",
|
|
"fmt": "biome check .",
|
|
"fmt:fix": "biome check --write .",
|
|
"build:docker:operator": "docker build --no-cache --platform linux/amd64 -t datahavenxyz/datahaven:local -f ./docker/datahaven-node-local.dockerfile ../.",
|
|
"generate:wagmi": "wagmi generate",
|
|
"generate:snowbridge-cfgs": "bun -e \"import {generateSnowbridgeConfigs} from './scripts/gen-snowbridge-cfgs.ts'; await generateSnowbridgeConfigs()\"",
|
|
"generate:types": "(cd ../operator && cargo build --release) && bun x papi add --wasm \"../operator/target/release/wbuild/datahaven-stagenet-runtime/datahaven_stagenet_runtime.wasm\" datahaven",
|
|
"generate:types:fast": "(cd ../operator && cargo build --release --features fast-runtime) && bun x papi add --wasm \"../operator/target/release/wbuild/datahaven-stagenet-runtime/datahaven_stagenet_runtime.wasm\" datahaven",
|
|
"start:e2e:verified": "bun cli launch --verified --blockscout --deploy-contracts --setup-validators --update-validator-set --fund-validators",
|
|
"start:e2e:verified:relayers": "bun cli launch --verified --blockscout --deploy-contracts --setup-validators --update-validator-set --fund-validators --relayer --datahaven",
|
|
"start:e2e:local": "LOG_LEVEL=debug bun start:e2e:ci --bd",
|
|
"start:e2e:ci": "bun cli launch --datahaven --no-build-datahaven --launch-kurtosis --deploy-contracts --fund-validators --setup-validators --update-validator-set --set-parameters --relayer --clean-network --slot-time 2",
|
|
"start:e2e:minrelayer": "bun cli launch --relayer --deploy-contracts --no-setup-validators --no-update-validator-set --no-fund-validators --datahaven",
|
|
"stop:docker:datahaven": "docker rm -f $(docker ps -aq --filter name='^datahaven-') 2>/dev/null || true; docker network rm datahaven-net || true",
|
|
"stop:docker:relayer": "docker rm -f $(docker ps -aq --filter name='^snowbridge-') 2>/dev/null || true",
|
|
"stop:e2e": "bun cli stop --all",
|
|
"stop:dh": "bun cli stop --datahaven --no-enclave --no-relayer ",
|
|
"stop:sb": "bun cli stop --relayer --no-datahaven --no-enclave",
|
|
"stop:eth": "bun cli stop --enclave --no-datahaven --no-relayer",
|
|
"stop:engine": "bun cli stop --kurtosisEngine --no-datahaven --no-relayer --no-enclave",
|
|
"test:e2e": "bun test ./suites --timeout 900000",
|
|
"compile:contracts": "bun x tsx scripts/compile-contracts.ts compile",
|
|
"test:e2e:parallel": "bun scripts/test-parallel.ts",
|
|
"moonwall:test": "moonwall test dev_datahaven",
|
|
"moonwall:run": "moonwall run dev_datahaven",
|
|
"typecheck": "tsc --noEmit",
|
|
"tsgo": "tsgo tsc --noEmit --pretty --skipLibCheck",
|
|
"postinstall": "papi"
|
|
},
|
|
"devDependencies": {
|
|
"@types/bun": "latest",
|
|
"@types/yargs": "^17.0.33",
|
|
"@typescript/native-preview": "^7.0.0-dev.20250618.1"
|
|
},
|
|
"peerDependencies": {
|
|
"typescript": "^5.8.3"
|
|
},
|
|
"dependencies": {
|
|
"@biomejs/biome": "^2.0.0",
|
|
"@commander-js/extra-typings": "^13.1.0",
|
|
"@dotenvx/dotenvx": "^1.44.2",
|
|
"@inquirer/prompts": "^7.5.3",
|
|
"@moonwall/cli": "^5.15.0",
|
|
"@moonwall/util": "^5.15.0",
|
|
"@noble/curves": "^1.9.2",
|
|
"@noble/hashes": "^1.8.0",
|
|
"@polkadot-api/descriptors": "file:.papi/descriptors",
|
|
"@types/dockerode": "^3.3.41",
|
|
"@types/node": "^22.15.32",
|
|
"@wagmi/cli": "^2.3.1",
|
|
"@wagmi/core": "^2.17.3",
|
|
"chalk": "^5.4.1",
|
|
"commander": "^13.1.0",
|
|
"dockerode": "^4.0.7",
|
|
"dotenv": "^16.5.0",
|
|
"octokit": "^4.1.4",
|
|
"ora": "^8.2.0",
|
|
"pino": "^9.7.0",
|
|
"pino-pretty": "^13.0.0",
|
|
"polkadot-api": "^1.15.1",
|
|
"solc": "^0.8.30",
|
|
"tiny-invariant": "^1.3.3",
|
|
"viem": "^2.31.3",
|
|
"wagmi": "^2.15.6",
|
|
"yaml": "^2.8.0",
|
|
"yargs": "^18.0.0",
|
|
"zod": "^3.25.67"
|
|
},
|
|
"trustedDependencies": [
|
|
"@biomejs/biome",
|
|
"bufferutil",
|
|
"cpu-features",
|
|
"esbuild",
|
|
"keccak",
|
|
"protobufjs",
|
|
"ssh2",
|
|
"utf-8-validate"
|
|
]
|
|
} |