Kami akan menambahkan sistem proposal dan opsi bagi pemilih terdaftar untuk memilih. Untuk ini, kita memerlukan array untuk menyimpan proposal dan fungsi baru untuk pemungutan suara.
Dalam kontrak Voter
, tambahkan baris kode berikut:
Soliditas
// Pengenal Lisensi SPDX: GPL-3.0
pragma soliditas >=0.7.0 <0.9.0;
kontrak Pemilih {
struct Person {
bool voted;
uint vote;
}
struct Proposal {
string name;
uint voteCount;
}
Proposal[] proposal publik;
pemetaan (alamat => Orang) pemilih masyarakat;
fungsi registerVoter() publik {
voters[msg.sender].voted = false;
}
fungsi addProposal(string memori _nama) publik {
proposals.push(Proposal(_name, 0));
}
fungsi suara(uint _proposal) publik {
require(_proposal < proposals.length, "Invalid proposal index."); // This is the added check
Person storage sender = voters[msg.sender];
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = _proposal;
proposals[_proposal].voteCount += 1;
}
}
Mari kita uraikan kode barunya:
Struktur Proposal: Kami telah menambahkan struktur baru, Proposal
, yang berisi nama proposal dan jumlah suara yang diterima.
Susunan Proposal: Susunan proposals
menampung semua proposal dalam sistem pemungutan suara.
Fungsi Tambahkan Proposal: Fungsi addProposal
memungkinkan kita menambahkan proposal baru ke array proposals
. Nama proposal diteruskan sebagai parameter, dan penghitungan suara awalnya disetel ke nol.
Fungsi Pemungutan Suara: Fungsi vote
memungkinkan pemilih terdaftar untuk memberikan suaranya. Dibutuhkan indeks proposal sebagai parameter dan meningkatkan jumlah suara proposal sebanyak satu. Ia juga memeriksa apakah pemilih telah memilih dan memperbarui status pemilih.
Sekarang kami telah menambahkan lebih banyak fitur ke kontrak kami, sekarang saatnya untuk mengkompilasi dan mengujinya. Di Remix IDE, klik ikon Solidity compiler di sidebar kiri dan kemudian klik tombol “Compile”.
Untuk menguji kontrak Anda, buka tab “Deploy & Run Transactions” (yang ada di bawah ikon compiler Solidity) dan klik tombol “Deploy”. Setelah kontrak diterapkan, Anda dapat berinteraksi dengannya dengan memanggil fungsinya dari tab ini. Coba daftarkan pemilih, tambahkan proposal, dan berikan suara untuk melihat cara kerjanya.
Pada pelajaran berikutnya, kita akan mengimplementasikan fungsi untuk menghitung suara dan mengumumkan hasil proses pemungutan suara. Sampai saat itu tiba, jangan ragu untuk mengeksplorasi dan bereksperimen dengan kontrak tersebut. Solidity menawarkan lebih banyak fitur yang dapat membuat kontrak Anda lebih kuat dan aman. Selamat membuat kode!
Kami akan menambahkan sistem proposal dan opsi bagi pemilih terdaftar untuk memilih. Untuk ini, kita memerlukan array untuk menyimpan proposal dan fungsi baru untuk pemungutan suara.
Dalam kontrak Voter
, tambahkan baris kode berikut:
Soliditas
// Pengenal Lisensi SPDX: GPL-3.0
pragma soliditas >=0.7.0 <0.9.0;
kontrak Pemilih {
struct Person {
bool voted;
uint vote;
}
struct Proposal {
string name;
uint voteCount;
}
Proposal[] proposal publik;
pemetaan (alamat => Orang) pemilih masyarakat;
fungsi registerVoter() publik {
voters[msg.sender].voted = false;
}
fungsi addProposal(string memori _nama) publik {
proposals.push(Proposal(_name, 0));
}
fungsi suara(uint _proposal) publik {
require(_proposal < proposals.length, "Invalid proposal index."); // This is the added check
Person storage sender = voters[msg.sender];
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = _proposal;
proposals[_proposal].voteCount += 1;
}
}
Mari kita uraikan kode barunya:
Struktur Proposal: Kami telah menambahkan struktur baru, Proposal
, yang berisi nama proposal dan jumlah suara yang diterima.
Susunan Proposal: Susunan proposals
menampung semua proposal dalam sistem pemungutan suara.
Fungsi Tambahkan Proposal: Fungsi addProposal
memungkinkan kita menambahkan proposal baru ke array proposals
. Nama proposal diteruskan sebagai parameter, dan penghitungan suara awalnya disetel ke nol.
Fungsi Pemungutan Suara: Fungsi vote
memungkinkan pemilih terdaftar untuk memberikan suaranya. Dibutuhkan indeks proposal sebagai parameter dan meningkatkan jumlah suara proposal sebanyak satu. Ia juga memeriksa apakah pemilih telah memilih dan memperbarui status pemilih.
Sekarang kami telah menambahkan lebih banyak fitur ke kontrak kami, sekarang saatnya untuk mengkompilasi dan mengujinya. Di Remix IDE, klik ikon Solidity compiler di sidebar kiri dan kemudian klik tombol “Compile”.
Untuk menguji kontrak Anda, buka tab “Deploy & Run Transactions” (yang ada di bawah ikon compiler Solidity) dan klik tombol “Deploy”. Setelah kontrak diterapkan, Anda dapat berinteraksi dengannya dengan memanggil fungsinya dari tab ini. Coba daftarkan pemilih, tambahkan proposal, dan berikan suara untuk melihat cara kerjanya.
Pada pelajaran berikutnya, kita akan mengimplementasikan fungsi untuk menghitung suara dan mengumumkan hasil proses pemungutan suara. Sampai saat itu tiba, jangan ragu untuk mengeksplorasi dan bereksperimen dengan kontrak tersebut. Solidity menawarkan lebih banyak fitur yang dapat membuat kontrak Anda lebih kuat dan aman. Selamat membuat kode!