Lanjut ke konten utama
Change page

Pustaka kontrak pintar

Terakhir diedit: @yeremiaryangunadi(opens in a new tab), 24 Oktober 2023

Anda tidak perlu menulis setiap kontrak pintar dalam proyek Anda dari nol. Ada banyak pustaka kontrak pintar sumber terbuka tersedia yang menyediakan blok pembangun yang dapat digunakan kembali untuk proyek Anda yang bisa menghindarkan Anda dari keharusan untuk membuat ulang rodanya.

Prasyarat

Sebelum masuk ke dalam pustaka kontrak pintar, adalah ide bagus untuk memiliki pemahaman yang baik tentang struktur dari sebuah kontrak pintar. Lihat pada bagian anatomi kontrak pintar jika Anda belum melakukannya.

Apa yang ada dalam pustaka

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

Perilaku

Ketika menulis kontrak pintar, ada kemungkinan Anda akan menemukan bahwa Anda menulis pola yang sama berulang kali, seperti menetapkan alamat admin untuk melakukan operasi yang dilindungi dalam satu kontrak, atau menambahkan tombol jeda darurat jika terjadi masalah tak terduga.

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

Sebagai contoh, berikut ini adalah versi sederhana dari kontrak Ownable(opens in a new tab) dari pustaka Kontrak OpenZeppelin(opens in a new tab), yang mendesain alamat sebagai pemilik kontrak, dan menyediakan pengubah untuk membatasi akses pada metode yang hanya terkait dengan pemilik tersebut. ownableownable.

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}
Tampilkan semua
Salin

Untuk menggunakan blok pembangun seperti ini dalam kontrak, Anda perlu mengimpornya terlebih dahulu, dan kemudian memperpanjangnya dari kontrak milik Anda. Ini akan memungkinkan Anda menggunakan pengubah yang disediakan oleh basis kontrak Ownable untuk mengamankan fungsi Anda.

1import ".../Ownable.sol"; // Jalan ke pustaka yang diimpor
2
3contract MyContract is Ownable {
4 // Fungsi berikut ini hanya bisa dipanggil oleh pemilik
5 function secured() onlyOwner public {
6 msg.sender.transfer(1 ether);
7 }
8}
Salin

Contoh populer lainnya adalah SafeMath(opens in a new tab) atau DsMath(opens in a new tab). Ini adalah pustaka (jika dibandingkan dengan kontrak dasar) yang menyediakan fungsi aritmatika dengan pemeriksaan overflow, yang tidak disediakan oleh bahasa pemrograman. Adalah langkah yang baik untuk menggunakan salah satu dari kedua pustaka ini ketimbang operasi aritmatika asli untuk mengamankan kontrak Anda terhadap overflow, yang bisa membawa akibat fatal!

Standar

Untuk mendukung komposabilitas dan interoperabilitas, komunitas Ethereum telah menetapkan beberapa standar dalam bentuk ERC. Anda bisa membaca selengkapnya tentang hal itu di bab standar.

Ketika memasukkan ERC sebagai bagian dari kontrak Anda, adalah ide bagus untuk mencari implementasi standar ketimbang mencoba membuatnya sendiri. Banyak pustaka kontrak pintar mencakup implementasi untuk ERC paling populer. Contohnya, standar token yang dapat dipertukarkan 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). Sebagai tambahan, beberapa ERC juga menyediakan implementasi kanonis sebagai bagian dari ERC sendiri.

Penting untuk menyebutkan bahwa beberapa ERC tidak bisa berdiri sendiri, tapi sebagai pelengkap bagi ERC lain. Contohnya, ERC2612(opens in a new tab) menambahkan ekstensi ke ERC20 untuk meningkatkan kegunaannya.

Bagaimana menambahkan pustaka

Selalu merujuk pada dokumentasi pustaka yang Anda masukkan untuk instruksi spesifik tentang cara memasukkannya ke dalam proyek Anda. Beberapa library kontrak Solidity dikemas menggunakan npm, jadi cukup npm install. Sebagian besar alat untuk mengompilasi kontrak akan melihat node_modules Anda untuk pustaka kontrak pintar, sehingga Anda dapat melakukan hal berikut:

1// Ini akan memuat pustaka @openzeppelin/contracts dari node_modules Anda
2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
3
4contract MyNFT is ERC721 {
5 constructor() ERC721("MyNFT", "MNFT") public { }
6}
Salin

Terlepas dari metode yang Anda gunakan, ketika memasukkan pustaka, selalu pastikan versi bahasanya. Sebagai contoh, Anda tidak bisa menggunakan pustaka untuk Solidity 0.6 jika Anda menulis kontrak dalam Solidity 0.5.

Kapan menggunakannya

Menggunakan pustaka kontrak pintar dalam proyek Anda memiliki beberapa manfaat. Pertama dan terutama, menghemat waktu Anda dengan menyediakan blok pembangun yang siap dipakai yang bisa dimasukkan ke dalam sistem Anda, daripada harus membuat kodenya sendiri.

Keamanan juga adalah satu kelebihan utamanya. Pustaka kontrak pintar sumber terbuka juga sering diperiksa secara ketat. Karena banyak proyek bergantung padanya, ada insentif kuat dari komunitas untuk tetap memeriksanya secara konstan. Kesalahan dalam kode aplikasi jauh lebih sering ditemukan daripada dalam pustaka kontrak yang dapat digunakan kembali. Beberapa pustaka juga menjalani audit eksternal(opens in a new tab) sebagai pengamanan tambahan.

Namun, menggunakan pustaka kontrak pintar membawa risiko memasukkan kode yang tidak Anda kenali ke dalam proyek. Mengimpor kontrak dan memasukkannya langsung ke dalam proyek Anda memang menggoda, tetapi tanpa pemahaman yang baik tentang apa yang dilakukan kontra, Anda mungkin secara tidak sengaja menimbulkan masalah di 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 memasukkan suatu pustaka, pertimbangkan penggunaannya secara keseluruhan. Pustaka yang diterima secara luas memiliki keuntungan memiliki komunitas yang lebih besar dan banyak mata yang mengawasinya untuk melihat masalah. Keamanan harus menjadi fokus utama Anda saat membangun dengan kontrak pintar!

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

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

HQ20 - Sebuah proyek Solidity dengan kontrak, pustaka, dan contoh untuk menolong Anda membangun aplikasi yang terdistribusi dengan fitur lengkap untuk dunia nyata.

SDK Solidity thirdweb - Menyediakan alat yang dibutuhkan untuk membuat kontrak pintar khusus dengan efisien

Bacaan lebih lanjut

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

Apakah artikel ini membantu?