Akıllı sözleşme kütüphaneleri
Sayfanın son güncellenmesi: 21 Ağustos 2025
Projenizdeki her akıllı sözleşmeyi sıfırdan yazmanız gerekmez. Projenize yeniden kullanılabilir yapı taşları sağlayarak her şeyi sıfırdan yapmanıza gerek bırakmayacak birçok açık kaynak akıllı sözleşme kütüphanesi bulunmaktadır.
Ön Koşullar
Akıllı sözleşme kütüphanelerine dalmadan önce, bir akıllı sözleşmenin yapısı hakkında derin bir anlayışa sahip olmanız iyi olur. Henüz yapmadıysanız akıllı sözleşme anatomisi sayfasına gidin.
Bir kütüphanede neler var?
Genelde akıllı sözleşme kütüphanelerinde iki tür yapı taşı bulunur: sözleşmelerinize ekleyebileceğiniz yeniden kullanılabilir davranışlar ve çeşitli standartların uygulamaları.
Davranışlar
Akıllı sözleşmeler yazarken, bir sözleşmede korumalı işlemleri gerçekleştirmek için bir admin adresi atamak veya beklenmedik bir sorun durumunda acil bir duraklatma düğmesi eklemek gibi benzer kalıpları tekrar tekrar yazdığınızı fark etme olasılığınız yüksektir.
Akıllı sözleşme kütüphaneleri genellikle bu davranışların yeniden kullanılabilir uygulamalarını Solidity'de kütüphaneler (opens in a new tab) olarak veya kalıtım (opens in a new tab) yoluyla sağlar.
Örnek olarak, OpenZeppelin Contracts kütüphanesinden (opens in a new tab) alınan ve bir adresi bir sözleşmenin sahibi olarak belirleyen ve bir yönteme erişimi yalnızca o sahiple kısıtlamak için bir değiştirici sağlayan Ownable sözleşmesinin (opens in a new tab) basitleştirilmiş bir sürümü aşağıdadır.
1contract Ownable {2 address public owner;34 constructor() internal {5 owner = msg.sender;6 }78 modifier onlyOwner() {9 require(owner == msg.sender, "Ownable: çağıran kişi sahip değil");10 _;11 }12}Tümünü gösterSözleşmenizde bunun gibi bir yapı taşı kullanmak istiyorsanız, ilk olarak onu içeri aktarmanız, sonrasında ise kendi sözleşmelerinizi onun üzerinden yapılandırmanız gerekir. Bu, kendi işlevlerinizi güvence altına almak için temel Ownable sözleşmesi tarafından sağlanan değiştiriciyi kullanmanıza olanak tanır.
1import ".../Ownable.sol"; // İçe aktarılan kütüphanenin yolu23contract MyContract is Ownable {4 // Aşağıdaki işlev yalnızca sahip tarafından çağrılabilir5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}Diğer bir popüler örnek SafeMath (opens in a new tab) veya DsMath (opens in a new tab)'tir. Bunlar, dil tarafından sağlanmayan taşma kontrollü aritmetik fonksiyonlar sağlayan kütüphanelerdir (temel sözleşme yerine). Ana aritmetik işlemler yerine sözleşmenizi feci sonuçlar oluşturan taşmalardan korumak için bu kütüphanelerden birini kullanmak iyi bir yöntemdir!
Standartlar
Oluşturulabilirliği ve birlikte çalışabilirliği kolaylaştırmak için Ethereum topluluğu, ERC'ler şeklinde çeşitli standartlar tanımlamıştır. Bunlar hakkında daha fazlasını standartlar bölümünde okuyabilirsiniz.
Sözleşmelerinize bir ERC dahil ederken, kendi başınıza dağıtmaktansa standart uygulamalar aramak iyi bir fikirdir. Birçok akıllı sözleşme kütüphanesi en popüler ERC'ler için uygulamalar içerir. Örneğin, yaygın olan ERC20 değiştirilebilir jeton standardı HQ20 (opens in a new tab), DappSys (opens in a new tab) ve OpenZeppelin (opens in a new tab) kütüphanelerinde bulunabilir. Ek olarak, bazı ERC'ler yerleşik olarak kurallı uygulamalar sağlarlar.
Bazı ERC'lerin yekpare değil, başka ERC'lerin ekleri olduğunu söylemek gerekir. Örneğin, ERC2612 (opens in a new tab) kullanılabilirliğini artırmak için ERC20'ye bir uzantı ekler.
Kütüphane nasıl eklenir
Her zaman dahil ettiğiniz kütüphanenin belgelerinde bulunan, projenin nasıl dahil edileceğine dair özel yönergelere başvurun. Birçok Solidity sözleşme kütüphanesi npm kullanılarak paketlenir, bu yüzden onları npm install komutuyla kurabilirsiniz. Sözleşmeleri derlemek için kullanılan çoğu araç, akıllı sözleşme kütüphaneleri için node_modules klasörünüze bakar, bu yüzden aşağıdakileri yapabilirsiniz:
1// Bu, @openzeppelin/contracts kütüphanesini node_modules klasörünüzden yükleyecektir2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract MyNFT is ERC721 {5 constructor() ERC721("MyNFT", "MNFT") public { }6}Kullandığınız yöntem ne olursa olsun, bir kütüphane eklerken her zaman dil sürümüne dikkat edin. Misal, eğer sözleşmelerinizi Solidity 0.5'te yazıyorsanız Solidity 0.6 için olan bir kütüphaneyi kullanamazsınız.
Ne zaman kullanılır
Projeniz için bir akıllı sözleşme kütüphanesi kullanmanın birçok yararı vardır. İlk ve en önemlisi, kendiniz kodlamanızdansa size kullanıma hazır, sisteminize dahil edebileceğiniz yapı taşları sunarak zamandan tasarruf etmenizi sağlar.
Güvenlik ayrıca büyük bir artısıdır. Açık kaynak akıllı sözleşme kütüphaneleri sık sık ciddi ölçüde denetlenir. Birçok projenin onlara dayandığı ele alındığında, onların sürekli teftiş altında tutulması topluluk tarafından güçlü bir teşvik bulmaktadır. Uygulama kodunda hatalar bulmak, yeniden kullanılabilir sözleşme kütüphanelerinden çok daha yaygındır. Bazı kütüphaneler ek güvenlik için harici denetimlerden (opens in a new tab) de geçer.
Ancak, akıllı sözleşme kütüphanelerini kullanmak aşina olmadığınız kodu projenize dahil etme riskini de beraberinde getirir. Bir sözleşmeyi aktarmak ve projenize doğrudan dahil etmek çekici gelebilir, ancak o sözleşmenin ne yaptığı hakkında iyi bir anlayışa sahip olmadan, farkında olmadan sisteminizde beklenmeyen davranışlara bağlı olarak bir soruna neden olabilirsiniz. Her zaman dahil ettiğiniz kodun belgelerini okuduğunuzdan emin olun ve kodu projenizin bir parçası yapmadan önce gözden geçirin!
Son olarak, bir kütüphaneyi dahil edip etmeyeceğinize karar verirken, onun genel kullanımını göz önünde bulundurun. Geniş çapta kabul edilmiş bir tanesi, daha büyük bir topluluğa sahip olma ve sorunlar için daha çok gözden geçirme gibi yararlara sahiptir. Akıllı sözleşmeler yaparken güvenlik ana odağınız olmalıdır!
İlgili araçlar
OpenZeppelin Contracts - Güvenli akıllı sözleşme geliştirme için en popüler kütüphane.
DappSys - Akıllı sözleşmeler için güvenli, basit, esnek yapı taşları.
HQ20 - Gerçek dünya için tam özellikli dağıtık uygulamalar oluşturmanıza yardımcı olacak sözleşmeler, kütüphaneler ve örnekler içeren bir Solidity projesi.
thirdweb Solidity SDK - Özel akıllı sözleşmeleri verimli bir şekilde oluşturmak için gereken araçları sağlar
İlgili öğreticiler
- Ethereum geliştiricileri için güvenlik konuları – Kütüphane kullanımı da dahil olmak üzere akıllı sözleşmeler oluştururken dikkat edilmesi gereken güvenlik konuları üzerine bir öğretici.
- ERC-20 jeton akıllı sözleşmesini anlama -Birden fazla kütüphane tarafından sağlanan ERC20 standardı hakkında bir öğretici.
Daha fazla kaynak
Size yardımcı olan bir topluluk kaynağı mı biliyorsunuz? Bu sayfayı düzenleyin ve onu ekleyin!