Akıllı Sözleşmeler
Giriş
Rocket Pool Akıllı Sözleşmeleri, Rocket Pool protokolünün temelini oluşturur. Ağın diğer tüm unsurlarının, Smart Node yazılım yığınının ve tüm web veya uygulama arayüzlerinin üzerine inşa edildiği temel altyapı katmanıdırlar.
Sözleşmelerle doğrudan etkileşim genellikle gerekli değildir ve başka yazılımların kullanımı ile kolaylaştırılır. Bu bölüm, sözleşme tasarımının detaylı bir açıklamasını ve Rocket Pool'u genişletmek isteyen geliştiriciler için üzerine nasıl inşa edileceğine dair bilgiler sağlar. Tüm kod örnekleri Solidity v0.7.6 olarak verilmiştir.
Sözleşme Tasarımı
Rocket Pool ağ sözleşmeleri, yükseltme düşünülerek hub-and-spoke mimarisi kullanılarak oluşturulmuştur. Ağın merkezi hub'ı, tüm protokolün durumunu depolamaktan sorumlu olan RocketStorage sözleşmesidir. Bu, anahtar-değer depolama için map'ler ve bir anahtar için değerleri okuma ve yazma için getter ve setter yöntemleri kullanılarak uygulanır.
RocketStorage sözleşmesi ayrıca diğer tüm ağ sözleşmelerinin adreslerini (isme göre anahtarlanmış) depolar ve veri değişikliğini yalnızca bu sözleşmelerle sınırlar. Bu mimari kullanılarak, protokol mevcut bir sözleşmenin yeni sürümlerini dağıtarak ve adresini depolamada güncelleyerek yükseltilebilir. Bu, Rocket Pool'a hataları düzeltmek veya protokolü geliştirmek için yeni özellikler uygulamak için gerekli esnekliği sağlar.
Rocket Pool ile Etkileşim
Rocket Pool ağı ile etkileşime başlamak için önce arayüzünü kullanarak RocketStorage sözleşmesinin bir örneğini oluşturun:
Yukarıdaki constructor, uygun ağdaki RocketStorage sözleşmesinin adresiyle çağrılmalıdır.
Rocket Pool'un mimarisi nedeniyle, diğer sözleşmelerin adresleri doğrudan kullanılmamalı, kullanmadan önce blokzincirden alınmalıdır. Önceki etkileşimden bu yana ağ yükseltmeleri gerçekleşmiş olabilir ve bu da güncel olmayan adreslere yol açabilir. RocketStorage asla adres değiştiremez, bu nedenle ona bir referans saklamak güvenlidir.
Diğer sözleşme örnekleri, Rocket Pool deposundan alınan uygun arayüz kullanılarak oluşturulabilir, örneğin:
RocketStorage'da tanımlandığı şekliyle Rocket Pool sözleşmeleri şunlardır:
rocketVault- Ağ sözleşmeleri tarafından tutulan ETH'yi depolar (dahili, yükseltilemez)rocketAuctionManager- Node operatörlerinin stake'inden kesilmiş RPL'in açık artırmasını yönetirrocketDepositPool- Kullanıcı tarafından yatırılan ETH'yi kabul eder ve minipool'lara atamasını yönetirrocketSmoothingPool- Öncelik ücretlerini ve MEV'i alırrocketMinipoolBase- Minipool'lar için başlatma ve delege yükseltme mantığını içerirrocketMinipoolBondReducer- Bond azaltma penceresini ve güvenilir node iptali yönetirrocketMinipoolFactory- Minipool sözleşmelerinin oluşturulmasını yönetirrocketMinipoolDelegate- Minipool yardımcı sözleşmesi (dahili)rocketMinipoolManager- Ağdaki tüm minipool'ları oluşturur ve yönetirrocketMinipoolQueue- Minipool'ları ETH ataması için bir kuyruğa organize ederrocketMinipoolStatus- Watchtower node'larından minipool durum güncellemelerini yönetirrocketMinipoolPenalty- oDAO tarafından node operatörlerine uygulanan cezaları depolarrocketNetworkBalances- Watchtower node'larından ağ bakiyesi güncellemelerini yönetirrocketNetworkFees- Ağ node talebine dayalı node komisyon oranlarını hesaplarrocketNetworkPrices- Watchtower node'larından RPL fiyatı ve efektif stake güncellemelerini yönetirrocketNetworkWithdrawal- Beacon chain validatör çekimlerinin işlenmesini yönetirrocketNetworkPenalties- Minipool cezalarını yönetirrocketRewardsPool- Her ödül sözleşmesine ödüllerin dağıtımını yönetirrocketClaimDAO- pDAO için ödüllerin talep edilmesini yönetirrocketNodeDeposit- Minipool oluşturma için node depozitolarını yönetirrocketMerkleDistributorMainnet- RPL ve ETH ödüllerinin dağıtımını yönetirrocketNodeDistributorDelegate- RocketNodeDistributor'lar için mantığı içerirrocketNodeDistributorFactory- RocketNodeDistributor sözleşmelerinin oluşturulmasını yönetirrocketNodeManager- Ağdaki tüm node'ları kaydeder ve yönetirrocketNodeStaking- Node stake etme ve stake çözmeyi yönetirrocketDAOProposal- Ortak oDAO ve pDAO işlevselliğini içerirrocketDAONodeTrusted- oDAO ile ilgili teklifleri yönetirrocketDAONodeTrustedProposals- oDAO teklif işlevselliğini içerir (dahili)rocketDAONodeTrustedActions- oDAO eylem işlevselliğini içerir (dahili)rocketDAONodeTrustedUpgrade- oDAO sözleşme yükseltme işlevselliğini yönetir (dahili)rocketDAONodeTrustedSettingsMembers- Güvenilir üyelerle ilgili ayarları yönetirrocketDAONodeTrustedSettingsProposals- Tekliflerle ilgili ayarları yönetirrocketDAONodeTrustedSettingsMinipool- Minipool'larla ilgili ayarları yönetirrocketDAONodeTrustedSettingsRewards- Ödüllerle ilgili ayarları yönetirrocketDAOProtocol- pDAO ile ilgili teklifleri yönetirrocketDAOProtocolProposals- pDAO teklif işlevselliğini yönetir (dahili)rocketDAOProtocolActions- pDAO eylem işlevselliğini yönetir (dahili)rocketDAOProtocolSettingsInflation- Enflasyonla ilgili ayarları yönetirrocketDAOProtocolSettingsRewards- Ödüllerle ilgili ayarları yönetirrocketDAOProtocolSettingsAuction- Açık artırma sistemiyle ilgili ayarları yönetirrocketDAOProtocolSettingsNode- Node operatörleriyle ilgili ayarları yönetirrocketDAOProtocolSettingsNetwork- Ağ ile ilgili ayarları yönetirrocketDAOProtocolSettingsDeposit- Depozitolarla ilgili ayarları yönetirrocketDAOProtocolSettingsMinipool- Minipool'larla ilgili ayarları yönetirrocketTokenRETH- rETH token sözleşmesi (yükseltilemez)rocketTokenRPL- RPL token sözleşmesi (yükseltilemez)rocketUpgradeOneDotOne- Rocket Pool protokolü Redstone yükseltmesini yönetti.rocketUpgradeOneDotTwo- Rocket Pool protokolü Atlas yükseltmesini yönettiaddressQueueStorage- Bir yardımcı sözleşme (dahili)addressSetStorage- Bir yardımcı sözleşme (dahili)
İlk dağıtımdan bu yana RocketStorage'dan kaldırılmış olan eski Rocket Pool sözleşmeleri şunlardır:
rocketClaimNode- Node operatörleri için ödüllerin talep edilmesini yönettirocketClaimTrustedNode- oDAO için ödüllerin talep edilmesini yönetti
"Dahili" olarak işaretlenmiş sözleşmeler, genel halka erişilebilir yöntemler sağlamazlar ve bu nedenle genellikle genişletme için yararlı değildirler. Belirli sözleşme yöntemleri hakkında bilgi için, Rocket Pool deposundaki arayüzlerine başvurun.
Depozitolar
Rocket Pool ağını genişletmenin ana nedeni, kullanıcı depozitolarını depozito havuzuna aktaran özel depozito mantığını uygulamaktır. Örneğin, bir fon yöneticisi kullanıcılarının ETH'sini kendi akıllı sözleşmeleri aracılığıyla Rocket Pool'da stake etmek ve Rocket Pool'un kendisinin kullanımını kullanıcılarından soyutlamak isteyebilir.
Not: RocketDepositPool sözleşme adresi sözleşmelerinizde sabit kodlanmamalı, RocketStorage'dan dinamik olarak alınmalıdır. Daha fazla ayrıntı için Rocket Pool ile Etkileşim bölümüne bakın.
Uygulama
Aşağıda, yatırılan ETH'yi Rocket Pool'a ileten ve basılmış rETH'yi çağırana geri gönderen temel bir örnek sözleşme açıklanmaktadır: