Sumber asli dari Pavel Naydanov

Kompilasi | Odaily Planet Daily Golem (@web3_golem)

超详细揭秘Polymarket背后的技术实现方式

Catatan editor: Polymarket mendapatkan perhatian lebih selama pemilihan presiden AS ini, bukan hanya karena volume perdagangan kumulatif di tema prediksi melebihi 3,6 miliar dolar, tetapi juga karena dibandingkan dengan jajak pendapat dan media tradisional, berhasil memprediksi kemenangan Trump lebih awal, membuat orang lebih menyadari bahwa Polymarket bukan hanya situs taruhan, tetapi juga akan menjadi 'situs berita' yang lebih nyata dan dapat diandalkan (disarankan untuk dibaca: (Tulisan baru Vitalik: Dari pasar prediksi ke informasi finansial)). Polymarket mungkin menjadi salah satu 'pemandangan indah' paling menarik dalam inovasi blockchain saat ini.

Jadi, bagaimana Polymarket yang memiliki makna 'revolusi blockchain' ini secara teknis terwujud? Pengembang kontrak pintar Pavel Naydanov menjelaskan secara detail teknologi yang diadopsi oleh Polymarket, yang sangat inspiratif bagi pengembang (terutama pendatang baru dalam membangun pasar prediksi). Odaily Planet Daily mengompilasi bagian yang melibatkan implementasi teknologi sebagai berikut, mari kita selami detail teknis dari berbagai aspek protokol.

CTF: Memfasilitasi tokenisasi hasil.

Semua hasil acara di Polymarket di-tokenisasi:

  • Token semacam itu dapat disebut sebagai Token Berbagi;

  • Share dibeli dengan aset dasar, sehingga sepenuhnya dijamin;

  • Share dapat dijual untuk mendapatkan aset dasar.

Token berbagi diimplementasikan berdasarkan kerangka token bersyarat Gnosis (CTF) yang telah terbukti efektif dan telah diuji oleh berbagai protokol, CTF dapat mendukung hingga 256 hasil per peristiwa.

Setiap prediksi diidentifikasi dalam CTF, untuk ini mereka akan diberikan ID kondisi unik yang terdiri dari hash tiga parameter:

  • Oracle: alamat oracle yang akan menentukan hasil peristiwa, memastikan hanya oracle yang ditentukan yang dapat menyelesaikan prediksi;

  • ID masalah: pengidentifikasi prediksi yang ditetapkan oleh pencipta pertanyaan prediksi. Ini bisa berupa penghitung sederhana yang meningkat setiap prediksi baru ditambahkan ke pertanyaan sebelumnya, atau skema yang lebih kompleks menggunakan teks dan hash data lainnya;

  • outcomeSlotCount: jumlah kemungkinan hasil dari prediksi.

Gambar di bawah ini secara visual menunjukkan cara kerja CTF (kerangka token bersyarat):

超详细揭秘Polymarket背后的技术实现方式

Pengguna menyediakan aset dasar saat memasang taruhan dan menerima token berbagi, yang dalam CTF disebut token bersyarat. Setelah oracle menentukan prediksi, pengguna dapat mengklaim hadiah dari CTF berdasarkan hasil prediksi.

Ketika pengguna menerima token bersyarat, mereka dianggap telah menentukan posisi tertentu. Dalam CTF, posisi mewakili kombinasi sejumlah hasil yang mungkin untuk setiap prediksi. CTF menghasilkan posisi ini untuk setiap prediksi, di mana setiap posisi sesuai dengan salah satu kombinasi hasil yang dapat dipilih oleh pengguna.

Misalnya:

Film terlaris tahun 2024 apa?

  • The Mind Agent 2

  • Deadpool 3

  • Joker 2

  • Despicable Me 4

  • Dune 2

  • Mad Max 4

  • Lainnya

Pengguna dapat memberikan suara bahwa (The Mind Agent 2) akan menjadi film terlaris, atau (Dune 2) sama sekali tidak akan menjadi film terlaris 2024. Kombinasi prediksi ini akan dianggap sebagai posisi mereka.

CTF menyediakan dua mekanisme menarik untuk menangani posisi: pembagian dan penggabungan. Mekanisme pembagian memungkinkan satu posisi dibagi menjadi beberapa hasil terpisah, sementara penggabungan menggabungkan hasil yang berbeda menjadi satu posisi. Mekanisme ini memberi pengguna fleksibilitas untuk mengelola posisi mereka.

CTF memberikan empat keuntungan penting bagi Polymarket:

  • Token berbagi dapat digunakan untuk mengkonfirmasi suara pengguna terhadap hasil prediksi tertentu;

  • Mewujudkan sistem fleksibel yang menggabungkan suara pengguna menjadi berbagai posisi;

  • Berdasarkan sinyal oracle, tanggung jawab penghitungan hasil diserahkan kepada CTF;

  • Hadiah dihitung berdasarkan jumlah token Share dari hasil yang menang.

Perlu dicatat juga bahwa CTF memungkinkan pengorganisasian kegiatan terkait, di mana posisi pengguna dapat digabungkan. Namun, saat ini belum ada contoh seperti itu di Polymarket. Untuk mengetahui lebih lanjut tentang CTF, Anda dapat merujuk pada dokumentasi resmi.

Mekanisme pesanan

超详细揭秘Polymarket背后的技术实现方式

Untuk melakukan pembelian, antarmuka Polymarket menyediakan tiga jenis pesanan:

  • Pasar - beli segera dengan harga pasar saat ini;

  • Batas - pesanan tertunda, memungkinkan Anda untuk menentukan harga untuk membeli setelah mencapai harga tersebut;

  • AMM - membeli dengan harga yang ditentukan secara otomatis mirip dengan bursa terdesentralisasi, berdasarkan jumlah cadangan di dalam kolam.

Saat ini, fungsi pesanan AMM tampaknya tidak aktif, dan tidak ada prediksi yang memungkinkan pembelian melalui AMM. Sebuah komentar dari seorang pengguna di Discord Polymarket menjelaskan situasi ini sampai batas tertentu.

超详细揭秘Polymarket背后的技术实现方式

AMM sudah ketinggalan zaman.

Menurut dokumentasi Polymarket, AMM dikembangkan sebagai bagian dari kontrak pintar kerangka token bersyarat. Oleh karena itu, AMM digunakan untuk menentukan harga pembelian Sharetoken. Mekanisme dasar ini membutuhkan likuiditas untuk memastikan penetapan harga yang stabil dan mengurangi volatilitas. Penyedia likuiditas membutuhkan insentif ekonomi, mendapatkan hadiah dari setiap pembelian untuk menjaga sistem tetap berjalan.

Mungkin pada awalnya Polymarket sepenuhnya berbasis CTF, menggunakan AMM untuk menentukan harga. Namun, seiring waktu, protokol mengembangkan solusi campuran dengan buku pesanan, di mana dua jenis pesanan lain (pesanan terbatas dan pesanan pasar) mulai bekerja pada solusi yang disesuaikan ini. Solusi ini disebut CLOB (buku pesanan terbatas pusat) atau BLOB (buku pesanan terbatas biner).

CLOB dan BLOB

CLOB (buku pesanan terbatas pusat) atau BLOB (buku pesanan terbatas biner) adalah sistem yang mewakili buku pesanan terdesentralisasi yang campur aduk. Dalam sistem ini, operator khusus bertanggung jawab untuk mencocokkan pesanan dan memulai eksekusi kontrak pintar.

Tidak perlu banyak penjelasan, sistem ini ditunjukkan pada gambar di bawah ini:

超详细揭秘Polymarket背后的技术实现方式

Pengguna membuat pesanan untuk dieksekusi, bisa berupa pesanan terbatas atau pesanan pasar; operator mencocokkan pesanan pengguna dan memulai eksekusi pada kontrak pintar, membuat pesanan berarti membuat struktur data yang ditandatangani dengan kunci pribadi pengguna sesuai dengan standar EIP-712. Karena pesanan disimpan di luar rantai sebelum dieksekusi, syarat pesanan dapat disesuaikan dengan cepat dan gratis, bahkan dibatalkan sepenuhnya.

Namun, semua yang terkait dengan buku pesanan dan pencocokan pesanan hanya dapat diakses melalui API. Untuk kenyamanan, Polymarket menyediakan dua klien: satu menggunakan JavaScript dan satu menggunakan Python.

Namun, kontrak pintar Exchange.sol bersifat publik dan bertanggung jawab untuk menciptakan posisi pengguna di dalam CTF. Itu juga memungkinkan pengelolaan posisi pengguna dan transfer aset di antara mereka, sehingga memastikan keamanan dan transparansi dalam protokol.

超详细揭秘Polymarket背后的技术实现方式

Kontrak pintar ini telah diaudit, laporan audit dilampirkan dalam repositori.

Kontrak pintar

Kontrak pintar Exchange sebenarnya memiliki nama yang lebih spesifik, yaitu CTFExchange.sol. Itu tidak besar, hanya sekitar 100 baris kode, tetapi memiliki banyak ketergantungan.

超详细揭秘Polymarket背后的技术实现方式

Sebagian besar adalah kontrak pintar kecil dengan fungsi terbatas:

  • BaseExchange.sol: kontrak pintar abstrak yang mengimplementasikan kemampuan untuk menerima token ERC-1155, juga bertanggung jawab untuk mencegah serangan reentrancy;

  • Auth.sol: manajer peran, mendefinisikan fungsi verifikasi dan modifikator untuk menetapkan peran, admin dan operator dari CTFExchange.sol;

  • Assets.sol: mendefinisikan dua jenis aset, aset dasar (jaminan) dan alamat CTF;

  • Fees.sol: mendefinisikan biaya protokol;

  • Pausable.sol: mendefinisikan kemampuan untuk menangguhkan operasi kontrak pintar, disetujui oleh protokol dalam bentuk terpusat saat terjadi keadaan tak terduga. Hanya berlaku untuk peran admin;

  • AssetOperation.sol: mendefinisikan operasi aset dasar dan CTF. Termasuk transfer posisi, pembagian, dan penggabungan;

  • Signature.sol: mendefinisikan kode untuk tanda tangan pengguna yang digunakan saat memverifikasi pesanan;

  • Hashing.sol: mendefinisikan nilai hash dari parameter pesanan, digunakan untuk verifikasi tanda tangan;

  • Registry.sol: mendefinisikan proses mendaftarkan prediksi dalam sistem dan mendaftarkan token untuk prediksi.

Semua yang terkait dengan pelaksanaan pesanan sebenarnya telah diimplementasikan dalam kontrak pintar Trading.sol. Menelusuri kode dan mempelajari kontrak pintar juga sangat mudah. Struktur tersebut secara eksplisit mendefinisikan titik masuk melalui fungsi:

  • fillOrder() - Menjalankan pesanan antara pengguna yang membuat pesanan dan pesanan yang dipilih pengguna (pesanan lain);

  • fillOrders() - Sama dengan fillOrder(), tetapi untuk daftar pesanan;

  • matchOrders() - operator memilih dua pesanan berbeda dan mengeksekusinya.

Semua fungsi di atas hanya dapat dipanggil oleh operator.

超详细揭秘Polymarket背后的技术实现方式

Apa pun cara panggilan masuk ke dalam kontrak pintar, hasilnya tetap sama: dua pengguna akan menukar token berdasarkan pesanan mereka.

Biaya protokol

Biaya dikenakan berdasarkan aset yang dihasilkan. Untuk prediksi biner, biayanya simetris, yang berarti: jika pengguna menjual token seharga 0,99 dolar, mereka akan membayar biaya yang sama dengan pembeli yang membeli token seharga 0,01 dolar.

Rumusnya cukup sederhana, diambil dari dokumentasi resmi:

超详细揭秘Polymarket背后的技术实现方式

Program hadiah likuiditas

Tujuan keseluruhan dari program ini adalah untuk mendorong likuiditas pasar.

Jika kita ingin bursa berbasis buku pesanan berfungsi, seseorang perlu membuat pesanan terbatas, yang menyediakan likuiditas yang memungkinkan pelaksanaan pesanan pasar secara instan. Pengguna yang membuat pesanan terbatas disebut sebagai pembuat pasar. Semakin tinggi 'keterikatan' pesanan terbatas dengan harga pasar, semakin cepat pesanan pasar dieksekusi, dan semakin tinggi volume perdagangan, yang jelas menguntungkan pengguna akhir. Selain itu, semakin besar likuiditas, semakin sulit untuk memanipulasi pasar.

Untuk memastikan likuiditas yang cukup, Polymarket telah mengembangkan program insentif khusus untuk mendorong pengguna membuat pesanan terbatas. Semakin dekat pesanan terbatas dengan harga rata-rata pasar, semakin tinggi hadiahnya. Hadiah akan dibayarkan secara otomatis setiap tengah malam (waktu UTC).

Sistem ini didasarkan pada dYdX, untuk informasi lebih lanjut Anda dapat melihat rencana insentif likuiditas asli dYdX dan rumus perhitungan hadiah likuiditas Polymarket yang terperinci.

Oracle

Oracle digunakan untuk memberikan hasil prediksi - apakah peristiwa itu terjadi atau tidak. Oracle adalah salah satu komponen paling penting dari protokol, tetapi itu disediakan oleh layanan pihak ketiga, bukan tim Polymarket, oracle ini disebut UMA.

UMA adalah oracle terdesentralisasi yang dirancang untuk merekam semua jenis data di blockchain, kecuali data yang tidak dapat diverifikasi. Oracle ini bersifat optimis, kecuali ada sengketa, data dianggap benar secara default. UMA memiliki sistem arbitrase sendiri untuk menyelesaikan sengketa, di mana arbiter adalah orang nyata - peserta ekosistem UMA, khususnya pemegang token UMA. Sistem ini disebut DVM (mekanisme verifikasi data).

Proses berikut digunakan untuk menentukan hasil prediksi dan merekamnya di blockchain:

超详细揭秘Polymarket背后的技术实现方式

  1. Pernyataan: Prediksi ditambahkan bersama dengan hadiah ke dalam oracle. Siapa pun yang berhasil membantah hasil prediksi dapat mengklaim hadiah;

  2. Periode tantangan: periode di mana siapa pun dapat mempertanyakan hasil prediksi. Jika tidak ada tantangan yang terjadi dan waktu telah habis, hasil prediksi dianggap siap untuk penyelesaian akhir, yang menunjukkan akurasinya;

  3. Sengketa: setiap peserta protokol dapat mengajukan keberatan terhadap hasil, baik untuk mengklaim hadiah atau untuk keadilan. Pada kenyataannya, situasi ini jarang terjadi, karena teori permainan menunjukkan bahwa sebagian besar perilaku peserta adalah jujur.

  4. Pemungutan suara: jika sengketa diluncurkan, pemegang token UMA akan memberikan suara untuk menyelesaikan sengketa. UMA adalah token protokol yang digunakan untuk memberikan suara, peserta mendapatkan hadiah karena berpartisipasi dalam pemungutan suara.

  5. Penyelesaian: Tahap terakhir adalah proses penyelesaian, yaitu merekam data secara nyata di blockchain. Setelah itu, hasil prediksi dapat dianggap dapat diandalkan.

Seluruh protokol didasarkan pada teori permainan, di mana perilaku jahat oleh peserta secara ekonomi tidak menguntungkan.

  1. Peserta yang menyerahkan hasil prediksi untuk memberikan suara menyediakan jaminan kepada kontrak pintar. Jika hasil mereka dipertanyakan, mereka akan kehilangan jaminan; jika tidak, mereka akan mengambil kembali jaminan dan mendapatkan hadiah. Ini menciptakan motivasi kuat untuk hanya menyerahkan hasil yang akurat.

  2. Peserta yang mengajukan keberatan terhadap hasil prediksi juga akan memberikan jaminan. Jika mereka benar, mereka akan mengambil kembali jaminan dan mendapatkan hadiah; jika tidak, mereka akan kehilangan jaminan. Ini mendorong peserta untuk hanya menantang hasil yang mereka yakini salah.

  3. Peserta yang menyelesaikan sengketa. Mereka harus memasang token UMA dan akan mendapatkan hadiah karena menyelesaikan sengketa. Jika mereka memberikan suara salah atau tidak memberikan suara sama sekali, mereka akan kehilangan sebagian dari saldo stake mereka; jika tidak, mereka akan mendapatkan hadiah. Tidak ada cara untuk bersantai.

Perlu dicatat bahwa proses pemungutan suara dalam sengketa menggunakan skema komit/ungkap yang dibagi menjadi dua tahap:

  1. Komit: Komitmen, peserta memberikan suara secara rahasia dengan mengirimkan nilai hash suara mereka ke kontrak pintar, yang berarti tidak ada yang bisa membedakan bagaimana peserta memberikan suara hanya dengan melihat nilai hash.

  2. Ungkap: Setelah tahap pemungutan suara berakhir, peserta mengungkapkan suara mereka, dan kontrak pintar akan memverifikasi apakah itu cocok dengan nilai hash yang sebelumnya diserahkan.

Proses pemungutan suara dua tahap ini mencegah pemilih berkolusi untuk merusak oracle atau menyerang layanan yang bergantung pada hasil prediksi. Pada saat yang sama, hasil prediksi dapat dipertanyakan berkali-kali, dalam hal ini, UMA memungkinkan untuk memulai kembali proses pengambilan keputusan setelah sengketa sebelumnya selesai.

Proses peluncuran sengketa adalah sebagai berikut:

超详细揭秘Polymarket背后的技术实现方式

Kesimpulan

Polymarket yang tampaknya merupakan sistem perjudian dan prediksi yang sederhana sebenarnya terdiri dari tiga modul utama, masing-masing dikembangkan oleh protokol dan tim yang berbeda:

  • CTF (kerangka token bersyarat): mengelola kombinasi, posisi, dan Share dalam prediksi, kerangka fleksibel ini yang dibuat oleh Gnosis sangat cocok untuk pasar prediksi.

  • CLOB (buku pesanan terbatas pusat): Solusi internal Polymarket untuk menerapkan buku pesanan dan pesanan terbatas. CLOB memungkinkan pengguna terlibat secara efektif dalam ekosistem dan membantu mengagregasi likuiditas.

  • UMA: oracle terdesentralisasi dengan sistem arbitrase penyelesaian sengketa yang unik. UMA adalah inti dari sistem yang mentransfer hasil prediksi melalui blockchain.

Meskipun Polymarket adalah sistem taruhan, secara teknis, protokol ini berhasil menggabungkan teknologi dari berbagai proyek, yang sangat menarik bagi pengembang.

Bacaan lebih lanjut

Setelah pemilihan presiden AS, seberapa lama ketertarikan pada Polymarket dan pasar prediksi akan bertahan?

Mengalahkan jajak pendapat tradisional pemilihan umum, bagaimana Polymarket melakukannya?