Konsep pertama yang akan kita tangani adalah interaksi kontrak. Interaksi kontrak mengacu pada bagaimana kontrak berkomunikasi dan berbagi informasi. Di Solidity, kontrak dapat memanggil fungsi kontrak lain, membuat kontrak lain, dan bahkan mengirim Ether ke kontrak atau alamat lain.
Kami telah melihat interaksi kontrak dalam sistem pemungutan suara kami. Setiap kali pemungutan suara dilakukan, kontrak pemungutan suara berinteraksi dengannya untuk memperbarui status pemilih dan penghitungan suara untuk proposal tersebut. Namun, untuk sistem yang lebih kompleks, Anda mungkin memiliki kontrak terpisah yang perlu berinteraksi satu sama lain.
Berikut adalah contoh sederhana interaksi kontrak:
Soliditas
pragma soliditas >=0.7.0 <0.9.0;
kontrak DisebutKontrak {
uint public x;
fungsi setX(uint _x) publik {
x = _x;
}
}
kontrak CallerContract {
fungsi callSetX(alamat _disebutContractAddress, uint _x) publik {
CalledContract calledContract = CalledContract(_calledContractAddress);
calledContract.setX(_x);
}
}
Dalam contoh ini, CallerContract
berinteraksi dengan CalledContract
dengan memanggil fungsi setX
nya.
Sekarang mari beralih ke pencatatan peristiwa. Peristiwa adalah cara kontrak Anda mengkomunikasikan bahwa sesuatu telah terjadi pada dunia luar. Dalam sistem pemungutan suara, misalnya, kita mungkin ingin menampilkan peristiwa setiap kali pemungutan suara dilakukan. Berikut cara melakukannya:
Soliditas
// Pengenal Lisensi SPDX: GPL-3.0
pragma soliditas >=0.7.0 <0.9.0;
kontrak Pemilih {
// Definisi acara
acara VoteCast(pemilih alamat, proposal uint);
// Sisa kontrak...
fungsi vote(uint _proposal) public {
Person storage sender = voters[msg.sender];
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = _proposal;
proposals[_proposal].voteCount += 1;
// Emit event
emit VoteCast(msg.sender, _proposal);
}
// Sisa kontrak...
}
Dalam fungsi vote
yang diperbarui, kami memunculkan acara VoteCast
setiap kali pemungutan suara dilakukan. Acara ini mencatat alamat pemilih dan proposal yang mereka pilih.
Dalam pelajaran ini, kita belajar tentang interaksi kontrak dan pencatatan peristiwa, dua konsep penting dalam Soliditas. Dengan pengetahuan yang Anda peroleh dari kursus ini, Anda kini diperlengkapi untuk mulai mengembangkan aplikasi terdesentralisasi yang lebih kompleks di Ethereum.
Selamat! Anda telah berhasil menyelesaikan kursus “Membangun Sistem Pemungutan Suara Terdesentralisasi”.
Sepanjang kursus ini, Anda telah mempelajari konsep inti di balik sistem pemungutan suara terdesentralisasi dan cara menerapkannya menggunakan Solidity pada Remix IDE. Mulai dari memahami apa itu pemungutan suara terdesentralisasi dan mengapa hal itu penting, kami mempelajari pengkodean kontrak pintar kami sendiri untuk pendaftaran pemilih, pemberian suara, dan penghitungan suara. Kami juga mempelajari cara berinteraksi dengan kontrak kami dan mensimulasikan seluruh proses pemungutan suara dalam Remix IDE. Terakhir, kami mengeksplorasi bagaimana kontrak berinteraksi satu sama lain dan cara mencatat peristiwa untuk melacak aktivitas di blockchain.
Keterampilan dan pengetahuan yang Anda peroleh dari kursus ini tidak hanya terbatas pada pembuatan sistem pemungutan suara tetapi juga dapat diterapkan pada jenis aplikasi desentralisasi lainnya. Teruslah berlatih, bereksperimen, dan membangun.
Konsep pertama yang akan kita tangani adalah interaksi kontrak. Interaksi kontrak mengacu pada bagaimana kontrak berkomunikasi dan berbagi informasi. Di Solidity, kontrak dapat memanggil fungsi kontrak lain, membuat kontrak lain, dan bahkan mengirim Ether ke kontrak atau alamat lain.
Kami telah melihat interaksi kontrak dalam sistem pemungutan suara kami. Setiap kali pemungutan suara dilakukan, kontrak pemungutan suara berinteraksi dengannya untuk memperbarui status pemilih dan penghitungan suara untuk proposal tersebut. Namun, untuk sistem yang lebih kompleks, Anda mungkin memiliki kontrak terpisah yang perlu berinteraksi satu sama lain.
Berikut adalah contoh sederhana interaksi kontrak:
Soliditas
pragma soliditas >=0.7.0 <0.9.0;
kontrak DisebutKontrak {
uint public x;
fungsi setX(uint _x) publik {
x = _x;
}
}
kontrak CallerContract {
fungsi callSetX(alamat _disebutContractAddress, uint _x) publik {
CalledContract calledContract = CalledContract(_calledContractAddress);
calledContract.setX(_x);
}
}
Dalam contoh ini, CallerContract
berinteraksi dengan CalledContract
dengan memanggil fungsi setX
nya.
Sekarang mari beralih ke pencatatan peristiwa. Peristiwa adalah cara kontrak Anda mengkomunikasikan bahwa sesuatu telah terjadi pada dunia luar. Dalam sistem pemungutan suara, misalnya, kita mungkin ingin menampilkan peristiwa setiap kali pemungutan suara dilakukan. Berikut cara melakukannya:
Soliditas
// Pengenal Lisensi SPDX: GPL-3.0
pragma soliditas >=0.7.0 <0.9.0;
kontrak Pemilih {
// Definisi acara
acara VoteCast(pemilih alamat, proposal uint);
// Sisa kontrak...
fungsi vote(uint _proposal) public {
Person storage sender = voters[msg.sender];
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = _proposal;
proposals[_proposal].voteCount += 1;
// Emit event
emit VoteCast(msg.sender, _proposal);
}
// Sisa kontrak...
}
Dalam fungsi vote
yang diperbarui, kami memunculkan acara VoteCast
setiap kali pemungutan suara dilakukan. Acara ini mencatat alamat pemilih dan proposal yang mereka pilih.
Dalam pelajaran ini, kita belajar tentang interaksi kontrak dan pencatatan peristiwa, dua konsep penting dalam Soliditas. Dengan pengetahuan yang Anda peroleh dari kursus ini, Anda kini diperlengkapi untuk mulai mengembangkan aplikasi terdesentralisasi yang lebih kompleks di Ethereum.
Selamat! Anda telah berhasil menyelesaikan kursus “Membangun Sistem Pemungutan Suara Terdesentralisasi”.
Sepanjang kursus ini, Anda telah mempelajari konsep inti di balik sistem pemungutan suara terdesentralisasi dan cara menerapkannya menggunakan Solidity pada Remix IDE. Mulai dari memahami apa itu pemungutan suara terdesentralisasi dan mengapa hal itu penting, kami mempelajari pengkodean kontrak pintar kami sendiri untuk pendaftaran pemilih, pemberian suara, dan penghitungan suara. Kami juga mempelajari cara berinteraksi dengan kontrak kami dan mensimulasikan seluruh proses pemungutan suara dalam Remix IDE. Terakhir, kami mengeksplorasi bagaimana kontrak berinteraksi satu sama lain dan cara mencatat peristiwa untuk melacak aktivitas di blockchain.
Keterampilan dan pengetahuan yang Anda peroleh dari kursus ini tidak hanya terbatas pada pembuatan sistem pemungutan suara tetapi juga dapat diterapkan pada jenis aplikasi desentralisasi lainnya. Teruslah berlatih, bereksperimen, dan membangun.