Chainlink VRF: Keacakan yang Dapat Diverifikasi On-Chain

Chainlink_ID
Chainlink Community
10 min readJun 4, 2021

Chainlink VRF menggunakan fungsi acak yang dapat diverifikasi untuk menghasilkan keacakan yang bisa diverifikasi on-chain. Kami melihat banyak smart contract hebat yang mendapat manfaat dari Chainlink VRF, khususnya yang ingin memberikan bukti bahwa mereka memang menggunakan sumber keacakan yang tidak dapat dimanipulasi di luar kendali mereka.

Kami ingin mengucapkan terima kasih kepada kolaborator akademis kami, komunitas developer yang lebih besar yang telah memberi kami masukan tentang Chainlink VRF dan banyak anggota tim yang telah berupaya keras untuk membuat implementasi awal ini menjadi kenyataan, terima kasih.

Chainlink VRF membantu mengaktifkan dan mempercepat pengembangan smart contract yang berfokus pada permainan blockchain, keamanan, protokol layer-two, dan berbagai kasus penggunaan lainnya. Pengembang dapat dengan mudah mengintegrasikan Chainlink VRF untuk memanfaatkan keacakan yang dapat diverifikasi dalam smart contract mereka melalui dokumentasi pengembang kami yang baru dirilis .

Kebutuhan akan Keacakan yang Dapat Diverifikasi

Pola pikir yang peka terhadap keamanan diperlukan untuk membuat dan berhasil mempertahankan smart contract melawan serangan yang berusaha untuk mencuri dana yang dipegang oleh kontrak itu. Pengembang smart contract yang menggunakan keacakan sebagai input utama juga harus melihat manipulasi keacakan itu sebagai risiko kritis. Sistem yang dibuat dengan baik yang mengandalkan keacakan idealnya menginginkannya terbukti adil/sama-sama tidak pasti bagi semua peserta kontrak, sementara juga berhasil mengurangi risiko bahwa pelaku jahat dapat mengeksploitasi kontrak mereka dengan memprediksi hasilnya.

Chainlink VRF berusaha memenuhi kedua persyaratan ini dengan memberikan keacakannya bersama dengan bukti kriptografis yang dapat diverifikasi secara on-chain, menunjukkan bahwa keacakan memang tidak dapat diprediksi. Karena sifat keacakan Chainlink VRF yang dapat diverifikasi secara on-chain, node yang berpartisipasi hanya dapat menahan permintaan, di mana mereka akan dihukum secara finansial menggunakan fungsi jaminan Chainlink yang akan datang, dan mungkin dihapus dari kueri di masa mendatang yang akan membayar biaya untuk keacakan mereka.

Dengan menggunakan Chainlink VRF, anda dapat membangun smart contract yang reliabel untuk aplikasi apa pun yang memerlukan hasil yang tidak terduga untuk:

  • Membuat game lebih tepercaya dengan menggunakan sumber keacakan yang dapat diverifikasi secara on-chain, memungkinkan pengembang memberikan bukti tambahan kepada pengguna yang sensitif terhadap keamanan.
  • Menjadikan game lebih menyenangkan dengan menghasilkan skenario dan lingkungan yang menantang dan tidak dapat diprediksi, dan menetapkan hadiah pemain yang tidak dapat diprediksi seperti loot drop.
  • Menghasilkan penugasan tugas dan sumber daya yang terbukti acak, misalnya menugaskan hakim secara acak untuk kasus atau auditor ke perusahaan yang diperiksa.
  • Memilih sampel representatif dari pengamat yang memenuhi syarat untuk memberikan suara pada proposal yang perlu disepakati oleh kontrak (survei adalah cara yang efisien untuk memberikan perlawanan sybil ekstra).

Batasan Keamanan Metode yang Ada

Solusi yang ada untuk menyediakan keacakan pada smart contract memiliki keterbatasan yang diatasi oleh keacakan Chainlink VRF yang dapat diverifikasi. Baik penggunaan data on-chain yang ada seperti blockhash, dan/atau berbagai keacakan off-chain yang kemudian perlu ditempatkan on-chain menghadirkan tantangan unik mereka sendiri.

Salah satu contoh eksploitasi yang harus dihindari oleh pengembang smart contract yang mengandalkan blockchain untuk keacakan adalah ketergantungan yang berlebihan pada jaminan keacakan berbasis blockhash. Misalnya, anggaplah sebuah kontrak membuat keputusan berdasarkan paritas bit terakhir dalam hash blok pada nomor blok tertentu. Ini terlihat seperti hasil 50/50, tetapi pertimbangkan bahwa penambang (atau koalisi penambang) yang menghasilkan sepertiga dari blok rata-rata dapat memutuskan untuk membuang blok pemenang yang bit terakhir dari blockhash adalah satu, meninggalkan blok imbalan sekitar 2–3 ETH. Dalam hal ini, penambang dapat membiaskan hasil nol dari kemungkinan 50% yang dapat diandalkan menjadi kemungkinan 2/3, yang menyebabkan hilangnya dana pengguna dari smart contract apa pun yang mengandalkan metode pembuatan keacakan ini.

Dalam upaya untuk menghindari masalah seperti ini, pengembang smart contract sudah beralih ke solusi off-chain, di mana nomor acak dihasilkan off-chain dan dikirim on-chain. Namun, tanpa verifikasi kriptografis bahwa nilai off-chain tidak bias, ada peluang hasil dimanipulasi oleh penyedia off-chain dan/atau oleh lapisan transport data yang menempatkan nilai acak itu on-chain. Demikian juga, pengguna aplikasi dipaksa untuk berasumsi bahwa keacakan dihasilkan secara adil dan telah dibawa on-chain tanpa diubah dalam perjalanan ke aplikasi.

Pertukaran kunci tambahan dan risiko keamanan yang kami yakini oleh pengembang smart contract yang mempertimbangkan sumber keacakan untuk smart contract harus berusaha untuk menghindari hal-hal yang merangkum berikut:

  • Tidak dapat diakses oleh atau tidak kompatibel dengan smart contract
  • Manipulasi oleh operator terpusat dari generator bilangan acak
  • Eksploitasi oleh penambang blockchain sebagai salah satu pengguna aplikasi
  • Persyaratan kepercayaan yang terlalu tinggi dari pengguna akhir aplikasi

Untuk membantu menangani ini dan risiko keamanan yang tidak diinginkan lainnya, Chainlink VRF menawarkan transparansi dan bukti kriptografis bahwa setiap hasil dihasilkan secara adil.

Bagaimana Cara Kerja Chainlink VRF

Cara kerja Chainlink VRF

Singkatnya, smart contract meminta keacakan dengan memberikan seed ke Chainlink. Seed, yang seharusnya tidak dapat diprediksi oleh nubuat yang diberikannya, digunakan untuk menghasilkan nomor acak, yang kemudian dikirim ke kontrak on-chain. Setiap oracle menggunakan kunci rahasianya sendiri saat menghasilkan keacakan. Ketika hasilnya diterbitkan secara on-chain bersama dengan bukti, hasilnya diverifikasi menggunakan kunci publik oracle dan seed aplikasi. Mengandalkan kemampuan verifikasi tanda tangan dan bukti yang diterima secara luas dari blockchain, ini memungkinkan kontrak untuk mengkonsumsi hanya keacakan yang juga telah diverifikasi oleh lingkungan on-chain yang sama yang menjalankan kontrak itu sendiri.

Manfaat mendasar menggunakan Chainlink VRF adalah keacakannya yang dapat diverifikasi. Bahkan jika sebuah node diserang, penjahat tidak dapat memanipulasi dan/atau memberikan jawaban yang bias — bukti kriptografi on-chain akan gagal. Skenario kasus terburuk adalah bahwa node yang diserang tidak mengembalikan respons terhadap permintaan, yang akan segera dan selamanya terlihat di blockchain. Pengguna tidak akan lagi bergantung pada node yang berhenti merespons dan/atau tidak memberikan bukti yang valid secara acak. Bahkan dalam skenario yang tidak mungkin bahwa sebuah node dikompromikan, keacakan yang dihasilkan tidak dapat dimanipulasi. Node yang dikompromikan hanya dapat menahan permintaan, tidak memberikan respons, yang akan dikenakan sanksi finansial menggunakan kemampuan jaminan (staking) Chainlink yang akan datang dan dihapus dari kueri di masa mendatang yang akan membayar biaya untuk keacakan mereka, menciptakan kerugian ekonomi langsung dan jangka panjang yang substansial untuk operator node berkualitas rendah dan/atau berperilaku tidak semestinya. Singkatnya, Chainlink VRF tidak dapat memanipulasi aplikasi yang menggunakannya dengan benar; itu hanya bisa offline atau menahan satu hasil sebelum dihapus sebagai sumber keacakan di masa depan. Ini menciptakan keamanan superior untuk pengembang smart contract dan penggunanya.

Manfaat tambahan dari Chainlink VRF adalah, semakin banyak pengguna yang menggunakannya, biaya pengguna yang dibayarkan kepada operator node meningkat, menciptakan insentif bagi operator node untuk memberikan jaminan keamanan sebanyak mungkin. Keamanan kriptoekonomi melalui pertaruhan kemungkinan akan menjadi sesuatu yang diminta pengguna untuk ditingkatkan dari waktu ke waktu dan dibenarkan dengan biaya mereka yang semakin besar, yang membayar untuk keamanan tambahan. Hal ini mengarah ke sumber daya global bersama yang didukung oleh biaya pengguna, dan memungkinkan pengguna tambahan yang akan menghabiskan dana untuk membuat solusi RNG mereka sendiri untuk menyebarkan dana yang sama untuk meningkatkan keamanan kolektif dari sumber daya bersama untuk seluruh ekosistem blockchain. Kemampuan Chainlink untuk mendukung berbagai chain, seperti Polkadot , Tezos dan banyak lainnya, berarti seluruh pengguna yang membayar untuk sumber daya komunitas ini akan terus tumbuh dalam efek jaringan antara pengguna dan jaminan keamanan kriptoekonomi yang semakin meningkat.

Contoh Integrasi: PoolTogether

PoolTogether , permainan tabungan tanpa kerugian di Ethereum, adalah sesuatu yang kami anggap sangat menarik dan kami senang bahwa setelah penelitian teknis yang ekstensif oleh tim mereka, mereka akan menggunakan Chainlink VRF untuk memberikan jaminan kepada pengguna mereka tentang keacakan yang terbukti adil dari aplikasi mereka.

Bagaimana PoolTogether menggunakan Fungsi Acak yang Dapat Diverifikasi Chainlink

PoolTogether adalah permainan tabungan tanpa kerugian yang mengumpulkan simpanan pengguna dan mendistribusikan bunga yang diperoleh di wadah kepada pemenang yang dipilih secara acak dalam pengundian harian dan mingguan. Permainan ini menginsentivasi penabungan melalui mekanik lotre.

Dengan menerapkan keacakan Chainlink VRF yang dapat diverifikasi, pengguna PoolTogether akan dapat memverifikasi bahwa setiap pemenang dipilih dengan sumber keacakan yang tidak bias. Selain lebih yakin akan keamanan mereka sendiri, PoolTogether juga akan dapat membuktikan kepada pengguna mereka bahwa bagian penting dari arsitektur mereka beroperasi dengan cara yang terbukti aman dan dapat diverifikasi secara acak, memberikan alasan yang lebih besar kepada pengguna untuk percaya bahwa PoolTogether benar-benar akan menyediakan pembayaran kepada mereka jika mereka menjadi peserta dalam smart contract mereka.

Panduan Teknis

Chainlink VRF merupakan implementasi Fungsi Acak Terverifikasi dari Goldberg (VRF) seperti yang dijelaskan dalam makalah ini. “Acak” dalam “fungsi acak yang dapat diverifikasi” berarti “sama sekali tidak dapat diprediksi (didistribusikan secara merata) kepada siapa saja yang tidak mengetahui benih atau kunci rahasia.”

Kunci rahasia VRF adalah angka yang dipilih oracle dari distribusi seragam pada {0, …, #secp256k1–1}, dengan cara yang aman secara kriptografis. ( secp256k1 adalah kurva eliptik yang digunakan oleh kriptografi ethereum.) Terkait dengan kunci rahasia ini adalah kunci publik, yang digunakan untuk mengidentifikasi oracle. Oracle mendaftarkan kunci publik ke mesin on-chain, bersama dengan ID pekerjaan chainlink yang akan ditanggapinya.

Ketika kontrak yang akan mengkonsumsi membuat permintaan untuk keacakan, kontrak akan menyediakan seed. Untuk memastikan output VRF sulit diprediksi, ada baiknya untuk memasukkan nilai yang tidak dapat diprediksi dan sulit dimanipulasi ke dalam seed, seperti blockhash terbaru, dan mungkin data dunia nyata yang dibuktikan secara kriptografis seperti harga terbaru beberapa aset. Anda dapat menggabungkan ini menjadi byte32 untuk digunakan sebagai input seed menggunakan keccak256. Mesin VRF on-chain memberikan beberapa perlindungan dasar dengan mencampur seed yang disediakan konsumen dengan data lain untuk mencegah serangan replay, tetapi penting untuk menyediakan milik anda juga.

Setelah mesin on-chain telah menentukan seed, mesin tersebut menyiarkan log ethereum yang meminta output VRF yang sesuai dari oracle yang ditentukan dalam permintaan konsumen. Saat melihat log ini, oracle membuat output sebagai berikut:

Pertama, “ hash input ke kurva ,” memperoleh sampel acak yang aman secara kriptografis dari secp256k1, menggunakan seed dan kunci publik oracle sebagai input. Ini dilakukan dengan hashing input secara rekursif menggunakan keccak256 hingga output kurang dari urutan bidang dasar secp256k1 (“ p ” dalam deskripsi secp256k1 itu ), dan merupakan ordinat x dari beberapa titik (x,y) pada secp256k1 (yaitu, y2=x3+7 di bidang dasar). (x,y) adalah hash dari input ke kurva.

Kemudian mengalikan (x,y), sebagai titik kurva secp256k1 dengan kunci rahasianya untuk mendapatkan titik Ɣ. Hash keccak256 dari Ɣ, sebagai uint256, adalah output VRF. Ini menghasilkan bukti bahwa Ɣ adalah kelipatan yang sama dari (x,y) sebagai kunci publik oracle dari generator secp256k1. Bukti ini sangat mirip dengan Schnorr signature: Pertama, secara aman mengambil sampel nonce n dari {0, …, #secp256k1–1}, seperti yang dilakukan untuk kunci rahasianya, kemudian menghitung u = n×g , di mana g adalah generator secp256k1, dan mengambil alamat ethereum u . Kemudian dihitung v = (x,y). Selanjutnya, hash bersama (x,y), kunci publik VRF-nya, Ɣ, alamat u, dan v, mengambil sisa dari modulo hash #secp256k1, dan menyebutnya c. Akhirnya, ia menghitung s = nc × k modulo #secp256k1 , di mana k adalah kunci VRF rahasianya. Buktinya adalah kunci publiknya, Ɣ, c , s, dan seed inputnya. Ia mengirimkan ini kembali ke mesin VRF on-chain, yang memverifikasi bukti, dan mengirimkan output kembali ke kontrak konsumsi, dengan asumsi bukti diverifikasi.

Untuk memeriksa buktinya, kontraknya idealnya

Untuk mengetahui alasan keamanan kriptografi, lihat analogi “panah” di bagian “Penandatanganan dan Verifikasi” di bab 3 buku Jimmy Song, Programming Bitcoin . Dalam kasus kami, “target” khusus yang kami coba pukul adalah c. Untuk bukti lengkap keamanan skema ini, lihat Lampiran B dari “Membuat NSEC5 Praktis untuk DNSSEC.”

Sayangnya, perkalian skalar pada secp256k1 seperti c×Ɣ sangat mahal untuk dihitung secara langsung pada EVM, jadi untuk efisiensi, kami menggunakan trik Vitalik untuk memverifikasi bahwa saksi yang dimasukkan ke dalam bukti sebagai c×Ɣ, benar-benar cocok dengan produk c×Ɣ. Dengan cara ini, kami mendorong beban komputasi c×Ɣ off-chain, dan hanya perlu memverifikasi bahwa nilai yang telah kami lewati sebagai c×Ɣ sebenarnya adalah c×Ɣ, yang jauh lebih murah.

Jadi, selain masukan/langkah di atas, verifikasi berantai dari suatu pembuktian melibatkan saksi untuk c×Ɣ dan s×(x,y), dan verifikasi mencakup pemeriksaan bahwa saksi-saksi tersebut valid titik kurva secp256k1, dan cocok produk yang mereka maksudkan, menggunakan trik Vitalik. Selain itu, kami menggunakan alamat ethereum untuk u , dan memeriksa apakah itu cocok dengan titik c×pk+s×g menggunakan trik Vitalik.

Evolusi yang Direncanakan dari Chainlink VRF

Pendekatan Chainlink yang akan datang untuk pendesentralisasian jaringan oracle yang sangat skalabel dan hemat biaya menggunakan threshold signature juga akan memberikan desentralisasi dan ketersediaan ekstrim untuk Chainlink VRF. Dengan menggabungkan kedua pendekatan ini, kami memperoleh semua manfaat dari kemampuan unik Chainlink VRF untuk menyediakan keacakan yang dapat diverifikasi secara on-chain, dikombinasikan dengan kemampuan untuk secara hemat biaya memiliki ribuan node yang menyediakan waktu aktif/ketersediaan Chainlink VRF.

Pendekatan desentralisasi Chainlink untuk VRF

Dengan mengizinkan ekosistem node Chainlink yang lebih luas untuk berpartisipasi dalam pembuatan nomor acak Chainlink VRF, kami tiba di jaringan operator node yang didistribusikan secara global yang diberi insentif secara ekonomi untuk menghasilkan dan menyiarkan data acak yang dapat diverifikasi secara on-chain. Penggunaan Chainlink Threshold Signatures dalam kombinasi dengan jaringan operator node yang sangat terdesentralisasi akan membantu mencegah musuh mencuri dana pengguna. Tidak hanya tanggapan dari Chainlink VRF yang dapat diverifikasi secara on-chain; mereka juga akan memiliki waktu aktif/ketersediaan yang ekstrem, yang dikombinasikan dengan jaminan ekonomi kripto dan ketersediaan Chainlink di berbagai blockchain di mana keacakan yang dapat diverifikasi akan berguna, kemungkinan akan menjadikan Chainlink VRF sebagai standar untuk bagaimana smart contract mengkonsumsi keacakan.

Selain manfaat yang disebutkan di atas, saat ini kami sedang meningkatkan Chainlink VRF dan melanjutkan penelitian mutakhir dalam menghasilkan keacakan terdesentralisasi dan kolaborasi dengan sistem RNG lainnya. Dari penelitian awal kami, kami percaya bahwa Chainlink VRF dapat dikombinasikan dengan VDF dan metode lain untuk menghasilkan keacakan, baik on-chain maupun off-chain. Kami senang dapat berkolaborasi dengan industri blockchain yang lebih luas dan komunitas akademik yang lebih luas tentang cara membuat sumber keacakan terbaik yang terbukti adil untuk smart contract.

Gunakan Chainlink VRF Sekarang

Jika Anda adalah pengembang smart contract dan ingin tahu bagaimana Anda dapat menggunakan Chainlink VRF, kunjungi dokumentasi pengembang , bergabunglah dengan diskusi teknis di Discord , atau bicara dengan pakar untuk integrasi yang lebih mendalam.

Lebih Lanjut tentang Topik Ini

Chainlink Indonesia

Telegram ID| Facebook ID | Medium ID| Youtube ID

--

--

Chainlink_ID
Chainlink Community

Managed by: Juan Karamoy, Manajer Komunitas Indonesia