Akıllı sözleşme kütüphaneleri
Son düzenleme: @selcuk45(opens in a new tab), 29 Nisan 2024
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 buna sahip değilseniz akıllı sözleşme anatomisine gidin.
Kütüphanenin içindekiler
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
Büyük ihtimalle, akıllı sözleşmeler yazarken bir sözleşmede korunan işlemler gerçekleştirmek için bir yönetici adresi atamak veya beklenmeyen bir sıkıntı esnasında acil bir duraklatma düğmesi eklemek gibi benzer kalıpları sürekli yazıp durduğunuzu göreceksiniz.
Akıllı sözleşme kütüphaneleri, genellikle bu davranışların yeniden kullanılabilir uygulamalarını Solidity'de kütüphane(opens in a new tab) veya kalıtım(opens in a new tab) olarak saklarlar.
OpenZeppelin Contracts kütüphanesinden(opens in a new tab) alınmış, Ownable
sözleşmesinin(opens in a new tab) basitleştirilmiş hâli örnek olarak aşağıda sunulmuştur. Bu sözleşme, bir adresi bir sözleşmenin sahipliğine atar ve bir yönteme erişimi sadece adresin sahibiyle sınırlamak için bir niteleyici sağlar.
1contract Ownable {2 address public owner;34 constructor() internal {5 owner = msg.sender;6 }78 modifier onlyOwner() {9 require(owner == msg.sender, "Ownable: caller is not the owner");10 _;11 }12}Tümünü gösterKopyala
Sö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, temel Ownable
sözleşmesinden sağlanan niteleyiciyi kendi ilşevlerinizi güvenli hâle getirmek için kullanmanıza izin verecektir.
1import ".../Ownable.sol"; // Path to the imported library23contract MyContract is Ownable {4 // The following function can only be called by the owner5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}Kopyala
SafeMath(opens in a new tab) ya da DsMath(opens in a new tab) de diğer ünlü örnekler arasındadır. 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
Birleştirilebilirliği ve birlikte çalışabilirliği kolaylaştırmak için, Ethereum topluluğu ERC denilen birtakım standartlar belirlemiştir. Bunlar hakkında daha fazlasını standartlar kısmında 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. Örnek olarak, her yerde yaygın olan ERC20 değiştirilebilir token standartı HQ20(opens in a new tab), DappSys(opens in a new tab) ve OpenZeppelin(opens in a new tab)'de 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 geliştirmek için ERC20'ye bir eklenti ekler.
Kütüphane ekleme
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 paketlenmiştir, bu yüzden onları sadece npm install
ile indirebilirsiniz. Sözleşmeleri derlemeye yarayan birçok araç, akıllı sözleşme kütüphaneleri için node_modules
klasörünüze bakacaktır, bu yüzden aşağıdakileri yapabilirsiniz:
1// This will load the @openzeppelin/contracts library from your node_modules2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract MyNFT is ERC721 {5 constructor() ERC721("MyNFT", "MNFT") public { }6}Kopyala
Kullandığınız yola bakmaksızın, bir kütüphane dahil ederken, her zaman gözünüz dil sürümünün üzerinde olsun. 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 kullanmalı
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 ayrıca ek güvenlik için dış denetlemelerden(opens in a new tab) geçerler.
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üphanedir.
DappSys - Akıllı sözleşmeler için güvenli, basit ve esnek yapılı yapı taşlarıdır.
HQ20 - Gerçek dünya için çok özellikli dağıtılmış uygulamalar inşa etmenize yardımcı olacak; sözleşmeleri, kütüphaneleri ve örnekleri olan 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 eğitimler
- Ethereum geliştiricilerinin güvenlik konusunda dikkat etmesi gereken hususlar – Akıllı sözleşme oluşturma sırasında, kütüphane kullanımı da dahil olmak üzere güvenlik konusunda dikkat edilmesi gereken hususlar hakkında bir öğretici.
- ERC-20 jeton akıllı sözleşmesini anlamak -Birden fazla kütüphane tarafından sağlanan, ERC20 standardı hakkında bir öğretici.
Daha fazla bilgi
Size yardımcı olan bir topluluk kaynağı biliyor musunuz? Bu sayfayı düzenleyin ve ekleyin!