Dalam bagian ini, kita akan membahas proses menulis kontrak pintar dasar menggunakan Solidity. Kita akan mencakup komponen-komponen penting seperti variabel, fungsi, dan pengubah. Kemudian, kita akan menjelajahi contoh implementasi kontrak token sederhana.
Variabel, fungsi, dan modifier
Contoh 1: Melaksanakan kontrak token sederhana
Mari kita buat kontrak token sederhana menggunakan Solidity. Kontrak ini akan memungkinkan pengguna untuk mentransfer token antar akun dan memeriksa saldo token dari setiap akun.
TypeScriptpragma soliditas ^0.8.0;kontrak SimpleToken { // Mendeklarasikan variabel status alamat publik pemilik; pemetaan(alamat => uint256) publik saldo; // Menginisialisasi kontrak token konstruktor(uint256 pasokanAwal) { pemilik = msg.sender; saldo[pemilik] = pasokanAwal; } // Fungsi untuk mentransfer token fungsi transfer(alamat ke, uint256 jumlah) publik { memerlukan(saldo[msg.sender] >= jumlah, "Saldo tidak mencukupi"); saldo[msg.sender] -= jumlah; saldo[ke] += jumlah; } // Fungsi untuk memeriksa saldo token dari sebuah akun fungsi balanceOf(alamat akun) publik tampilan mengembalikan (uint256) { kembali saldo[akun]; }}
Dalam kontrak ini, kita memiliki:
pemilik
dansaldo
untuk menyimpan alamat pemilik kontrak dan saldo token dari semua alamat, masing-masing.konstruktor
fungsi yang menetapkan pasokan awal token dan menugaskan mereka kepada pemilik kontrak.transfer
fungsi yang memungkinkan pengguna untuk mentransfer token ke akun lain. Ini menggunakan memerlukan
pernyataan untuk memastikan pengirim memiliki cukup token untuk ditransfer.saldoDari
fungsi yang mengembalikan saldo token dari rekening yang ditentukan.Contoh2: Melaksanakan sistem pemungutan suara sederhana
TypeScriptpragma soliditas ^0.8.0;kontrak VotingSystem { pemetaan (bytes32 => uint256) public votesReceived; bytes32[] public candidateList; constructor(bytes32[] memory candidateNames) { candidateList = candidateNames; } function voteForCandidate(bytes32 candidate) public { memerlukan(validCandidate(candidate), "Kandidat tidak valid."); votesReceived[candidate] += 1; } function totalVotesFor(bytes32 candidate) public view returns (uint256) { memerlukan(validCandidate(candidate), "Kandidat tidak valid."); kembali votesReceived[candidate]; } function validCandidate(bytes32 candidate) public view returns (bool) { untuk (uint256 i = 0; i < candidateList.length; i++) { if (candidateList[i] == candidate) { kembali benar; } } kembali salah; }}
Dalam contoh ini, Sistem Pemungutan Suara
kontrak memungkinkan pengguna untuk memilih salah satu dari beberapa kandidat dengan menelepon memilihUntukKandidat
fungsi. Kontrak ini melacak jumlah suara yang diterima untuk setiap kandidat menggunakan suara yang diterima
pemetaan, di mana kunci adalah nama calon dan nilai adalah jumlah suara. daftar kandidat
variabel menyimpan daftar kandidat yang valid. The totalVotesFor
fungsi dapat dipanggil untuk memeriksa jumlah suara yang diterima oleh kandidat tertentu, dan kandidat yang valid
fungsi memeriksa apakah seorang kandidat valid. Ini adalah contoh sederhana bagaimana Solidity dapat digunakan untuk membangun aplikasi terdesentralisasi dengan logika kompleks.
Sorotan
Variabel, fungsi, dan pengubah sangat penting dalam kontrak pintar Solidity.
Solidity memiliki dua jenis variabel: variabel keadaan dan variabel lokal.
Fungsi digunakan untuk melakukan tugas dan dapat memiliki parameter masukan serta nilai pengembalian.
Modifiers digunakan untuk memodifikasi perilaku fungsi dan meningkatkan keterbacaan dan kelolaan kode.
Kontrak SimpleToken memungkinkan pengguna untuk mentransfer token dan memeriksa saldo token.
Kontrak SimpleToken menunjukkan penggunaan variabel keadaan, fungsi konstruktor, dan fungsi seperti transfer dan balanceOf.
Kontrak VotingSystem memungkinkan pengguna untuk memilih kandidat dan melacak jumlah suara.
Kontrak VotingSystem menampilkan penggunaan pemetaan, larik, dan fungsi seperti voteForCandidate, totalVotesFor, dan validCandidate.
Dalam bagian ini, kita akan membahas proses menulis kontrak pintar dasar menggunakan Solidity. Kita akan mencakup komponen-komponen penting seperti variabel, fungsi, dan pengubah. Kemudian, kita akan menjelajahi contoh implementasi kontrak token sederhana.
Variabel, fungsi, dan modifier
Contoh 1: Melaksanakan kontrak token sederhana
Mari kita buat kontrak token sederhana menggunakan Solidity. Kontrak ini akan memungkinkan pengguna untuk mentransfer token antar akun dan memeriksa saldo token dari setiap akun.
TypeScriptpragma soliditas ^0.8.0;kontrak SimpleToken { // Mendeklarasikan variabel status alamat publik pemilik; pemetaan(alamat => uint256) publik saldo; // Menginisialisasi kontrak token konstruktor(uint256 pasokanAwal) { pemilik = msg.sender; saldo[pemilik] = pasokanAwal; } // Fungsi untuk mentransfer token fungsi transfer(alamat ke, uint256 jumlah) publik { memerlukan(saldo[msg.sender] >= jumlah, "Saldo tidak mencukupi"); saldo[msg.sender] -= jumlah; saldo[ke] += jumlah; } // Fungsi untuk memeriksa saldo token dari sebuah akun fungsi balanceOf(alamat akun) publik tampilan mengembalikan (uint256) { kembali saldo[akun]; }}
Dalam kontrak ini, kita memiliki:
pemilik
dansaldo
untuk menyimpan alamat pemilik kontrak dan saldo token dari semua alamat, masing-masing.konstruktor
fungsi yang menetapkan pasokan awal token dan menugaskan mereka kepada pemilik kontrak.transfer
fungsi yang memungkinkan pengguna untuk mentransfer token ke akun lain. Ini menggunakan memerlukan
pernyataan untuk memastikan pengirim memiliki cukup token untuk ditransfer.saldoDari
fungsi yang mengembalikan saldo token dari rekening yang ditentukan.Contoh2: Melaksanakan sistem pemungutan suara sederhana
TypeScriptpragma soliditas ^0.8.0;kontrak VotingSystem { pemetaan (bytes32 => uint256) public votesReceived; bytes32[] public candidateList; constructor(bytes32[] memory candidateNames) { candidateList = candidateNames; } function voteForCandidate(bytes32 candidate) public { memerlukan(validCandidate(candidate), "Kandidat tidak valid."); votesReceived[candidate] += 1; } function totalVotesFor(bytes32 candidate) public view returns (uint256) { memerlukan(validCandidate(candidate), "Kandidat tidak valid."); kembali votesReceived[candidate]; } function validCandidate(bytes32 candidate) public view returns (bool) { untuk (uint256 i = 0; i < candidateList.length; i++) { if (candidateList[i] == candidate) { kembali benar; } } kembali salah; }}
Dalam contoh ini, Sistem Pemungutan Suara
kontrak memungkinkan pengguna untuk memilih salah satu dari beberapa kandidat dengan menelepon memilihUntukKandidat
fungsi. Kontrak ini melacak jumlah suara yang diterima untuk setiap kandidat menggunakan suara yang diterima
pemetaan, di mana kunci adalah nama calon dan nilai adalah jumlah suara. daftar kandidat
variabel menyimpan daftar kandidat yang valid. The totalVotesFor
fungsi dapat dipanggil untuk memeriksa jumlah suara yang diterima oleh kandidat tertentu, dan kandidat yang valid
fungsi memeriksa apakah seorang kandidat valid. Ini adalah contoh sederhana bagaimana Solidity dapat digunakan untuk membangun aplikasi terdesentralisasi dengan logika kompleks.
Sorotan
Variabel, fungsi, dan pengubah sangat penting dalam kontrak pintar Solidity.
Solidity memiliki dua jenis variabel: variabel keadaan dan variabel lokal.
Fungsi digunakan untuk melakukan tugas dan dapat memiliki parameter masukan serta nilai pengembalian.
Modifiers digunakan untuk memodifikasi perilaku fungsi dan meningkatkan keterbacaan dan kelolaan kode.
Kontrak SimpleToken memungkinkan pengguna untuk mentransfer token dan memeriksa saldo token.
Kontrak SimpleToken menunjukkan penggunaan variabel keadaan, fungsi konstruktor, dan fungsi seperti transfer dan balanceOf.
Kontrak VotingSystem memungkinkan pengguna untuk memilih kandidat dan melacak jumlah suara.
Kontrak VotingSystem menampilkan penggunaan pemetaan, larik, dan fungsi seperti voteForCandidate, totalVotesFor, dan validCandidate.