# Guía para instalar un nodo de [Zosma](http://zosma.dappnode.io/) con Openethereum:
> Zosma usa [Openethereum](https://github.com/openethereum/openethereum) o [Nethermind](https://github.com/NethermindEth/nethermind), en el ejemplo el sistema operativo es Debian10(buster) con Openethereum, *(debería funcionar con Ubuntu)*.
## Instalamos dependencias:
- Actualizamos:
```sh
sudo apt update && sudo apt -y upgrade
```
- Como [indica el repositorio](https://github.com/openethereum/openethereum#31-build-dependencies-) nos hará falta `clang (>= 9.0)`, `clang++`, `pkg-config`, `file`, `make` y `cmake` *(`build-essential` es necesario para [Perl](https://wiki.debian.org/Perl))*:
```sh
sudo apt install -y make clang pkg-config cmake libclang-dev build-essential perl perl-doc yasm wget
```
- Instalamos [Rustup](https://www.rustup.rs/):
```sh
curl https://sh.rustup.rs -sSf | sh
```
## Clonamos repositorio, seleccionamos la rama y compilamos:
```sh
git clone https://github.com/openethereum/openethereum && cd openethereum
git checkout main && cargo build --release --features final
```
> El binario se encuentran en `/openethereum/target/release`
- Descargamos el [génesis](https://gist.github.com/q9f/79c201ca85ad2179fa32f311ef6e3617#file-zosma-json-L23), para Openethereum usamos el [`.json`](https://gist.github.com/q9f/79c201ca85ad2179fa32f311ef6e3617#file-zosma-json).
```sh
wget https://gist.githubusercontent.com/q9f/79c201ca85ad2179fa32f311ef6e3617/raw/0370bf16c6f0b29558d6ff6901fd7d2ff596c398/zosma.json
```
- Iniciamos el nodo:
```sh
openethereum --chain /home/dappnode/zosma.json --jsonrpc-port 8545 --jsonrpc-interface all --jsonrpc-hosts all --jsonrpc-cors all --ws-interface 0.0.0.0 --ws-port 8546 --ws-origins all --ws-hosts all --ws-apis all --reseal-on-txs none --force-sealing --identity "ZosmaWimelValid" --author 0xa9eb4c49718b9a3949a32b669ca7226570399526 --engine-signer 0xa9eb4c49718b9a3949a32b669ca7226570399526 --password /home/dappnode/.local/share/openethereum/keys/zosma-4/.passwd.pwd --keys-path /home/dappnode/.local/share/openethereum/keys/
```
- Flags:
>Ruta donde tenemos el `json` con el génesis:
```sh
--chain /home/dappnode/zosma.json
```
>Identidad del nodo:
```sh
--identity "ZosmaWimelValid"
```
>Clave pública de la wallet asociada al nodo:
```sh
--author 0xa9eb4c49718b9a3949a32b669ca7226570399526
```
>Clave pública de la wallet para las firmas:
```sh
--engine-signer 0xa9eb4c49718b9a3949a32b669ca7226570399526
```
>Archivo de texto donde tenemos la contraseña de la wallet:
```
--password /home/dappnode/.local/share/openethereum/keys/zosma-4/.passwd.pwd
```
>Ruta donde tenemos las claves de la wallet *(es un `json` encriptado)*:
```sh
--keys-path /home/dappnode/.local/share/openethereum/keys/
```
## Creamos servicio de sistema para que el nodo inicie siempre con el servidor en caso de reinicio:
> Entramos en `/etc/systemd/system/` y creamos un archivo llamado `zosma.service` dentro copiamos lo mismo que hemos usado para iniciarlo *(Cambiad el `User` si vuestro usuario es otro)*:
```sh
[Unit]
Description=Zosma node
After=network.target
[Service]
Type=simple
User=dappnode
WorkingDirectory=/home/dappnode
ExecStart=/home/dappnode/openethereum/target/release/openethereum --chain /home/dappnode/ssd/zosmaV/zosma.json --jsonrpc-port 8545 --jsonrpc-interface all --jsonrpc-hosts all --jsonrpc-cors all --ws-interface 0.0.0.0 --ws-port 8546 --ws-origins all --ws-hosts all --ws-apis all --reseal-on-txs none --force-sealing --identity "ZosmaWimelValid" --author 0xa9eb4c49718b9a3949a32b669ca7226570399526 --engine-signer 0xa9eb4c49718b9a3949a32b669ca7226570399526 --password /home/dappnode/.local/share/openethereum/keys/zosma-4/.passwd.pwd --keys-path /home/dappnode/.local/share/openethereum/keys/
Restart=on-failure
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
```
- Iniciamos el servicio de sistema:
```sh
sudo systemctl start zosma.service
```
> Podemos ver los logs de nuestro nodo con `sudo journalctl -f -u zosma.service`
- Activamos el servicio de sistema desde el arranque:
```sh
sudo systemctl enable zosma.service
```
### Problemas encontrados durante el inicio del nodo:
En mi caso en Debian10 he tenido algunos problemas con el servicio `NTP`
---
#### TODO:
- Crear wallet con Metamask e importar el `json` con [mycrypto](https://mycrypto.com/).