# Mag-set up at i-configure ang consensus layer client (Teku)

## Mag-install ng mga dependencies - Java Runtime Environment

```bash
sudo apt install openjdk-17-jdk
```

## I-download ang Teku

[I-Download](https://github.com/ConsenSys/teku/releases) ang pinakabagong bersyon ng Teku at takbuhin ang proseso ng pag-verify ng checksum upang tiyakin na ang ini-download na file ay hindi nabago.

```bash
cd
curl -LO https://artifacts.consensys.net/public/teku/raw/names/teku.tar.gz/versions/24.3.1/teku-24.3.1.tar.gz
echo "c0d1754569223e01c4ccab4a3adac8cd120586b8c9806aa32161189e6b4109b5 teku-24.3.1.tar.gz" | sha256sum --check
```

{% hint style="info" %}
Ang bawat ini-download na file ay mayroong kaniya-kaniyang checksum. Palitan ang aktwal na checksum at URL ng link ng pag-download sa code block sa itaas.

{% hint style="info" %}
Tiyaking pumili ng bersyong amd64. Mag-right click sa naka-link na teksto at piliin ang "copy link address" upang kunin ang URL ng link ng pag-download sa curl.
{% endhint %}
{% endhint %}

***Inaasahang output**: I-verify ang output ng checksum verification.*

```
teku-24.3.1.tar.gz: OK
```

Kung na-verify ang checksum, i-ekstrak ang mga files at ilipat ang mga ito sa `(/usr/local/bin)` na directory para sa kalinisan at pinakamahusay na praktis. Pagkatapos, linisin ang mga kopyang-duplikado.

```bash
tar xvf teku-24.3.1.tar.gz
sudo cp -a teku-24.3.1 /usr/local/bin/teku
rm -r teku-24.3.1.tar.gz teku-24.3.1
```

## I-configure ang Teku Consensus Client

{% hint style="info" %}
*Magpapatakbo tayo ng consensus client at consensus client ng Teku bilang hiwalay na mga serbisyo upang magkaroon ng mas malawak na kakayahan na mag-configure ng isang failover node para sa maximum uptime kapag ito ay kinakailangan mo na.*
{% endhint %}

Gumawa ng isang account (`teku`) na walang access sa server para sa Teku Consensus Client & Validator Client upang tumakbo bilang isang background service. Ang uri ng user account na ito ay walang root access kaya't ito ay nagbabawal sa potensyal na mga attacker na mag-access lamang sa mga serbisyo ng Teku Consensus Client & Validator Client sa hindi malamang na pangyayari na kanilang magawa na makapasok sa pamamagitan ng isang compromised na update ng client.

```bash
sudo useradd --no-create-home --shell /bin/false teku
```

Lumikha ng isang directory para sa Teku upang mag-imbak ng data ng blockchain at validator ng Consensus layer. Ilipat ang directory ng `validator_keys` sa folder na ito. Pagkatapos, itakda ang may-ari ng directory na ito sa `teku` upang ang user na ito ay makapagbasa at makapagsulat sa directory.

```bash
sudo mkdir -p /var/lib/teku_beacon
sudo chown -R teku:teku /var/lib/teku_beacon
sudo chmod 700 /var/lib/teku_beacon
```

Kung walang mga error, lumikha ng isang konfigurasyon ng systemd file para sa Teku Consensus Client service upang tumakbo sa background.

```bash
sudo nano /etc/systemd/system/tekubeacon.service
```

I-paste ang mga parameter ng konfigurasyon sa ibaba sa file:

```bash
[Unit]
Description=Teku Beacon Node (Holesky)
Wants=network-online.target
After=network-online.target
[Service]
User=teku
Group=teku
Type=simple
Restart=always
RestartSec=5
Environment="JAVA_OPTS=-Xmx6g"
Environment="TEKU_OPTS=-XX:-HeapDumpOnOutOfMemoryError"
ExecStart=/usr/local/bin/teku/bin/teku \
  --network=holesky \
  --data-path=/var/lib/teku_beacon \
  --ee-endpoint=http://127.0.0.1:8551 \
  --ee-jwt-secret-file=/var/lib/jwtsecret/jwt.hex \
  --initial-state=https://holesky.beaconstate.ethstaker.cc/ \
  --metrics-enabled=true \
  --rest-api-enabled=true \
  --rest-api-interface=<Internal_IP_address> \
  --rest-api-host-allowlist=<Internal_IP_address> \
  --rest-api-port=5052 \
  --builder-endpoint=http://127.0.0.1:18550 \
  --validators-builder-registration-default-enabled=true \
  --p2p-nat-method=UPNP 

[Install]
WantedBy=multi-user.target
```

Kapag tapos ka na, i-save ito gamit ang `Ctrl+O` at `Enter`, pagkatapos ay mag-exit gamit ang `Ctrl+X`. Unawain at suriin ang iyong configuration summary sa ibaba, at baguhin kung kinakailangan.

Buod ng konfigurasyon ng Teku Consensus Client:

1. `--network`: I-takbo ang Consensus Client service sa Holesky testnet
2. `--data-path`: Itakda ang directory para sa Teku upang mag-imbak ng data kaugnay ng consensus client
3. `--ee-endpoint`: URL upang kumonekta sa execution layer client
4. `--ee-jwt-secret`: Landas ng file upang matagpuan ang JWT secret na nilikha natin noon
5. `--initial-state`: Pinapagana ang halos instant syncing ng Consensus Client sa pamamagitan ng pagturo sa isa sa mga checkpoint sync URLs dito -[ https://eth-clients.github.io/checkpoint-sync-endpoints/](https://eth-clients.github.io/checkpoint-sync-endpoints/)
6. `--metrics-enabled`: Pinapagana ang monitoring ng mga metrics ng Consensus Client
7. `--rest-api-enabled`: Pinapayagan ang validator client na kumonekta sa consensus client na ito. Pinapayagan din ang mga monitoring endpoints na kunin ang mga metrics mula sa serbisyong ito
8. `--rest-api-interface`: Itinatakda ang IP address upang kumonekta sa REST API ng consensus client na gagamitin ng Diva service. Gamitin ang internal IP address ng iyong device dito (tingnan sa pamamagitan ng pagtakbo ng ip a) - halimbawa 192.168.x.x. Ang default ay 127.0.0.1 kung hindi
9. `--rest-api-port`: Itinatakda ang port upang kumonekta sa consensus client
10. `--builder-endpoint`: URL upang kumonekta sa mga external builders (hal. MEV relays)
11. `--validators-builder-registration-default-enabled`: Kinakailangan kapag gumagamit ng mga external builders upang bumuo ng mga blocks (hal. MEV relays)
12. `--p2p-nat-method=UPNP`: Pinapagana ang iyong Consensus Client na mas mahusay na matuklasan at kumonekta sa iba pang mga Consensus Client sa ETH network nang hindi kinakailangang gumamit ng port forwarding

## Simulan ang Teku Consensus Client

I-reload ang systemd upang ma-register ang mga binago, simulan ang serbisyo ng Teku Consensus Client, at suriin ang status nito upang tiyakin na ito ay tumatakbo.

```bash
sudo systemctl daemon-reload
sudo systemctl start tekubeacon.service
sudo systemctl status tekubeacon.service
```

**Inaasahang output**: Ang output ay dapat magsabi na ang Teku Consensus Client ay "active (running)". Pindutin ang CTRL-C upang lumabas at magpapatuloy ang Teku Consensus Client sa pagtakbo. Dapat itong tumagal lamang ng ilang minuto para mag-sync ang Teku sa Holesky testnet.

<figure><img src="/files/MeJZ322Hj5jSQzW8fMIx" alt=""><figcaption><p>Halimbawa na labas ng Teku consensus client na tumatakbo sa mainnet </p></figcaption></figure>

Gamitin ang sumusunod na command upang suriin ang mga log ng proseso ng pag-sync ng Teku Consensus Client. Mag-ingat sa anumang mga babala o mga error.

```bash
sudo journalctl -fu tekubeacon -o cat | ccze -A
```

**Inaasahang output:**

<figure><img src="/files/ZHS1ICSCaI5PyvtrWgGh" alt=""><figcaption><p>Etong halimbawa ay tumatakbo sa goerli testnet. Dapat ay nakikita mo ang ibang initial state URL na nai-pprint sa Mainnet.</p></figcaption></figure>

Pindutin ang `Ctrl+C` upang lumabas sa monitoring.

Kung ang serbisyo ng Teku Consensus Client ay umaandar nang maayos, maaari na nating paganahin ito upang umandar nang awtomatiko kapag nire-reboot ang sistema.

```bash
sudo systemctl enable tekubeacon.service
```

## I-verify ang mga Initial State roots (Checkpoint Sync)

1. Pumunta sa[ https://holesky.beaconcha.in/](https://holesky.beaconcha.in/) sa iyong browser at humanap ng numero ng slot (`slot`).
2. Tiyakin ang `Block Root` at `State Root` gamit ang iyong `journalctl` output <br>

   <figure><img src="/files/KZ3cZRr5afCBDA89vxT9" alt=""><figcaption><p>halimbawa ng testnet: prater.beaconcha.in</p></figcaption></figure>
3. `journalctl` output

<figure><img src="/files/ikCdWLXckxXSbesM0vI3" alt=""><figcaption></figcaption></figure>

## Mga Mapagkukunan

* Mga Release:[ https://github.com/Consensys/teku/releases](https://github.com/Consensys/teku/releases)
* Dokumentasyon:[ https://docs.teku.consensys.io/introduction](https://docs.teku.consensys.io/introduction)
* Discord:[ https://discord.gg/consensys](https://discord.gg/consensys) (Pumili ng Teku channel)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bitskwela.gitbook.io/bitskwela-x-lido-cs-fleet-eth-home-staking-guide/installing-and-configuring-clients/mag-set-up-at-i-configure-ang-consensus-layer-client-teku.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
