Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improvements to evm-sidechain documentation #115

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 65 additions & 9 deletions docs/evm-sidechain/join-evm-sidechain-devnet.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ For ease of use, create an alias, `exprd`, to run all commands inside your Docke
## XRPL EVM Sidechain Node Hardware Requirements

- Linux/AMD64 operating system.
- 4 or more physical CPU cores.
- At least 500GB of NVME SSD disk storage.
- 6 or more physical CPU cores.
- At least 600GB of NVME SSD disk storage.
- At least 32GB of RAM.
- At least 100Mbps network bandwidth.

Expand All @@ -28,13 +28,14 @@ For ease of use, create an alias, `exprd`, to run all commands inside your Docke

Before proceeding to initialize the node, ensure that the following pre-requisites are installed and running:

* Docker 19+
* Create an alias to run all commands in this tutorial inside a Docker container:
* [Docker 19+](https://docs.docker.com/engine/install/)
* Create an alias to run all commands in this tutorial inside a Docker container. You may want to add this to your `.bashrc` or `.zshrc`:

```bash
alias exrpd="docker run -it --rm -v ~/.exrpd:/root/.exrpd --entrypoint=\"\" peersyst/xrp-evm-blockchain:latest exrpd"
```


## Initialize Node

The first task is to initialize the node, which creates the necessary validator and node configuration files.
Expand All @@ -45,12 +46,16 @@ The first task is to initialize the node, which creates the necessary validator
exrpd config chain-id exrp_1440002-1
```

2. Create or add a key to your node. For this tutorial, we use the `test` keyring:

2. Create or add a key to your node. Depending on your system, the default keyring may vary. For this tutorial, we use the `test` keyring:
Create a new key:
```bash
exrpd keys add <key_name> --keyring-backend test
```

Import an existing private key:
```bash
exrpd keys unsafe-import-eth-key <key_name> <private_key>
```
Note the `key_name` you enter as you need to reference it in subsequent steps.

**Note** For more information on a more secure setup for your validator, refer to [cosmos-sdk keys and keyrings](https://docs.cosmos.network/v0.46/run-node/keyring.html) and [validator security](evm-sidechain-validator-security.md).
Expand All @@ -64,7 +69,7 @@ The first task is to initialize the node, which creates the necessary validator

Monikers can contain only ASCII characters. Using Unicode characters renders your node unreachable.

All these commands create your `~/.exrpd` (i.e `$HOME`) directory with subfolders `config/` and `data/`. In the `config` directory, the most important files for configuration are `app.toml` and `config.toml`.
All these commands create your `~/.exrpd` (i.e. `$HOME`) directory with subfolders `config/` and `data/`. In the `config` directory, the most important files for configuration are `app.toml` and `config.toml`.

## Genesis & Seeds

Expand Down Expand Up @@ -118,11 +123,15 @@ All these commands create your `~/.exrpd` (i.e `$HOME`) directory with subfol
exrpd start
```

If you would like to run it in Docker's deamon mode, you can use the following command:
If you would like to run it in Docker's daemon mode, you can use the following command:

```bash
docker run -d --name=node --entrypoint="" --restart=always -v ~/.exrpd:/root/.exrpd peersyst/xrp-evm-blockchain:latest exrpd start
```
```
If you would like to port forward relevant endpoints (Tendermint RPC, JSON-RPC, WSS) to the host, you can use some or all of the additional arguments in the following command:
```bash
docker run -d --name=node --entrypoint="" -p 8545:8545 -p 8546:8546 -p 26657: 26657 --restart=always -v ~/.exrpd:/root/.exrpd peersyst/xrp-evm-blockchain:latest exrpd start
```

With this docker command, you will be creating a container with the image `peersyst/xrp-evm-blockchain:latest`
that will run in background (`-d` flag) which will be named node (`--name=node`) that will be restarted in the case it stops (`--restart=always flag`)
Expand All @@ -134,6 +143,53 @@ All these commands create your `~/.exrpd` (i.e `$HOME`) directory with subfol
docker logs -f <container_id>
```

## Additional Configuration Considerations

If you would like to monitor your node with external tools such as Prometheus or expose the node to service RPCs, the following changes should be made.

### Expose the Tendermint RPC Endpoint for monitoring

Adjust the configuration to expose the Tendermint RPC Endpoint to the Internet

```bash
# Open the node's configuration
vi ~/.exrpd/config/config.toml

# On line 92, change the value of laddr to expose the endpoint to the internet
laddr = "tcp://0.0.0.0:26657"

# Save changes
:wq
```

Once the configuration change is made, stop the node, remove the old container configuration and start again.
```bash
# Restart the node
exrpd restart
```
Be sure to confirm that the docker container is correctly exposing port `26657` and that your host machine is exposing port `26657`.

### Expose the JSON-RPC Interface and WSS Interface Ports for RPC utilization

Some users may want to use the nodes for RPC purposes. Adjust the configuration to expose the correct ports for JSON-RPC and WSS
```bash
# Open the node's configuration
vi ~/.exrpd/config/app.toml

# On line 278, change the value of address to expose the JSON-RPC Endpoint
address = "0.0.0.0:8545"

# On line 281, change the value of ws-address to expose the EVM Websocket Endpoint
ws-address = "0.0.0.0:8546
```

Once the configuration change is made, stop the node, remove the old container configuration and start again.
```bash
# Restart the node
exrpd restart
```
Be sure to confirm that the docker container is correctly exposing ports `8545`, `8546` and that your host machine is exposing port `8545`, `8546`.

## Join the Proof of Authority with your node

Similar to the XRPL mainnet, the Devnet runs in a Proof of Authority consensus mechanism. In order to start signing for new blocks and participate in the network consensus,
Expand Down