Ana içeriğe geç
Change page

Akıllı sözleşme kütüphaneleri

Son düzenleme: @selcuk45(opens in a new tab), 25 Eylül 2023

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;
3
4 constructor() internal {
5 owner = msg.sender;
6 }
7
8 modifier onlyOwner() {
9 require(owner == msg.sender, "Ownable: caller is not the owner");
10 _;
11 }
12}
Tümünü göster
Kopyala

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 library
2
3contract MyContract is Ownable {
4 // The following function can only be called by the owner
5 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_modules
2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
3
4contract 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!

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

Daha fazla bilgi

Size yardımcı olan bir topluluk kaynağı biliyor musunuz? Bu sayfayı düzenleyin ve ekleyin!

Bu makale yararlı oldu mu?