# EPF5 Dev Updates - Week 8
## What I did this week
- Participated in weekly standup and office hour
- Started implementing native support for Ephemery Testnet on Besu client.
### Native Client Support for Ephemery Testnet on Besu Client
Here is the breakdown of the current implementation work done;
- git clone the Besu repo, setup and run locally
- Add the `ephemery.json` (Genesis file) to the `config/src/main/resources` directory
- Add Ephemery to the `besu/cli/config/NetworkName.java` file like this
```bash
/** EPHEMERY network name. */
EPHEMERY("/ephemery.json", BigInteger.valueOf(39438135)),
````
- Add the bootnode to the `ephemery.json` genesis file
```bash
"discovery": {
"bootnodes": [
"enode://50a54ecbd2175497640bcf46a25bbe9bb4fae51d7cc2a29ef4947a7ee17496cf39a699b7fe6b703ed0feb9dbaae7e44fc3827fcb7435ca9ac6de4daa4d983b3d@137.74.203.240:30303",
"enode://0f2c301a9a3f9fa2ccfa362b79552c052905d8c2982f707f46cd29ece5a9e1c14ecd06f4ac951b228f059a43c6284a1a14fce709e8976cac93b50345218bf2e9@135.181.140.168:30343"
]
}
```
- Add Test for the Ephemery network config
Test can be add in the `/besu/cli/BesuCommandTest.java
` file.
```bash
@Test
public void ephemeryValuesAreUsed() {
parseCommand("--network", "ephemery");
final ArgumentCaptor<EthNetworkConfig> networkArg =
ArgumentCaptor.forClass(EthNetworkConfig.class);
verify(mockControllerBuilderFactory).fromEthNetworkConfig(networkArg.capture(), any());
verify(mockControllerBuilder).build();
assertThat(networkArg.getValue()).isEqualTo(EthNetworkConfig.getNetworkConfig(EPHEMERY));
assertThat(commandOutput.toString(UTF_8)).isEmpty();
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
}
```
- Add Ehemery to the `/besu/src/test/java/besu/cli/NetworkDeprecationMessageTest` file
```bash
@ParameterizedTest
@EnumSource(
value = NetworkName.class,
names = {
"MAINNET", "SEPOLIA", "DEV", "CLASSIC", "MORDOR", "HOLESKY", "LUKSO", "EPHEMERY"
})
```
### Test Output
Click on the the play icon on the ephemery test script and select `Run BesuCommandTest.ephem..`

### Run the node to test implementation
Here is the command for running the node from the clone ;
To see all of the gradle tasks that are available:
```bash
cd besu
./gradlew tasks
# Build from source - Build the distribution binaries:
cd besu
./gradlew installDist
# Run from the binaries you built from source
cd build/install/besu && ./bin/besu --network ephemery
```
The output should look like this



#### Note
Ephemery Testnet is currently running using the flag `--ephemery` current implementation makes use of the default
`ephemery.json` genesis file. Future updates will ensure the genesis file is updated base on the genesis reset function.
## What I will do next week
- Continue working on Besu client implementation
- Update the current implementation done on the `NetworkName.java` file so that the chainId is dynamic instead of constant to align with the new genesis gotten from the implementation logic for the genesis reset function
- Work on the genesis reset function and figure out where the code will be added on the Besu client
- Setup Teku client locally on my machine
## Blockers
- None at the moment!
## References
- [Ephemery.dev](https://ephemery.dev)
- [Besu Repo](https://github.com/hyperledger/besu)
- [Teku documentation](https://docs.teku.consensys.io/)
- [Besu documentation](https://besu.hyperledger.org/)