# Onchain day 6 ## Kurtosis challenge To run Kurtosis, you will need Docker. Check out the installation docs for [Docker](https://docs.docker.com/desktop/). Then see how to install [Kurtosis](https://docs.kurtosis.com/install). This is the configuration we will be using for our private network. It will include 3 nodes. 2 Geth<->Lighthouse pairs and one Geth<->Teku pair. It will additionally run dora the blockchain explorer. Save the following to a file `basic.yaml`. ```yaml= participants: - el_type: geth cl_type: lighthouse count: 2 - el_type: geth cl_type: teku additional_services: - dora ``` Run kurtosis: ```shell= kurtosis run github.com/ethpandaops/ethereum-package --args-file basic.yaml --image-download always ``` It will do a lot of stuff. At tne end you should see an output like this: ``` INFO[2025-02-13T18:40:20+01:00] ===================================================== INFO[2025-02-13T18:40:20+01:00] || Created enclave: lush-estuary || INFO[2025-02-13T18:40:20+01:00] ===================================================== Name: lush-estuary UUID: 786adf9383ea Status: RUNNING Creation Time: Thu, 13 Feb 2025 18:38:48 CET Flags: ========================================= Files Artifacts ========================================= UUID Name 97eecf350d7e 1-lighthouse-geth-0-63 9e0741a9d62a 2-lighthouse-geth-64-127 c0feee76c3e9 3-teku-geth-128-191 e707448e8835 dora-config 1cb0fccb492b el_cl_genesis_data 9c12fc572440 final-genesis-timestamp e1d83c1dd678 genesis-el-cl-env-file ed1affb0fd25 genesis_validators_root c7be02411dff jwt_file 2ff7925931d6 keymanager_file a8f07cea1a5b prysm-password 975b3dc490be validator-ranges ========================================== User Services ========================================== UUID Name Ports Status 7499762c5d14 cl-1-lighthouse-geth http: 4000/tcp -> http://127.0.0.1:64742 RUNNING metrics: 5054/tcp -> http://127.0.0.1:64743 tcp-discovery: 9000/tcp -> 127.0.0.1:64744 udp-discovery: 9000/udp -> 127.0.0.1:61644 5e23e9bb6800 cl-2-lighthouse-geth http: 4000/tcp -> http://127.0.0.1:64919 RUNNING metrics: 5054/tcp -> http://127.0.0.1:64920 tcp-discovery: 9000/tcp -> 127.0.0.1:64921 udp-discovery: 9000/udp -> 127.0.0.1:58432 9bca3e11bb0d cl-3-teku-geth http: 4000/tcp -> http://127.0.0.1:64994 RUNNING metrics: 8008/tcp -> http://127.0.0.1:64995 tcp-discovery: 9000/tcp -> 127.0.0.1:64996 udp-discovery: 9000/udp -> 127.0.0.1:52415 b7285e1df65c dora http: 8080/tcp -> http://127.0.0.1:65256 RUNNING 8808b66683df el-1-geth-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:64596 RUNNING metrics: 9001/tcp -> http://127.0.0.1:64597 rpc: 8545/tcp -> 127.0.0.1:64594 tcp-discovery: 30303/tcp -> 127.0.0.1:64593 udp-discovery: 30303/udp -> 127.0.0.1:52262 ws: 8546/tcp -> 127.0.0.1:64595 b8ffb8f05d75 el-2-geth-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:64659 RUNNING metrics: 9001/tcp -> http://127.0.0.1:64660 rpc: 8545/tcp -> 127.0.0.1:64662 tcp-discovery: 30303/tcp -> 127.0.0.1:64661 udp-discovery: 30303/udp -> 127.0.0.1:54969 ws: 8546/tcp -> 127.0.0.1:64658 1da6c1e77a5d el-3-geth-teku engine-rpc: 8551/tcp -> 127.0.0.1:64733 RUNNING metrics: 9001/tcp -> http://127.0.0.1:64734 rpc: 8545/tcp -> 127.0.0.1:64731 tcp-discovery: 30303/tcp -> 127.0.0.1:64730 udp-discovery: 30303/udp -> 127.0.0.1:53625 ws: 8546/tcp -> 127.0.0.1:64732 9bdf01558373 validator-key-generation-cl-validator-keystore <none> RUNNING b87057b39296 vc-1-geth-lighthouse metrics: 8080/tcp -> http://127.0.0.1:65195 RUNNING 5874675f180c vc-2-geth-lighthouse metrics: 8080/tcp -> http://127.0.0.1:65224 RUNNING ``` Now you should be able to open Dora. Notice the line containing Dora: ``` b7285e1df65c dora http: 8080/tcp -> http://127.0.0.1:65256 RUNNING ``` That means I can open `http://127.0.0.1:65256` in the browser. ### Bonus challenge If you'd like to to the bonus challenge we need to send a RPC request to one of the EL nodes's RPC endpoint. Find the port of `el-1-geth-lighthouse`. It has multiple lines. Select the one which reads `rpc: 8545...` ``` 8808b66683df el-1-geth-lighthouse rpc: 8545/tcp -> 127.0.0.1:64594 ``` And then send the request, make sure to put the right port at the end: ``` ❯ curl -X POST -H "Content-Type: application/json" --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}' http://127.0.0.1:PORT-GOES-HERE {"jsonrpc":"2.0","id":1,"result":"0x25"} ``` ## Run your own node challenge Download Geth: https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.15.1-b027a90a.tar.gz Or if you are on mac: https://gethstore.blob.core.windows.net/builds/geth-darwin-amd64-1.15.1-b027a90a.tar.gz ``` tar xzf geth-linux-amd64-1.15.1-b027a90a.tar.gz // cd into geth cd geth-linux-amd64-1.15.1-b027a90a ./geth --datadir datadir-blsync-test --beacon.api https://www.lightclientdata.org --beacon.checkpoint 0x42f506d895f34e35d034643e3481026c7a8844ab5872f7d1524d479206e0b2ed❯ ./geth --datadir datadir-blsync-test --beacon.api https://www.lightclientdata.org --beacon.checkpoint 0x42f506d895f34e35d034643e3481026c7a8844ab5872f7d1524d479206e0b2ed ``` After a lot of logs you should start to see lines like this: ``` INFO [02-13|18:28:38.434] Syncing beacon headers downloaded=512 left=21,838,531 eta=2h10m22.710s ``` You're syncing! :)