Tenderduty, Tendermint zincirleri için kapsamlı bir izleme/takip aracıdır. Birincil işlevi, kaçırılan bloklar varsa validatörü uyarmaktır ve başka birçok özelliğe sahiptir. V2 sürümü ile bir web panosu, prometheus exporter, telegram ve discord bildirimleri, çoklu zincir desteği, daha ayrıntılı uyarı ve daha fazla uyarı türü eklenmiştir.
sudo apt update && apt upgrade -y && sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential \
git make ncdu -y && reboot
Not: Bu komutun sonunda reboot yaptığımız için sunucu yeniden başlatılacak. İşlemlere devam etmek için sunucumuza tekrar bağlanıyoruz.
ver="1.19.4"
cd $HOME
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version
go version komutunun çıktısı şu şekilde olmalıdır:
go version go1.19.4 linux/amd64
cd $HOME
git clone https://github.com/blockpane/tenderduty
cd tenderduty
go install
cp example-config.yml config.yml
Config dosyası içerisinde düzenlememiz gereken yerler var
nano config.yml
İlk düzenlememizi aşağıdaki kısımda yapacağız:
The user-friendly name that will be used for labels. Highly suggest wrappin
"Osmosis":
chain_id is validated for a match when connecting to an RPC endpoint, als
chain_id: osmosis-1
valoper_address: osmovaloper1xxxxxxx...
Osmosis yerine "Celestia" chain_id: kısmına "mocha" ve valoper_address: kısmına Celestia operatör adresimizi yazıyoruz. Operatör adresinizi explorerda validatörünüzün sayfasında bulabilirsiniz.
"Controls various alert settings for each chain." Kısmında ne durumlarda bildirim almak istediğinizi ayarlayabilirsiniz.
Ağ ayarları ve bildirim ayarları şöyle gözükmeli:
Şimdi RPC Endpoints kısmını düzenleyeceğiz. (This section covers our RPC providers. No LCD (aka REST) endpoints are used, only TM's RPC endpoints)
Bu kısma RPC endpoint giriyoruz. Discord'da birçok RPC paylaşıldı, çalışan herhangi bir endpoint girebilirsiniz. Bu örnekte nodejumper RPC endpoint kullanılacak.
https://celestia-testnet.nodejumper.io:443
İkinci kısma yedek bir endpoint girebilirsiniz. İlk rpc'de sorun olursa sistem otamatik olarak ikinciyi kullanmaya geçer. Bu kısma farklı bir rpc girmeniz tavisye edilir.
NOT: Tenderduty'yi Celestia Node'unuzun çalıştığı sunucuya kuruyorsanız localhost olarak kendi node'unuzu kullanabilirsiniz. Bu durumda burada herhangi bir değişiklik yapmanıza gerek yok. Default olarak şöyle olacaktır:
CTRL X Y Enter yaparak kaydedip çıkıyoruz.
sudo tee /etc/systemd/system/tenderdutyd.service << EOF
[Unit]
Description=Tenderduty
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=5
TimeoutSec=180
User=root
WorkingDirectory=$HOME/tenderduty
ExecStart=$(which tenderduty)
# there may be a large number of network connections if a lot of chains
LimitNOFILE=infinity
# extra process isolation
NoNewPrivileges=true
ProtectSystem=strict
RestrictSUIDSGID=true
LockPersonality=true
PrivateUsers=true
PrivateDevices=true
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable tenderdutyd
sudo systemctl start tenderdutyd
sudo journalctl -u tenderdutyd.service -f
Ayrıca herhangi bir browserda http://sunucuip:8888 girerek validatörünüzün durumunu görebilirsiniz. Websayfası şu şekilde olmalıdır:
Öncelikle bot oluşturacağız. Bunun için @BotFather ile konuşma açıyoruz, başlat diyoruz ve /newbot komutunu giriyoruz. /newbot komutunu girdikten sonra bizden bota isim vermemizi isteyecek. Burada herhangi bir isim verebilirsiniz. Bota isim verdikten sonra bizden bot için kullanıcı adı belirlememizi isteyecek. Bu kullanıcı adı bot ile bitmeli. Örneğin conqueror_celestia_bot
Bu adımdan sonra bize API key verecek. Bunu kaybetmeyeceğiniz bir yere kaydedin ve kimseyle paylaşmayın. Bu mesajda botumuzun kullanıcı adı da yazıyor. Buradan tıklayarak botumuza herhangi bir mesaj yazıyoruz.
Botumuza mesaj attıktan sonra şu adıma geçiyoruz;
https://api.telegram.org/bot<BOTUNVERDİĞİAPİ>/getUpdates
Bunu browser ile arattığımızda bize iki satırlık bir sonuç verecek. İkinci satırdaki "chat":{"id":XXXXXX kısmını kopyalayıp kaydediyoruz. Buradaki rakamlar bizim chat id'imiz.
API ve chat id'imizi kaydettik. Şimdi tekrar sunucumuza dönüyoruz. Her şeyin doğru olduğunu kontrol etmek için sunucumuz aracılığıyla bottan kendimize mesaj göndereceğiz.
curl -X POST "https://api.telegram.org/bot<BOTUNVERDİĞİAPİ>/sendMessage" -d "chat_id=<chat_id>&text=Merhaba"
Buradaki komutu kendimize göre düzenliyoruz, daha önce kaydettiğimiz API ve chat_id giriyoruz. Herşey doğru ise bottan mesaj gelmeli
cd $HOME
cd tenderduty
nano config.yml
enabled kısmına yes yazıyoruz api_key kısmına botfather'dan alıp kaydettiğimiz API'yi giriyoruz channel kısmına ise daha önce kaydettiğimiz chat id'yi giriyoruz.
ctrl x y enter ile kaydedip çıkıyoruz.
sudo systemctl restart tenderdutyd && sudo journalctl -u tenderdutyd.service -f
Bu işlemleri tamamladıktan sonra Celestia validatörümüzde herhangi bir sorun olduğunda, blok kaçırdığımızda Telegram botumuzdan bildirim alacağız.