Ana içeriğe atla
Change page

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

Projenizdeki her akıllı sözleşmeyi sıfırdan yazmanıza gerek yoktur. Projeniz için tekerleği yeniden icat etmekten sizi kurtarabilecek, yeniden kullanılabilir yapı taşları sağlayan birçok açık kaynaklı akıllı sözleşme kütüphanesi mevcuttur.

Ön koşullar

Akıllı sözleşme kütüphanelerine dalmadan önce, bir akıllı sözleşmenin yapısını iyi anlamak iyi bir fikirdir. Henüz yapmadıysanız akıllı sözleşme anatomisi bölümüne göz atın.

Bir kütüphanede neler bulunur

Akıllı sözleşme kütüphanelerinde genellikle iki tür yapı taşı bulabilirsiniz: 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 yönetici adresi atamak veya beklenmedik bir sorun durumunda acil durum duraklatma düğmesi eklemek gibi benzer kalıpları tekrar tekrar yazarken bulma ihtimaliniz yüksektir.

Akıllı sözleşme kütüphaneleri genellikle bu davranışların yeniden kullanılabilir uygulamalarını kütüphaneler (opens in a new tab) olarak veya Solidity'de kalıtım (opens in a new tab) yoluyla sağlar.

Örnek olarak, aşağıda 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 OpenZeppelin Sözleşme kütüphanesinden (opens in a new tab) Ownable sözleşmesinin (opens in a new tab) basitleştirilmiş bir sürümü bulunmaktadır.

Sözleşmenizde bunun gibi bir yapı taşı kullanmak için, önce onu içe aktarmanız ve ardından kendi sözleşmelerinizde ondan genişletmeniz 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.

import ".../Ownable.sol"; // İçe aktarılan kütüphanenin yolu

contract MyContract is Ownable {
    // Aşağıdaki fonksiyon sadece sahibi tarafından çağrılabilir
    function secured() onlyOwner public {
        msg.sender.transfer(1 ether);
    }
}

Bir başka 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 kontrollerine sahip aritmetik işlevler sağlayan kütüphanelerdir (temel sözleşmelerin aksine). Sözleşmenizi feci sonuçlara yol açabilecek taşmalara karşı korumak için yerel aritmetik işlemler yerine bu kütüphanelerden birini kullanmak iyi bir uygulamadır!

Standartlar

Birleştirilebilirlik ve birlikte çalışabilirliği kolaylaştırmak için Ethereum topluluğu, ERC'ler biçiminde çeşitli standartlar tanımlamıştır. Bunlar hakkında daha fazla bilgiyi standartlar bölümünde okuyabilirsiniz.

Sözleşmelerinizin bir parçası olarak bir ERC'yi dahil ederken, kendi uygulamanızı oluşturmaya çalışmak yerine 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, her yerde bulunan ERC-20 misli token standardı HQ20 (opens in a new tab), DappSys (opens in a new tab) ve OpenZeppelin (opens in a new tab) içinde bulunabilir. Ek olarak, bazı ERC'ler ERC'nin kendisinin bir parçası olarak kurallı uygulamalar da sağlar.

Bazı ERC'lerin bağımsız olmadığını, diğer ERC'lere eklemeler olduğunu belirtmekte fayda var. Örneğin, ERC-2612 (opens in a new tab), kullanılabilirliğini artırmak için ERC-20'ye bir uzantı ekler.

Bir kütüphane nasıl eklenir

Projenize nasıl dahil edeceğinize dair özel talimatlar için her zaman dahil ettiğiniz kütüphanenin belgelerine başvurun. Çeşitli Solidity sözleşme kütüphaneleri npm kullanılarak paketlenmiştir, bu nedenle onları sadece npm install yapabilirsiniz. Sözleşmeleri derleme araçlarının çoğu, akıllı sözleşme kütüphaneleri için node_modules klasörünüze bakacaktır, bu nedenle aşağıdakileri yapabilirsiniz:

// Bu, @openzeppelin/contracts kütüphanesini node_modules dizininizden yükleyecektir
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract MyNFT is ERC721 {
    constructor() ERC721("MyNFT", "MNFT") public { }
}

Kullandığınız yöntem ne olursa olsun, bir kütüphaneyi dahil ederken her zaman dil sürümüne dikkat edin. Örneğin, 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ılmalı

Projeniz için bir akıllı sözleşme kütüphanesi kullanmanın çeşitli faydaları vardır. Her şeyden önce, bunları kendiniz kodlamak zorunda kalmak yerine sisteminize dahil edebileceğiniz kullanıma hazır yapı taşları sağlayarak size zaman kazandırır.

Güvenlik de büyük bir artıdır. Açık kaynaklı akıllı sözleşme kütüphaneleri de genellikle sıkı bir şekilde incelenir. Birçok projenin bunlara bağlı olduğu göz önüne alındığında, topluluk tarafından bunları sürekli inceleme altında tutmak için güçlü bir teşvik vardır. Uygulama kodunda hata bulmak, yeniden kullanılabilir sözleşme kütüphanelerinde bulmaktan ç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 kodları projenize dahil etme riskini taşır. Bir sözleşmeyi içe aktarmak ve doğrudan projenize dahil etmek caziptir, ancak o sözleşmenin ne yaptığını iyi anlamadan, beklenmedik bir davranış nedeniyle sisteminize yanlışlıkla bir sorun sokabilirsiniz. İçe aktardığınız kodun belgelerini okuduğunuzdan her zaman emin olun ve ardından projenizin bir parçası yapmadan önce kodun kendisini inceleyin!

Son olarak, bir kütüphaneyi dahil edip etmemeye karar verirken genel kullanımını göz önünde bulundurun. Yaygın olarak benimsenen bir kütüphane, daha büyük bir topluluğa sahip olma ve sorunlar için daha fazla gözün onu incelemesi avantajlarına sahiptir. Akıllı sözleşmelerle geliştirme yaparken güvenlik birincil odak noktanız olmalıdır!

OpenZeppelin Sözleşmeleri - 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

Daha fazla bilgi

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