Ana içeriğe geç

Bu sayfanın güncellenmesine yardım edin

🌏

Bu sayfanın yeni bir sürümü vardır ancak şu anda yalnızca İngilizce'dir. Son sürümü çevirmemize yardımcı ol.

Sayfayı çevir
İngilizce'yi gör

Burada hata yok!🐛

Bu sayfa tercüme edilmiyor. Bu sayfayı şimdilik kasıtlı olarak İngilizce bıraktık.

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

Son düzenleme: , Invalid DateTime
Sayfayı düzenle

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 veya kalıtım olarak saklarlar.

OpenZeppelin Contracts kütüphanesinden alınmış, Ownable sözleşmesinin 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}
13
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}
9
📋 Kopyala

SafeMath ya da DsMath 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, DappSys ve OpenZeppelin'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, 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}
7
📋 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 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.

Daha fazla okuma

Size yardımcı olan bir topluluk kaynağı mı biliyorsunuz? Bu sayfayı düzenleyin ve onu ekleyin!

Bu makale yararlı oldu mu?