Pustaka kontrak pintar
Pembaruan terakhir halaman: 21 Agustus 2025
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 yang dapat menghindarkan Anda dari keharusan membuat semuanya dari nol.
Prasyarat
Sebelum melompat ke 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 mendapati diri Anda 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 yang dapat digunakan kembali dari perilaku ini sebagai pustaka (opens in a new tab) atau melalui pewarisan (opens in a new tab) di 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.
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}Tampilkan semuaUntuk menggunakan blok penyusun seperti ini di kontrak Anda, Anda harus mengimpornya terlebih dahulu, dan kemudian memperluasnya di kontrak Anda sendiri. Ini akan memungkinkan Anda untuk menggunakan pengubah yang disediakan oleh kontrak dasar Ownable untuk mengamankan fungsi Anda sendiri.
1import ".../Ownable.sol"; // Path to the imported library // Jalur ke pustaka yang diimpor23contract MyContract is Ownable {4 // The following function can only be called by the owner // Fungsi berikut hanya dapat dipanggil oleh pemilik5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}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 luapan (overflow), 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 luapan, yang dapat memiliki konsekuensi yang membawa bencana!
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 membuat sendiri. Banyak pustaka kontrak pintar menyertakan implementasi untuk ERC yang paling populer. Misalnya, standar token sepadan ERC20 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, ERC2612 (opens in a new tab) menambahkan ekstensi ke ERC20 untuk meningkatkan kegunaannya.
Cara menambahkan pustaka
Selalu merujuk ke dokumentasi pustaka yang Anda sertakan untuk instruksi spesifik tentang cara menyertakannya dalam proyek Anda. Beberapa pustaka kontrak Solidity dikemas menggunakan npm, jadi Anda cukup melakukan npm install pada pustaka tersebut. Sebagian besar alat untuk mengompilasi kontrak akan melihat ke dalam node_modules Anda untuk pustaka kontrak pintar, sehingga Anda dapat melakukan hal berikut:
1// This will load the @openzeppelin/contracts library from your node_modules // Ini akan memuat pustaka @openzeppelin/contracts dari node_modules Anda2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract MyNFT is ERC721 {5 constructor() ERC721("MyNFT", "MNFT") public { }6}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 di 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 mengodenya sendiri.
Keamanan juga merupakan nilai tambah yang besar. Pustaka kontrak pintar sumber terbuka juga sering 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, dan kemudian tinjau kode itu sendiri sebelum menjadikannya bagian dari proyek Anda!
Terakhir, saat memutuskan apakah akan menyertakan pustaka, pertimbangkan penggunaan keseluruhannya. Pustaka yang diadopsi secara luas memiliki manfaat memiliki komunitas yang lebih besar dan lebih banyak mata yang melihatnya untuk mencari masalah. Keamanan harus menjadi fokus utama Anda saat membangun dengan kontrak pintar!
Alat terkait
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 diperlukan untuk membangun kontrak pintar kustom secara efisien
Tutorial terkait
- Pertimbangan keamanan untuk pengembang Ethereum – Tutorial tentang pertimbangan keamanan saat membangun kontrak pintar, termasuk penggunaan pustaka.
- Memahami kontrak pintar token ERC-20 -Tutorial tentang standar ERC20, yang disediakan oleh berbagai pustaka.
Bacaan lebih lanjut
Tahu tentang sumber daya komunitas yang membantu Anda? Edit halaman ini dan tambahkan!