Leçon 4

Interaksi kontrak

Dalam pelajaran terakhir ini, kita akan mempelajari bagaimana kontrak berinteraksi satu sama lain. Kita juga akan mempelajari cara menerapkan event logging untuk memantau aktivitas di blockchain.

Berinteraksi dengan Kontrak

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.

Pencatatan Peristiwa

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.

Kesimpulan

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.

Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.
Catalogue
Leçon 4

Interaksi kontrak

Dalam pelajaran terakhir ini, kita akan mempelajari bagaimana kontrak berinteraksi satu sama lain. Kita juga akan mempelajari cara menerapkan event logging untuk memantau aktivitas di blockchain.

Berinteraksi dengan Kontrak

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.

Pencatatan Peristiwa

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.

Kesimpulan

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.

Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.