Pustaka kontrak pintar
Terakhir diedit: @yeremiaryangunadi(opens in a new tab), 29 April 2024
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;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 semuaSalin
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 diimpor23contract MyContract is Ownable {4 // Fungsi berikut ini hanya bisa dipanggil oleh pemilik5 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 Anda2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract 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!
Peralatan terkait
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
Tutorial terkait
- Pertimbangan keamanan untuk pengembang Ethereum – Tutorial tentang pertimbangan keamanan pada saat membuat kontrak pintar, termasuk pemakaian pustaka.
- Pahami kontrak pintar token ERC-20 - Tutorial tentang standar ERC20, yang disediakan oleh berbagai pustaka.
Bacaan lebih lanjut
Tahu tentang referensi komunitas yang membantu Anda? Edit halaman ini dan tambahkan!