Pemungutan suara terdesentralisasi mengacu pada sistem pemungutan suara yang beroperasi pada blockchain. Ide utamanya di sini adalah memanfaatkan transparansi, keamanan, dan kekekalan yang disediakan oleh teknologi blockchain untuk membangun sistem pemungutan suara yang sulit untuk dimanipulasi dan mudah diverifikasi.
Dalam sistem pemungutan suara yang terdesentralisasi, setiap suara merupakan transaksi di blockchain yang dapat dilihat oleh semua peserta namun hanya dapat diubah oleh pemilih hingga suara diberikan. Setelah pemungutan suara dilakukan, pemungutan suara tersebut dicatat di blockchain dan tidak dapat diubah, sehingga memberikan mekanisme pemungutan suara yang transparan dan anti gangguan.
Remix IDE (Integrated Development Environment) adalah alat sumber terbuka yang kuat yang dirancang khusus untuk pengembangan kontrak pintar Ethereum. Ini berjalan langsung di browser web Anda, jadi Anda tidak perlu menginstal apa pun di komputer Anda.
Anda dapat mengakses Remix IDE di https://remix.ethereum.org. Saat Anda membuka Remix di browser Anda, Anda akan menemukan tiga panel:
Panel Kiri: Di sinilah Anda dapat membuat, mengimpor, dan mengelola file Soliditas Anda. Ini juga mencakup berbagai plugin untuk kompilasi, pengujian, debugging, dan penerapan kontrak Anda.
Panel Pusat: Ini adalah editor kode Anda. Di sini Anda akan menulis dan mengedit kode Soliditas Anda.
Panel Kanan: Panel ini menyediakan berbagai alat untuk mengkompilasi kontrak Anda, menyebarkannya di jaringan Ethereum (baik di jaringan Ethereum nyata atau simulasi JavaScript VM), dan berinteraksi dengan kontrak yang Anda terapkan.
Mari kita mulai dengan kontrak “Pemilih” yang sederhana. Kontrak ini akan melacak pemilih di sistem kami.
Di Remix IDE, buka “File Explorer” dan klik ikon “+” untuk membuat file baru. Beri nama Voter.sol
.
Sekarang, mari kita mulai menulis kontrak kita:
Soliditas
// Pengenal Lisensi SPDX: GPL-3.0
pragma soliditas >=0.7.0 <0.9.0;
contract Voter {
// Sebuah struct untuk mewakili seseorang
struct Person {
bool voted; // if true, that person already voted
uint vote; // index of the voted proposal
}
// Sebuah pemetaan untuk melacak semua pemilih
pemetaan(alamat => Orang) pemilih publik;
// Fungsi untuk mendaftarkan pemilih
fungsi registerVoter() public {
voters[msg.sender].voted = false;
}
}
Pengidentifikasi Lisensi SPDX: Baris // SPDX-License-Identifier: GPL-3.0
menunjukkan bahwa kontrak kami menggunakan GNU General Public License v3.0. Ini adalah lisensi perangkat lunak bebas yang umum digunakan yang menjamin kebebasan pengguna akhir untuk menjalankan, mempelajari, berbagi, dan memodifikasi perangkat lunak.
Petunjuk Pragma: pragma solidity >=0.7.0 <0.9.0;
pernyataan menetapkan bahwa kontrak ditulis dalam versi Soliditas yang lebih besar atau sama dengan 0.7.0 dan kurang dari 0.9.0. Ini membantu mencegah kontrak dikompilasi dengan versi kompiler yang lebih baru dan tidak kompatibel.
Definisi Kontrak: Blok contract Voter {...}
mendefinisikan kontrak baru bernama Voter
. Di sinilah kita menentukan variabel status dan fungsi kontrak.
Definisi Struktur: Di dalam kontrak, kami mendefinisikan struct Person
yang mewakili seseorang dalam sistem pemungutan suara kami. Setiap Person
memiliki boolean voted
yang menunjukkan apakah mereka sudah memilih dan bilangan bulat vote
yang melacak proposal yang mereka pilih.
Variabel Negara: mapping(address => Person) public voters;
pernyataan mendeklarasikan variabel negara voters
yang membuat tautan antara alamat Ethereum dan struct Person
. Hal ini akan memungkinkan kami untuk melacak siapa yang berhak memilih dalam sistem dan berapa jumlah suara mereka. Kata kunci public
secara otomatis menciptakan fungsi pengambil bagi voters
.
Definisi Fungsi: Blok function registerVoter() public {...}
mendefinisikan fungsi publik yang memungkinkan pengguna mendaftarkan diri sebagai pemilih dalam sistem. voters[msg.sender].voted = false;
pernyataan menetapkan status voted
pemilih baru menjadi false
.
Itu saja untuk kontrak ini! Seiring kemajuan kami dalam kursus ini, kami akan memperluas kontrak ini dengan menambahkan lebih banyak fungsi untuk proses pemungutan suara. Ingatlah untuk mengkompilasi dan menguji kode Anda secara rutin untuk memastikan semuanya berfungsi sesuai harapan. Di Remix IDE, Anda dapat mengkompilasi kontrak Anda dengan mengklik ikon kompiler Soliditas di sidebar kiri (yang ketiga dari atas) dan kemudian mengklik tombol “Kompilasi”.
Pada pelajaran berikutnya, kita akan mempelajari cara mengizinkan pemilih terdaftar untuk memberikan suara dan menerapkan logika sistem pemungutan suara. Namun untuk saat ini, bermain-mainlah dengan kontrak dan biasakan diri Anda dengan lingkungan Remix. Anda baru saja mengambil langkah pertama ke dunia pengembangan kontrak pintar!
Pemungutan suara terdesentralisasi mengacu pada sistem pemungutan suara yang beroperasi pada blockchain. Ide utamanya di sini adalah memanfaatkan transparansi, keamanan, dan kekekalan yang disediakan oleh teknologi blockchain untuk membangun sistem pemungutan suara yang sulit untuk dimanipulasi dan mudah diverifikasi.
Dalam sistem pemungutan suara yang terdesentralisasi, setiap suara merupakan transaksi di blockchain yang dapat dilihat oleh semua peserta namun hanya dapat diubah oleh pemilih hingga suara diberikan. Setelah pemungutan suara dilakukan, pemungutan suara tersebut dicatat di blockchain dan tidak dapat diubah, sehingga memberikan mekanisme pemungutan suara yang transparan dan anti gangguan.
Remix IDE (Integrated Development Environment) adalah alat sumber terbuka yang kuat yang dirancang khusus untuk pengembangan kontrak pintar Ethereum. Ini berjalan langsung di browser web Anda, jadi Anda tidak perlu menginstal apa pun di komputer Anda.
Anda dapat mengakses Remix IDE di https://remix.ethereum.org. Saat Anda membuka Remix di browser Anda, Anda akan menemukan tiga panel:
Panel Kiri: Di sinilah Anda dapat membuat, mengimpor, dan mengelola file Soliditas Anda. Ini juga mencakup berbagai plugin untuk kompilasi, pengujian, debugging, dan penerapan kontrak Anda.
Panel Pusat: Ini adalah editor kode Anda. Di sini Anda akan menulis dan mengedit kode Soliditas Anda.
Panel Kanan: Panel ini menyediakan berbagai alat untuk mengkompilasi kontrak Anda, menyebarkannya di jaringan Ethereum (baik di jaringan Ethereum nyata atau simulasi JavaScript VM), dan berinteraksi dengan kontrak yang Anda terapkan.
Mari kita mulai dengan kontrak “Pemilih” yang sederhana. Kontrak ini akan melacak pemilih di sistem kami.
Di Remix IDE, buka “File Explorer” dan klik ikon “+” untuk membuat file baru. Beri nama Voter.sol
.
Sekarang, mari kita mulai menulis kontrak kita:
Soliditas
// Pengenal Lisensi SPDX: GPL-3.0
pragma soliditas >=0.7.0 <0.9.0;
contract Voter {
// Sebuah struct untuk mewakili seseorang
struct Person {
bool voted; // if true, that person already voted
uint vote; // index of the voted proposal
}
// Sebuah pemetaan untuk melacak semua pemilih
pemetaan(alamat => Orang) pemilih publik;
// Fungsi untuk mendaftarkan pemilih
fungsi registerVoter() public {
voters[msg.sender].voted = false;
}
}
Pengidentifikasi Lisensi SPDX: Baris // SPDX-License-Identifier: GPL-3.0
menunjukkan bahwa kontrak kami menggunakan GNU General Public License v3.0. Ini adalah lisensi perangkat lunak bebas yang umum digunakan yang menjamin kebebasan pengguna akhir untuk menjalankan, mempelajari, berbagi, dan memodifikasi perangkat lunak.
Petunjuk Pragma: pragma solidity >=0.7.0 <0.9.0;
pernyataan menetapkan bahwa kontrak ditulis dalam versi Soliditas yang lebih besar atau sama dengan 0.7.0 dan kurang dari 0.9.0. Ini membantu mencegah kontrak dikompilasi dengan versi kompiler yang lebih baru dan tidak kompatibel.
Definisi Kontrak: Blok contract Voter {...}
mendefinisikan kontrak baru bernama Voter
. Di sinilah kita menentukan variabel status dan fungsi kontrak.
Definisi Struktur: Di dalam kontrak, kami mendefinisikan struct Person
yang mewakili seseorang dalam sistem pemungutan suara kami. Setiap Person
memiliki boolean voted
yang menunjukkan apakah mereka sudah memilih dan bilangan bulat vote
yang melacak proposal yang mereka pilih.
Variabel Negara: mapping(address => Person) public voters;
pernyataan mendeklarasikan variabel negara voters
yang membuat tautan antara alamat Ethereum dan struct Person
. Hal ini akan memungkinkan kami untuk melacak siapa yang berhak memilih dalam sistem dan berapa jumlah suara mereka. Kata kunci public
secara otomatis menciptakan fungsi pengambil bagi voters
.
Definisi Fungsi: Blok function registerVoter() public {...}
mendefinisikan fungsi publik yang memungkinkan pengguna mendaftarkan diri sebagai pemilih dalam sistem. voters[msg.sender].voted = false;
pernyataan menetapkan status voted
pemilih baru menjadi false
.
Itu saja untuk kontrak ini! Seiring kemajuan kami dalam kursus ini, kami akan memperluas kontrak ini dengan menambahkan lebih banyak fungsi untuk proses pemungutan suara. Ingatlah untuk mengkompilasi dan menguji kode Anda secara rutin untuk memastikan semuanya berfungsi sesuai harapan. Di Remix IDE, Anda dapat mengkompilasi kontrak Anda dengan mengklik ikon kompiler Soliditas di sidebar kiri (yang ketiga dari atas) dan kemudian mengklik tombol “Kompilasi”.
Pada pelajaran berikutnya, kita akan mempelajari cara mengizinkan pemilih terdaftar untuk memberikan suara dan menerapkan logika sistem pemungutan suara. Namun untuk saat ini, bermain-mainlah dengan kontrak dan biasakan diri Anda dengan lingkungan Remix. Anda baru saja mengambil langkah pertama ke dunia pengembangan kontrak pintar!