Repository: ruesandora/mangata-AVS Branch: main Commit: 49e5e5abe14b Files: 7 Total size: 20.7 KB Directory structure: gitextract_dp4jfmdt/ ├── README.md ├── auto-restart/ │ ├── README.MD │ ├── README_en.md │ ├── requirements.txt │ └── restart_container_if_err.py ├── güncelleme.md └── node taşıma.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: README.md ================================================

Mangata X - AVS

## Notlar: > Selamlar, bir süredir mangata çalıştırıyorum lakin 30 kişi ile sınırlıydı ve artık sınır kalktı. > Neden Mangata kuruyor Eigen AVS ekosistemine önem veriyorum [buradan](https://x.com/Ruesandora0/status/1754194993592275362?s=20) okuyabilirsiniz. > Testnet ne kadar sürürecek bilinmiyor, rewards var evet - KYC olabilir. > Ayrıca Mangatanın bir tokeni mevcut, yatırımcıları oldukça iyi ileride daha iyi hale gelecek bir protokol ve testnet önemli. > Ricamdır notları ve satır aralarını okumanızda, bu repoyu paylaştıktan sonra uçakta olacağım her şeyi yazıyorum size. > Son olarak, hocam şu node ile bu node yan yana olur mu diye sormayın [buraya](https://x.com/Ruesandora0/status/1744023547805061515?s=20) bakın arkadaşlar <3 > Topluluk kanalları: [Sohbet Kanalımız](https://t.me/RuesChat) - [Duyurular ve Gelişmeler](https://t.me/RuesAnnouncement) - [Whatsapp](https://whatsapp.com/channel/0029VaBcj7V1dAw1H2KhMk34) - [Mangata Discord](https://discord.gg/mangata) #

Donanım

> Görseldekine benzer bir cihaz yeterli, bunun için [Hetzner](https://github.com/ruesandora/Hetzner) kullanıyorum Ekran Resmi 2024-02-07 13 45 17

Kurulum

```console # Güncelleme ve docker kurulumu, komutları sırasıyla girebilirsiniz sudo apt update -y && sudo apt upgrade -y for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # bu komut satırını toplu girebilirsiniz echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # docker güncelleme ve run sudo apt update -y && sudo apt upgrade -y sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo docker run hello-world # Go kurulumu cd $HOME ver="1.21.0" 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 ```

EigenLayer CLI kurulumu

```console # eigen klonlayalım git clone https://github.com/Layr-Labs/eigenlayer-cli.git cd eigenlayer-cli mkdir -p build go build -o build/eigenlayer cmd/eigenlayer/main.go # Binary dosyamızı PATH yoluna gönderiyoruz cd sudo cp eigenlayer-cli/build/eigenlayer /usr/local/bin/ ``` > Altta ki komutlar ile KEY oluşturuyoruz.. > `ecdsa` KEY bize bir `evm` adresi, `private key` ve dosya `path` (yolu) verecek > `bls` KEY ise bir `private key` verecek. Hepsini kaydedin. > Kapalı parantez dahil, `` değiştirin, <> parantezleri kaldırın.. > Her komuttan sonra şifre oluşturmanızı isteyecek, şifre karmaşık olmalı. > Örnek şifre DenemeSifre123.,#% ``` eigenlayer operator keys create --key-type ecdsa eigenlayer operator keys create --key-type bls ``` > Listeleyerek keyleri ve dosya yollarını kontrol edin ``` eigenlayer operator keys list ``` > Örnek ecdsa key create çıktısı ![image](https://github.com/ruesandora/mangata-AVS/assets/101149671/e72d6567-013a-492f-a6e0-1d610a286a45)

Operator kaydı

```console # Bu komutun istediği verileri giriyoruz, veriler aşağıda yazdım. eigenlayer operator config create ``` > Sırasıyla bunlarıda yazıyorum kolaylık için, en aşağıda görselide olcak: > y diyoruz > operator adresi olarak, `ecdsa key` oluşturduğumuzda verdiği `evm` adresini girin. > earning operator adres yine aynı ecdsa-evm adresi girin, yukarıdaki ile aynı. > goerli eth RPC isteyecek, [infuradan](https://app.infura.io/) aldım ben ücretsiz goerli RPC > `ecdsa key` oluşturduğumuzda bize verdiği key pathi tam şekilde giriyoruz > aynı şekilde `bls key` path giriyoruz - path ne olduğunu bilmeyenler için görsele bakabilir > goerli seçiyoruz ve bitiyor. > Bu bize operator.yaml ve metadata.json dosyalarını oluşturacak.. ![image](https://github.com/ruesandora/mangata-AVS/assets/101149671/28554c5b-873d-4296-8e1b-8cda670c8e6f) # ### peki metadata'da işlemlerimiz biraz farklı hemen anlatıyorum: > `nano metadata.json` komutu ile içeriği kopyalıyoruz. > metadata.json içeriğini kendinize göre düzenleyeceksiniz ve public erişilebilir bir yere upload edeceksiniz. > Bunun için githubda bir repo oluşturup metadata.json içeriğinizi oraya yazın ve raw linkini kenarda tutabilirsiniz. Hem metadata.json içinde düzenleyeceksiniz hem de github reponuzda. > Aşağıya görsel bırakıyorum: ![image](https://github.com/ruesandora/mangata-AVS/assets/101149671/e44e223f-b94a-43c8-9fc0-b909fc8f1564) # ### raw'ı hallettiysek kaydımıza devam edelim ```console # Operator.yaml dosyasını nano ile açıyoruz nano operator.yaml ``` > Burada yine değişiklik yapacağız > `metadata_url` için `metadata.json` dosyamızın public `raw linki` > `el_slasher_address` için: 0x3865B5F5297f86c5295c7f818BAD1fA5286b8Be6 > `bls_public_key_compendium_address` için: 0xc81d3963087Fe09316cd1E032457989C7aC91b19 > ctrl + x + y ile kaydedip çıkıyoruz. ![image](https://github.com/ruesandora/mangata-AVS/assets/101149671/e61df955-89ac-4f31-8318-46c013d78817) ```console # operatoru kaydetmeden önce yukarıda aldığınız EVM cüzdanınıza biraz goerli ETH gönderin # Operatörü kaydediyoruz eigenlayer operator register operator.yaml # Loglar aksın başarılı bir şekilde sonlanana kadar müsade edin # Durumunu kontrol etmek için eigenlayer operator status operator.yaml # metadata herhangi bir değişiklik yaptığınızda güncellemek için eigenlayer operator update operator.yaml ```

Eigen bitti şimdi Mangata AVS

> reth temini için [buradan](https://app.uniswap.org/swap??outputCurrency=0x178e141a0e3b34152f73ff610437a7bf9b83267a) swap > steth temini için [buradan](https://app.uniswap.org/swap??outputCurrency=0x1643e812ae58766192cf7d2cf9567df2c37e9b7f ) swap > Elimizdeki reth ve steth stake etmemiz gerekiyor. > Elinizdeki `ecsda private keyi` Metamaska `import` edin ve swap ile temin ettiğiniz tokenleri bu cüzdana gönderin. > Sonrasında [buradan](https://goerli.eigenlayer.xyz/) cüzdanı bağlıyoruz ve bu iki poola stake ediyoruz. ![image](https://github.com/ruesandora/mangata-AVS/assets/101149671/9eeea1ad-ee92-42b9-b56d-5ed7fe32c632) > Txler onaylandıktan sonra terminalimize dönüyoruz ve AVS operatörümüzü kuruluma geçiyoruz ```console git clone https://github.com/mangata-finance/avs-operator-setup.git cd avs-operator-setup chmod +x run.sh nano .env ``` ![image](https://github.com/ruesandora/mangata-AVS/assets/101149671/009b304b-23ed-4045-b23f-b0593ce76f89) ```console # Üst kısma dokunmuyorsunuz. SADECE: TODO yazan satırın altı bizi ilgilendiriyor. ETH_RPC_URL= goerli eth rpc http linki ETH_WS_URL= goerli eth wss linki # bu linkleri infuradan almıştık, zorlanırsan rues chatten yardım talep edin. # key yolundan kastım path, yukarıda öğrenmiştiniz. ECDSA_KEY_FILE_HOST=/.eigenlayer/operator_keys/.ecdsa.key.json BLS_KEY_FILE_HOST=/.eigenlayer/operator_keys/.bls.key.json # yukarıda bir şifre belirlemiştik her yerde kullandığımız. ECDSA_KEY_PASSWORD= eigen cli kurulumda belirlediğimiz karmaşık key şifresi BLS_KEY_PASSWORD= eigen cli kurulumda belirlediğimiz karmaşık key şifresi # ctrl + x + y yapıp kaydedip çıkıyoruz # şimdi opt-in yapalım son hamleler.. ./run.sh opt-in # key yolunda, şifrede vs hata yoksa bu adımlardan sonra docker compose up yapıyoruz ve sona geliyoruz. docker compose up -d # bir sorun olup olmadığını kontrol etmek için docker ps ile container id alın docker logs -f # container id başta olur ve kurduğunuz node'un isminden hangi id olduğunu anlayabilirsiniz. ``` > Loglarınızı Mangata AVS kanalına atıp rolünüzüde alabilirsiniz. > işlemler bu kadardı, sırf sorun var mı diye tekrar test edip kurdum sorun yok çünkü bu repoyu eskiden yazdım. > İlla ki eksiğim vardır, PR atarsınız veya ben commitlerim, ben yolculuktayken siz öğrenmeye bakın bir şeyler. ================================================ FILE: auto-restart/README.MD ================================================ # Mangata-AVS Operatörü Otomatik Yeniden Başlatma Bu komut dosyası, Mangata operatörü "err: connection is shut down" hatasını verdiğinde konteyneri yeniden başlatır. Bu komut dosyası kendi sunucumda çalışmaktadır ve herhangi bir sorun olmamıştır. Komut dosyasını çalıştırmadan önce varsayılan konteyner adını değiştirdiyseniz `container_name` değişkenini kontrol edin (konteyner adını kontrol etmek için `docker ps` kullanın). **Not:** * Bu komut dosyası, kullanıcının docker kullanıcı grubuna eklenmesini gerektirir. * Gerekli izinlere sahip değilseniz komut dosyası başarısız olabilir. ## Kurulum ```bash ## Repoyu klonlama git clone https://github.com/walter-s0bch4k/mangata-AVS-with-auto-restart.git # İndirilen repoda doğru klasöre gidin cd mangata-AVS-with-auto-restart/auto-restart # Eğer repoyu farklı bir adresten indirdiyseniz, lütfen indirdiğiniz adresin dosya isimlerini kontrol ederek # İçerisinde `requirements.txt` ve `restart_container_if_err.py` dosyaları olan klasöre gidin. # Doğru yerde olduğunuzu kontrol etmek için ls -al # Komutunun çıktısında `requirements.txt` ve `restart_container_if_err.py` dosyalarını görmelisiniz. ## pip Kurulumu # pip kurulum komut dosyasını indirin curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # Komut dosyasını çalıştırın, python3'ü python ile değiştirmeniz gerekebilir sudo python3 get-pip.py ## Docker Ayarları # docker kullanıcı grubu oluşturun sudo groupadd docker # Mevcut kullanıcıyı docker grubuna ekleyin sudo usermod -aG docker $USER # Bu adımdan sonra hesabınızdan çıkıp tekrar giriş yapmanız gerekmektedir. # Uzak bağlantı kullanıyorsanız bağlantıyı kapatıp tekrar bağlanmayı deneyebilirsiniz. ## Komut Dosyasını Çalıştırma # Gerekli paketleri kurun pip install -r requirements.txt # Arka planda çalışması için nohup kullanın, bağlantınız kesilse bile çalışmaya devam eder nohup python3 -u restart_container_if_err.py > logs.txt & # Logları kontrol edin. İçeriği dikkatlice okuyun, hata olmamalıdır. cat logs.txt ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ## Konteyneri manuel olarak yeniden başlattıysanız veya kapattıysanız işlemi sonlandırın! # PID'yi alın ps -aux | grep restart_container_if_err.py # Ardından işlemi sonlandırın kill -9 ``` ================================================ FILE: auto-restart/README_en.md ================================================ # Mangata-AVS Operator Auto Restart This script restarts the container if the Mangata operator raises the `err: connection is shut down` error. Consequences are at your own responsibility. It is running on my server. Check the `container_name` variable if you changed the default name of the container before starting the script (`docker ps` to check container name). **Note:** * This script requires the user to be added to the `docker` user group. * The script may fail if you don't have the required permissions. ## Installation ```bash ## Cloning repository git clone https://github.com/walter-s0bch4k/mangata-AVS-with-auto-restart.git # Change directory to downloaded repository cd mangata-AVS-with-auto-restart # If you downloaded the repo from a different location, please navigate to the folder containing the # `requirements.txt` and `restart_container_if_err.py` files by checking the file names in the download location. # To verify you are in the correct location, run the following command: ls -al # You should see the `requirements.txt` and `restart_container_if_err.py` files in the output of the command. ## Installing pip # Get pip installation script curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # Execute script to install, you might need to replace python3 to python etc. sudo python3 get-pip.py ## Docker settings # Create docker user group sudo groupadd docker # Add current user to docker group sudo usermod -aG docker $USER ## Executing the script # Install required packages pip install -r requirements.txt # Execute using nohup to make it run in background even if you disconnect nohup python3 -u restart_container_if_err.py > logs.txt & # Checking logs. Please read content carefully, there should be no errors. cat logs.txt ## !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ## Kill the process if you manually restart container or close it! # Get PID by ps -aux | grep restart_container_if_err.py # Then kill process kill -9 ``` ================================================ FILE: auto-restart/requirements.txt ================================================ certifi==2024.2.2 charset-normalizer==3.3.2 docker==7.0.0 idna==3.6 packaging==23.2 requests==2.31.0 urllib3==2.2.0 ================================================ FILE: auto-restart/restart_container_if_err.py ================================================ import json import docker from datetime import datetime client = docker.from_env() # Connect to the local Docker daemon if __name__ == "__main__": # Replace with your actual container name container_name = "mangata-finalizer-node" container = client.containers.get(container_name) print("Script started!") print("Container State: ", container.attrs['State']) while True: # We assume that container is already up and running # It is restarted if "connection is shut down" error is encountered in the logs if container.attrs['State']['Restarting'] == True or container.attrs['State']['Status'] == "restarting": pass #  If state is restarting do nothing else: try: script_initalized = datetime.now() #  Required to filter logs by time for line in container.logs(stream=True, follow=True, since=script_initalized): decoded_line = line.decode('utf-8').strip().split("\t") if len(decoded_line) > 1 and decoded_line[1] == "INFO": try: # Required to suppress errors raised by json package message = json.loads(decoded_line[-1]) if "err" in message: if message["err"] == "connection is shut down": print("Restart required!") print(decoded_line[0], message) container.restart() break else: print(decoded_line[0], message) except Exception as e: pass except Exception as e: print(f"Error: {e}") break #  Terminate ================================================ FILE: güncelleme.md ================================================ // mevcut avs-operator-setup klasörü içindeki .env dosyasını yedek alın ``` cd avs-operator-setup docker-compose down git reset --hard git pull git checkout tags/v0.2 -b v0.2 ``` //yedek aldığın .env dosyasını açıp (`nano .env`) yeni dosyadaki boşluk olan yerleri de değiştir. Eigende stETH min 1 olacak şekilde stake arttır ``` docker-compose pull docker-compose up -d docker logs -f avs-finalizer-node ``` ## Readonly hatası alıyorsanız: ``` # operatörü durdur docker-compose down ``` Docker config dosyasına giriyoruz ``` nano docker-compose.yml ``` Config dosyasının içindeki iki satırın sonunda `:readonly` ibaresini siliyoruz. Sonrası Ctrl + X -> y -> Enter Operatörü yeniden başlatıyoruz: ``` docker-compose up -d ``` ================================================ FILE: node taşıma.md ================================================

mangata-avs-node-tasima-

## > cc: [ruesandora](https://github.com/ruesandora/mangata-AVS) > Kendi node'umu taşırken size yardımcı olması için bir repo yaptım. Başlayalım.( Önceki kurulumunuz başarılı değilse bu repo sizin için uygun değildir. ) ```console # Öncelikle eski sunucunuza bu komutları uygulayın. cd avs-operator-setup docker ps -a docker stop ( tırnakları kaldırıp aldığımız iki adet container id'i ayrı ayrı komut olarak girelim. ) # Güncelleme ve docker kurulumu, komutları sırasıyla girebilirsiniz sudo apt update -y && sudo apt upgrade -y for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # bu komut satırını toplu girebilirsiniz echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # docker güncelleme ve run sudo apt update -y && sudo apt upgrade -y sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo docker run hello-world # Go kurulumu cd $HOME ver="1.20.2" 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 ``` EigenLayer CLI kurulumu ```console # eigen klonlayalım git clone https://github.com/Layr-Labs/eigenlayer-cli.git cd eigenlayer-cli mkdir -p build go build -o build/eigenlayer cmd/eigenlayer/main.go # Binary dosyamızı PATH yoluna gönderiyoruz cd sudo cp eigenlayer-cli/build/eigenlayer /usr/local/bin/ mkdir -p /root/.eigenlayer/operator_keys ```

Simdi burada önemli bir kısım var. Burayı dikkatli yapalım.

```console # keylerimizi yeni sunucumuza import edelim.(parantezler olmadan) #ecdsa key için aşağıdaki komut. eigenlayer operator keys import --key-type ecdsa # bls key için aşağıdaki komut. eigenlayer operator keys import --key-type bls [keyname] [privatekey] # bu komut ile keylerimizi kontrol edelim.doğru ise devam. eigenlayer operator keys list # keylerimizi taşımış olduk. ``` Operator kaydı ```console # Bu komutun istediği verileri giriyoruz, veriler aşağıda yazdım. eigenlayer operator config create ``` > Sırasıyla bunlarıda yazıyorum kolaylık için, en aşağıda görselide olcak: > y diyoruz > operator adresi olarak, `ecdsa key` oluşturduğumuzda verdiği `evm` adresini girin. > earning operator adres yine aynı ecdsa-evm adresi girin, yukarıdaki ile aynı. > goerli eth RPC isteyecek, [infuradan](https://app.infura.io/) aldım ben ücretsiz goerli RPC > `ecdsa key` oluşturduğumuzda bize verdiği key pathi tam şekilde giriyoruz > aynı şekilde `bls key` path giriyoruz - path ne olduğunu bilmeyenler için görsele bakabilir > goerli seçiyoruz ve bitiyor. > Bu bize operator.yaml ve metadata.json dosyalarını oluşturacak.. ![image](https://github.com/ruesandora/mangata-AVS/assets/101149671/28554c5b-873d-4296-8e1b-8cda670c8e6f) # ```console # Operator.yaml dosyasını nano ile açıyoruz nano operator.yaml ``` > Burada yine değişiklik yapacağız > `metadata_url` için `metadata.json` dosyamızın public `raw linki` > `el_slasher_address` için: 0x3865B5F5297f86c5295c7f818BAD1fA5286b8Be6 > `bls_public_key_compendium_address` için: 0xc81d3963087Fe09316cd1E032457989C7aC91b19 > ctrl + x + y ile kaydedip çıkıyoruz. ![image](https://github.com/ruesandora/mangata-AVS/assets/101149671/e61df955-89ac-4f31-8318-46c013d78817) ```console # daha önceden register ettiğimiz için tekrar etmemize gerek yok. # Durumunu kontrol etmek için eigenlayer operator status operator.yaml # metadata herhangi bir değişiklik yaptığınızda güncellemek için eigenlayer operator update operator.yaml ``` Eigen bitti şimdi Mangata AVS ```console git clone https://github.com/mangata-finance/avs-operator-setup.git cd avs-operator-setup chmod +x run.sh nano .env ``` ![image](https://github.com/ruesandora/mangata-AVS/assets/101149671/009b304b-23ed-4045-b23f-b0593ce76f89) ```console # Üst kısma dokunmuyorsunuz. SADECE: TODO yazan satırın altı bizi ilgilendiriyor. ETH_RPC_URL= goerli eth rpc http linki ETH_WS_URL= goerli eth wss linki # bu linkleri infuradan almıştık, zorlanırsan rues chatten yardım talep edin. # key yolundan kastım path, yukarıda öğrenmiştiniz. ECDSA_KEY_FILE_HOST= eigen cli kurulumda aldığımız ecdsa key yolumuz BLS_KEY_FILE_HOST= eigen cli kurulumda aldığımız bls key yolumuz # yukarıda bir şifre belirlemiştik her yerde kullandığımız. ECDSA_KEY_PASSWORD= eigen cli kurulumda belirlediğimiz karmaşık key şifresi BLS_KEY_PASSWORD= eigen cli kurulumda belirlediğimiz karmaşık key şifresi # ctrl + x + y yapıp kaydedip çıkıyoruz # şimdi opt-in yapalım son hamleler.. ./run.sh opt-in # key yolunda, şifrede vs hata yoksa bu adımlardan sonra docker compose up yapıyoruz ve sona geliyoruz. docker compose up -d # bir sorun olup olmadığını kontrol etmek için docker ps ile container id alın docker logs -f # container id başta olur ve kurduğunuz node un isminden hangi id olduğunu anlayabilirsiniz. ```