BDS
articles, resource-center

Akıllı Sözleşme Geliştirme: İki Önde Gelen Çerçeveyi Karşılaştırma

October 31, 2025
8 dakika
Artem Zaitsev
Kod editörleri ve test ortamlarını gösteren Hardhat ve Foundry akıllı sözleşme geliştirme çerçeveleri arasındaki karşılaştırma

Giriş

Solidity ile geliştirmeye başladığımda, kısa sürede çevrimiçi IDE'leri bırakıp Hardhat'ı yeni ana çerçeve olarak benimsedim. Projelerin yapımına ve bununla ilgili bir iş akışının oluşturulmasına aylar geçtikten sonra, ağ düzeni, test stratejisi ve proje organizasyonundan memnun kaldım.

Ancak, birisi Foundry performans avantajlarının etkileyici olduğunu söylediğinde, akıllı sözleşme geliştirme alanında popüler olan iki çerçeve arasında doğru bir karşılaştırma yapmak için yeterince ilgimi çekti.

Adil bir değerlendirme yapabilmek için, her ikisinin yardımıyla aynı projeleri oluşturdum ve aynı MiniBank sözleşmesini ve diğer test ayarlarını uyguladım. Bu pratik deneyim, performans, geliştiricilerin deneyimi ve iş akışının bu iki araç arasında büyük farklılıklar gösterdiğini ve bu iki araç arasında seçim yapacak olan herkesin bunu incelemesi gerektiğini ortaya koydu.

Proje Mimarisi ve Kurulumları

İkili çerçeve içinde bunları kurarken ilk deneyim oldukça farklıdır. Foundry, Hardhat hardhat.config.js dosyasına benzer şekilde anahtar-değer çiftlerine dayalı bir foundry.toml yapılandırma dosyası oluşturur. Her ikisi de kaynak klasörleri, derleme çıktı dizinleri vb. özelleştirmeyi destekler.

Varsayılan klasör yapısı Foundry'de oldukça farklıdır, ancak Hardhat birden fazla ağı mükemmel bir şekilde yönetebildiğinden, yapılandırma dosyasında birden fazla ağ doğrudan yapılandırılamaz. Foundry.toml dosyasındaki diğer parametreler, ayrıntı düzeyi veya hesap ayarları ve gaz fiyatı seçenekleri gibi test seçenekleriyle bağlantılıdır.

Foundry'nin yeniden eşleme özelliği, bağımlılıkların içe aktarılmasına güçlü bir yaklaşım sunduğu için özellikle ilginçtir. Yapılandırmada kısayollar oluşturarak sözleşmelerin içe aktarılmasını çok daha kolay hale getirebilirsiniz.

Örneğin, uzun içe aktarma yolları yazmak yerine, kodunuzun daha okunabilir ve bakımı daha kolay olmasını sağlayan kısa el eşlemeleri yazabilirsiniz.

Bağımlılık Yönetimi Yaklaşımları

Çerçeveler, bağımlılıkları yönetme şekilleri açısından büyük farklılıklar gösterir:

  • Hardhat, JavaScript geliştiricilerine anında açık olan, yerleşik npm ekosistemini kullanır.
  • OpenZeppelin sözleşmelerinin kurulumu sadece bir npm install komutudur
  • Foundry, forge CLI aracı aracılığıyla Git alt modülünün bağımlılık yönetimine dayanır.
  • Bağımlılıklar lib/ klasöründe saklanır ve package.json dosyasının aksine .gitmodules dosyasında izlenir.

Bu yöntem, akıllı sözleşmeleri bağımlılık olarak içeren herhangi bir GitHub deposunu alır ve kütüphane seçiminde daha esnek olmanızı sağlar.

GitHub organizasyonunu ve depo adını belirtebilir ve isteğe bağlı olarak yüklemek istediğiniz dalı veya etiketi belirtebilirsiniz. Forge yüklendikten sonra, forge remapping komutu kullanılarak Foundry'nin kullanacağı varsayılan içe aktarma yolları görüntülenebilir ve bu yollar yapılandırma dosyaları ile daha da özelleştirilebilir.

Geliştirme ve Hata Ayıklama Araçları

Hardhat'ın üstün olduğu alanlardan biri, hata ayıklama deneyimidir. Çerçeve ayrıca, JavaScript geliştirmede beklenen hata ayıklama stiline benzeyen console.log kullanımını varsayılan olarak sunar. Bu işlevsellik, bir satış noktası olarak yoğun bir şekilde pazarlanmaktadır ve geliştiriciler tarafından, yürütmenin nasıl gerçekleştirildiğini ve neyin yanlış olduğunu anlamak için kolayca izlenebilir.

Foundry, sözleşmelere giriş yapmak için alternatif bir yönteme ihtiyaç duyar. Hardhat'ı manuel olarak yükleyip içe aktarmak ve bir konsol sözleşmesi yüklemek mümkün olsa da, bunu yapmanın en iyi yolu, özel bir konsol sözleşmesini projenize kopyalamaktır.

Özellikle test dosyaları söz konusu olduğunda, dahil edilen DSTest sözleşmesi, logstring, logint ve logaddress gibi ekstra bağımlılıklar olmadan yayınlanabilen günlük olaylarını içerir.

Test Metodolojileri

Test deneyimi, iki çerçeve arasındaki belki de en dikkat çekici farktır.

Baret Test Yaklaşımı

Hardhat, standart JavaScript test modellerine dayanmaktadır:

  • Varsayılan doğrulama kütüphanesi olarak Mocha ile birlikte describe ve it bloklarını kullanır
  • Test dosyaları, web geliştirmeye aşina olan geliştiricilerin daha doğal stiline benzeyebilir
  • Amacını açıkça belirten açıklayıcı test adları sunar
  • Tanıdık asenkron kalıplar
  • Modern web geliştirmeye zaten aşina olanlar için öğrenme eğrisi minimum düzeydedir.

Dökümhane Test Yaklaşımı

Foundry tamamen farklı bir şekilde çalışır:

  • Testler, DSTest'i miras alan Solidity akıllı sözleşmeleri olarak geliştirilir
  • Tüm testler, test veya testFail kelimesiyle başlayan işlevlerle başlar.
  • Tüm iddialar, miras alınan DSTest sözleşmesi aracılığıyla yapılır.
  • Test dosyaları, testlerde kullanılan gerçek akıllı sözleşmelerdir.

Akıllı Sözleşme Testinde Ustalaşın

Çerçeveleri karşılaştırın ve projeniz için en uygun test yaklaşımını seçin.

Foundry yöntemi bir dizi sonuç doğurur:

  • Test sözleşmeleri, JavaScript müşterilerinde beforeEach'e benzer bir setUp() prosedüründe örneklenmelidir.
  • ETH'nin sözleşme yöntemi gönderimi, kıvrımlı parantezlerle çevrili değer parametreleri içeren belirli bir sözdizimi içerir
  • Başlangıçta öğrenme eğrisinin dik olması, asenkron işlemlerin yönetilmesini gerektirmediği gerçeğiyle dengelenebilir.

Learning Foundry Test Özellikleri

Foundry, güçlü test araçları sunan hile kodları olarak bilinen kavramı tanıtmaktadır. Bunlar, test sırasında blok zincirindeki duruma erişmenizi sağlayan, belirli bir sözleşme adresinde özel olan işlevlerdir.

Şunları yapabilirsiniz:

  • Mevcut blok numarasını değiştirin
  • Başka hesapların kimliğine bürünmeyin.
  • Belirli sözleşme davranışlarını talep edin

Hile kodlarını kullanmak için bir arayüz tanımlamanız ve bunu hilenin özel adresine bir durum değişkeni olarak örneklendirmeniz gerekir. Kurulumdan sonra, aşağıdaki gibi işlevlerle hile yapmak mümkündür:

  • vm.prank() ile bir sonraki sözleşme çağrısını farklı bir alıcıya ayarlayın
  • vm.roll() ile blok zincirini belirli bir noktaya ilerletin

En ilginç hile kodlarından biri, başarısız olmasını istediğiniz işlemden önce çağrılması gereken vm.expectRevert() kodudur. Standart onay kalıplarının bu tersine çevrilmesi sezgilere aykırı olabilir, ancak olası başarısızlık koşullarının net bir şekilde kontrol edilmesini sağlar.

Performans Karşılaştırması Sonuçları

Çerçeveler arasındaki performans farkı önemli ve anında fark edilebilir. Aynı sözleşmeler ve test senaryolarında, derleme ve test yürütme süresi konusunda çarpıcı sonuçlar elde ettim:

Performans Karşılaştırma Sonuçları

SenaryoDökümhaneBaret
Projeleri temizleyin (önbellek yok)1,44 saniye5,17 saniye
Önbellekleme etkinleştirildiğinde0,45 saniye3,98 saniye
26 akıllı sözleşme projesi8,53 saniye14,56 saniye

Bu performans farklılıkları, projenin karmaşıklığı arttıkça daha belirgin hale gelir.

Dökümhane Testi: Avantajları ve Dezavantajları

Dökümhane Testinin Artıları ve Eksileri

ArtılarEksileri
Async/await karmaşıklığı yokTest isimleri, JavaScript testlerinde olduğu kadar açıklayıcı değildir.
Testler çok hızlı çalışırexpectRevert ifadesi mantığa aykırıdır
Otomatik olarak oluşturulan gaz raporuHile kodları için öğrenme eğrisi
Solidity ile yazılmış her şeyDağıtım araçları hala geliştirme aşamasındadır.

Performansın faydaları tartışılmaz ve Solidity test isimleri JavaScript test isimleri kadar açıklayıcı olamaz, bu da test amacının anlaşılmasını zorlaştırabilir. Hile kodu sistemi güçlü olsa da, öğrenmek için başlangıçta bir maliyet gerektirecektir.

Sözleşme Dağıtım Stratejileri

Dağıtım, Hardhat'ın şu anda daha iyi bir geliştirici deneyimi sunduğu alanlardan biridir. Çerçeve şunları kabul eder:

  • JavaScript tabanlı dağıtım komut dosyaları
  • Çeşitli ağlarla bağlantı
  • Ortam değişkenleri aracılığıyla yapılandırmayı yükleyin
  • Karmaşık dağıtım durumlarını ustaca ele alın

JavaScript tabanlı dağıtım komut dosyaları şu anda Foundry'de gereklidir, ancak yapıcıların argümanlarının sağlanması gerektiğinde bu durum zahmetli olabilir. Önerilen çözüm, dağıtımların karmaşıklığını ele almak için dağıtım bash komut dosyaları oluşturmaktır, ancak geliştirme ekibi daha gelişmiş dağıtım çözümleri geliştirmektedir.

Bu, Hardhat'ın gelişmiş bir dağıtım ekosistemine sahip olmasıyla ilgili olarak Foundry'nin günümüzün en ciddi zayıf noktalarından biridir.

Komut Satırı Arayüzü Araçları

Foundry, blok zinciri ile etkileşim kurmak ve akıllı sözleşmeleri sorgulamak için cast CLI aracına sahiptir. Bu, aşağıdakileri yapmanızı sağlayan güçlü bir yardımcı programdır:

  • Sözleşme işlevlerini çağırın
  • Blockchain durumunu sorgula
  • Komut satırında bir dizi blok zinciri eylemi gerçekleştirin

Cast, blok zinciri ile etkileşimde tam işlevsellik sağlasa da, karmaşık işlemleri gerçekleştirmek için karmaşık komut satırı yapısı gerektirir. Dağıtımla benzer şekilde, uzun komutları tekrar tekrar yazmaktan kaçınmak için bash komut dosyası yazımı gerekebilir.

Çerçeve Karşılaştırma Özeti

Çerçeve Özellik Karşılaştırması

ÖzellikDökümhaneBaret
KurulumCLI curl komutu aracılığıylanpx ile veya npm aracılığıyla gerekli değildir
CLI araçlarıprojeyi yönetmek için forge, sözleşmelerle etkileşim kurmak için cast kullanınhardhat projeyi yönet (komut dosyalarını derle/derle/çalıştır)
Performansı oluşturun ve test edinOlağanüstü hızOrta düzeyde performans
BağımlılıklarGit alt modüllerinpm paketleri
Yapılandırmafoundry.tomlhardhat.config.js
Test izolasyonuEvet, -match-test -match-contract aracılığıylaEvet, yalnızca test dosyalarında kullanın veya atlayın
Sözleşme dağıtımlarıCast CLI aracı aracılığıylaJavaScript tabanlı komut dosyaları

Doğru Seçimi Yapmak

Foundry, olağanüstü performansı, aktif topluluğu ve akıllı sözleşmeleri test etmek için kullandığı yaratıcı yöntemiyle büyük bir potansiyel sergiliyor. Yapısı hızlı geliştirme döngüsü için mükemmel ve kullanımını öğrendikten sonra geliştirmeyi büyük ölçüde hızlandırabilecek harika test araçlarına sahip.

Bununla birlikte, Foundry özellikle dağıtım araçları ve geliştirici deneyimi iyileştirmeleri konusunda hala gelişme aşamasındadır. Foundry, hibrit modeli tercih eden geliştiriciler için bazı ilginç avantajlara sahiptir:

  • Sözleşme geliştirme ve test için Foundry
  • Dağıtım ve komut dosyaları için Hardhat

Standart JavaScript araçlarına ve yerleşik dağıtım uygulamalarına daha alışkın olan kullanıcılar, Hardhat ile artık daha üretken olabilirler, ancak bu karar yine sizin geçmişinize ve yeni araçları kullanma becerinize bağlıdır.

Her iki mimari de hala hızla değişmektedir ve akıllı sözleşme geliştirme ekosisteminde, çeşitli geliştiricilerin ve uygulama örneklerinin ihtiyaçlarını karşılayan çeşitli uygulanabilir alternatifler bulunmaktadır.

FAQ

##smart_contract_development
##hardhat
##foundry
##solidity
##blockchain_development
##testing
##deployment
BDS

Dünya çapında işletmeleri ve bireyleri güçlendiren yenilikçi çözümlerle blok zinciri teknolojisinin geleceğine öncülük ediyoruz.

+1 929 560 3730 (ABD)
+44 2045 771515 (İngiltere)
+372 603 92 65 (Estonya)
Harju maakond, Tallinn, Lasnamäe linnaosa, Katusepapi tn 6-502, 11412, Estonya

Güncel Kalın

En son blok zinciri haberlerini ve güncellemelerini e-posta adresinize alın.