Uzun zamandır testnet sürecinde 1. fazda olan proje için 2023’ün ikinci yarısından sonra mainnet'te restake opsiyonunu devreye almışlardı.
Takip edildiyse yoğun ilginin olduğu ve çokça konuşulduğuna şahit olduğunuzu düşünüyorum. Yakın zamanda duyurdukları 2. faz için ise operatör kurma, delegasyon adımları gibi konuların testleri aklımdaydı.
Konuyla alakalı video buldum ve kaynak olarak kullandığımı belirtmek isterim. İlgili arkadaşı detaylı anlatım ve açıklayıcı ifadeleri için kutluyorum.
Nitekim ben de oradan takip ettim. Sadece sürecin adımlarını beliryebilmek ve geriye dönük baktığım zaman ne yaptığımı takip edebilmek için bu yazıyı yazıyorum. Süreçleri adım adım tarif etmeye çalışacağım.
Her ne kadar aşağıdaki adımlar Stage 1'in konusu olsa da adım adım gitmek adına süreci yazacağım.
Goerli Ethereum testnetinde GoerliETH bulundurmanız gerekiyor. Bunun için faucet'lar var. https://goerlifaucet.com/ gibi sitelerden ya da google search yaparak temin edebilirsiniz.
https://app.uniswap.org/swap vasıtasıyla rETH swap'leyebilirsiniz. EigenLayer testi için Rocket Pool Ether'e restake yapacağız.
rETH'lerimizi https://goerli.eigenlayer.xyz/token/rETH adresi üzerinden aşağıdaki gibi deposit yapıyoruz. Deposit yaparken approve ve sonrasında gelen depositing mesajlarını onaylıyoruz. Restaked alanında, yatırdığınız miktarı görebilirsiniz.
Restaked yaptığımız tokenları iki farklı sayfadan delegate yapabiliyoruz. Anasayfada ilgili butonu tıklayarak https://goerli.eigenlayer.xyz
ya da Operator sekmesine tıklayıp delegasyon yapmak istediğiniz operatörü arayıp yapabilirsiniz. https://goerli.eigenlayer.xyz/operator
Restaked yapacağınız operatör'ün sayfası aşağıdaki gibi gözükmektedir. Delegate butonuna basarak bütün balance'ınız operatöre delegasyon olarak atayabilirsiniz.
Testnette bütün adımları kontrol ettiğimiz için delegasyon iptaline de bakabiliriz. Undelegate için yine operator sayfasının içinde ilgili butona basarak adımımızı tamamlıyoruz. İsteyen olursa tekrardan delegasyon yapabilir.
Bu adım gerçekleştikten sonra token'lar withdraw'un onaylanma sürecine geçiyor.
Bloklar işlendikten sonra tekrardan Liquid Restaking Süreci adımlarını tekrardan koşabilmeniz için önce withdraw yaparak cüzdana tokenları çekmeniz gerekiyor. Veyahut redeposit yaparak ilgili sürece dahil olabilirsiniz.
Operator Node'unuzu çalıştırabilmeniz için VPS, local bilgisayarınızdaki işletim sistemine göre WSL gibi çözümler ile adımlara başlayabilirsiniz. Node'un 7/24 açık olacağını düşüncek olursak VPS almanız hayrınıza olacaktır. Bunun için ucuz çözümler bulunmaktadır. Ben DigitalOcean firması üzerinden kendi adımlarımı koştum. Aşağıdaki makinanın yeterli olacağını düşünüyorum.
VPS'i aldınız ve Ubuntu vb. bir linux dağıtımını kurduğunuzu varsayarak sırasıyla sistemi güncel hale getiriyoruz. Geliştiriciler için önemli bazı paketler ile docker kurulumu yapıyoruz.
sudo apt update
sudo apt upgrade
sudo apt-get install -y curl wget git make build-essential
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
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
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Sisteminizde Go yazılım dilinin yüklü olması gerekmektedir. Bunun için kaynak paketi indirip kurabileceğiniz gibi rehberini takip ettiğim arkadaşın yaptığı gibi tar.xz pakedi temin ederek de yapabilirsiniz. Ben bazı sorunlar yaşadığım için Ubuntu repo'sundaki Go'yu indirip kurdum. Komutu aşağıdaki gibidir.
sudo apt install golang-go
Şimdi sıradaki adım, EigenLayer'ın git deposunu lokale klonlayarak eigenlayer-cli'in kurulumu yapmaktır. Depoyu klonladıktan sonra
cdkomutu ile klasöre giriyoruz vemake installile kurulumu tamamlıyoruz.
git clone https://github.com/Layr-Labs/eigenlayer-cli.git
cd eigenlayer-cli/
make install
sudo cp bin/eigenlayer /usr/local/bin/
Operatör Nodenuza vermek istediğiniz isime göre operatör eth adresini oluşturabilirsiniz. Her komutun sonunda şifre oluşturmanız beklenmektedir. Bu şifreleri bir yere not etmenizi veya unutmayacağınız şekilde ayarlayabilirsiniz. Komutlar ve örnek çıktıları aşağıdaki gibidir. Çıktıları kesinlikle bir yere not edin. Daha sonra kullanılacaktır.
eigenlayer operator keys create --key-type ecdsa nodeismi
Enter password to encrypt the ecdsa private key: ***************
ECDSA Private Key (Hex): ce81d6e8c9189ad2bc58c45855885c
Please backup the above private key hex in safe place.
Key location: /root/.eigenlayer/operator_keys/nodeismi.ecdsa.key.json
Public Key hex: 7421868bfbe3fae59f5411a69204e85641453572
Ethereum Address 0x65BCF201aF3DB485B8
eigenlayer operator keys create --key-type bls nodeismi
Enter password to encrypt the bls private key: ***************
BLS Private Key: 2027390102690634846740435627
Please backup the above private key in safe place.
BLS Pub key: E([192545337571713277493132402017,208080721985407233100515])
Key location: /root/.eigenlayer/operator_keys/nodeismi.bls.key.json
Not: Private Key, Public Key gibi alanları keserek paylaşıyorum. Normalde daha çok dijite ait ifadeler bulunmaktadır. Çıktılarda fark edeceksiniz.
Sırada operator için çeşitli ayarları yapacağımız dosyaları oluşturma adımı bulunmaktadır. Çıkan sorunun cevabını No yazarak enter'layın. İki farklı dosya dizinin altında oluşacaktır.
eigenlayer operator config create
Biri metadata.json diğeri ise operator.yaml dosyasıdır. metadata.json operator olarak bilgilerimizin olduğu ve herkesin erişebileceği bir yolda olmalıdır. Yani internete açık bir ortama yüklenmeli ve url'i paylaşılmalıdır.
Bir önemli konu Goerli ETH Testneti için RPC'lere ihtiyacımız bulunmaktadır. Bunun için Alchemy'den yararlandım. Yazının başında paylaştığım video'yu izlemenizi tavsiye ederim.
İlgili dosyaların örnek çıktılarını ve açıklamalarını aşağıda paylaşıyorum.
metadata.json dosya içeriği. Özellikle
logokısmı operator register sürecinde önemlidir. Yüklediğiniz logo'nun png formatında olması ve adresinin ona göre paylaşılması gerekiyor. Bu dosyayı pinata gibi çözümler kullanarak paylaşıma açabilirsiniz. İlgi url'i operator config dosyasının içinde kullanacağız.
{
"name": "nodeismi",
"website": "https://nodeismi.com",
"description": "nodeismi operator",
"logo": "https://dowloader.com/logo.png",
"twitter": "https://twitter.com/nodeismi"
}
operator.yaml dosya içeriği. ecdsa key ile oluşturduğunuz çıktılar içinde ethereum adresiniz bulunmaktadır.
private_key_store_pathvebls_private_key_store_pathalanları yine ecdsa ve bls için oluşturduğumuz çıktılarda bulunmaktadır.
operator:
address: "ethereum addresinizin yazın"
earnings_receiver_address: "ethereum addresinizin yazın"
delegation_approver_address: "0x0000000000000000000000000000000000000000"
staker_opt_out_window_blocks: 0
metadata_url: "metadata.json'ı yüklediğiniz adres"
el_slasher_address: "0xD11d60b669Ecf7bE10329726043B3ac07B380C22"
bls_public_key_compendium_address: "0xc81d3963087Fe09316cd1E032457989C7aC91b19"
eth_rpc_url: "alchemy'den aldığınız rpc adresi"
private_key_store_path: "/root/.eigenlayer/operator_keys/nodeismi.ecdsa.key.json"
signer_type: "local_keystore"
bls_private_key_store_path: "/root/.eigenlayer/operator_keys/nodeismi.bls.key.json"
chain_id: 5
Bu adımda oluşturduğunuz Ethereum adresine bir miktar GoerliETH göndermeniz gerekmektedir. ecdsa çıktısındaki private key'inizi kullanarak Metamask wallet'a ilgili cüzdanı import edebilirsiniz. Burada önemli olan konulardan biri restaking sürecinin aynısı için bu operator cüzdanına uygulamanızdır.
Cüzdanın balance'ı olduğunu varsayarak aşağıdaki komutu kullanarak operator'ümüzü kayıt işlemine sokabiliriz. Kaydın statüsü ile alakalı durumu görmek için de ilgili komutu paylaşıyorum.
eigenlayer operator register operator.yaml
eigenlayer operator status operator.yaml
Kayıt işlemi tamamlandıktan sonra rehber videoya göre Mangata Finance Operatorünün git reposunu klonluyoruz. Burada Mangata'yı da denemiş olmak faydalı bir durumdur.
Not: Mangata'sız nasıl olduğuna dair ikinci bir operator kurulumunu ayrıca yapıp ekler kısmında sonradan paylaşacağım.
git clone https://github.com/mangata-finance/avs-operator-setup.git
cd avs-operator-setup/
chmod +x run.sh
opt-in yapmadan önce .env dosyasında bazı değişiklikler yapmalıyız. Dosya örneğini aşağıda paylaşıyorum.
MAIN_SERVICE_IMAGE=mangatasolutions/operator:81e0a3189fd9c3fef96db0f16ef017e0eab6d97c
CLI_SERVICE_IMAGE=mangatasolutions/avs-cli:81e0a3189fd9c3fef96db0f16ef017e0eab6d97c
MAIN_SERVICE_NAME=mangata-finalizer-node
# Goerli contracts deployment
BLS_PUBLIC_KEY_COMPENDIUM=0xc81d3963087Fe09316cd1E032457989C7aC91b19
BLS_OPERATOR_STATE_RETRIEVER=0x737Dd62816a9392e84Fa21C531aF77C00816A3a3
AVS_SERVICE_MANAGER=0xD2333E11ea617E30fb97900f6ac9782A85f233e7
# Mangata Finalizer Service Manager RPC
AGGREGATOR_RPC_URL=eigen-aggregator-rpc-goerli.mangata.online:8090
###############################################################################
####### TODO: Operators please update below values for your node ##############
###############################################################################
# TODO: Operators need to update this to provide connection to ETH & Mangata network nodes
CHAIN_ID=5
ETH_RPC_URL="alchemy'den aldığınız rpc adresi"
ETH_WS_URL="alchemy'den aldığınız websocket adresi"
SUBSTRATE_RPC_URL=wss://kusama-archive.mangata.online
# TODO: Operators need to update this to their own keys
ECDSA_KEY_FILE_HOST=/root/.eigenlayer/operator_keys/nodeismi.ecdsa.key.json
BLS_KEY_FILE_HOST=/root/.eigenlayer/operator_keys/nodeismi.bls.key.json
# TODO: Operators need to add password to decrypt the above keys
ECDSA_KEY_PASSWORD="operator oluştururken belirlediğimiz parola"
BLS_KEY_PASSWORD="operator oluştururken belirlediğimiz parola"
Şimdi opt-in yapıp, oparator node'unu çalıştırabiliriz.
./run.sh opt-in
docker compose up -d
Docker ile node'u çalıştırdıktan sonra aşağıdaki komutlar ile log'larına bakabilir ve çalıştığından emin olabiliriz.
docker ps --> Hangi konteynırların olduğunu gösterir.
docker logs mangata-finalizer-node --> Konteynırın ismini girdikten sonra anlık olarak log'u basar.
docker logs -f mangata-finalizer-node --> -f parametresi ile log'un devamlı akması sağlanır.
Evet, rehberi bu satırlara kadar uygularak geldiyseniz büyük ihtimal stage2 için önemli bir test adımını da tamamlamış olacaksınız. EigenDA için MangataFinance operatoru dışında kendi config dosyanız ile neler yapabilirsiniz bu konuları araştırmaktayım. O süreci de adımlaştırdıktan sonra bu rehberin sonuna eklemeyi düşünüyorum.
Operatoru aktif ettiğiniz zaman TVL Summary altında size delegate edilen token'ları göreceksiniz. Aktif olma süreci için bir süre beklemeniz gerekmektedir. Test fazı olduğu için baze sitede problemler olabiliyor.
Aklıma geldikçe görüşlerimi rehberi güncel tutarak yaşam döngüsüne dahil edeceğim. Sabrınız için teşekkürler.

