Apa itu Skema Pengungkapan Komitmen di Blockchain?

Pemula11/22/2023, 6:46:03 PM
Pelajari tentang metode Commit-Reveal, sebuah inovasi blockchain yang meningkatkan privasi dan keamanan dalam transaksi digital terdesentralisasi.

Teknologi Blockchain menghadirkan pendekatan inovatif untuk mencapai konsensus, keamanan, dan privasi. Salah satu inovasi tersebut adalah skema commit-reveal, sebuah protokol kriptografi yang meningkatkan privasi dan keamanan bagi pengguna blockchain. Saat Anda menavigasi kursus ini, Anda akan mengungkap lapisan kepercayaan, transparansi, dan inovasi yang dibawa oleh skema Commit-Reveal ke domain digital terdesentralisasi. Setiap modul dalam artikel ini dibuat dengan cermat untuk memberikan pemahaman menyeluruh tentang skema Commit-Reveal, implementasinya, dan dampaknya terhadap lanskap blockchain.

Apa itu Blockchain?

Pada intinya, blockchain seperti buku besar digital yang memiliki twist. Tidak seperti buku besar tradisional, buku besar ini terdesentralisasi, yang berarti tidak ada satu entitas pun yang memiliki kendali atas keseluruhan blockchain, dan buku besar ini dapat diakses oleh siapa saja yang menjadi bagian dari jaringannya. Setiap 'blok' dalam blockchain membawa daftar transaksi. Setelah sebuah blok terisi dengan transaksi, sebuah blok baru terbentuk, menciptakan 'rantai' blok yang terhubung - oleh karena itu dinamakan 'blockchain'.

Salah satu fitur cemerlang dari blockchain adalah penekanannya pada kepercayaan dan transparansi. Siapa pun di jaringan memiliki akses dan dapat melihat setiap transaksi di blockchain. Keterbukaan ini mencegah ketidakjujuran dan menumbuhkan kepercayaan di kalangan masyarakat. Anda mungkin bertanya-tanya, bagaimana cara mencapai tingkat transparansi seperti itu? Jawabannya terletak pada mekanisme konsensus unik dan prinsip kriptografinya, yang akan kita pelajari seiring kemajuan dalam kursus ini.

Pengantar Skema Pengungkapan Komitmen

Sekarang setelah Anda mengetahui apa itu blockchain, mari perkenalkan cita rasa khusus ke dalamnya - skema Commit-Reveal. Ini seperti pertunjukan sulap di mana seorang pesulap (pengguna) pertama-tama melakukan suatu tindakan tertentu tanpa mengungkapkannya kepada penonton (jaringan) dan kemudian, pada tahap selanjutnya, mengungkap tindakan tersebut. Dalam istilah blockchain, ini adalah proses dua langkah: 'Fase Komitmen' dan 'Fase Pengungkapan'.

Dalam Fase Komit, pengguna mengirimkan versi informasi mereka yang di-hash ke blockchain. Versi hash ini seperti versi acak dari informasi asli yang menyembunyikan konten sebenarnya. Keajaiban fungsi hash adalah perjalanan satu arah; Anda tidak dapat menguraikan hash kembali ke bentuk aslinya, sehingga menjaga kerahasiaan informasi untuk sementara waktu. Kemudian tibalah Fase Pengungkapan, di mana pengguna mengungkapkan informasi asli, yang kemudian diverifikasi oleh jaringan dengan melakukan hashing lagi dan membandingkannya dengan hash awal yang dilakukan jika cocok, voila! Jaringan mengonfirmasi pengungkapan tersebut, dan trik sulap selesai.

Melalui skema Commit-Reveal, jaringan blockchain dapat mencapai tingkat keterlibatan baru dalam aplikasi seperti lelang, sistem pemungutan suara, dan banyak lagi, yang akan kita bahas secara mendetail di modul mendatang.

Fase Komitmen

Saat kita memasuki skema Commit-Reveal, perhentian pertama kita adalah 'Fase Komit'. Pada fase ini, pengguna “berkomitmen” pada nilai tertentu, namun mereka melakukannya dengan cara yang merahasiakan nilai sebenarnya. Bayangkan Anda mempunyai nomor rahasia dalam pikiran Anda, namun alih-alih memberi tahu semua orang nomor tersebut, Anda malah memasukkannya ke dalam kotak terkunci dan menunjukkannya kepada semua orang. Mereka tahu Anda punya nomornya, tapi mereka tidak tahu apa nomornya. Itulah arti komitmen dalam blockchain!

Sekarang, bagaimana kita mengunci nilai rahasia kita? Di dunia blockchain, kami menggunakan sesuatu yang disebut fungsi hash untuk melakukan hal ini. Fungsi hash seperti blender ajaib. Anda memasukkan nilai rahasia Anda, dan nilai tersebut mengeluarkan versi acaknya, yang dikenal sebagai hash. Hash ini unik; bahkan perubahan kecil pada nilai aslinya akan menghasilkan hash yang sangat berbeda. Keunggulannya adalah proses satu arah - setelah nilai di-hash, tidak ada cara mudah untuk mengetahui nilai asli dari hash. Jadi, ketika pengguna memasukkan nilai mereka, apa yang sebenarnya mereka lakukan adalah membagikan hash nilai mereka dengan semua orang di blockchain.

Fase Pengungkapan

Setelah ketegangan yang muncul di Fase Komitmen, inilah waktunya untuk pengungkapan besar! Fase Pengungkapan adalah saat nilai-nilai komitmen akhirnya diungkapkan kepada semua peserta di blockchain. Kembali ke analogi kotak terkunci kami, ini adalah momen ketika kotak dibuka, dan semua orang dapat melihat nomor apa yang Anda sembunyikan. Di dunia blockchain, pengungkapan adalah proses yang sederhana namun penting yang memberikan transparansi dan keadilan dalam berbagai aplikasi.

Saat pengguna mengungkapkan nilai komitmennya, jaringan dapat dengan mudah memverifikasi keasliannya dengan melakukan hashing pada nilai yang diungkapkan dan membandingkannya dengan hash asli yang dibagikan selama Fase Komit. Jika hashnya cocok, ini mengonfirmasi bahwa pengguna tidak berubah pikiran di tengah jalan. Proses verifikasi yang sederhana namun kuat ini membantu menjaga lingkungan yang saling percaya di mana setiap orang mematuhi aturan. Ini seperti memiliki wasit dalam sebuah permainan, memastikan bahwa semua pemain mematuhi ketentuan yang telah disepakati.

Menerapkan Pengungkapan Komitmen dalam Kontrak Cerdas

Sekarang kita telah mengungkap keajaiban skema Commit-Reveal, mari kita lihat bagaimana skema ini menjadi nyata di dunia blockchain melalui kontrak pintar. Kontrak cerdas sama seperti kontrak tradisional, namun bersifat digital dan dapat dijalankan sendiri. Bayangkan sebuah robot yang tidak memihak yang secara otomatis memastikan semua pihak mematuhi perjanjian mereka, dan Anda mendapatkan ide tentang kontrak pintar. Ini adalah alat yang mengambil ide teoretis dari Commit-Reveal dan menjadikannya praktis di dunia digital. Menerapkan skema Commit-Reveal melalui kontrak pintar seperti membuat koreografi tarian di mana setiap langkah mengikuti ritme yang ditentukan. Mari kita telusuri koreografi ini langkah demi langkah.

Membuat Kontrak

Mulailah dengan membuat kontrak pintar pada platform blockchain seperti Ethereum. Kontrak ini akan memiliki aturan keterlibatan skema Commit-Reveal yang dikodekan di dalamnya.

Fungsi Komit

Rancang fungsi komit dalam kontrak pintar. Fungsi ini akan memungkinkan pengguna untuk mengirimkan nilai hash mereka (fase penerapan) ke kontrak.

Menyimpan Nilai-Nilai Komitmen

Saat pengguna berkomitmen pada nilai-nilai mereka, kontrak pintar akan menyimpan hash ini dengan aman di blockchain, menunggu fase pengungkapan.

Fungsi Pengungkapan

Selanjutnya, dalam kontrak pintar, buat fungsi pengungkapan. Ketika saatnya tiba, fungsi ini akan memungkinkan pengguna untuk mengungkapkan nilai aslinya.

Verifikasi dan Validasi

Setelah terungkap, kontrak pintar akan memverifikasi nilai yang terungkap dengan melakukan hashing dan membandingkannya dengan hash yang dilakukan pada awalnya. Jika semuanya cocok, pengungkapannya divalidasi.

Finalisasi

Setelah semua pengungkapan dikumpulkan dan diverifikasi, kontrak pintar dapat secara otomatis menjalankan langkah selanjutnya, baik itu menghitung suara, menentukan pemenang lelang, atau tindakan spesifik aplikasi lainnya.

Audit dan Pengujian

Sebelum menerapkan, uji kontrak pintar secara menyeluruh untuk memastikan kontrak tersebut beroperasi sebagaimana mestinya dan aman dari potensi eksploitasi. Melalui langkah-langkah ini, kontrak pintar mengatur tarian Commit-Reveal, memastikan proses yang adil dan transparan.

Contoh Kode

// SPDX-License-Identifier: soliditas pragma MIT 

 ^0.8.0; 

 kontrak CommitReveal { 

 struct Commit {

    bytes32 hash;

    bool revealed;

}



pemetaan(alamat => Commit) komitmen publik; 

 pemetaan(alamat => uint256) nilai terungkap publik; 



 // Fungsi commit memungkinkan pengguna untuk mengirimkan nilai hash mereka 

 fungsi commit(bytes32 _hash) public {

    require(commits[msg.sender].hash == 0, "Already committed");

    commits[msg.sender].hash = _hash;

}



// Fungsi mengungkapkan memungkinkan pengguna untuk mengungkapkan nilai aslinya 

 fungsi mengungkapkan(uint256 _value, string memory _salt) public {

    require(commits[msg.sender].revealed == false, "Already revealed");

    require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Hashes don't match");

    commits[msg.sender].revealed = true;

    revealedValues[msg.sender] = _value;

}



// Contoh fungsi finalisasi yang dapat menghitung suara 

 fungsi tallyVotes() tampilan publik kembali (uint256) { 

 uint256 totalVotes = 0; 

 for (address addr = alamat(0); addr < alamat(-1); addr++) { 

 if (melakukan[addr].terungkap) {

            totalVotes += revealedValues[addr];

        }

    }

    menghasilkan total Suara; 

 } 



 // Fungsi untuk mengaudit status kontrak (hanya contoh, tidak praktis untuk kumpulan data besar) 

 fungsi audit() tampilan publik kembali (pemetaan(alamat => uint256) memori) {

    return revealedValues;

}

 }

Penjelasan:

  • Membuat Kontrak: Kontrak CommitReveal dibuat.
  • Fungsi Komit: Fungsi komit menerima nilai hash (_hash) dan menyimpannya di alamat pengirim.
  • Menyimpan Nilai yang Dikomit: Nilai hash disimpan dalam pemetaan yang disebut komit.
  • Fungsi Pengungkapan: Fungsi pengungkapan memungkinkan pengguna mengirimkan nilai asli (_nilai) dan garam (_salt). Ia memeriksa apakah hash ini cocok dengan hash yang pertama kali dikomit.
  • Verifikasi dan Validasi: Ini dilakukan dalam fungsi pengungkapan dengan membandingkan hash.
  • Finalisasi: Fungsi tallyVotes adalah contoh sederhana tentang cara Anda menghitung suara. Ini mengulangi semua kemungkinan alamat (tidak praktis untuk kumpulan data besar) dan menjumlahkan nilai yang terungkap.
  • Audit dan Pengujian: Fungsi audit adalah contoh yang sangat sederhana tentang bagaimana Anda dapat memeriksa status kontrak.

Ini adalah contoh yang sangat sederhana dan tidak memiliki banyak pertimbangan praktis yang Anda perlukan untuk sistem produksi (seperti mencegah luapan, mengoptimalkan penggunaan gas, mengelola kumpulan data besar, dan menambahkan kontrol akses yang tepat). Fungsi finalisasi, khususnya, tidak praktis karena iterasi pada semua kemungkinan alamat dan memerlukan desain berbeda dalam skenario dunia nyata. Kode ini dimaksudkan sebagai titik awal dan alat pendidikan, bukan solusi siap produksi.

Gunakan Kasus Skema Pengungkapan Komitmen di Blockchain

Meningkatkan Platform Lelang

Lelang online adalah salah satu penerapan klasik skema Commit-Reveal. Untuk mencegah orang lain menggunakan jumlah tawaran sebagai leverage, peserta dapat mengajukan tawaran mereka secara diam-diam selama fase komitmen. Ketika periode penawaran berakhir, fase pengungkapan dimulai, sehingga peserta dapat mengungkapkan penawaran mereka. Penawaran sah tertinggi ditentukan, memastikan proses lelang yang adil dan kompetitif.

Menciptakan Sistem Pemungutan Suara yang Adil

Sistem pemungutan suara dapat memperoleh manfaat yang signifikan dari skema Commit-Reveal, terutama dalam skenario yang menuntut anonimitas dan kejujuran dari para pemilih. Dalam pengaturan ini, selama pemilu atau acara pemungutan suara apa pun, pemilih berkomitmen terhadap pilihan mereka dalam fase komitmen tanpa mengungkapkannya kepada orang lain, sehingga menjamin integritas dan kerahasiaan suara. Setelah periode pemungutan suara berakhir, fase pengungkapan dimulai, memungkinkan pemilih untuk mengungkapkan suara mereka. Jumlah tersebut kemudian dihitung untuk menentukan hasilnya, sehingga mendorong proses pemungutan suara yang adil dan transparan.

Kontrak Penawaran Tertutup

Dalam kontrak penawaran tertutup, penawar mengajukan penawarannya secara tersembunyi menggunakan skema Commit-Reveal. Proses ini memastikan bahwa tidak ada satu pun peserta lelang yang mengetahui jumlah penawaran peserta lain, sehingga mendorong persaingan yang sehat. Setelah periode penyerahan penawaran, fase pengungkapan terjadi, dan kontrak diberikan kepada penawar yang memenuhi syarat dengan penawaran terbaik.

Skenario Permainan

Skema Commit-Reveal menemukan penerapan yang menyenangkan dalam skenario game seperti versi digital Rock, Paper, dan Scissors. Pemain berkomitmen pada pilihan mereka tanpa mengungkapkannya, memastikan permainan yang adil. Setelah kedua pemain berkomitmen, fase pengungkapan menyusul, menentukan pemenang berdasarkan pilihan yang dibuat.

Mengurangi Permasalahan yang Terjadi di Depan

Dalam lingkungan blockchain, front-running merupakan kekhawatiran di mana pelaku kejahatan berpotensi mendapatkan keuntungan dari pengetahuan tentang transaksi yang tertunda. Skema Commit-Reveal membantu mengurangi masalah tersebut dengan menyembunyikan rincian transaksi pada awalnya. Pada saat fase pengungkapan tiba, sudah terlambat bagi pelaku kejahatan untuk mengambil tindakan berdasarkan informasi tersebut, sehingga menjaga integritas transaksi.

Arsitektur Komit-dan-Pengungkapan Latensi Rendah

Arsitektur baru seperti F3B telah berevolusi untuk mengurangi overhead yang terkait dengan skema Commit-Reveal tradisional. F3B meminimalkan penulisan data ke dalam blockchain, menawarkan arsitektur Commit-and-Reveal dengan latensi rendah. Perkembangan ini penting karena menandakan optimalisasi dan inovasi berkelanjutan dalam skema Commit-Reveal, menjadikannya lebih efisien untuk aplikasi dunia nyata.

Pembuatan Angka Acak

Dalam lingkungan blockchain, menghasilkan angka acak dapat menjadi tantangan karena sifat deterministik dari protokol blockchain. Skema Commit-Reveal berfungsi sebagai alternatif terdesentralisasi untuk menghasilkan angka acak pada blockchain Ethereum. Misalnya, Randao, sebuah implementasi Commit-Reveal RNG, memanfaatkan data feed publik dan memberi insentif pada partisipasi dalam pembuatan angka acak.

Kesimpulan

Saat pandangan menarik tentang skema Commit-Reveal ini hampir berakhir, penting untuk mempertimbangkan bagaimana mekanisme sederhana namun kuat ini membantu membangun kepercayaan dan keterbukaan dalam aplikasi blockchain. Kami mengintip bagaimana teknologi blockchain dapat mengubah banyak bidang dengan menjadikan lelang adil, sistem pemungutan suara jujur, dan skenario permainan menjadi lebih kreatif, antara lain, dengan skema Commit-Reveal. Perjalanan tidak berakhir di sini; sifat teknologi blockchain yang terus berkembang menghadirkan cakrawala baru untuk dijelajahi. Berbekal pengetahuan yang diperoleh melalui kursus ini, Anda berada pada posisi yang tepat untuk mempelajari lebih dalam tentang blockchain, mengeksplorasi kemungkinan yang tak terbatas, dan berkontribusi dalam membentuk masa depan digital yang transparan, adil, dan terdesentralisasi.

Autor: Piero
Traductor: Cedar
Revisor(es): Matheus、Edward、Ashley He
* La información no pretende ser ni constituye un consejo financiero ni ninguna otra recomendación de ningún tipo ofrecida o respaldada por Gate.io.
* Este artículo no se puede reproducir, transmitir ni copiar sin hacer referencia a Gate.io. La contravención es una infracción de la Ley de derechos de autor y puede estar sujeta a acciones legales.

Apa itu Skema Pengungkapan Komitmen di Blockchain?

Pemula11/22/2023, 6:46:03 PM
Pelajari tentang metode Commit-Reveal, sebuah inovasi blockchain yang meningkatkan privasi dan keamanan dalam transaksi digital terdesentralisasi.

Teknologi Blockchain menghadirkan pendekatan inovatif untuk mencapai konsensus, keamanan, dan privasi. Salah satu inovasi tersebut adalah skema commit-reveal, sebuah protokol kriptografi yang meningkatkan privasi dan keamanan bagi pengguna blockchain. Saat Anda menavigasi kursus ini, Anda akan mengungkap lapisan kepercayaan, transparansi, dan inovasi yang dibawa oleh skema Commit-Reveal ke domain digital terdesentralisasi. Setiap modul dalam artikel ini dibuat dengan cermat untuk memberikan pemahaman menyeluruh tentang skema Commit-Reveal, implementasinya, dan dampaknya terhadap lanskap blockchain.

Apa itu Blockchain?

Pada intinya, blockchain seperti buku besar digital yang memiliki twist. Tidak seperti buku besar tradisional, buku besar ini terdesentralisasi, yang berarti tidak ada satu entitas pun yang memiliki kendali atas keseluruhan blockchain, dan buku besar ini dapat diakses oleh siapa saja yang menjadi bagian dari jaringannya. Setiap 'blok' dalam blockchain membawa daftar transaksi. Setelah sebuah blok terisi dengan transaksi, sebuah blok baru terbentuk, menciptakan 'rantai' blok yang terhubung - oleh karena itu dinamakan 'blockchain'.

Salah satu fitur cemerlang dari blockchain adalah penekanannya pada kepercayaan dan transparansi. Siapa pun di jaringan memiliki akses dan dapat melihat setiap transaksi di blockchain. Keterbukaan ini mencegah ketidakjujuran dan menumbuhkan kepercayaan di kalangan masyarakat. Anda mungkin bertanya-tanya, bagaimana cara mencapai tingkat transparansi seperti itu? Jawabannya terletak pada mekanisme konsensus unik dan prinsip kriptografinya, yang akan kita pelajari seiring kemajuan dalam kursus ini.

Pengantar Skema Pengungkapan Komitmen

Sekarang setelah Anda mengetahui apa itu blockchain, mari perkenalkan cita rasa khusus ke dalamnya - skema Commit-Reveal. Ini seperti pertunjukan sulap di mana seorang pesulap (pengguna) pertama-tama melakukan suatu tindakan tertentu tanpa mengungkapkannya kepada penonton (jaringan) dan kemudian, pada tahap selanjutnya, mengungkap tindakan tersebut. Dalam istilah blockchain, ini adalah proses dua langkah: 'Fase Komitmen' dan 'Fase Pengungkapan'.

Dalam Fase Komit, pengguna mengirimkan versi informasi mereka yang di-hash ke blockchain. Versi hash ini seperti versi acak dari informasi asli yang menyembunyikan konten sebenarnya. Keajaiban fungsi hash adalah perjalanan satu arah; Anda tidak dapat menguraikan hash kembali ke bentuk aslinya, sehingga menjaga kerahasiaan informasi untuk sementara waktu. Kemudian tibalah Fase Pengungkapan, di mana pengguna mengungkapkan informasi asli, yang kemudian diverifikasi oleh jaringan dengan melakukan hashing lagi dan membandingkannya dengan hash awal yang dilakukan jika cocok, voila! Jaringan mengonfirmasi pengungkapan tersebut, dan trik sulap selesai.

Melalui skema Commit-Reveal, jaringan blockchain dapat mencapai tingkat keterlibatan baru dalam aplikasi seperti lelang, sistem pemungutan suara, dan banyak lagi, yang akan kita bahas secara mendetail di modul mendatang.

Fase Komitmen

Saat kita memasuki skema Commit-Reveal, perhentian pertama kita adalah 'Fase Komit'. Pada fase ini, pengguna “berkomitmen” pada nilai tertentu, namun mereka melakukannya dengan cara yang merahasiakan nilai sebenarnya. Bayangkan Anda mempunyai nomor rahasia dalam pikiran Anda, namun alih-alih memberi tahu semua orang nomor tersebut, Anda malah memasukkannya ke dalam kotak terkunci dan menunjukkannya kepada semua orang. Mereka tahu Anda punya nomornya, tapi mereka tidak tahu apa nomornya. Itulah arti komitmen dalam blockchain!

Sekarang, bagaimana kita mengunci nilai rahasia kita? Di dunia blockchain, kami menggunakan sesuatu yang disebut fungsi hash untuk melakukan hal ini. Fungsi hash seperti blender ajaib. Anda memasukkan nilai rahasia Anda, dan nilai tersebut mengeluarkan versi acaknya, yang dikenal sebagai hash. Hash ini unik; bahkan perubahan kecil pada nilai aslinya akan menghasilkan hash yang sangat berbeda. Keunggulannya adalah proses satu arah - setelah nilai di-hash, tidak ada cara mudah untuk mengetahui nilai asli dari hash. Jadi, ketika pengguna memasukkan nilai mereka, apa yang sebenarnya mereka lakukan adalah membagikan hash nilai mereka dengan semua orang di blockchain.

Fase Pengungkapan

Setelah ketegangan yang muncul di Fase Komitmen, inilah waktunya untuk pengungkapan besar! Fase Pengungkapan adalah saat nilai-nilai komitmen akhirnya diungkapkan kepada semua peserta di blockchain. Kembali ke analogi kotak terkunci kami, ini adalah momen ketika kotak dibuka, dan semua orang dapat melihat nomor apa yang Anda sembunyikan. Di dunia blockchain, pengungkapan adalah proses yang sederhana namun penting yang memberikan transparansi dan keadilan dalam berbagai aplikasi.

Saat pengguna mengungkapkan nilai komitmennya, jaringan dapat dengan mudah memverifikasi keasliannya dengan melakukan hashing pada nilai yang diungkapkan dan membandingkannya dengan hash asli yang dibagikan selama Fase Komit. Jika hashnya cocok, ini mengonfirmasi bahwa pengguna tidak berubah pikiran di tengah jalan. Proses verifikasi yang sederhana namun kuat ini membantu menjaga lingkungan yang saling percaya di mana setiap orang mematuhi aturan. Ini seperti memiliki wasit dalam sebuah permainan, memastikan bahwa semua pemain mematuhi ketentuan yang telah disepakati.

Menerapkan Pengungkapan Komitmen dalam Kontrak Cerdas

Sekarang kita telah mengungkap keajaiban skema Commit-Reveal, mari kita lihat bagaimana skema ini menjadi nyata di dunia blockchain melalui kontrak pintar. Kontrak cerdas sama seperti kontrak tradisional, namun bersifat digital dan dapat dijalankan sendiri. Bayangkan sebuah robot yang tidak memihak yang secara otomatis memastikan semua pihak mematuhi perjanjian mereka, dan Anda mendapatkan ide tentang kontrak pintar. Ini adalah alat yang mengambil ide teoretis dari Commit-Reveal dan menjadikannya praktis di dunia digital. Menerapkan skema Commit-Reveal melalui kontrak pintar seperti membuat koreografi tarian di mana setiap langkah mengikuti ritme yang ditentukan. Mari kita telusuri koreografi ini langkah demi langkah.

Membuat Kontrak

Mulailah dengan membuat kontrak pintar pada platform blockchain seperti Ethereum. Kontrak ini akan memiliki aturan keterlibatan skema Commit-Reveal yang dikodekan di dalamnya.

Fungsi Komit

Rancang fungsi komit dalam kontrak pintar. Fungsi ini akan memungkinkan pengguna untuk mengirimkan nilai hash mereka (fase penerapan) ke kontrak.

Menyimpan Nilai-Nilai Komitmen

Saat pengguna berkomitmen pada nilai-nilai mereka, kontrak pintar akan menyimpan hash ini dengan aman di blockchain, menunggu fase pengungkapan.

Fungsi Pengungkapan

Selanjutnya, dalam kontrak pintar, buat fungsi pengungkapan. Ketika saatnya tiba, fungsi ini akan memungkinkan pengguna untuk mengungkapkan nilai aslinya.

Verifikasi dan Validasi

Setelah terungkap, kontrak pintar akan memverifikasi nilai yang terungkap dengan melakukan hashing dan membandingkannya dengan hash yang dilakukan pada awalnya. Jika semuanya cocok, pengungkapannya divalidasi.

Finalisasi

Setelah semua pengungkapan dikumpulkan dan diverifikasi, kontrak pintar dapat secara otomatis menjalankan langkah selanjutnya, baik itu menghitung suara, menentukan pemenang lelang, atau tindakan spesifik aplikasi lainnya.

Audit dan Pengujian

Sebelum menerapkan, uji kontrak pintar secara menyeluruh untuk memastikan kontrak tersebut beroperasi sebagaimana mestinya dan aman dari potensi eksploitasi. Melalui langkah-langkah ini, kontrak pintar mengatur tarian Commit-Reveal, memastikan proses yang adil dan transparan.

Contoh Kode

// SPDX-License-Identifier: soliditas pragma MIT 

 ^0.8.0; 

 kontrak CommitReveal { 

 struct Commit {

    bytes32 hash;

    bool revealed;

}



pemetaan(alamat => Commit) komitmen publik; 

 pemetaan(alamat => uint256) nilai terungkap publik; 



 // Fungsi commit memungkinkan pengguna untuk mengirimkan nilai hash mereka 

 fungsi commit(bytes32 _hash) public {

    require(commits[msg.sender].hash == 0, "Already committed");

    commits[msg.sender].hash = _hash;

}



// Fungsi mengungkapkan memungkinkan pengguna untuk mengungkapkan nilai aslinya 

 fungsi mengungkapkan(uint256 _value, string memory _salt) public {

    require(commits[msg.sender].revealed == false, "Already revealed");

    require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Hashes don't match");

    commits[msg.sender].revealed = true;

    revealedValues[msg.sender] = _value;

}



// Contoh fungsi finalisasi yang dapat menghitung suara 

 fungsi tallyVotes() tampilan publik kembali (uint256) { 

 uint256 totalVotes = 0; 

 for (address addr = alamat(0); addr < alamat(-1); addr++) { 

 if (melakukan[addr].terungkap) {

            totalVotes += revealedValues[addr];

        }

    }

    menghasilkan total Suara; 

 } 



 // Fungsi untuk mengaudit status kontrak (hanya contoh, tidak praktis untuk kumpulan data besar) 

 fungsi audit() tampilan publik kembali (pemetaan(alamat => uint256) memori) {

    return revealedValues;

}

 }

Penjelasan:

  • Membuat Kontrak: Kontrak CommitReveal dibuat.
  • Fungsi Komit: Fungsi komit menerima nilai hash (_hash) dan menyimpannya di alamat pengirim.
  • Menyimpan Nilai yang Dikomit: Nilai hash disimpan dalam pemetaan yang disebut komit.
  • Fungsi Pengungkapan: Fungsi pengungkapan memungkinkan pengguna mengirimkan nilai asli (_nilai) dan garam (_salt). Ia memeriksa apakah hash ini cocok dengan hash yang pertama kali dikomit.
  • Verifikasi dan Validasi: Ini dilakukan dalam fungsi pengungkapan dengan membandingkan hash.
  • Finalisasi: Fungsi tallyVotes adalah contoh sederhana tentang cara Anda menghitung suara. Ini mengulangi semua kemungkinan alamat (tidak praktis untuk kumpulan data besar) dan menjumlahkan nilai yang terungkap.
  • Audit dan Pengujian: Fungsi audit adalah contoh yang sangat sederhana tentang bagaimana Anda dapat memeriksa status kontrak.

Ini adalah contoh yang sangat sederhana dan tidak memiliki banyak pertimbangan praktis yang Anda perlukan untuk sistem produksi (seperti mencegah luapan, mengoptimalkan penggunaan gas, mengelola kumpulan data besar, dan menambahkan kontrol akses yang tepat). Fungsi finalisasi, khususnya, tidak praktis karena iterasi pada semua kemungkinan alamat dan memerlukan desain berbeda dalam skenario dunia nyata. Kode ini dimaksudkan sebagai titik awal dan alat pendidikan, bukan solusi siap produksi.

Gunakan Kasus Skema Pengungkapan Komitmen di Blockchain

Meningkatkan Platform Lelang

Lelang online adalah salah satu penerapan klasik skema Commit-Reveal. Untuk mencegah orang lain menggunakan jumlah tawaran sebagai leverage, peserta dapat mengajukan tawaran mereka secara diam-diam selama fase komitmen. Ketika periode penawaran berakhir, fase pengungkapan dimulai, sehingga peserta dapat mengungkapkan penawaran mereka. Penawaran sah tertinggi ditentukan, memastikan proses lelang yang adil dan kompetitif.

Menciptakan Sistem Pemungutan Suara yang Adil

Sistem pemungutan suara dapat memperoleh manfaat yang signifikan dari skema Commit-Reveal, terutama dalam skenario yang menuntut anonimitas dan kejujuran dari para pemilih. Dalam pengaturan ini, selama pemilu atau acara pemungutan suara apa pun, pemilih berkomitmen terhadap pilihan mereka dalam fase komitmen tanpa mengungkapkannya kepada orang lain, sehingga menjamin integritas dan kerahasiaan suara. Setelah periode pemungutan suara berakhir, fase pengungkapan dimulai, memungkinkan pemilih untuk mengungkapkan suara mereka. Jumlah tersebut kemudian dihitung untuk menentukan hasilnya, sehingga mendorong proses pemungutan suara yang adil dan transparan.

Kontrak Penawaran Tertutup

Dalam kontrak penawaran tertutup, penawar mengajukan penawarannya secara tersembunyi menggunakan skema Commit-Reveal. Proses ini memastikan bahwa tidak ada satu pun peserta lelang yang mengetahui jumlah penawaran peserta lain, sehingga mendorong persaingan yang sehat. Setelah periode penyerahan penawaran, fase pengungkapan terjadi, dan kontrak diberikan kepada penawar yang memenuhi syarat dengan penawaran terbaik.

Skenario Permainan

Skema Commit-Reveal menemukan penerapan yang menyenangkan dalam skenario game seperti versi digital Rock, Paper, dan Scissors. Pemain berkomitmen pada pilihan mereka tanpa mengungkapkannya, memastikan permainan yang adil. Setelah kedua pemain berkomitmen, fase pengungkapan menyusul, menentukan pemenang berdasarkan pilihan yang dibuat.

Mengurangi Permasalahan yang Terjadi di Depan

Dalam lingkungan blockchain, front-running merupakan kekhawatiran di mana pelaku kejahatan berpotensi mendapatkan keuntungan dari pengetahuan tentang transaksi yang tertunda. Skema Commit-Reveal membantu mengurangi masalah tersebut dengan menyembunyikan rincian transaksi pada awalnya. Pada saat fase pengungkapan tiba, sudah terlambat bagi pelaku kejahatan untuk mengambil tindakan berdasarkan informasi tersebut, sehingga menjaga integritas transaksi.

Arsitektur Komit-dan-Pengungkapan Latensi Rendah

Arsitektur baru seperti F3B telah berevolusi untuk mengurangi overhead yang terkait dengan skema Commit-Reveal tradisional. F3B meminimalkan penulisan data ke dalam blockchain, menawarkan arsitektur Commit-and-Reveal dengan latensi rendah. Perkembangan ini penting karena menandakan optimalisasi dan inovasi berkelanjutan dalam skema Commit-Reveal, menjadikannya lebih efisien untuk aplikasi dunia nyata.

Pembuatan Angka Acak

Dalam lingkungan blockchain, menghasilkan angka acak dapat menjadi tantangan karena sifat deterministik dari protokol blockchain. Skema Commit-Reveal berfungsi sebagai alternatif terdesentralisasi untuk menghasilkan angka acak pada blockchain Ethereum. Misalnya, Randao, sebuah implementasi Commit-Reveal RNG, memanfaatkan data feed publik dan memberi insentif pada partisipasi dalam pembuatan angka acak.

Kesimpulan

Saat pandangan menarik tentang skema Commit-Reveal ini hampir berakhir, penting untuk mempertimbangkan bagaimana mekanisme sederhana namun kuat ini membantu membangun kepercayaan dan keterbukaan dalam aplikasi blockchain. Kami mengintip bagaimana teknologi blockchain dapat mengubah banyak bidang dengan menjadikan lelang adil, sistem pemungutan suara jujur, dan skenario permainan menjadi lebih kreatif, antara lain, dengan skema Commit-Reveal. Perjalanan tidak berakhir di sini; sifat teknologi blockchain yang terus berkembang menghadirkan cakrawala baru untuk dijelajahi. Berbekal pengetahuan yang diperoleh melalui kursus ini, Anda berada pada posisi yang tepat untuk mempelajari lebih dalam tentang blockchain, mengeksplorasi kemungkinan yang tak terbatas, dan berkontribusi dalam membentuk masa depan digital yang transparan, adil, dan terdesentralisasi.

Autor: Piero
Traductor: Cedar
Revisor(es): Matheus、Edward、Ashley He
* La información no pretende ser ni constituye un consejo financiero ni ninguna otra recomendación de ningún tipo ofrecida o respaldada por Gate.io.
* Este artículo no se puede reproducir, transmitir ni copiar sin hacer referencia a Gate.io. La contravención es una infracción de la Ley de derechos de autor y puede estar sujeta a acciones legales.
Empieza ahora
¡Regístrate y recibe un bono de
$100
!