diff --git a/alexfdata/config.yml b/alexfdata/config.yml index 45915e355a9e..aa11337bb60c 100644 --- a/alexfdata/config.yml +++ b/alexfdata/config.yml @@ -18,6 +18,7 @@ CAPELLA_FORK_EPOCH: 0 CAPELLA_FORK_VERSION: 0x20000092 MAX_WITHDRAWALS_PER_PAYLOAD: 16 +# Deneb DENEB_FORK_VERSION: 0x20000093 # Time parameters diff --git a/devnet/eth-devnet/Dockerfile b/devnet/eth-devnet/Dockerfile new file mode 100644 index 000000000000..fd6aeea4af65 --- /dev/null +++ b/devnet/eth-devnet/Dockerfile @@ -0,0 +1,46 @@ +FROM ubuntu:22.04 + +# Install dependencies +RUN apt-get update && \ + apt-get install -y software-properties-common wget curl libgomp1 build-essential git gnupg openssl && \ + rm -rf /var/lib/apt/lists/* + +# Install Node.js (required for Bundler) +RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \ + apt-get install -y nodejs && \ + npm install -g yarn + +# Set working directory +WORKDIR /app + +# Copy binaries and scripts into the image +COPY geth \ + beacon-chain-v5.1.0-linux-amd64 \ + validator-v5.1.0-linux-amd64 \ + prysmctl-v5.1.0-linux-amd64 \ + scripts/config.yml \ + start.sh ./ + +# Make binaries and scripts executable +RUN chmod +x geth \ + beacon-chain-v5.1.0-linux-amd64 \ + validator-v5.1.0-linux-amd64 \ + prysmctl-v5.1.0-linux-amd64 \ + start.sh + +# Clone and set up Bundler +RUN git clone https://github.com/eth-infinitism/bundler.git /app/bundler && \ + cd /app/bundler && \ + yarn install --ignore-engines && \ + yarn preprocess + +# Expose necessary ports (common ports; actual mapping happens in docker-compose) +EXPOSE 8545 8546 8551 6060 30303 30304 \ + 13000 13001 12000 12001 \ + 4000 4001 3500 3501 \ + 7000 7001 7500 7501 \ + 8080 8081 8082 8083 \ + 3000 + +# Entry point +CMD ["/app/start.sh"] diff --git a/devnet/eth-devnet/beacon-chain-v5.1.0-linux-amd64 b/devnet/eth-devnet/beacon-chain-v5.1.0-linux-amd64 new file mode 100755 index 000000000000..14e5635fa4ba Binary files /dev/null and b/devnet/eth-devnet/beacon-chain-v5.1.0-linux-amd64 differ diff --git a/devnet/eth-devnet/bootnode b/devnet/eth-devnet/bootnode new file mode 100755 index 000000000000..883bfb5a221f Binary files /dev/null and b/devnet/eth-devnet/bootnode differ diff --git a/devnet/eth-devnet/docker-compose.yml b/devnet/eth-devnet/docker-compose.yml new file mode 100644 index 000000000000..81592d5864f9 --- /dev/null +++ b/devnet/eth-devnet/docker-compose.yml @@ -0,0 +1,85 @@ +version: '3.8' +services: + prysmctl-generate-genesis: + build: + context: . + dockerfile: prysmctl.Dockerfile + container_name: prysmctl-generate-genesis + volumes: + - ./scripts/:/app/scripts + - ./node1/data:/app/node1/data + - ./node2/data:/app/node2/data + command: ["/app/scripts/generate-genesis.sh"] + + node1: + build: . + container_name: node1 + volumes: + - ./node1/data:/data + - ./node1/nodekey:/app/nodekey + - ./node1/beaconkey:/app/beaconkey + - ./node1/config.toml:/app/config.toml + environment: + NODE_IDENTITY: "node-1" + VALIDATOR_START_INDEX: 0 + PEER_NODES: "/ip4/172.20.0.3/tcp/13001/p2p/16Uiu2HAmFz274W7rTgaeoifJwmtsRn9KVkvrvAmfNvg9gdhw89Gg /ip4/172.20.0.3/udp/12001/p2p/16Uiu2HAmFz274W7rTgaeoifJwmtsRn9KVkvrvAmfNvg9gdhw89Gg" + ports: + - "8545:8545" + - "8546:8546" + - "8551:8551" + - "6060:6060" + - "30303:30303" + - "13000:13000" + - "12000:12000/udp" + - "4000:4000" + - "3500:3500" + - "7000:7000" + - "7500:7500" + - "8080:8080" + - "8081:8081" + - "3000:3000" + networks: + devnet: + ipv4_address: 172.20.0.2 + depends_on: + - prysmctl-generate-genesis + + node2: + build: . + container_name: node2 + volumes: + - ./node2/data:/data + - ./node2/nodekey:/app/nodekey + - ./node2/beaconkey:/app/beaconkey + - ./node2/config.toml:/app/config.toml + environment: + NODE_IDENTITY: "node-2" + VALIDATOR_START_INDEX: 1 + PEER_NODES: "/ip4/172.20.0.2/tcp/13000/p2p/16Uiu2HAmNYTUE5jNA1MidN53yaojJU22JKRnfDTRvudkeb7pUXTx /ip4/172.20.0.2/udp/12000/p2p/16Uiu2HAmNYTUE5jNA1MidN53yaojJU22JKRnfDTRvudkeb7pUXTx" + ports: + - "8547:8545" + - "8548:8546" + - "8553:8551" + - "6061:6060" + - "30304:30303" + - "13001:13000" + - "12001:12000/udp" + - "4001:4000" + - "3501:3500" + - "7001:7000" + - "7501:7500" + - "8082:8080" + - "8083:8081" + - "3001:3000" + networks: + devnet: + ipv4_address: 172.20.0.3 + depends_on: + - prysmctl-generate-genesis + +networks: + devnet: + driver: bridge + ipam: + config: + - subnet: 172.20.0.0/16 diff --git a/devnet/eth-devnet/geth b/devnet/eth-devnet/geth new file mode 100755 index 000000000000..f5e454a7ab15 Binary files /dev/null and b/devnet/eth-devnet/geth differ diff --git a/devnet/eth-devnet/node1/beaconkey b/devnet/eth-devnet/node1/beaconkey new file mode 100644 index 000000000000..173cd6da86dc --- /dev/null +++ b/devnet/eth-devnet/node1/beaconkey @@ -0,0 +1 @@ +620801c58309976dbc723994edfc7f215793a712f1b96fafd927a3f60bf0774a \ No newline at end of file diff --git a/devnet/eth-devnet/node1/config.toml b/devnet/eth-devnet/node1/config.toml new file mode 100644 index 000000000000..0799c4771c7c --- /dev/null +++ b/devnet/eth-devnet/node1/config.toml @@ -0,0 +1,107 @@ +[Eth] +NetworkId = 0 +SyncMode = "snap" +EthDiscoveryURLs = [] +SnapDiscoveryURLs = [] +NoPruning = false +NoPrefetch = false +TxLookupLimit = 2350000 +TransactionHistory = 2350000 +StateHistory = 90000 +LightPeers = 100 +DatabaseCache = 512 +DatabaseFreezer = "" +TrieCleanCache = 154 +TrieDirtyCache = 256 +TrieTimeout = 3600000000000 +SnapshotCache = 102 +Preimages = false +FilterLogCacheSize = 32 +EnablePreimageRecording = false +VMTrace = "" +VMTraceJsonConfig = "" +RPCGasCap = 50000000 +RPCEVMTimeout = 5000000000 +RPCTxFeeCap = 1e+00 +Rip7560MaxBundleSize = 0 +Rip7560MaxBundleGas = 0 +Rip7560PullUrls = ["http://localhost:3001/rpc"] +Rip7560AcceptPush = false + +[Eth.Miner] +GasCeil = 30000000 +GasPrice = 1000000 +Recommit = 2000000000 + +[Eth.TxPool] +Locals = [] +NoLocals = false +Journal = "transactions.rlp" +Rejournal = 3600000000000 +PriceLimit = 1 +PriceBump = 10 +AccountSlots = 16 +GlobalSlots = 5120 +AccountQueue = 64 +GlobalQueue = 1024 +Lifetime = 10800000000000 + +[Eth.BlobPool] +Datadir = "blobpool" +Datacap = 2684354560 +PriceBump = 100 + +[Eth.GPO] +Blocks = 20 +Percentile = 60 +MaxHeaderHistory = 1024 +MaxBlockHistory = 1024 +MaxPrice = 500000000000 +IgnorePrice = 2 + +[Node] +DataDir = "/data/geth" +IPCPath = "geth.ipc" +HTTPHost = "" +HTTPPort = 8545 +HTTPVirtualHosts = ["localhost"] +HTTPModules = ["net", "web3", "eth"] +AuthAddr = "localhost" +AuthPort = 8551 +AuthVirtualHosts = ["localhost"] +WSHost = "" +WSPort = 8546 +WSModules = ["net", "web3", "eth"] +GraphQLVirtualHosts = ["localhost"] +BatchRequestLimit = 1000 +BatchResponseMaxSize = 25000000 + +[Node.P2P] +MaxPeers = 50 +NoDiscovery = false +DiscoveryV4 = true +BootstrapNodes = ["enode://d860a01f9722d78051619d1e2351aba3f43f943f6f00718d1b9baa4101932a1f5011f16bb2b1bb35db20d6fe28fa0bf09636d26a87d31de9ec6203eeedb1f666@18.138.108.67:30303", "enode://22a8232c3abc76a16ae9d6c3b164f98775fe226f0917b0ca871128a74a8e9630b458460865bab457221f1d448dd9791d24c4e5d88786180ac185df813a68d4de@3.209.45.79:30303", "enode://2b252ab6a1d0f971d9722cb839a42cb81db019ba44c08754628ab4a823487071b5695317c8ccd085219c3a03af063495b2f1da8d18218da2d6a82981b45e6ffc@65.108.70.101:30303", "enode://4aeb4ab6c14b23e2c4cfdce879c04b0748a20d8e9b59e25ded2a08143e265c6c25936e74cbc8e641e3312ca288673d91f2f93f8e277de3cfa444ecdaaf982052@157.90.35.166:30303"] +BootstrapNodesV5 = ["enr:-KG4QMOEswP62yzDjSwWS4YEjtTZ5PO6r65CPqYBkgTTkrpaedQ8uEUo1uMALtJIvb2w_WWEVmg5yt1UAuK1ftxUU7QDhGV0aDKQu6TalgMAAAD__________4JpZIJ2NIJpcIQEnfA2iXNlY3AyNTZrMaEDfol8oLr6XJ7FsdAYE7lpJhKMls4G_v6qQOGKJUWGb_uDdGNwgiMog3VkcIIjKA", "enr:-KG4QF4B5WrlFcRhUU6dZETwY5ZzAXnA0vGC__L1Kdw602nDZwXSTs5RFXFIFUnbQJmhNGVU6OIX7KVrCSTODsz1tK4DhGV0aDKQu6TalgMAAAD__________4JpZIJ2NIJpcIQExNYEiXNlY3AyNTZrMaECQmM9vp7KhaXhI-nqL_R0ovULLCFSFTa9CPPSdb1zPX6DdGNwgiMog3VkcIIjKA", "enr:-Ku4QImhMc1z8yCiNJ1TyUxdcfNucje3BGwEHzodEZUan8PherEo4sF7pPHPSIB1NNuSg5fZy7qFsjmUKs2ea1Whi0EBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQOVphkDqal4QzPMksc5wnpuC3gvSC8AfbFOnZY_On34wIN1ZHCCIyg", "enr:-Ku4QP2xDnEtUXIjzJ_DhlCRN9SN99RYQPJL92TMlSv7U5C1YnYLjwOQHgZIUXw6c-BvRg2Yc2QsZxxoS_pPRVe0yK8Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQMeFF5GrS7UZpAH2Ly84aLK-TyvH-dRo0JM1i8yygH50YN1ZHCCJxA", "enr:-Ku4QPp9z1W4tAO8Ber_NQierYaOStqhDqQdOPY3bB3jDgkjcbk6YrEnVYIiCBbTxuar3CzS528d2iE7TdJsrL-dEKoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQMw5fqqkw2hHC4F5HZZDPsNmPdB1Gi8JPQK7pRc9XHh-oN1ZHCCKvg", "enr:-Le4QPUXJS2BTORXxyx2Ia-9ae4YqA_JWX3ssj4E_J-3z1A-HmFGrU8BpvpqhNabayXeOZ2Nq_sbeDgtzMJpLLnXFgAChGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISsaa0Zg2lwNpAkAIkHAAAAAPA8kv_-awoTiXNlY3AyNTZrMaEDHAD2JKYevx89W0CcFJFiskdcEzkH_Wdv9iW42qLK79ODdWRwgiMohHVkcDaCI4I", "enr:-Le4QLHZDSvkLfqgEo8IWGG96h6mxwe_PsggC20CL3neLBjfXLGAQFOPSltZ7oP6ol54OvaNqO02Rnvb8YmDR274uq8ChGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISLosQxg2lwNpAqAX4AAAAAAPA8kv_-ax65iXNlY3AyNTZrMaEDBJj7_dLFACaxBfaI8KZTh_SSJUjhyAyfshimvSqo22WDdWRwgiMohHVkcDaCI4I", "enr:-Le4QH6LQrusDbAHPjU_HcKOuMeXfdEB5NJyXgHWFadfHgiySqeDyusQMvfphdYWOzuSZO9Uq2AMRJR5O4ip7OvVma8BhGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISLY9ncg2lwNpAkAh8AgQIBAAAAAAAAAAmXiXNlY3AyNTZrMaECDYCZTZEksF-kmgPholqgVt8IXr-8L7Nu7YrZ7HUpgxmDdWRwgiMohHVkcDaCI4I", "enr:-Le4QIqLuWybHNONr933Lk0dcMmAB5WgvGKRyDihy1wHDIVlNuuztX62W51voT4I8qD34GcTEOTmag1bcdZ_8aaT4NUBhGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISLY04ng2lwNpAkAh8AgAIBAAAAAAAAAA-fiXNlY3AyNTZrMaEDscnRV6n1m-D9ID5UsURk0jsoKNXt1TIrj8uKOGW6iluDdWRwgiMohHVkcDaCI4I", "enr:-Ku4QHqVeJ8PPICcWk1vSn_XcSkjOkNiTg6Fmii5j6vUQgvzMc9L1goFnLKgXqBJspJjIsB91LTOleFmyWWrFVATGngBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhAMRHkWJc2VjcDI1NmsxoQKLVXFOhp2uX6jeT0DvvDpPcU8FWMjQdR4wMuORMhpX24N1ZHCCIyg", "enr:-Ku4QG-2_Md3sZIAUebGYT6g0SMskIml77l6yR-M_JXc-UdNHCmHQeOiMLbylPejyJsdAPsTHJyjJB2sYGDLe0dn8uYBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhBLY-NyJc2VjcDI1NmsxoQORcM6e19T1T9gi7jxEZjk_sjVLGFscUNqAY9obgZaxbIN1ZHCCIyg", "enr:-Ku4QPn5eVhcoF1opaFEvg1b6JNFD2rqVkHQ8HApOKK61OIcIXD127bKWgAtbwI7pnxx6cDyk_nI88TrZKQaGMZj0q0Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhDayLMaJc2VjcDI1NmsxoQK2sBOLGcUb4AwuYzFuAVCaNHA-dy24UuEKkeFNgCVCsIN1ZHCCIyg", "enr:-Ku4QEWzdnVtXc2Q0ZVigfCGggOVB2Vc1ZCPEc6j21NIFLODSJbvNaef1g4PxhPwl_3kax86YPheFUSLXPRs98vvYsoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhDZBrP2Jc2VjcDI1NmsxoQM6jr8Rb1ktLEsVcKAPa08wCsKUmvoQ8khiOl_SLozf9IN1ZHCCIyg", "enr:-LK4QA8FfhaAjlb_BXsXxSfiysR7R52Nhi9JBt4F8SPssu8hdE1BXQQEtVDC3qStCW60LSO7hEsVHv5zm8_6Vnjhcn0Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhAN4aBKJc2VjcDI1NmsxoQJerDhsJ-KxZ8sHySMOCmTO6sHM3iCFQ6VMvLTe948MyYN0Y3CCI4yDdWRwgiOM", "enr:-LK4QKWrXTpV9T78hNG6s8AM6IO4XH9kFT91uZtFg1GcsJ6dKovDOr1jtAAFPnS2lvNltkOGA9k29BUN7lFh_sjuc9QBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhANAdd-Jc2VjcDI1NmsxoQLQa6ai7y9PMN5hpLe5HmiJSlYzMuzP7ZhwRiwHvqNXdoN0Y3CCI4yDdWRwgiOM"] +StaticNodes = ["enode://10b048786aece365a3e51e196d31cbc2117436cabcf0236e46c7e07ff02345d48a0c5533172ad6ab6c6fd95507adf2508b171d1e1772113dfa93e024a1e58d1a@node2:30304"] +TrustedNodes = [] +ListenAddr = ":30303" +DiscAddr = "" +EnableMsgEvents = false + +[Node.HTTPTimeouts] +ReadTimeout = 30000000000 +ReadHeaderTimeout = 30000000000 +WriteTimeout = 30000000000 +IdleTimeout = 120000000000 + +[Metrics] +HTTP = "127.0.0.1" +Port = 6060 +InfluxDBEndpoint = "http://localhost:8086" +InfluxDBDatabase = "geth" +InfluxDBUsername = "test" +InfluxDBPassword = "test" +InfluxDBTags = "host=localhost" +InfluxDBToken = "test" +InfluxDBBucket = "geth" +InfluxDBOrganization = "geth" diff --git a/devnet/eth-devnet/node1/config.yml b/devnet/eth-devnet/node1/config.yml new file mode 100644 index 000000000000..f1f0c8cf15ae --- /dev/null +++ b/devnet/eth-devnet/node1/config.yml @@ -0,0 +1,34 @@ +CONFIG_NAME: interop +PRESET_BASE: interop + +# Genesis +GENESIS_FORK_VERSION: 0x20000089 + +# Altair +ALTAIR_FORK_EPOCH: 0 +ALTAIR_FORK_VERSION: 0x20000090 + +# Merge +BELLATRIX_FORK_EPOCH: 0 +BELLATRIX_FORK_VERSION: 0x20000091 +TERMINAL_TOTAL_DIFFICULTY: 0 + +# Capella +CAPELLA_FORK_EPOCH: 0 +CAPELLA_FORK_VERSION: 0x20000092 +MAX_WITHDRAWALS_PER_PAYLOAD: 16 + +# Deneb +DENEB_FORK_VERSION: 0x20000093 +DENEB_FORK_EPOCH: 0 + +# Electra +ELECTRA_FORK_VERSION: 0x06000000 +ELECTRA_FORK_EPOCH: 0 + +# Time parameters +SECONDS_PER_SLOT: 3 +SLOTS_PER_EPOCH: 6 + +# Deposit contract +DEPOSIT_CONTRACT_ADDRESS: 0x4242424242424242424242424242424242424242 diff --git a/devnet/eth-devnet/node1/nodekey b/devnet/eth-devnet/node1/nodekey new file mode 100644 index 000000000000..ec1894720526 --- /dev/null +++ b/devnet/eth-devnet/node1/nodekey @@ -0,0 +1 @@ +2a16b520ee5796dcc3c9307ae54d226f55f7c7f31c8b59cd7056f9ed74d38e0a \ No newline at end of file diff --git a/devnet/eth-devnet/node2/beaconkey b/devnet/eth-devnet/node2/beaconkey new file mode 100644 index 000000000000..a69596cc6a01 --- /dev/null +++ b/devnet/eth-devnet/node2/beaconkey @@ -0,0 +1 @@ +ee8e91ee5ec8e2de9b5dfe8951184970f22b7db7ae54f16d5d3f653c23c807f7 \ No newline at end of file diff --git a/devnet/eth-devnet/node2/config.toml b/devnet/eth-devnet/node2/config.toml new file mode 100644 index 000000000000..b92e7c7c694c --- /dev/null +++ b/devnet/eth-devnet/node2/config.toml @@ -0,0 +1,107 @@ +[Eth] +NetworkId = 0 +SyncMode = "snap" +EthDiscoveryURLs = [] +SnapDiscoveryURLs = [] +NoPruning = false +NoPrefetch = false +TxLookupLimit = 2350000 +TransactionHistory = 2350000 +StateHistory = 90000 +LightPeers = 100 +DatabaseCache = 512 +DatabaseFreezer = "" +TrieCleanCache = 154 +TrieDirtyCache = 256 +TrieTimeout = 3600000000000 +SnapshotCache = 102 +Preimages = false +FilterLogCacheSize = 32 +EnablePreimageRecording = false +VMTrace = "" +VMTraceJsonConfig = "" +RPCGasCap = 50000000 +RPCEVMTimeout = 5000000000 +RPCTxFeeCap = 1e+00 +Rip7560MaxBundleSize = 0 +Rip7560MaxBundleGas = 0 +Rip7560PullUrls = ["http://localhost:3001/rpc"] +Rip7560AcceptPush = false + +[Eth.Miner] +GasCeil = 30000000 +GasPrice = 1000000 +Recommit = 2000000000 + +[Eth.TxPool] +Locals = [] +NoLocals = false +Journal = "transactions.rlp" +Rejournal = 3600000000000 +PriceLimit = 1 +PriceBump = 10 +AccountSlots = 16 +GlobalSlots = 5120 +AccountQueue = 64 +GlobalQueue = 1024 +Lifetime = 10800000000000 + +[Eth.BlobPool] +Datadir = "blobpool" +Datacap = 2684354560 +PriceBump = 100 + +[Eth.GPO] +Blocks = 20 +Percentile = 60 +MaxHeaderHistory = 1024 +MaxBlockHistory = 1024 +MaxPrice = 500000000000 +IgnorePrice = 2 + +[Node] +DataDir = "/data/geth2" +IPCPath = "geth.ipc" +HTTPHost = "" +HTTPPort = 8545 +HTTPVirtualHosts = ["localhost"] +HTTPModules = ["net", "web3", "eth"] +AuthAddr = "localhost" +AuthPort = 8551 +AuthVirtualHosts = ["localhost"] +WSHost = "" +WSPort = 8546 +WSModules = ["net", "web3", "eth"] +GraphQLVirtualHosts = ["localhost"] +BatchRequestLimit = 1000 +BatchResponseMaxSize = 25000000 + +[Node.P2P] +MaxPeers = 50 +NoDiscovery = false +DiscoveryV4 = true +BootstrapNodes = ["enode://d860a01f9722d78051619d1e2351aba3f43f943f6f00718d1b9baa4101932a1f5011f16bb2b1bb35db20d6fe28fa0bf09636d26a87d31de9ec6203eeedb1f666@18.138.108.67:30303", "enode://22a8232c3abc76a16ae9d6c3b164f98775fe226f0917b0ca871128a74a8e9630b458460865bab457221f1d448dd9791d24c4e5d88786180ac185df813a68d4de@3.209.45.79:30303", "enode://2b252ab6a1d0f971d9722cb839a42cb81db019ba44c08754628ab4a823487071b5695317c8ccd085219c3a03af063495b2f1da8d18218da2d6a82981b45e6ffc@65.108.70.101:30303", "enode://4aeb4ab6c14b23e2c4cfdce879c04b0748a20d8e9b59e25ded2a08143e265c6c25936e74cbc8e641e3312ca288673d91f2f93f8e277de3cfa444ecdaaf982052@157.90.35.166:30303"] +BootstrapNodesV5 = ["enr:-KG4QMOEswP62yzDjSwWS4YEjtTZ5PO6r65CPqYBkgTTkrpaedQ8uEUo1uMALtJIvb2w_WWEVmg5yt1UAuK1ftxUU7QDhGV0aDKQu6TalgMAAAD__________4JpZIJ2NIJpcIQEnfA2iXNlY3AyNTZrMaEDfol8oLr6XJ7FsdAYE7lpJhKMls4G_v6qQOGKJUWGb_uDdGNwgiMog3VkcIIjKA", "enr:-KG4QF4B5WrlFcRhUU6dZETwY5ZzAXnA0vGC__L1Kdw602nDZwXSTs5RFXFIFUnbQJmhNGVU6OIX7KVrCSTODsz1tK4DhGV0aDKQu6TalgMAAAD__________4JpZIJ2NIJpcIQExNYEiXNlY3AyNTZrMaECQmM9vp7KhaXhI-nqL_R0ovULLCFSFTa9CPPSdb1zPX6DdGNwgiMog3VkcIIjKA", "enr:-Ku4QImhMc1z8yCiNJ1TyUxdcfNucje3BGwEHzodEZUan8PherEo4sF7pPHPSIB1NNuSg5fZy7qFsjmUKs2ea1Whi0EBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQOVphkDqal4QzPMksc5wnpuC3gvSC8AfbFOnZY_On34wIN1ZHCCIyg", "enr:-Ku4QP2xDnEtUXIjzJ_DhlCRN9SN99RYQPJL92TMlSv7U5C1YnYLjwOQHgZIUXw6c-BvRg2Yc2QsZxxoS_pPRVe0yK8Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQMeFF5GrS7UZpAH2Ly84aLK-TyvH-dRo0JM1i8yygH50YN1ZHCCJxA", "enr:-Ku4QPp9z1W4tAO8Ber_NQierYaOStqhDqQdOPY3bB3jDgkjcbk6YrEnVYIiCBbTxuar3CzS528d2iE7TdJsrL-dEKoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD1pf1CAAAAAP__________gmlkgnY0gmlwhBLf22SJc2VjcDI1NmsxoQMw5fqqkw2hHC4F5HZZDPsNmPdB1Gi8JPQK7pRc9XHh-oN1ZHCCKvg", "enr:-Le4QPUXJS2BTORXxyx2Ia-9ae4YqA_JWX3ssj4E_J-3z1A-HmFGrU8BpvpqhNabayXeOZ2Nq_sbeDgtzMJpLLnXFgAChGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISsaa0Zg2lwNpAkAIkHAAAAAPA8kv_-awoTiXNlY3AyNTZrMaEDHAD2JKYevx89W0CcFJFiskdcEzkH_Wdv9iW42qLK79ODdWRwgiMohHVkcDaCI4I", "enr:-Le4QLHZDSvkLfqgEo8IWGG96h6mxwe_PsggC20CL3neLBjfXLGAQFOPSltZ7oP6ol54OvaNqO02Rnvb8YmDR274uq8ChGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISLosQxg2lwNpAqAX4AAAAAAPA8kv_-ax65iXNlY3AyNTZrMaEDBJj7_dLFACaxBfaI8KZTh_SSJUjhyAyfshimvSqo22WDdWRwgiMohHVkcDaCI4I", "enr:-Le4QH6LQrusDbAHPjU_HcKOuMeXfdEB5NJyXgHWFadfHgiySqeDyusQMvfphdYWOzuSZO9Uq2AMRJR5O4ip7OvVma8BhGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISLY9ncg2lwNpAkAh8AgQIBAAAAAAAAAAmXiXNlY3AyNTZrMaECDYCZTZEksF-kmgPholqgVt8IXr-8L7Nu7YrZ7HUpgxmDdWRwgiMohHVkcDaCI4I", "enr:-Le4QIqLuWybHNONr933Lk0dcMmAB5WgvGKRyDihy1wHDIVlNuuztX62W51voT4I8qD34GcTEOTmag1bcdZ_8aaT4NUBhGV0aDKQtTA_KgEAAAAAIgEAAAAAAIJpZIJ2NIJpcISLY04ng2lwNpAkAh8AgAIBAAAAAAAAAA-fiXNlY3AyNTZrMaEDscnRV6n1m-D9ID5UsURk0jsoKNXt1TIrj8uKOGW6iluDdWRwgiMohHVkcDaCI4I", "enr:-Ku4QHqVeJ8PPICcWk1vSn_XcSkjOkNiTg6Fmii5j6vUQgvzMc9L1goFnLKgXqBJspJjIsB91LTOleFmyWWrFVATGngBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhAMRHkWJc2VjcDI1NmsxoQKLVXFOhp2uX6jeT0DvvDpPcU8FWMjQdR4wMuORMhpX24N1ZHCCIyg", "enr:-Ku4QG-2_Md3sZIAUebGYT6g0SMskIml77l6yR-M_JXc-UdNHCmHQeOiMLbylPejyJsdAPsTHJyjJB2sYGDLe0dn8uYBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhBLY-NyJc2VjcDI1NmsxoQORcM6e19T1T9gi7jxEZjk_sjVLGFscUNqAY9obgZaxbIN1ZHCCIyg", "enr:-Ku4QPn5eVhcoF1opaFEvg1b6JNFD2rqVkHQ8HApOKK61OIcIXD127bKWgAtbwI7pnxx6cDyk_nI88TrZKQaGMZj0q0Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhDayLMaJc2VjcDI1NmsxoQK2sBOLGcUb4AwuYzFuAVCaNHA-dy24UuEKkeFNgCVCsIN1ZHCCIyg", "enr:-Ku4QEWzdnVtXc2Q0ZVigfCGggOVB2Vc1ZCPEc6j21NIFLODSJbvNaef1g4PxhPwl_3kax86YPheFUSLXPRs98vvYsoBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhDZBrP2Jc2VjcDI1NmsxoQM6jr8Rb1ktLEsVcKAPa08wCsKUmvoQ8khiOl_SLozf9IN1ZHCCIyg", "enr:-LK4QA8FfhaAjlb_BXsXxSfiysR7R52Nhi9JBt4F8SPssu8hdE1BXQQEtVDC3qStCW60LSO7hEsVHv5zm8_6Vnjhcn0Bh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhAN4aBKJc2VjcDI1NmsxoQJerDhsJ-KxZ8sHySMOCmTO6sHM3iCFQ6VMvLTe948MyYN0Y3CCI4yDdWRwgiOM", "enr:-LK4QKWrXTpV9T78hNG6s8AM6IO4XH9kFT91uZtFg1GcsJ6dKovDOr1jtAAFPnS2lvNltkOGA9k29BUN7lFh_sjuc9QBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhANAdd-Jc2VjcDI1NmsxoQLQa6ai7y9PMN5hpLe5HmiJSlYzMuzP7ZhwRiwHvqNXdoN0Y3CCI4yDdWRwgiOM"] +StaticNodes = ["enode://7c447d2fd6157da2f69d94241732d1ca2d01149501622f7968bfa18a49f0e6eaeb686490b16f6d6b0cef5ac6c450bd5df1a1a1bd053fafd846c1ca168793ffa2@node1:30303"] +TrustedNodes = [] +ListenAddr = ":30303" +DiscAddr = "" +EnableMsgEvents = false + +[Node.HTTPTimeouts] +ReadTimeout = 30000000000 +ReadHeaderTimeout = 30000000000 +WriteTimeout = 30000000000 +IdleTimeout = 120000000000 + +[Metrics] +HTTP = "127.0.0.1" +Port = 6060 +InfluxDBEndpoint = "http://localhost:8086" +InfluxDBDatabase = "geth" +InfluxDBUsername = "test" +InfluxDBPassword = "test" +InfluxDBTags = "host=localhost" +InfluxDBToken = "test" +InfluxDBBucket = "geth" +InfluxDBOrganization = "geth" diff --git a/devnet/eth-devnet/node2/config.yml b/devnet/eth-devnet/node2/config.yml new file mode 100644 index 000000000000..f1f0c8cf15ae --- /dev/null +++ b/devnet/eth-devnet/node2/config.yml @@ -0,0 +1,34 @@ +CONFIG_NAME: interop +PRESET_BASE: interop + +# Genesis +GENESIS_FORK_VERSION: 0x20000089 + +# Altair +ALTAIR_FORK_EPOCH: 0 +ALTAIR_FORK_VERSION: 0x20000090 + +# Merge +BELLATRIX_FORK_EPOCH: 0 +BELLATRIX_FORK_VERSION: 0x20000091 +TERMINAL_TOTAL_DIFFICULTY: 0 + +# Capella +CAPELLA_FORK_EPOCH: 0 +CAPELLA_FORK_VERSION: 0x20000092 +MAX_WITHDRAWALS_PER_PAYLOAD: 16 + +# Deneb +DENEB_FORK_VERSION: 0x20000093 +DENEB_FORK_EPOCH: 0 + +# Electra +ELECTRA_FORK_VERSION: 0x06000000 +ELECTRA_FORK_EPOCH: 0 + +# Time parameters +SECONDS_PER_SLOT: 3 +SLOTS_PER_EPOCH: 6 + +# Deposit contract +DEPOSIT_CONTRACT_ADDRESS: 0x4242424242424242424242424242424242424242 diff --git a/devnet/eth-devnet/node2/nodekey b/devnet/eth-devnet/node2/nodekey new file mode 100644 index 000000000000..27ad27f4fe1b --- /dev/null +++ b/devnet/eth-devnet/node2/nodekey @@ -0,0 +1 @@ +1f2b85fba3065aa3ffd2118087ddc5d1263fe68f94b9ce6402369868c06d2e9e \ No newline at end of file diff --git a/devnet/eth-devnet/prysmctl-v5.1.0-linux-amd64 b/devnet/eth-devnet/prysmctl-v5.1.0-linux-amd64 new file mode 100755 index 000000000000..6d884b7dbd28 Binary files /dev/null and b/devnet/eth-devnet/prysmctl-v5.1.0-linux-amd64 differ diff --git a/devnet/eth-devnet/prysmctl.Dockerfile b/devnet/eth-devnet/prysmctl.Dockerfile new file mode 100644 index 000000000000..c5d339de0889 --- /dev/null +++ b/devnet/eth-devnet/prysmctl.Dockerfile @@ -0,0 +1,23 @@ +# Use the official Ubuntu image as the base +FROM ubuntu:22.04 + +# Set environment variables for non-interactive installs +ENV DEBIAN_FRONTEND=noninteractive + +# Install any dependencies required by prysmctl +RUN apt-get update && apt-get install -y \ + libssl-dev \ + libc6 \ + && rm -rf /var/lib/apt/lists/* + +# Set up a working directory +WORKDIR /app + +# Copy the prysmctl binary and your script into the container +COPY prysmctl-v5.1.0-linux-amd64 /app/ + +# Make the binary and script executable +RUN chmod +x /app/prysmctl-v5.1.0-linux-amd64 + +# Define the command to run the script +CMD ["/app/prysmctl-v5.1.0-linux-amd64"] diff --git a/devnet/eth-devnet/scripts/1-gen-keys.sh b/devnet/eth-devnet/scripts/1-gen-keys.sh new file mode 100755 index 000000000000..3af189dc892a --- /dev/null +++ b/devnet/eth-devnet/scripts/1-gen-keys.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -exu +set -o pipefail + +cd "$(dirname "$0")" + +GETH_BOOTNODE=../node1/bootnode +PRYSM_BIN=../node1/beacon-chain-v5.1.0-linux-amd64 + +if [[ ! -f "nodekey" ]]; then + $GETH_BOOTNODE -genkey nodekey +fi +#$GETH_BOOTNODE -nodekey nodekey -addr 0.0.0.0:$GETH_BOOTNODE_PORT -verbosity=5 > "bootnode.log" 2>&1 +if [[ ! -f "network-keys" ]]; then + $PRYSM_BIN --p2p-static-id --chain-id 1337 --datadir ./ --accept-terms-of-use +fi diff --git a/devnet/eth-devnet/scripts/clean.sh b/devnet/eth-devnet/scripts/clean.sh new file mode 100755 index 000000000000..ef7533f38d97 --- /dev/null +++ b/devnet/eth-devnet/scripts/clean.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -exu +set -o pipefail + +cd "$(dirname "$0")" +cd .. + +docker-compose kill node1 node2 +sudo rm -rf node{1,2}/data/* +rm -f ./scripts/genesis.ssz ./scripts/genesis.prysm.json diff --git a/devnet/eth-devnet/scripts/config.yml b/devnet/eth-devnet/scripts/config.yml new file mode 100644 index 000000000000..05b073e5bd62 --- /dev/null +++ b/devnet/eth-devnet/scripts/config.yml @@ -0,0 +1,34 @@ +CONFIG_NAME: interop +PRESET_BASE: interop + +# Genesis +GENESIS_FORK_VERSION: 0x20000089 + +# Altair +ALTAIR_FORK_EPOCH: 0 +ALTAIR_FORK_VERSION: 0x20000090 + +# Merge +BELLATRIX_FORK_EPOCH: 0 +BELLATRIX_FORK_VERSION: 0x20000091 +TERMINAL_TOTAL_DIFFICULTY: 0 + +# Capella +CAPELLA_FORK_EPOCH: 0 +CAPELLA_FORK_VERSION: 0x20000092 +MAX_WITHDRAWALS_PER_PAYLOAD: 16 + +# Deneb +DENEB_FORK_VERSION: 0x20000093 +DENEB_FORK_EPOCH: 0 + +# Electra +ELECTRA_FORK_VERSION: 0x06000000 +ELECTRA_FORK_EPOCH: 18446744073709551615 # MaxUint64 + +# Time parameters +SECONDS_PER_SLOT: 3 +SLOTS_PER_EPOCH: 6 + +# Deposit contract +DEPOSIT_CONTRACT_ADDRESS: 0x4242424242424242424242424242424242424242 diff --git a/devnet/eth-devnet/scripts/generate-genesis.sh b/devnet/eth-devnet/scripts/generate-genesis.sh new file mode 100755 index 000000000000..96398aa44d23 --- /dev/null +++ b/devnet/eth-devnet/scripts/generate-genesis.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -exu +set -o pipefail + +cd "$(dirname "$0")" + +PRYSM_CTL=../prysmctl-v5.1.0-linux-amd64 + +$PRYSM_CTL testnet generate-genesis --fork deneb --num-validators 2 --genesis-time-delay 15 --chain-config-file ./config.yml --geth-genesis-json-in ./genesis.json.template --geth-genesis-json-out ./genesis.prysm.json --output-ssz ./genesis.ssz + +cp genesis.prysm.json genesis.ssz ../node1/data +cp genesis.prysm.json genesis.ssz ../node2/data diff --git a/devnet/eth-devnet/scripts/genesis.json.template b/devnet/eth-devnet/scripts/genesis.json.template new file mode 100644 index 000000000000..c6bc168f95cc --- /dev/null +++ b/devnet/eth-devnet/scripts/genesis.json.template @@ -0,0 +1,61 @@ +{ + "config": { + "chainId": 1337, + "homesteadBlock": 0, + "daoForkSupport": true, + "eip150Block": 0, + "eip155Block": 0, + "eip158Block": 0, + "byzantiumBlock": 0, + "constantinopleBlock": 0, + "petersburgBlock": 0, + "istanbulBlock": 0, + "muirGlacierBlock": 0, + "berlinBlock": 0, + "londonBlock": 0, + "arrowGlacierBlock": 0, + "grayGlacierBlock": 0, + "shanghaiTime": 1695897038, + "cancunTime": 1695897038, + "terminalTotalDifficulty": 0, + "terminalTotalDifficultyPassed": true + }, + "nonce": "0x0", + "timestamp": "0x651555ce", + "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000123463a4b065722e99115d6c222f267d9cabb5240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "gasLimit": "0x1c9c380", + "difficulty": "0x1", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "coinbase": "0x0000000000000000000000000000000000000000", + "alloc": { + "123463a4b065722e99115d6c222f267d9cabb524": { + "balance": "0x43c33c1937564800000" + }, + "4242424242424242424242424242424242424242": { + "code": "0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100b6578063621fd130146101e3578063c5f2892f14610273575b600080fd5b34801561005057600080fd5b5061009c6004803603602081101561006757600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061029e565b604051808215151515815260200191505060405180910390f35b6101e1600480360360808110156100cc57600080fd5b81019080803590602001906401000000008111156100e957600080fd5b8201836020820111156100fb57600080fd5b8035906020019184600183028401116401000000008311171561011d57600080fd5b90919293919293908035906020019064010000000081111561013e57600080fd5b82018360208201111561015057600080fd5b8035906020019184600183028401116401000000008311171561017257600080fd5b90919293919293908035906020019064010000000081111561019357600080fd5b8201836020820111156101a557600080fd5b803590602001918460018302840111640100000000831117156101c757600080fd5b909192939192939080359060200190929190505050610370565b005b3480156101ef57600080fd5b506101f8610fd0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023857808201518184015260208101905061021d565b50505050905090810190601f1680156102655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027f57600080fd5b50610288610fe2565b6040518082815260200191505060405180910390f35b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061036957507f85640907000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b603087879050146103cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806116ec6026913960400191505060405180910390fd5b60208585905014610428576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806116836036913960400191505060405180910390fd5b60608383905014610484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061175f6029913960400191505060405180910390fd5b670de0b6b3a76400003410156104e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806117396026913960400191505060405180910390fd5b6000633b9aca0034816104f457fe5b061461054b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806116b96033913960400191505060405180910390fd5b6000633b9aca00348161055a57fe5b04905067ffffffffffffffff80168111156105c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806117126027913960400191505060405180910390fd5b60606105cb82611314565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a610600602054611314565b60405180806020018060200180602001806020018060200186810386528e8e82818152602001925080828437600081840152601f19601f82011690508083019250505086810385528c8c82818152602001925080828437600081840152601f19601f82011690508083019250505086810384528a818151815260200191508051906020019080838360005b838110156106a657808201518184015260208101905061068b565b50505050905090810190601f1680156106d35780820380516001836020036101000a031916815260200191505b508681038352898982818152602001925080828437600081840152601f19601f820116905080830192505050868103825287818151815260200191508051906020019080838360005b8381101561073757808201518184015260208101905061071c565b50505050905090810190601f1680156107645780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b6040516020018084848082843780830192505050826fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff1916815260100193505050506040516020818303038152906040526040518082805190602001908083835b6020831061080e57805182526020820191506020810190506020830392506107eb565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015610850573d6000803e3d6000fd5b5050506040513d602081101561086557600080fd5b8101908080519060200190929190505050905060006002808888600090604092610891939291906115da565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108eb57805182526020820191506020810190506020830392506108c8565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa15801561092d573d6000803e3d6000fd5b5050506040513d602081101561094257600080fd5b8101908080519060200190929190505050600289896040908092610968939291906115da565b6000801b604051602001808484808284378083019250505082815260200193505050506040516020818303038152906040526040518082805190602001908083835b602083106109cd57805182526020820191506020810190506020830392506109aa565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015610a0f573d6000803e3d6000fd5b5050506040513d6020811015610a2457600080fd5b810190808051906020019092919050505060405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310610a8e5780518252602082019150602081019050602083039250610a6b565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015610ad0573d6000803e3d6000fd5b5050506040513d6020811015610ae557600080fd5b810190808051906020019092919050505090506000600280848c8c604051602001808481526020018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610b615780518252602082019150602081019050602083039250610b3e565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015610ba3573d6000803e3d6000fd5b5050506040513d6020811015610bb857600080fd5b8101908080519060200190929190505050600286600060401b866040516020018084805190602001908083835b60208310610c085780518252602082019150602081019050602083039250610be5565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610c935780518252602082019150602081019050602083039250610c70565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015610cd5573d6000803e3d6000fd5b5050506040513d6020811015610cea57600080fd5b810190808051906020019092919050505060405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310610d545780518252602082019150602081019050602083039250610d31565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015610d96573d6000803e3d6000fd5b5050506040513d6020811015610dab57600080fd5b81019080805190602001909291905050509050858114610e16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605481526020018061162f6054913960600191505060405180910390fd5b6001602060020a0360205410610e77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061160e6021913960400191505060405180910390fd5b60016020600082825401925050819055506000602054905060008090505b6020811015610fb75760018083161415610ec8578260008260208110610eb757fe5b018190555050505050505050610fc7565b600260008260208110610ed757fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310610f335780518252602082019150602081019050602083039250610f10565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015610f75573d6000803e3d6000fd5b5050506040513d6020811015610f8a57600080fd5b8101908080519060200190929190505050925060028281610fa757fe5b0491508080600101915050610e95565b506000610fc057fe5b5050505050505b50505050505050565b6060610fdd602054611314565b905090565b6000806000602054905060008090505b60208110156111d057600180831614156110e05760026000826020811061101557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b60208310611071578051825260208201915060208101905060208303925061104e565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa1580156110b3573d6000803e3d6000fd5b5050506040513d60208110156110c857600080fd5b810190808051906020019092919050505092506111b6565b600283602183602081106110f057fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061114b5780518252602082019150602081019050602083039250611128565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa15801561118d573d6000803e3d6000fd5b5050506040513d60208110156111a257600080fd5b810190808051906020019092919050505092505b600282816111c057fe5b0491508080600101915050610ff2565b506002826111df602054611314565b600060401b6040516020018084815260200183805190602001908083835b6020831061122057805182526020820191506020810190506020830392506111fd565b6001836020036101000a0380198251168184511680821785525050505050509050018267ffffffffffffffff191667ffffffffffffffff1916815260180193505050506040516020818303038152906040526040518082805190602001908083835b602083106112a55780518252602082019150602081019050602083039250611282565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa1580156112e7573d6000803e3d6000fd5b5050506040513d60208110156112fc57600080fd5b81019080805190602001909291905050509250505090565b6060600867ffffffffffffffff8111801561132e57600080fd5b506040519080825280601f01601f1916602001820160405280156113615781602001600182028036833780820191505090505b50905060008260c01b90508060076008811061137957fe5b1a60f81b8260008151811061138a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806006600881106113c657fe5b1a60f81b826001815181106113d757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060056008811061141357fe5b1a60f81b8260028151811061142457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060046008811061146057fe5b1a60f81b8260038151811061147157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806003600881106114ad57fe5b1a60f81b826004815181106114be57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806002600881106114fa57fe5b1a60f81b8260058151811061150b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060016008811061154757fe5b1a60f81b8260068151811061155857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060006008811061159457fe5b1a60f81b826007815181106115a557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b600080858511156115ea57600080fd5b838611156115f757600080fd5b600185028301915084860390509450949250505056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a2646970667358221220230afd4b6e3551329e50f1239e08fa3ab7907b77403c4f237d9adf679e8e43cf64736f6c634300060b0033", + "balance": "0x0" + }, + "4e59b44847b379578588920ca78fbf26c0b4956c": { + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3", + "balance": "0x0" + }, + "fe8664457176d0f87eaabd103aba410855f81010": { + "balance": "0x21e19e0c9bab2400000" + }, + "1682Df40619A4dE3442cE846ac9D3ce72117C210": { + "balance": "0x43c33c1937564800000" + }, + "f39Fd6e51aad88F6F4ce6aB8827279cffFb92266": { + "balance": "0x43c33c1937564800000" + }, + "90F8bf6A479f320ead074411a4B0e7944Ea8c9C1": { + "balance": "0x43c33c1937564800000" + } + }, + "number": "0x0", + "gasUsed": "0x0", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "baseFeePerGas": null, + "excessBlobGas": null, + "blobGasUsed": null +} diff --git a/devnet/eth-devnet/scripts/peers.sh b/devnet/eth-devnet/scripts/peers.sh new file mode 100755 index 000000000000..a5e65033376f --- /dev/null +++ b/devnet/eth-devnet/scripts/peers.sh @@ -0,0 +1,3 @@ +curl -s http://localhost:350{0,1}/eth/v1/node/peers + +curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"admin_peers","params":[],"id":1}' localhost:854{5,7} diff --git a/devnet/eth-devnet/start.sh b/devnet/eth-devnet/start.sh new file mode 100755 index 000000000000..c22997166921 --- /dev/null +++ b/devnet/eth-devnet/start.sh @@ -0,0 +1,145 @@ +#!/bin/bash + +set -euo pipefail + +# Initialize variables with defaults or environment variables +NETWORK_ID=${NETWORK_ID:-1337} +NODE_IDENTITY=${NODE_IDENTITY:-"node"} +DATA_DIR=${DATA_DIR:-/data} +GENESIS_JSON=${GENESIS_JSON:-/data/genesis.prysm.json} +GENESIS_SSZ=${GENESIS_SSZ:-/data/genesis.ssz} +CONFIG_TOML=${CONFIG_TOML:-/app/config.toml} +CONFIG_YML=${CONFIG_YML:-/app/config.yml} +NODEKEY_PATH=${NODEKEY_PATH:-/app/nodekey} +BEACONKEY_PATH=${BEACONKEY_PATH:-/app/beaconkey} +FEE_RECIPIENT=${FEE_RECIPIENT:-"0x123463A4B065722E99115D6C222F267D9CABB524"} +VALIDATOR_START_INDEX=${VALIDATOR_START_INDEX:-0} + +# Ports +HTTP_PORT=${HTTP_PORT:-8545} +WS_PORT=${WS_PORT:-8546} +AUTHRPC_PORT=${AUTHRPC_PORT:-8551} +METRICS_PORT=${METRICS_PORT:-6060} +P2P_PORT=${P2P_PORT:-30303} + +BEACON_RPC_PORT=${BEACON_RPC_PORT:-4000} +BEACON_GRPC_PORT=${BEACON_GRPC_PORT:-3500} +BEACON_P2P_TCP_PORT=${BEACON_P2P_TCP_PORT:-13000} +BEACON_P2P_UDP_PORT=${BEACON_P2P_UDP_PORT:-12000} +BEACON_MONITORING_PORT=${BEACON_MONITORING_PORT:-8080} + +VALIDATOR_RPC_PORT=${VALIDATOR_RPC_PORT:-7000} +VALIDATOR_GRPC_PORT=${VALIDATOR_GRPC_PORT:-7500} +VALIDATOR_MONITORING_PORT=${VALIDATOR_MONITORING_PORT:-8081} + +PEER_NODES=${PEER_NODES:-""} + +# Create necessary directories +mkdir -p "$DATA_DIR/geth/geth" +mkdir -p "$DATA_DIR/logs" + +# Copy nodekey and config.toml into data directory +cp "$NODEKEY_PATH" "$DATA_DIR/geth/geth/nodekey" +cp "$CONFIG_TOML" "$DATA_DIR/geth/" + +# Initialize Geth +./geth --datadir "$DATA_DIR/geth" init "$GENESIS_JSON" + +# Generate JWT secret if it doesn't exist +if [ ! -f "$DATA_DIR/geth/geth/jwtsecret" ]; then + openssl rand -hex 32 | tr -d "\n" > "$DATA_DIR/geth/geth/jwtsecret" +fi + +# Start Geth Execution Node +./geth --networkid "$NETWORK_ID" \ + --config "$CONFIG_TOML" \ + --http \ + --http.api eth,net,web3,engine,admin,personal \ + --http.addr 0.0.0.0 \ + --http.corsdomain "*" \ + --http.port "$HTTP_PORT" \ + --port "$P2P_PORT" \ + --metrics \ + --metrics.addr 0.0.0.0 \ + --metrics.port "$METRICS_PORT" \ + --ws \ + --ws.api eth,net,web3 \ + --ws.addr 0.0.0.0 \ + --ws.origins "*" \ + --ws.port "$WS_PORT" \ + --authrpc.vhosts "*" \ + --authrpc.addr 0.0.0.0 \ + --authrpc.jwtsecret "$DATA_DIR/geth/geth/jwtsecret" \ + --authrpc.port "$AUTHRPC_PORT" \ + --datadir "$DATA_DIR/geth" \ + --identity "$NODE_IDENTITY" \ + --maxpendpeers 2 \ + --verbosity 3 \ + --syncmode full > "$DATA_DIR/logs/geth.log" 2>&1 & + +# Wait for Geth to start +sleep 5 + +# Construct --peer flags for Beacon Node +PEER_FLAGS="" +if [ -n "$PEER_NODES" ]; then + # Split PEER_NODES into an array + read -ra PEER_ARRAY <<< "$PEER_NODES" + for PEER in "${PEER_ARRAY[@]}"; do + PEER_FLAGS+=" --peer $PEER" + done +fi + +# Start Prysm Beacon Node +./beacon-chain-v5.1.0-linux-amd64 \ + --datadir "$DATA_DIR/beacon" \ + --min-sync-peers 1 \ + --p2p-priv-key "$BEACONKEY_PATH" \ + --genesis-state "$GENESIS_SSZ" \ + --bootstrap-node "" \ + $PEER_FLAGS \ + --interop-eth1data-votes \ + --chain-config-file "$CONFIG_YML" \ + --contract-deployment-block 0 \ + --chain-id "$NETWORK_ID" \ + --rpc-host 0.0.0.0 \ + --rpc-port "$BEACON_RPC_PORT" \ + --grpc-gateway-host 0.0.0.0 \ + --grpc-gateway-port "$BEACON_GRPC_PORT" \ + --execution-endpoint http://localhost:"$AUTHRPC_PORT" \ + --accept-terms-of-use \ + --jwt-secret "$DATA_DIR/geth/geth/jwtsecret" \ + --suggested-fee-recipient "$FEE_RECIPIENT" \ + --minimum-peers-per-subnet 0 \ + --p2p-tcp-port "$BEACON_P2P_TCP_PORT" \ + --p2p-udp-port "$BEACON_P2P_UDP_PORT" \ + --monitoring-port "$BEACON_MONITORING_PORT" \ + --verbosity debug \ + --slasher \ + --enable-debug-rpc-endpoints > "$DATA_DIR/logs/beacon.log" 2>&1 & + +# Wait for Beacon Node to start +sleep 5 + +# Start Prysm Validator Client +./validator-v5.1.0-linux-amd64 \ + --beacon-rpc-provider localhost:"$BEACON_RPC_PORT" \ + --datadir "$DATA_DIR/validator" \ + --accept-terms-of-use \ + --interop-num-validators 1 \ + --interop-start-index "$VALIDATOR_START_INDEX" \ + --rpc-port "$VALIDATOR_RPC_PORT" \ + --grpc-gateway-port "$VALIDATOR_GRPC_PORT" \ + --monitoring-port "$VALIDATOR_MONITORING_PORT" \ + --graffiti "$NODE_IDENTITY" \ + --chain-config-file "$CONFIG_YML" > "$DATA_DIR/logs/validator.log" 2>&1 & + +sleep 15 + +# Start Bundler +echo "Starting Bundler..." +cd /app/bundler/ +yarn bundler-rip7560 > /data/logs/bundler.log 2>&1 & + +# Keep the container running +tail -f /dev/null diff --git a/devnet/eth-devnet/validator-v5.1.0-linux-amd64 b/devnet/eth-devnet/validator-v5.1.0-linux-amd64 new file mode 100755 index 000000000000..817c7d7ce8f0 Binary files /dev/null and b/devnet/eth-devnet/validator-v5.1.0-linux-amd64 differ