Pengantar kontrak pintar
Terakhir diedit: , Invalid DateTime
Apa itu kontrak pintar?
"Kontrak pintar" secara sederhana adalah sebuah program yang beroperasi pada blockchain Ethereum. Ini adalah koleksi kode (fungsinya) dan data (statenya) yang berada pada alamat tertentu dalam blockchain Ethereum.
Kontrak pintar adalah suatu jenis akun Ethereum. Ini berarti kontrak pintar memiliki saldo dan bisa mengirim transaksi melalui jaringan. Namun kontrak pintar tidak dapat dikendalikan oleh pengguna, tetapi diterapkan ke jaringan dan berjalan seperti yang telah diprogramkan. Akun pengguna bisa berinteraksi dengan sebuah kontrak pintar dengan mengirimkan transaksi yang menjalankan fungsi yang telah ditentukan dalam kontrak pintar. Kontrak pintar bisa menetapkan aturan, seperti kontrak umumnya, dan secara otomatis melaksanakannya lewat kode. Kontrak pintar tidak dapat dihapus secara default, dan interaksi dengannya tidak dapat diubah.
Prasyarat
Pastikan Anda telah membaca tentang akun, transaksi, dan mesin virtual Ethereum sebelum terjun ke dunia kontrak pintar.
Mesin penjual otomatis digital
Mungkin perumpamaan terbaik untuk kontrak pintar adalah sebuah mesin penjual otomatis, seperti yang dideskripsikan oleh Nick Szabo(opens in a new tab). Dengan input yang benar, maka hasil keluarannya terjamin.
Untuk mendapatkan sebuah kudapan ringan dari mesin penjual otomatis:
1money + snack selection = snack dispensed2
Logika ini diprogramkan ke dalam mesin penjual otomatis.
Kontrak pintar, seperti mesin penjual otomatis, mempunyai logika yang diprogram ke dalamnya. Berikut adalah contoh sederhana bagaimana mesin penjual otomatis ini mungkin terlihat seperti kontrak pintar:
1pragma solidity 0.8.7;23contract VendingMachine {45 // Declare state variables of the contract6 address public owner;7 mapping (address => uint) public cupcakeBalances;89 // When 'VendingMachine' contract is deployed:10 // 1. set the deploying address as the owner of the contract11 // 2. set the deployed smart contract's cupcake balance to 10012 constructor() {13 owner = msg.sender;14 cupcakeBalances[address(this)] = 100;15 }1617 // Allow the owner to increase the smart contract's cupcake balance18 function refill(uint amount) public {19 require(msg.sender == owner, "Only the owner can refill.");20 cupcakeBalances[address(this)] += amount;21 }2223 // Allow anyone to purchase cupcakes24 function purchase(uint amount) public payable {25 require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");26 require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");27 cupcakeBalances[address(this)] -= amount;28 cupcakeBalances[msg.sender] += amount;29 }30}31Tampilkan semuaSalin
Seperti sebuah mesin penjual otomatis yang menghapus kebutuhan akan karyawan vendor, kontrak pintar juga bisa menggantikan perantara dalam banyak industri.
Tanpa izin
Siapa pun dapat menulis kontrak pintar dan menyebarkannya ke jaringan. Anda hanya perlu belajar cara mengodekan dalam bahasa kontrak pintar dan memiliki cukup ETH untuk menyebarkan kontrak Anda. Menggunakan kontrak pintar secara teknis sama dengan melakukan transaksi, sehingga Anda perlu membayar Gas sama seperti Anda perlu membayar gas untuk transfer ETH sederhana. Namun, biaya gas untuk penggunaan kontrak jauh lebih tinggi.
Ethereum memiliki bahasa ramah pengembang untuk menulis kontrak pintar:
- Solidity
- Vyper
Namun, kontrak harus dikompilasikan sebelum bisa digunakan agar mesin virtual Ethereum bisa mengartikan dan menyimpan kontrak tersebut. Selengkapnya tentang pengompilasian
Komposabilitas
Kontrak pintar bersifat publik di Ethereum dan bisa dianggap sebagai API terbuka. Ini berarti Anda bisa memanggil kontrak pintar orang lain di dalam kontrak pintar Anda untuk lebih memperluas apa yang mungkin diperluas. Kontrak bahkan bisa menyebarkan kontrak lainnya.
Pelajari selengkapnya tentang komposabilitas kontrak pintar.
Batasan
Kontrak pintar sendiri tidak bisa mendapatkan informasi tentang aksi "dunia nyata" karena tidak bisa mengirim permintaan HTTP. Ini sengaja dirancang demikian. Mengandalkan informasi eksternal bisa membahayakan konsensus, yang penting untuk keamanan dan desentralisasi.
Ada cara untuk mengatasi ini, menggunakan oracle.
Keterbatasan lain dari kontrak pintar adalah ukuran kontrak maksimumnya. Ukuran kontrak pintar maksimum bisa 24KB atau kontrak akan kehabisan gas. Ini dapat dihindari dengan menggunakan Pola Permata(opens in a new tab).
Sumber daya kontrak pintar
Kontrak OpenZeppelin - Pustaka untuk pengembangan kontrak pintar yang aman.
- openzeppelin.com/contracts/(opens in a new tab)
- GitHub(opens in a new tab)
- Forum Komunitas(opens in a new tab)
DappSys - Blok pembangun yang aman, sederhana, dan fleksibel untuk kontrak pintar.
Bacaan lebih lanjut
- Kontrak Pintar: Teknologi Blockchain yang Akan Menggantikan Pengacara(opens in a new tab)โ Blockgeeks
- Cara Terbaik untuk Pengembangan Kontrak Pintar(opens in a new tab) โ10 November 2019 - Yos Riady
- Kontrak bersih - panduan tentang pola dan praktik kontrak pintar(opens in a new tab) โ 30 Juli 2020 - wslyvh