---
# System prepended metadata

title: Dev notes - w/c 14 April 2025
tags: [ephemery]

---

# Dev notes - w/c 14 April 2025

Kick off ephemery-prysm
- [x] ephemery-prysm branch
- [x] add `--ephemery` flag
- [x] run prysm with `--ephemery` flag locally

## MONDAY

Done:

- Cloned Prysm, created ephemery branch, added `ephemery` flag to config
- Installed [Bazel for Mac](https://bazel.build/install/os-x)
- Resolved Bazel path issue; ran `bazel build /...`

Example usage:
1. Run `bazel build /...` if changes to packages. Beware building everything takes a while!

3. Run EL client
`./geth --ephemery --http --http.api eth,net,engine,admin --authrpc.jwtsecret=<PATH_TO_JWT_FILE>`

4. Run a beacon node
`./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --ephemery --jwt-secret=<PATH_TO_JWT_FILE>  --checkpoint-sync-url=https://checkpointz.bordel.wtf/ --genesis-beacon-api-url=https://checkpointz.bordel.wtf/`

TODO:
- Fix build errors

![Screenshot 2025-04-14 at 13.33.11](https://hackmd.io/_uploads/rJFjgK9C1g.png)

![Screenshot 2025-04-14 at 13.31.55](https://hackmd.io/_uploads/HkYsxFq0yl.png)

![Screenshot 2025-04-15 at 10.03.40](https://hackmd.io/_uploads/HybZbjiCJl.png)


- Run network locally, resolve any network config issues

## TUESDAY

Done:
- Added ephemery testfile
- We can't use `"@ephemery_testnet//:configs",` in`config/BUILD.bazel` in the same way as other networks; not including this to see if can build
- Tried to resolve bazel cross-compiling error
    - Ran `bazel sync --configure` to fix darwin_x86_64 issue on MacOS, still doesn't build
    - ![Screenshot 2025-04-15 at 09.56.44](https://hackmd.io/_uploads/SyfwJsj0Jx.png)
    - Checked that I have full XCode as per [stackoverflow](https://stackoverflow.com/questions/72380159/bazel-build-failed-for-does-not-contain-a-toolchain-for-cpu-darwin-arm64) - I do
    - Ran `bazel clean --expunge` 
    - Updated macOS (prerequisite for latest Xcode version)
    - Tried again - not building yet


## WEDNESDAY

Done:
- Checked xcode latest version `/usr/bin/xcodebuild -version`
- More debugging - [stackoverflow](https://stackoverflow.com/questions/21272479/how-can-i-find-out-if-i-have-xcode-commandline-tools-installed)
- Removed commandline tools and reinstalled them - [stackoverflow](https://stackoverflow.com/questions/42538171/how-to-update-xcode-command-line-tools)
- Found [offchain labs issue](https://github.com/OffchainLabs/prysm/issues/14157) and ran `bazel build -- //... -//tools/...` as recommended by james-prysm => build success!
![Screenshot 2025-04-16 at 11.20.37](https://hackmd.io/_uploads/SJ25EWpAkx.png)
- Installed gpg `brew install gpg`
- Tried `./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --ephemery` without running EL client, to see if commandline arguments recognised...
![Screenshot 2025-04-16 at 15.00.03](https://hackmd.io/_uploads/HkRldVT0yg.png)
- Ran `bazel run gazelle -- fix` as per [prysm docs](https://www.offchainlabs.com/prysm/docs/reading/bazel/) 
- Flag still not found. Debugging `config/params/BUILD.bazel` and `WORKSPACE`
![Screenshot 2025-04-16 at 20.54.45](https://hackmd.io/_uploads/SJDGjFaA1e.png)
    - Bazel [rules on http_archive](https://bazel.build/rules/lib/repo/http#http_archive)
    - Set url to latest release (standardized testnet layout) `url=https://github.com/ephemery-testnet/ephemery-genesis/releases/download/ephemery-145/network-config.tar.gz`
    - Local path `/private/var/tmp/_bazel_hollyatkinson/344d529f6264b45d54bed4eed9b68be0/external/ephemery_testnet`

Including the url for the latest release enables build but flag is still not defined :-/
![Screenshot 2025-04-16 at 22.00.43](https://hackmd.io/_uploads/HkSocqpA1g.png)

Tried `bazel build //cmd/beacon-chain --config=release` - flag not defined

## THURSDAY

Done: 
- Installed cmake and reinstalled Bazel
- Viewed subcommands and tried using flag directly in bazel-bin `bazel build --subcommands //cmd/beacon-chain:beacon-chain ` 
- `bazel-bin/cmd/beacon-chain/beacon-chain_/beacon-chain --execution-endpoint=http://localhost:8551 --ephemery`
- I needed to update the ephemery config because I had not yet updated the fork versions so there were conflicts with hoodi during build

Two different issues occuring:

1. The first error from bazel-bin shows that the --ephemery flag is working, but there's a database conflict. The database has a different deposit contract address than what's configured for Ephemery.

    Either:
    Clear the existing database with --clear-db
    Or use a different data directory with --datadir

    Full command:
    `bazel-bin/cmd/beacon-chain/beacon-chain_/beacon-chain --execution-endpoint=http://localhost:8551 --ephemery --clear-db`

2. The second error from `prysm.sh` shows that the --ephemery flag isn't being recognized when running through the shell script.

    The `prysm.sh` script is downloading a pre-built binary from Prysmatic Labs. The bazel-bin version is built from local source code.

    Two options:
    Use the bazel-bin version that's working:
    `bazel-bin/cmd/beacon-chain/beacon-chain_/beacon-chain --execution-endpoint=http://localhost:8551 --ephemery`

    Or build and use the local version through the script:
    `bazel build //cmd/beacon-chain`
    `./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --ephemery` => doesn't work (?)

Managed to get ephemery to run:
`bazel-bin/cmd/beacon-chain/beacon-chain_/beacon-chain --execution-endpoint=http://localhost:8551 --genesis-beacon-api-url=https://checkpointz.bordel.wtf/ --ephemery --clear-db`
(Also works without `--clear-db`)
![Screenshot 2025-04-17 at 14.42.07](https://hackmd.io/_uploads/rymYrt0A1g.png)

Testing - not sure how to test / which tests are applicable to ephemery;
FAILS: `bazel test //testing/endtoend:go_default_test --test_arg="-test.run=TestEndToEnd_MinimalConfig" --test_env=ETH_NETWORK=ephemery`

FAILS: `bazel test //testing/endtoend:go_builder_test --test_arg="-test.run=TestEndToEnd_MinimalConfig_WithBuilder" --test_env=ETH_NETWORK=ephemery`

PASSES: `bazel test //testing/endtoend:go_mainnet_test --test_arg="-test.run=TestEndToEnd_MultiScenarioRun_Multiclient" --test_env=ETH_NETWORK=ephemery`
![Screenshot 2025-04-17 at 15.38.03](https://hackmd.io/_uploads/B1MDfc0R1e.png)


TODO:

- Now that I've figured out how to run the ephemery flag using iteration 145, my next step is to remove the hardcoded ephemery-145 references and download the latest ephemery config for the latest MONTHLY release, and the iteration calculation should be VERIFIED against some initial values
- Figure out how to build and use the local version of ephemery through the script
- Reach out to prysm, write github issue, ask about test scenarios
- Peer review


## Resources
[Hoodi PR](https://github.com/OffchainLabs/prysm/pull/15057)
[Holesky PR](https://github.com/OffchainLabs/prysm/pull/12821)
[Prysm docs - install](https://www.offchainlabs.com/prysm/docs/install/install-with-script/)
[Prysm docs - bazel build](https://www.offchainlabs.com/prysm/docs/reading/bazel/#building-production-releases)
[Prysm docs - install with bazel](https://www.offchainlabs.com/prysm/docs/install/install-with-bazel)
[epf.wiki](https://epf.wiki/#/wiki/protocol/architecture)
https://stackoverflow.com/questions/34617452/how-to-update-xcode-from-command-line 
https://stackoverflow.com/questions/52801868/what-does-the-symbol-mean-in-bazel 
[Holesky issue](https://github.com/OffchainLabs/prysm/issues/12724)
