Lompat ke konten utama
Change page

Pustaka kontrak pintar

Anda tidak perlu menulis setiap kontrak pintar dalam proyek Anda dari awal. Ada banyak pustaka kontrak pintar sumber terbuka yang tersedia yang menyediakan blok penyusun yang dapat digunakan kembali untuk proyek Anda, sehingga Anda tidak perlu membuang waktu membuat ulang sesuatu yang sudah ada.

Prasyarat

Sebelum mempelajari pustaka kontrak pintar, ada baiknya Anda memiliki pemahaman yang baik tentang struktur kontrak pintar. Kunjungi anatomi kontrak pintar jika Anda belum melakukannya.

Apa yang ada di dalam pustaka

Anda biasanya dapat menemukan dua jenis blok penyusun dalam pustaka kontrak pintar: perilaku yang dapat digunakan kembali yang dapat Anda tambahkan ke kontrak Anda, dan implementasi dari berbagai standar.

Perilaku

Saat menulis kontrak pintar, ada kemungkinan besar Anda akan menulis pola yang sama berulang kali, seperti menetapkan alamat admin untuk melakukan operasi yang dilindungi dalam sebuah kontrak, atau menambahkan tombol jeda darurat jika terjadi masalah yang tidak terduga.

Pustaka kontrak pintar biasanya menyediakan implementasi dari perilaku ini yang dapat digunakan kembali sebagai pustaka (opens in a new tab) atau melalui pewarisan (opens in a new tab) dalam Solidity.

Sebagai contoh, berikut adalah versi yang disederhanakan dari kontrak Ownable (opens in a new tab) dari pustaka OpenZeppelin Contracts (opens in a new tab), yang menetapkan sebuah alamat sebagai pemilik kontrak, dan menyediakan pengubah untuk membatasi akses ke suatu metode hanya untuk pemilik tersebut.

Untuk menggunakan blok penyusun seperti ini dalam kontrak Anda, Anda harus mengimpornya terlebih dahulu, lalu memperluasnya di kontrak Anda sendiri. Ini akan memungkinkan Anda untuk menggunakan pengubah yang disediakan oleh kontrak dasar Ownable untuk mengamankan fungsi Anda sendiri.

import ".../Ownable.sol"; // Jalur ke Pustaka yang diimpor

contract MyContract is Ownable {
    // Fungsi berikut hanya dapat dipanggil oleh pemilik
    function secured() onlyOwner public {
        msg.sender.transfer(1 ether);
    }
}

Contoh populer lainnya adalah SafeMath (opens in a new tab) atau DsMath (opens in a new tab). Ini adalah pustaka (berbeda dengan kontrak dasar) yang menyediakan fungsi aritmatika dengan pemeriksaan limpahan, yang tidak disediakan oleh bahasa tersebut. Merupakan praktik yang baik untuk menggunakan salah satu dari pustaka ini alih-alih operasi aritmatika bawaan untuk menjaga kontrak Anda dari limpahan, yang dapat memiliki konsekuensi yang sangat buruk!

Standar

Untuk memfasilitasi komposabilitas dan interoperabilitas, komunitas Ethereum telah mendefinisikan beberapa standar dalam bentuk ERC. Anda dapat membaca lebih lanjut tentang hal tersebut di bagian standar.

Saat menyertakan ERC sebagai bagian dari kontrak Anda, ada baiknya untuk mencari implementasi standar daripada mencoba membuatnya sendiri. Banyak pustaka kontrak pintar menyertakan implementasi untuk ERC yang paling populer. Misalnya, standar token sepadan ERC-20 yang ada di mana-mana dapat ditemukan di HQ20 (opens in a new tab), DappSys (opens in a new tab), dan OpenZeppelin (opens in a new tab). Selain itu, beberapa ERC juga menyediakan implementasi kanonis sebagai bagian dari ERC itu sendiri.

Perlu disebutkan bahwa beberapa ERC tidak berdiri sendiri, melainkan merupakan tambahan untuk ERC lainnya. Misalnya, ERC-2612 (opens in a new tab) menambahkan ekstensi ke ERC-20 untuk meningkatkan kegunaannya.

Cara menambahkan pustaka

Selalu merujuk pada dokumentasi pustaka yang Anda sertakan untuk instruksi spesifik tentang cara menyertakannya dalam proyek Anda. Beberapa pustaka kontrak Solidity dikemas menggunakan npm, sehingga Anda dapat langsung melakukan npm install pada pustaka tersebut. Sebagian besar alat untuk mengkompilasi kontrak akan mencari pustaka kontrak pintar di node_modules Anda, sehingga Anda dapat melakukan hal berikut:

// Ini akan memuat Pustaka @openzeppelin/contracts dari node_modules Anda
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

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

Terlepas dari metode yang Anda gunakan, saat menyertakan pustaka, selalu perhatikan versi bahasa. Misalnya, Anda tidak dapat menggunakan pustaka untuk Solidity 0.6 jika Anda menulis kontrak Anda dalam Solidity 0.5.

Kapan harus menggunakan

Menggunakan pustaka kontrak pintar untuk proyek Anda memiliki beberapa manfaat. Pertama dan terpenting, ini menghemat waktu Anda dengan menyediakan blok penyusun siap pakai yang dapat Anda sertakan dalam sistem Anda, daripada harus mengkodenya sendiri.

Keamanan juga merupakan nilai tambah yang besar. Pustaka kontrak pintar sumber terbuka juga sering kali diteliti dengan cermat. Mengingat banyak proyek bergantung padanya, ada insentif yang kuat dari komunitas untuk terus meninjaunya. Jauh lebih umum menemukan kesalahan dalam kode aplikasi daripada di pustaka kontrak yang dapat digunakan kembali. Beberapa pustaka juga menjalani audit eksternal (opens in a new tab) untuk keamanan tambahan.

Namun, menggunakan pustaka kontrak pintar membawa risiko menyertakan kode yang tidak Anda kenal ke dalam proyek Anda. Sangat menggoda untuk mengimpor kontrak dan menyertakannya langsung ke dalam proyek Anda, tetapi tanpa pemahaman yang baik tentang apa yang dilakukan kontrak tersebut, Anda mungkin secara tidak sengaja memasukkan masalah ke dalam sistem Anda karena perilaku yang tidak terduga. Selalu pastikan untuk membaca dokumentasi kode yang Anda impor, lalu tinjau kode itu sendiri sebelum menjadikannya bagian dari proyek Anda!

Terakhir, saat memutuskan apakah akan menyertakan pustaka, pertimbangkan penggunaannya secara keseluruhan. Pustaka yang diadopsi secara luas memiliki manfaat memiliki komunitas yang lebih besar dan lebih banyak mata yang mencari masalah di dalamnya. Keamanan harus menjadi fokus utama Anda saat membangun dengan kontrak pintar!

OpenZeppelin Contracts - Pustaka paling populer untuk pengembangan kontrak pintar yang aman.

DappSys - Blok penyusun yang aman, sederhana, dan fleksibel untuk kontrak pintar.

HQ20 - Proyek Solidity dengan kontrak, pustaka, dan contoh untuk membantu Anda membangun aplikasi terdistribusi berfitur lengkap untuk dunia nyata.

thirdweb Solidity SDK - Menyediakan alat yang dibutuhkan untuk membangun kontrak pintar kustom secara efisien

Bacaan lebih lanjut

Tahu tentang sumber daya komunitas yang membantu Anda? Edit halaman ini dan tambahkan!