Ketika mereka mendengar kata “CoinJoin,” hal pertama yang muncul di kepala banyak Bitcoiner yang relatif baru mungkin adalah implementasi ZeroLink Wasabi Wallet dan Samourai Wallet. Dalam beberapa tahun terakhir, kedua proyek ini telah menjadikan privasi Bitcoin sebagai arus utama, membuatnya lebih sederhana dan lebih mudah diakses.
Jika Anda baru mengenal ruang angkasa, Anda mungkin tidak menyadari fakta bahwa proyek JoinMarket telah menyediakan alat CoinJoin untuk pengguna Bitcoin sejak 2015.
Transaksi kolaboratif untuk mengganggu asumsi kepemilikan bersama adalah ide yang diajukan oleh pengembang Bitcoin Greg Maxwell pada Januari 2013, dan kemudian diformalkan menjadi konsep CoinJoin pada Agustus tahun itu.
Ide itu bertahan selama dua tahun sebelum sesuatu dirilis untuk mengimplementasikannya, dan ada alasan untuk itu: Masalah dengan keseluruhan gagasan yang menyebabkan kegagalan dengan upaya sebelumnya, seperti Dark Dompet oleh Amir Taaki, adalah untuk menarik likuiditas. CoinJoin bisa menjadi alat yang sangat berguna, tetapi jika tidak ada orang yang mau CoinJoin dengan Anda atau tidak ada cara untuk menemukannya jika mereka mau, itu tidak benar-benar bagus.
Masalahnya adalah bagaimana meyakinkan orang untuk bergabung dengan kumpulan awal itu untuk membantu meningkatkannya menjadi kumpulan likuiditas dan pengguna yang lebih besar. Solusi JoinMarket cukup sederhana namun brilian pada saat itu: sediakan mekanisme pasar sehingga penyedia likuiditas yang konsisten benar-benar dapat menghasilkan uang untuk menyediakan likuiditas ke kumpulan CoinJoin.
JoinMarket berfungsi di sekitar apa yang secara efektif merupakan pasar yang digerakkan oleh buku pesanan, terdiri dari pembuat pasar dan pengambil pasar yang membeli dan menjual likuiditas CoinJoin untuk menganonimkan aktivitas mereka di rantai.
Pembuat dapat duduk-duduk menunggu berapa lama pun waktu yang dibutuhkan dengan penawaran terbuka sampai penerima datang untuk membayar layanan mereka. Ini memecahkan masalah pengguna duduk-duduk dan menunggu selamanya seseorang untuk bergaul. Pembuat pasar, yang berusaha mendapatkan keuntungan, diberi insentif oleh biaya yang mereka kenakan untuk selalu online menunggu pembeli; dan penerima, mencari privasi, diberi insentif untuk membayar biaya ini. Ini adalah pengaturan win-win untuk semua orang.
Dalam arsitekturnya, serta potensinya untuk peningkatan koordinasi, JoinMarket menawarkan versi pencampuran koin yang berpotensi lebih terdesentralisasi dibandingkan dengan yang lebih terkenal ZeroLink. Begini caranya.
Bagaimana Pencampuran Terkoordinasi: ZeroLink Vs. JoinMarket
Arsitektur keseluruhan ZeroLink, dibandingkan dengan JoinMarket, sangat berbeda.
Dalam kasus Wasabi dan Samourai, ada satu server koordinator yang dioperasikan oleh pembuat dompet yang dikodekan ke dalam dompet. Semua pengguna berpartisipasi dalam CoinJoin dengan menghubungi server pusat ini dan “mendaftar” untuk menunggu hingga cukup banyak pengguna yang mendaftar untuk membuat CoinJoin. Setelah jumlah pengguna yang diperlukan hadir dan terdaftar, server koordinator menandatangani kredensial buta yang mewakili hak untuk membuat output dalam transaksi CoinJoin, dan pengguna memutuskan dan menghubungkan kembali melalui koneksi Tor baru untuk mendaftarkan output transaksi mereka.
Ini mencegah koordinator mempelajari peta input mana ke output mana. Pengguna membayar biaya kepada koordinator untuk perannya dalam memfasilitasi CoinJoin. Dalam model ini, tidak ada insentif untuk menyediakan likuiditas kecuali untuk keuntungan privasi, dan terlepas dari masalah dengan upaya sebelumnya seperti Dompet Gelap, ini tampaknya berfungsi dengan baik untuk Wasabi dan Samourai.
JoinMarket, di sisi lain, memiliki buku pesanan yang diiklankan oleh pembuat, memungkinkan pengambil untuk memilih dari penawaran pembuat yang tersedia (ini saat ini dilakukan melalui Obrolan Relay Internet ).
Pembuat akan terhubung ke buku pesanan dengan ID unik, kemudian mereka akan memposting penawaran ke buku pesanan yang berisi informasi berikut: biaya yang dikenakan pembuat untuk pencampuran dengan pengambil, jumlah pembuat akan berkontribusi pada biaya penambang dan kemudian nilai denominasi minimum dan maksimum yang akan mereka hasilkan dalam denominasi campuran. Mereka juga memposting cara bagi orang untuk terhubung secara pribadi dengan mereka secara langsung.
Ketika pengambil ingin CoinJoin, mereka mengunduh buku pesanan dan klien mereka memilih pembuat untuk digabungkan berdasarkan pengaturan mereka. Setelah klien memilih pembuat, pengambil akan memposting kunci publik sementara untuk enkripsi dan mulai berkomunikasi dengan pembuat melalui pesan terenkripsi melalui IRC (perlu dicatat bahwa ada kemungkinan beberapa pengambil terhubung ke pembuat tunggal pada saat yang sama waktu). Jika semua pihak setuju, mereka menandatangani transaksi, termasuk biaya pengambil kepada pembuat, dan menyerahkannya ke jaringan.
Karena cara kerja koordinasi ini, pembuat mempelajari keluaran pengambil dalam proses mengoordinasikan konstruksi CoinJoin. Untuk mengurangi ini, JoinMarket memiliki fitur “jatuh”, di mana klien pengambil akan mencampur beberapa kali dengan pembuat yang berbeda hingga mencapai jumlah campuran yang ditetapkan. Ini menjamin bahwa tidak ada pembuat tunggal yang dapat melepaskan seluruh riwayat campuran pengambil tunggal, karena setiap pembuat di sepanjang “rute jatuh” hanya mempelajari koneksi dalam satu transaksi itu.
Perbedaan ini memiliki banyak implikasi keseluruhan dalam hal arsitektur desain untuk JoinMarket, seperti yang akan kita lihat melalui beberapa keadaan proyek saat ini serta rencana masa depan.
Daftar Isi
Bagaimana Serangan Sybil Dimitigasi: ZeroLink Vs. JoinMarket
Serangan Sybil — dalam konteks ini, satu pengguna berpura-pura menjadi banyak pengguna untuk merusak privasi dengan membuat “kerumunan” palsu untuk disembunyikan orang lain sementara mereka sebenarnya merupakan keseluruhan “keramaian” — adalah masalah mendasar dari setiap protokol pencampuran di Bitcoin. Jika seluruh kerumunan terdiri dari Anda dan penyerang Sybil, dan tidak ada orang lain, penyerang mengetahui semua koin Anda dan Anda tidak mendapatkan privasi dari sudut pandang mereka. Pada akhirnya, tidak ada solusi mendasar untuk masalah ini, yang dapat Anda lakukan untuk menguranginya dengan meningkatkan biaya untuk melakukan serangan.
Dalam kasus ZeroLink, masalah dimitigasi oleh koordinator yang memungut biaya. Selama biaya dalam biaya penambang lebih tinggi daripada pendapatan biaya yang dikumpulkan oleh server koordinator dalam biaya, bahkan koordinator akan mengalami kerugian bersih dalam mencoba Sybil menyerang pengguna mereka sendiri.
Untuk JoinMarket, masalahnya sedikit lebih rumit. Anda harus melindungi pengambil, dalam kasus mereka dari pembuat Sybil menyerang buku pesanan sehingga pengambil hanya bercampur dengan mereka dan mengungkapkan seluruh riwayat campuran mereka kepada pembuat jahat. Tetapi Anda juga harus melindungi pengambil dari pembuat penyerang dengan meminta CoinJoins dan kemudian keluar dari protokol setelah pembuat mengungkapkan hasilnya kepada pengambil.
Ini memungkinkan pengambil jahat untuk memisahkan input pembuat itu dalam transaksi di masa mendatang dari pengambil yang mereka campur. Mengulangi ini beberapa kali berturut-turut terhadap pembuat yang sama akan memungkinkan mereka untuk mendeanonimkan pengambil yang telah bercampur dengan mereka.
Ada dua mekanisme dalam sistem ini untuk menawarkan pertahanan yang tepat untuk setiap kelas serangan: Yang pertama, untuk menangani pengambil yang memata-matai pembuat, adalah bukti kesetaraan logaritma diskrit (pertahanan nomor dua dalam artikel ini, juga dikenal sebagai PoDLE).
Ide dasarnya adalah bahwa untuk pasangan kunci privat/publik untuk UTXO Bitcoin, Anda dapat membuat kunci publik kedua yang berbeda sesuai dengan kunci privat, dan membuat bukti tanpa pengetahuan (ZKP ) menunjukkan bahwa keduanya berbagi kunci pribadi yang sama. Setelah memberikan kunci kedua dan bukti kepada pembuatnya, pengambil mengungkapkan kunci publik pertama yang sesuai dengan output yang ingin mereka campur.
Sekarang, pengaturan ini memungkinkan pembuat untuk mempublikasikan kunci publik kedua dan ZKP ke semua pembuat lain tanpa membocorkan output aktual pengambil — dengan cara itu, jika pengambil yang berkoordinasi dengan pembuat asli mencoba menggunakan kembali output itu untuk memata-matai banyak pembuat pada saat yang sama, semua pembuat lainnya akan melihat bahwa kunci publik pertama pengambil cocok dengan kunci kedua yang diterbitkan dan ZKP. Mereka kemudian akan menolak untuk mengungkapkan hasil mereka sendiri kepada pengambil yang jahat. Ini meningkatkan biaya pengambil yang memata-matai keluaran pembuat dengan mengharuskan pengambil memiliki keluaran unik untuk setiap pembuat yang mereka mata-matai, alih-alih dapat menggunakan kembali keluaran yang sama untuk menyerang banyak pembuat.
Mekanisme pertahanan kedua adalah untuk melindungi pengambil dari pembuat jahat yang berpura-pura menjadi banyak pembuat berbeda di buku pesanan, sehingga memungkinkan pembuat jahat untuk mengungkap pencampuran pengambil yang akhirnya hanya bercampur dengan penyerang.
Mekanisme ini disebut ikatan kesetiaan, yang pada dasarnya hanya mengambil sejumlah besar bitcoin dan menguncinya. Pembuat yang melakukannya kemudian dapat menandatangani dan menerbitkan pesan dengan kunci itu untuk membuktikan kendali atas koin yang terkunci waktu. Klien pengambil, jika mereka telah mengonfigurasi klien mereka untuk menggunakan ikatan kesetiaan, kemudian akan mempertimbangkan pembuat pilihan mereka untuk digunakan untuk memilih yang memiliki jumlah waktu nilai yang lebih tinggi yang terkunci dalam ikatan kesetiaan. Obligasi kesetiaan dibobot dengan kuadrat dari berapa banyak koin yang dikunci, yaitu. jika Anda mengunci empat bitcoin, itu akan berbobot 16; lima akan ditimbang sebagai 25; enam akan berbobot 36, dst.
Alasannya di sini adalah bahwa Anda mendapatkan manfaat peracikan sebagai pembuat dengan semakin banyak koin yang Anda kunci (Anda lebih sering dipilih oleh klien pengambil), jadi jika beberapa pembuat jujur membuat ikatan kesetiaan yang sangat besar, mereka secara drastis menaikkan biaya untuk pembuat Sybiling yang harus mereplikasi jumlah ikatan kesetiaan yang besar itu untuk setiap identitas palsu mereka di buku pesanan. Yaitu, jika tiga pembuat jujur masing-masing memasang 10 bitcoin dalam ikatan kesetiaan, penyerang harus menghabiskan 30 bitcoin agar memiliki peluang 50% untuk dipilih untuk digabungkan, maka akan dikenakan biaya 60 bitcoin untuk memiliki peluang 66% dipilih, dll.
Semakin banyak pembuat jujur yang menggunakan ikatan kesetiaan, semakin banyak biaya untuk senyawa serangan Sybil bagi pembuat jahat.
Bagaimana Mekanisme Koordinasi JoinMarket Dapat Meningkatkan
Dalam kasus ZeroLink, semua orang berkoordinasi melalui server koordinator terpusat — ini adalah bagian eksplisit dari desain sistem dan model kepercayaan di hal keandalan. Jika koordinator turun, tidak ada yang bisa CoinJoin sampai muncul kembali.
JoinMarket berfungsi pada sistem buku pesanan untuk mencoba dan menghindari titik pusat kegagalan ini, tetapi seperti yang disebutkan di atas, saat ini menggunakan IRC sebagai lapisan hosting dan komunikasi untuk buku pesanan. IRC adalah titik pusat potensi kegagalan untuk JoinMarket, sama seperti server koordinator untuk ZeroLink. Sebagai proyek yang dibangun dengan mengoordinasikan CoinJoins secara terdesentralisasi, dalam jangka panjang ketergantungan pada IRC ini perlu diganti dengan sesuatu yang lebih kuat.
Salah satu proposal yang paling berkembang adalah untuk mengimplementasikan semacam skema server direktori yang mirip dengan apa yang digunakan Proyek Tor. Di jaringan Tor, klien terhubung ke satu set server yang dijalankan oleh kontributor Tor yang mengirim mereka semua node di jaringan Tor yang dapat mereka gunakan untuk membangun rute bawang.
Ide dengan JoinMarket adalah memiliki satu set server serupa yang memberi makan klien semua pembuat dengan penawaran terbuka. Server ini harus dijalankan oleh orang lain selain pembuatnya, karena setiap pembuat akan memiliki insentif untuk hanya mengiklankan diri mereka sendiri di server direktori mereka sendiri untuk mengumpulkan lebih banyak biaya. Juga akan sulit untuk bergabung dengan kumpulan server direktori, jika tidak, entitas jahat dapat membuat banyak dari mereka dan Sybil menyerang semua pengguna yang hanya terhubung ke server jahat.
Fidelity bond berpotensi mengatasi masalah Sybil di sini, serta menciptakan disinsentif bagi pembuat untuk mencoba menjalankan server direktori. Mengunci koin dalam ikatan kesetiaan untuk server direktori akan membuat mereka lebih sedikit koin untuk dikunci dalam ikatan pembuat, berpotensi menyebabkan lebih sedikit klien pengambil yang memilihnya untuk campuran.
Ada juga bukti konsep dan proposal dari Adam Gibson untuk mengintegrasikan c-lightning ke JoinMarket untuk digunakan sebagai lapisan pesan. Dalam konteks server direktori, ini dapat memfasilitasi metode monetisasi untuk mereka sebagai entitas terpisah menggunakan Lightning Network. Server direktori dapat menagih pembuat dalam jumlah kecil melalui Lightning untuk mengiklankan diri mereka sendiri di direktori.
Bagaimana Protokol Koordinasi JoinMarket Dapat Ditingkatkan
Seperti yang dibahas di atas, pembuat mempelajari keluaran pengambil selama CoinJoins tunggal , inilah mengapa mode tumbler ada, untuk memungkinkan pengambil bercampur melalui beberapa pembuat dan menguranginya.
Namun, ada solusi yang lebih baik, setidaknya dalam kasus ketika banyak pengambil berbicara dengan satu pembuat pada saat yang sama, dan mereka dapat berkoordinasi berbicara langsung satu sama lain alih-alih hanya melalui pembuat (jika hanya ada satu pengambil yang berbicara dengan pembuat, ini tidak akan membantu karena pembuat mengetahui setiap output yang saya sn’t mereka milik pengambil). CoinShuffle adalah protokol untuk secara efektif melakukan apa yang dicapai kredensial buta di ZeroLink, untuk menjaga privasi dari koordinator, kecuali dengan cara yang terdesentralisasi untuk grup tanpa koordinator pusat.
Bayangkan Anda memiliki Alice, Bob dan Charlie, yang semuanya ingin CoinJoin satu sama lain (mereka telah menetapkan denominasi untuk output CoinJoin), dan ketiganya menghasilkan kunci publik sementara untuk mengenkripsi pesan.
Charlie memberikan kunci publiknya kepada Bob, kemudian Bob memberikan Alice kunci publiknya sendiri dan juga milik Charlie. Jadi, kita memiliki situasi di mana Alice memiliki kunci publik Bob dan Charlie, Bob memiliki kunci publik Charlie, dan Charlie hanya memiliki kunci publik miliknya.
Alice mengambil alamat yang dia inginkan agar outputnya dikirim dan mengenkripsinya ke kunci Charlie, tetapi kemudian mengambil pesan terenkripsi itu dan mengenkripsinya ke kunci publik Bob, menyusunnya seperti boneka Rusia. Dia kemudian meneruskan ini ke Bob, yang mendekripsi lapisannya hanya untuk menemukan pesan terenkripsi ke Charlie yang tidak bisa dia buka. Bob kemudian mengambil alamat yang dia inginkan untuk dikirimi outputnya, dan mengenkripsi ini ke kunci Charlie. Dia melewati kedua pesan ke Charlie. Charlie sekarang mendekripsi kedua pesan tersebut, dan menemukan alamat yang Alice dan Bob inginkan untuk dikirimi outputnya, tetapi dia tidak tahu alamat mana yang menjadi milik siapa (dan ingat, baik Alice maupun Bob tidak saling mengetahui alamat masing-masing).
Charlie kemudian membuat dan menandatangani CoinJoin, memberikannya kepada Alice dan Bob untuk ditandatangani, dan dikirimkan ke jaringan. Semua orang dalam proses ini tahu bahwa output mereka telah dibuat dengan benar, tetapi mereka tidak tahu siapa yang memiliki yang mana dari dua alamat lainnya. Proses ini dapat diperpanjang untuk kelompok yang jauh lebih besar, dan jika pengambil dapat berkomunikasi satu sama lain secara langsung sebelum mendekati pembuat, protokol ini dapat digunakan untuk melindungi privasi pengambil terhadap pembuat individu tanpa harus menjatuhkan koin berkali-kali dengan pihak yang berbeda.
Bagaimana Struktur Transaksi JoinMarket Dapat Ditingkatkan
Kesamaan terbesar antara ZeroLink dan JoinMarket adalah ketergantungan pada kesamaan denominasi output untuk menciptakan ambiguitas tentang input mana yang dipetakan ke output mana dalam suatu transaksi.
Sementara JoinMarket menggunakan jumlah yang berubah-ubah sebagai lawan dari jumlah yang telah ditentukan sebelumnya di ZeroLink, dalam lingkup satu transaksi CoinJoin, semua denominasi campuran harus sama.
CoinjoinXT adalah proposal oleh Gibson yang berpotensi menghilangkan kebutuhan untuk bergantung pada hal itu dengan sangat ketat (ini juga dapat diterapkan oleh ZeroLink). Ide dasarnya adalah memanfaatkan ECDSA Multiparty Computation, atau MuSig sekarang setelah Taproot diaktifkan, dan membuat rantai transaksi yang telah ditandatangani sebelumnya menggunakan alamat multisig yang terlihat seperti alamat tanda tangan tunggal biasa.
Ketika seseorang melihat blockchain, dua asumsi besar yang sering dibuat adalah: satu, bahwa semua input dalam suatu transaksi dimiliki oleh satu orang (asumsi besar bahwa CoinJoins rusak); dan dua, bahwa pembayaran berarti kontrol dana telah ditransfer.
Jadi, bagaimana jika banyak pihak berkolaborasi untuk mengunci semua dana mereka ke dalam alamat multisig yang tidak terlihat seperti satu , dan menandatangani rantai transaksi panjang yang terlihat seperti satu orang yang perlahan-lahan menghabiskan uang dari waktu ke waktu, tetapi pada kenyataannya hanya mengupas uang dan memberikannya kembali ke pemilik aslinya dalam potongan-potongan kecil?
Bagaimana jika beberapa dari keluaran pembayaran tersebut sebenarnya adalah saluran Lightning pribadi antara dua peserta CoinjoinXT untuk memastikan bahwa pengamat tidak dapat melacak rantai pembayaran dan mengumpulkan jumlahnya di beberapa titik di masa depan?
Ini bisa membuka pintu baru dalam hal fleksibilitas untuk jenis CoinJoin yang digunakan orang, dan tingkat privasi yang mereka ciptakan. Jika CoinJoin yang normal secara terang-terangan berteriak ke kamar, “Aku akan pergi dan menghilang sekarang!” maka CoinjoinXT bisa sama dengan diam-diam menyelinap keluar dari pesta tanpa diketahui.
Masa Depan Terdesentralisasi
Secara keseluruhan, JoinMarket sejujurnya telah menjadi alat khusus dalam ekosistem meskipun sudah ada sejak 2015, mengingat kebutuhan untuk menjalankan node penuh untuk menggunakannya. Benar-benar tidak sampai ZeroLink datang ke pasar dalam bentuk Wasabi dan Samourai bahwa CoinJoin benar-benar menjadi alat yang dapat diakses dan lebih banyak digunakan dan dipahami.
Keduanya adalah alat yang sangat berharga, tetapi pada akhirnya, mereka adalah layanan yang dibangun di sekitar perusahaan terpusat — meskipun, layanan tanpa kepercayaan yang dibangun dengan cara yang tidak memungkinkan untuk kehilangan uang berinteraksi dengan mereka — tetapi layanan tetap saja. Apa yang terjadi jika perusahaan ditutup? Akankah pembangunan tetap berjalan dengan cara yang sama, mengingat saat ini didanai oleh perusahaan-perusahaan tersebut?
Pasti ada tempat untuk alat seperti itu di ruang ini, dan ada juga hal positifnya. Dinamika pendanaan yang sama yang mempertanyakan kelangsungan hidup alat jika perusahaan gagal menjamin banyak sumber daya di balik pengembangannya, selama perusahaan bertahan. Tetapi ada juga tempat untuk alat terdesentralisasi yang tidak bergantung pada satu perusahaan. Kemajuan mungkin lebih lambat, dan masalah mungkin lebih rumit untuk dipecahkan, tetapi jika berhasil, hasil akhirnya akan jauh lebih kuat dan mudah beradaptasi.
Tidak ada yang salah dengan layanan dan perusahaan di ruang ini, tetapi untuk setiap layanan dan perusahaan yang memungkinkan untuk membangun alternatif terdesentralisasi, alternatif itu harus ada sebagai opsi lain. Seperti Bitcoin itu sendiri, suatu hari Anda mungkin merasa sangat membutuhkannya.
Ini adalah posting tamu oleh Shinobi. Pendapat yang diungkapkan sepenuhnya milik mereka sendiri dan tidak mencerminkan pendapat BTC Inc atau Bitcoin Magazine.