КриптоНота v2.0

Oleh Nicolas van Saberhagen · 2013

Makalah yang disajikan di sini adalah whitepaper CryptoNote v2.0 karya Nicolas van Saberhagen (2013), yang mendeskripsikan fondasi kriptografi yang mendasari Monero. Ini bukan whitepaper khusus Monero — Monero diluncurkan pada tahun 2014 sebagai fork dari implementasi referensi CryptoNote (Bytecoin) dan sejak saat itu telah berkembang jauh melampaui protokol aslinya.

Perkenalan

“Bitcoin” [1] telah berhasil menerapkan konsep uang elektronik p2p. Keduanya para profesional dan masyarakat umum mulai menghargai kombinasi yang nyaman dari transaksi publik dan proof-of-work sebagai model kepercayaan. Saat ini, basis pengguna uang elektronik tumbuh dengan kecepatan yang stabil; pelanggan tertarik dengan biaya rendah dan anonimitas yang diberikan oleh uang elektronik dan pedagang menilai emisi yang diprediksi dan didesentralisasi. Bitcoin punya secara efektif membuktikan bahwa uang elektronik bisa sesederhana uang kertas dan senyaman mungkin kartu kredit. Sayangnya, Bitcoin mempunyai beberapa kekurangan. Misalnya saja sistem terdistribusi sifatnya tidak fleksibel, mencegah penerapan fitur-fitur baru hingga hampir semua pengguna jaringan memperbarui klien mereka. Beberapa kelemahan kritis yang tidak dapat diperbaiki dengan cepat menghalangi Bitcoin penyebarannya secara luas. Dalam model yang tidak fleksibel seperti ini, akan lebih efisien jika meluncurkan proyek baru daripada terus-menerus memperbaiki proyek aslinya. Dalam makalah ini, kami mempelajari dan mengusulkan solusi terhadap kekurangan utama Bitcoin. Kami percaya bahwa sistem yang mempertimbangkan solusi yang kami usulkan akan menghasilkan persaingan yang sehat antara sistem kas elektronik yang berbeda. Kami juga mengusulkan uang elektronik kami sendiri, “CryptoNote”, sebuah nama yang menekankan terobosan berikutnya dalam uang elektronik.

Введение

«Bitcoin» [1] представляет собой успешную реализацию концепции электронных денег p2p. оба профессионалы и широкая общественность оценили удобное сочетание публичные транзакции и proof-of-work как модель доверия. Сегодня пользовательская база электронных денег растет устойчивыми темпами; клиентов привлекают низкие комиссии и обеспечиваемая анонимность электронными деньгами, и торговцы ценят ее прогнозируемую и децентрализованную эмиссию. Bitcoin имеет эффективно доказал, что электронные деньги могут быть такими же простыми, как бумажные деньги, и такими же удобными, как кредитные карты. К сожалению, Bitcoin имеет несколько недостатков. Например, распределенная система природа негибка и не позволяет внедрять новые функции до тех пор, пока почти все пользователи сети не обновят свои клиенты. Некоторые критические недостатки, которые невозможно быстро исправить, отпугивают Bitcoin. широкое распространение. В таких негибких моделях эффективнее развернуть новый проект. вместо того, чтобы постоянно исправлять первоначальный проект. В этой статье мы изучаем и предлагаем решения основных недостатков Bitcoin. Мы верим что система, учитывающая предлагаемые нами решения, приведет к здоровой конкуренции среди различных электронных денежных систем. Мы также предлагаем собственные электронные деньги «CryptoNote», имя, подчеркивающее следующий прорыв в области электронных денег.

Bitcoin Kekurangan dan Kemungkinan Solusinya

2 Bitcoin kekurangan dan beberapa kemungkinan solusi 2.1 Ketertelusuran transaksi Privasi dan anonimitas adalah aspek terpenting dari uang elektronik. Pembayaran antar rekan berusaha untuk disembunyikan dari pandangan pihak ketiga, perbedaan yang nyata jika dibandingkan dengan tradisional perbankan. Secara khusus, T. Okamoto dan K. Ohta menjelaskan enam kriteria uang elektronik yang ideal, yang mencakup “privasi: hubungan antara pengguna dan pembeliannya harus tidak dapat dilacak oleh siapa pun” [30]. Dari uraiannya, kami memperoleh dua properti yang sepenuhnya anonim model uang elektronik harus memenuhi persyaratan yang digariskan oleh Okamoto dan Ohta: Untraceability: untuk setiap transaksi masuk, semua pengirim yang mungkin memiliki kemungkinan yang sama. Tidak dapat dihubungkan: untuk dua transaksi keluar mana pun, tidak mungkin dibuktikan bahwa mereka telah dikirim orang yang sama. Sayangnya, Bitcoin tidak memenuhi persyaratan tidak dapat dilacak. Karena semua transaksi yang terjadi di antara peserta jaringan bersifat publik, maka transaksi apa pun bisa bersifat publik 1 Catatan Kripto v 2.0 Nicolas van Saberhagen 17 Oktober 2013 1 Pendahuluan “Bitcoin” [1] telah berhasil menerapkan konsep uang elektronik p2p. Keduanya para profesional dan masyarakat umum mulai menghargai kombinasi yang nyaman dari transaksi publik dan proof-of-work sebagai model kepercayaan. Saat ini, basis pengguna uang elektronik tumbuh dengan kecepatan yang stabil; pelanggan tertarik dengan biaya rendah dan anonimitas yang diberikan oleh uang elektronik dan pedagang menilai emisi yang diprediksi dan didesentralisasi. Bitcoin punya secara efektif membuktikan bahwa uang elektronik bisa sesederhana uang kertas dan senyaman mungkin kartu kredit. Sayangnya, Bitcoin mempunyai beberapa kekurangan. Misalnya saja sistem terdistribusi sifatnya tidak fleksibel, mencegah penerapan fitur-fitur baru hingga hampir semua pengguna jaringan memperbarui klien mereka. Beberapa kelemahan kritis yang tidak dapat diperbaiki dengan cepat menghalangi Bitcoin penyebarannya secara luas. Dalam model yang tidak fleksibel seperti ini, akan lebih efisien jika meluncurkan proyek baru daripada terus-menerus memperbaiki proyek aslinya. Dalam makalah ini, kami mempelajari dan mengusulkan solusi terhadap kekurangan utama Bitcoin. Kami percaya bahwa sistem yang mempertimbangkan solusi yang kami usulkan akan menghasilkan persaingan yang sehat antara sistem kas elektronik yang berbeda. Kami juga mengusulkan uang elektronik kami sendiri, “CryptoNote”, sebuah nama yang menekankan terobosan berikutnya dalam uang elektronik. 2 Bitcoin kekurangan dan beberapa kemungkinan solusi 2.1 Ketertelusuran transaksi Privasi dan anonimitas adalah aspek terpenting dari uang elektronik. Pembayaran antar rekan berusaha untuk disembunyikan dari pandangan pihak ketiga, perbedaan yang nyata jika dibandingkan dengan tradisional perbankan. Secara khusus, T. Okamoto dan K. Ohta menjelaskan enam kriteria uang elektronik yang ideal, yang mencakup “privasi: hubungan antara pengguna dan pembeliannya harus tidak dapat dilacak oleh siapa pun” [30]. Dari uraiannya, kami memperoleh dua properti yang sepenuhnya anonim model uang elektronik harus memenuhi persyaratan yang digariskan oleh Okamoto dan Ohta: Untraceability: untuk setiap transaksi masuk, semua pengirim yang mungkin memiliki kemungkinan yang sama. Tidak dapat dihubungkan: untuk dua transaksi keluar mana pun, tidak mungkin dibuktikan bahwa mereka telah dikirim orang yang sama. Sayangnya, Bitcoin tidak memenuhi persyaratan tidak dapat dilacak. Karena semua transaksi yang terjadi di antara peserta jaringan bersifat publik, maka transaksi apa pun bisa bersifat publik 1 3 Bitcoin pasti gagal dalam "tidak dapat dilacak". Saat saya mengirimi Anda BTC, dompet asal pengirimannya dicap secara tidak dapat ditarik kembali pada blockchain. Tidak ada pertanyaan tentang siapa yang mengirim dana tersebut, karena hanya orang yang mengetahui kunci privat yang dapat mengirimkannya.ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan disengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diambil dari basis data publik. Kegagalan Bitcoin dalam memenuhi kedua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin saat ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien pada GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan ddisengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diekstraksi dari basis data publik. Kegagalan Bitcoin dalam memenuhi dua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin saat ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 4 Agaknya, jika setiap pengguna membantu anonimitas mereka dengan selalu membuat alamat baru untuk SETIAP pembayaran yang diterima (yang tidak masuk akal tetapi secara teknis merupakan cara yang "benar" untuk melakukannya), dan jika setiap pengguna membantu anonimitas orang lain dengan bersikeras bahwa mereka tidak pernah mengirim dana ke alamat BTC yang sama dua kali, maka Bitcoin hanya akan secara tidak langsung meneruskan tes ketidakterhubungan. Mengapa? Data konsumen dapat digunakan untuk mengetahui banyak hal tentang orang-orang sepanjang waktu. Lihat, misalnya http://www.applieddatalabs.com/content/target-knows-it-shows Sekarang, bayangkan ini 20 tahun ke depan dan bayangkan lebih jauh bahwa Target tidak mengetahuinya begitu saja tentang kebiasaan pembelian Anda di Target, tetapi mereka telah menambang blockchain untuk SEMUANYA PEMBELIAN PRIBADI ANDA DENGAN DOMPET COINBASE ANDA UNTUK MASA LALU DUA BELAS TAHUN. Mereka akan berkata, "hai sobat, kamu mungkin ingin membeli obat batuk malam ini, tapi kamu tidak akan melakukannya merasa sehat besok." Hal ini mungkin tidak terjadi jika penyortiran multi-pihak dieksploitasi dengan benar. Lihat, misalnya, inientri blog: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Saya tidak sepenuhnya yakin dengan perhitungan matematisnya, tapi... satu makalah pada satu waktu, bukan? Diperlukan kutipan. Meskipun protokol Zerocoin (mandiri) mungkin tidak mencukupi, Zerocash protokol tampaknya telah menerapkan transaksi berukuran 1kb. Proyek itu didukung oleh tentu saja militer AS dan Israel, jadi siapa yang tahu tentang ketangguhannya. Di sisi lain Di sisi lain, tidak ada orang yang lebih ingin mengeluarkan dana tanpa pengawasan selain pihak militer. http://zerocash-project.org/ Saya tidak yakin... lihat, misalnya, http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Mengutip pengembang Cryptonote Maurice Planck (mungkin nama samaran) dari cryptonote tersebut forum: "Zerocoin, Zerocash. Harus saya akui, ini adalah teknologi tercanggih. Ya, kutipannya di atas adalah dari analisis protokol versi sebelumnya. Sepengetahuan saya, ternyata tidak 288, tapi 384 byte, tapi bagaimanapun ini adalah kabar baik. Mereka menggunakan teknik baru yang disebut SNARK, yang memiliki kelemahan tertentu: misalnya, database awal yang besar dari parameter publik yang diperlukan untuk membuat tanda tangan (lebih dari 1 GB) dan waktu yang signifikan diperlukan untuk membuat transaksi (lebih dari satu menit). Akhirnya, mereka menggunakan a crypto muda, yang saya sebutkan sebagai ide yang bisa diperdebatkan: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. Kam 03 Apr 2014 19:56 Fungsi yang dijalankan di CPU dan tidak cocok untuk GPU, FPGA, atau ASIC komputasi. "Teka-teki" yang digunakan di proof-of-work disebut sebagai fungsi harga, fungsi biaya, atau fungsi teka-teki.

ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan disengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diambil dari basis data publik. Kegagalan Bitcoin dalam memenuhi kedua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin hari ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien pada GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 ditelusuri secara jelas ke asal yang unik dan penerima akhir. Bahkan jika dua peserta bertukar dana secara tidak langsung, metode pencarian jalur yang dirancang dengan baik akan mengungkap asal usul dan penerima akhir. Diduga juga Bitcoin tidak memenuhi properti kedua. Beberapa peneliti menyatakan ([33, 35, 29, 31]) bahwa analisis blockchain yang cermat dapat mengungkapkan hubungan antara pengguna jaringan Bitcoin dan transaksinya. Meskipun ada beberapa metode yang bisa dilakukan ddisengketakan [25], diduga banyak informasi pribadi tersembunyi yang dapat diekstraksi dari basis data publik. Kegagalan Bitcoin dalam memenuhi kedua sifat yang diuraikan di atas membuat kita menyimpulkan bahwa hal tersebut memang benar adanya bukan sistem kas elektronik anonim melainkan sistem kas elektronik pseudo-anonim. Pengguna cepat berkembang solusi untuk menghindari kelemahan ini. Dua solusi langsung adalah “layanan pencucian” [2] dan pengembangan metode terdistribusi [3, 4]. Kedua solusi tersebut didasarkan pada gagasan pencampuran beberapa transaksi publik dan mengirimkannya melalui beberapa alamat perantara; yang pada gilirannya menderita kelemahan karena membutuhkan pihak ketiga yang tepercaya. Baru-baru ini, skema yang lebih kreatif diusulkan oleh I. Miers dkk. [28]: “Nolkoin”. nol koin menggunakan akumulator kriptografi satu arah dan bukti tanpa pengetahuan yang memungkinkan pengguna melakukannya “konversi” bitcoin menjadi zerocoin dan belanjakan menggunakan bukti kepemilikan anonim tanda tangan digital berbasis kunci publik yang eksplisit. Namun, bukti-bukti pengetahuan tersebut mempunyai keteguhan tetapi ukurannya tidak nyaman - sekitar 30kb (berdasarkan batas Bitcoin saat ini), yang membuat proposal tidak praktis. Penulis mengakui bahwa protokol tersebut kemungkinan besar tidak akan pernah diterima oleh mayoritas orang Bitcoin pengguna [5]. 2.2 Fungsi proof-of-work Pencipta Bitcoin Satoshi Nakamoto mendeskripsikan algoritme pengambilan keputusan mayoritas sebagai “oneCPU-one-vote” dan menggunakan fungsi penetapan harga yang terikat CPU (ganda SHA-256) untuk proof-of-work miliknya skema. Karena pengguna memilih satu riwayat transaksi pesanan [1], kewajaran dan Konsistensi proses ini merupakan kondisi kritis bagi keseluruhan sistem. Keamanan model ini memiliki dua kelemahan. Pertama, ini membutuhkan 51% jaringan kekuatan penambangan berada di bawah kendali pengguna yang jujur. Kedua, kemajuan sistem (perbaikan bug, perbaikan keamanan, dll...) mengharuskan sebagian besar pengguna untuk mendukung dan menyetujuinya perubahan (ini terjadi ketika pengguna memperbarui perangkat lunak dompet mereka) [6]. Akhirnya pemungutan suara yang sama Mekanisme ini juga digunakan untuk jajak pendapat kolektif tentang penerapan beberapa fitur [7]. Hal ini memungkinkan kita untuk menduga sifat-sifat yang harus dipenuhi oleh proof-of-work fungsi penetapan harga. Fungsi tersebut tidak boleh memungkinkan peserta jaringan untuk memiliki signifikansi keunggulan dibandingkan peserta lain; itu membutuhkan keseimbangan antara perangkat keras umum dan perangkat keras tinggi biaya perangkat khusus. Dari contoh terbaru [8], kita dapat melihat bahwa fungsi SHA-256 digunakan dalam arsitektur Bitcoin tidak memiliki properti ini karena penambangan menjadi lebih efisien pada GPU dan perangkat ASIC jika dibandingkan dengan CPU kelas atas. Oleh karena itu, Bitcoin menciptakan kondisi yang menguntungkan bagi kesenjangan yang besar antara hak suara peserta karena melanggar prinsip “satu CPU-satu suara” yang dimiliki oleh pemilik GPU dan ASIC hak suara yang jauh lebih besar jika dibandingkan dengan pemilik CPU. Ini adalah contoh klasik dari Prinsip Pareto dimana 20% peserta sistem mengontrol lebih dari 80% suara. Ada yang berpendapat bahwa ketidaksetaraan tersebut tidak relevan dengan keamanan jaringan karena memang tidak relevan jumlah peserta yang sedikit menguasai suara mayoritas tetapi kejujurannya peserta yang penting. Akan tetapi, argumen tersebut agak cacat karena justru merupakan argumen yang salah kemungkinan munculnya perangkat keras khusus yang murah daripada kejujuran peserta yang mana menimbulkan ancaman. Untuk mendemonstrasikannya, mari kita ambil contoh berikut. Misalkan seorang yang jahat individu memperoleh kekuatan penambangan yang signifikan dengan menciptakan lahan penambangannya sendiri dengan biaya murah 2 Komentar di halaman 2

Bitcoin Недостатки и возможные решения

2 Bitcoin недостатки и некоторые возможные решения 2.1 Отслеживаемость транзакций Конфиденциальность и анонимность являются наиболее важными аспектами электронных денег. Одноранговые платежи стремятся быть скрытыми от взглядов третьих лиц, что является явной разницей по сравнению с традиционными банковское дело. В частности, Т. Окамото и К. Охта описали шесть критериев идеальных электронных денег: который включал «конфиденциальность: связь между пользователем и его покупками должна быть неотслеживаемой». кем угодно» [30]. Из их описания мы получили два свойства, которые полностью анонимны. Модель электронных денег должна удовлетворять требованиям, изложенным Окамото. и Охта: Неотслеживаемость: для каждой входящей транзакции все возможные отправители равновероятны. Несвязываемость: для любых двух исходящих транзакций невозможно доказать, что они были отправлены на тот же человек. К сожалению, Bitcoin не удовлетворяет требованию неотслеживаемости. Поскольку все транзакции, происходящие между участниками сети, являются публичными, любая транзакция может быть 1 КриптоНота v 2.0 Николас ван Саберхаген 17 октября 2013 г. 1 Введение «Bitcoin» [1] представляет собой успешную реализацию концепции электронных денег p2p. оба профессионалы и широкая общественность оценили удобное сочетание публичные транзакции и proof-of-work как модель доверия. Сегодня пользовательская база электронных денег растет устойчивыми темпами; клиентов привлекают низкие комиссии и обеспечиваемая анонимность электронными деньгами, и торговцы ценят ее прогнозируемую и децентрализованную эмиссию. Bitcoin имеет эффективно доказал, что электронные деньги могут быть такими же простыми, как бумажные деньги, и такими же удобными, как кредитные карты. К сожалению, Bitcoin имеет несколько недостатков. Например, распределенная система природа негибка и не позволяет внедрять новые функции до тех пор, пока почти все пользователи сети не обновят свои клиенты. Некоторые критические недостатки, которые невозможно быстро исправить, отпугивают Bitcoin. широкое распространение. В таких негибких моделях эффективнее развернуть новый проект. вместо того, чтобы постоянно исправлять первоначальный проект. В этой статье мы изучаем и предлагаем решения основных недостатков Bitcoin. Мы верим что система, учитывающая предлагаемые нами решения, приведет к здоровой конкуренции среди различных электронных денежных систем. Мы также предлагаем собственные электронные деньги «CryptoNote», имя, подчеркивающее следующий прорыв в области электронных денег. 2 Bitcoin недостатки и некоторые возможные решения 2.1 Отслеживаемость транзакций Конфиденциальность и анонимность являются наиболее важными аспектами электронных денег. Одноранговые платежи стремятся быть скрытыми от взглядов третьих лиц, что является явной разницей по сравнению с традиционными банковское дело. В частности, Т. Окамото и К. Охта описали шесть критериев идеальных электронных денег: который включал «конфиденциальность: связь между пользователем и его покупками должна быть неотслеживаемой». кем угодно» [30]. Из их описания мы получили два свойства, которые полностью анонимны. Модель электронных денег должна удовлетворять требованиям, изложенным Окамото. и Охта: Неотслеживаемость: для каждой входящей транзакции все возможные отправители равновероятны. Несвязываемость: для любых двух исходящих транзакций невозможно доказать, что они были отправлены на тот же человек. К сожалению, Bitcoin не удовлетворяет требованию неотслеживаемости. Поскольку все транзакции, происходящие между участниками сети, являются публичными, любая транзакция может быть 1 3 Bitcoin определенно не обеспечивает «неотслеживаемость». Когда я отправляю вам BTC, указывается кошелек, с которого он отправляется. безвозвратно проштамповано на blockchain. Вопроса о том, кто отправил эти средства, не возникает. потому что их может отправить только тот, кто знает секретные ключи.однозначно прослеживается уникальное происхождение и конечный получатель. Даже если два участника поменяются средства косвенным путем, правильно разработанный метод поиска пути выявит происхождение и конечный получатель. Также есть подозрение, что Bitcoin не удовлетворяет второму свойству. Некоторые исследователи заявил ([33, 35, 29, 31]), что тщательный анализ blockchain может выявить связь между пользователи сети Bitcoin и их транзакции. Хотя ряд методов оспаривается [25], есть подозрение, что из него можно извлечь много скрытой личной информации. общедоступная база данных. Неспособность Bitcoin удовлетворять двум свойствам, изложенным выше, приводит нас к выводу, что это не анонимная, а псевдоанонимная электронная кассовая система. Пользователи быстро развивались решения, позволяющие обойти этот недостаток. Двумя прямыми решениями были «услуги по отмыванию денег» [2] и развитие распределенных методов [3, 4]. Оба решения основаны на идее смешивания несколько публичных транзакций и отправка их через какой-то промежуточный адрес; что в свою очередь имеет тот недостаток, что требует доверенной третьей стороны. Недавно более креативную схему предложили И. Майерс с соавт. [28]: «Нулевая монета». Зерокойн использует криптографические односторонние аккумуляторы и доказательства с нулевым разглашением, которые позволяют пользователям «конвертируйте» биткойны в зерокоины и тратьте их, используя анонимное доказательство владения вместо явные цифровые подписи на основе открытого ключа. Однако такие доказательства знаний имеют постоянную но неудобный размер - около 30кб (исходя из сегодняшних лимитов Bitcoin), что делает предложение непрактично. Авторы признают, что протокол вряд ли когда-либо будет принят большинством стран. Bitcoin пользователей [5]. 2.2 Функция proof-of-work Создатель Bitcoin Сатоши Накамото описал алгоритм принятия решений большинством как «один ЦП-один голос» и использовал функцию ценообразования с привязкой к ЦП (двойной SHA-256) для своего proof-of-work схема. Поскольку пользователи голосуют за единый заказ истории транзакций [1], разумность и последовательность этого процесса является важнейшим условием для всей системы. Безопасность этой модели имеет два недостатка. Во-первых, для этого требуется 51% ресурсов сети. мощность майнинга должна находиться под контролем честных пользователей. Во-вторых, прогресс системы (исправление ошибок, исправления безопасности и т. д.) требуют, чтобы подавляющее большинство пользователей поддерживало и соглашалось с изменения (это происходит, когда пользователи обновляют программное обеспечение своего кошелька) [6].Наконец, это же голосование Механизм также используется для коллективных опросов о реализации некоторых функций [7]. Это позволяет нам предположить, каким свойствам должен удовлетворять proof-of-work. функция ценообразования. Такая функция не должна позволять участнику сети иметь существенное влияние. преимущество перед другим участником; это требует паритета между общим оборудованием и высоким Стоимость нестандартных устройств. Из недавних примеров [8] мы видим, что используемая функция SHA-256 в архитектуре Bitcoin этим свойством не обладает, поскольку майнинг становится более эффективным на Графические процессоры и устройства ASIC по сравнению с высокопроизводительными процессорами. Таким образом, Bitcoin создает благоприятные условия для большого разрыва между количеством голосов участников, так как это нарушает принцип «один процессор — один голос», поскольку владельцы графических процессоров и ASIC обладают гораздо большее количество голосов по сравнению с владельцами процессоров. Это классический пример Принцип Парето, согласно которому 20% участников системы контролируют более 80% голосов. Можно утверждать, что такое неравенство не имеет отношения к безопасности сети, поскольку оно не небольшое количество участников, контролирующих большинство голосов, но честность этих участников, что имеет значение. Однако такой аргумент несколько ошибочен, поскольку он скорее является вероятность появления дешевого специализированного оборудования, а не честность участников, которая представляет угрозу. Чтобы продемонстрировать это, возьмем следующий пример. Предположим, злонамеренный человек получает значительную майнинговую мощь, создавая свою собственную майнинг-ферму за счет дешевых 2 однозначно прослеживается уникальное происхождение и конечный получатель. Даже если два участника поменяются средства косвенным путем, правильно разработанный метод поиска пути выявит происхождение и конечный получатель. Также есть подозрение, что Bitcoin не удовлетворяет второму свойству. Некоторые исследователи заявил ([33, 35, 29, 31]), что тщательный анализ blockchain может выявить связь между пользователи сети Bitcoin и их транзакции. Хотя ряд методов доспаривается [25], есть подозрение, что много скрытой личной информации может быть извлечено из общедоступная база данных. Неспособность Bitcoin удовлетворять двум свойствам, изложенным выше, приводит нас к выводу, что это не анонимная, а псевдоанонимная электронная кассовая система. Пользователи быстро развивались решения, позволяющие обойти этот недостаток. Двумя прямыми решениями были «услуги по отмыванию денег» [2] и развитие распределенных методов [3, 4]. Оба решения основаны на идее смешивания несколько публичных транзакций и отправка их через какой-то промежуточный адрес; что в свою очередь имеет тот недостаток, что требует доверенной третьей стороны. Недавно более креативную схему предложили И. Майерс с соавт. [28]: «Нулевая монета». Зерокойн использует криптографические односторонние аккумуляторы и доказательства с нулевым разглашением, которые позволяют пользователям «конвертируйте» биткойны в зерокоины и тратьте их, используя анонимное доказательство владения вместо явные цифровые подписи на основе открытого ключа. Однако такие доказательства знаний имеют постоянную но неудобный размер - около 30кб (исходя из сегодняшних лимитов Bitcoin), что делает предложение непрактично. Авторы признают, что протокол вряд ли когда-либо будет принят большинством стран. Bitcoin пользователей [5]. 2.2 Функция proof-of-work Создатель Bitcoin Сатоши Накамото описал алгоритм принятия решений большинством как «один ЦП-один голос» и использовал функцию ценообразования с привязкой к ЦП (двойной SHA-256) для своего proof-of-work схема. Поскольку пользователи голосуют за единый заказ истории транзакций [1], разумность и последовательность этого процесса является важнейшим условием для всей системы. Безопасность этой модели имеет два недостатка. Во-первых, для этого требуется 51% ресурсов сети. мощность майнинга должна находиться под контролем честных пользователей. Во-вторых, прогресс системы (исправление ошибок, исправления безопасности и т. д.) требуют, чтобы подавляющее большинство пользователей поддерживало и соглашалось с изменения (это происходит, когда пользователи обновляют программное обеспечение своего кошелька) [6].Наконец, это же голосование Механизм также используется для коллективных опросов о реализации некоторых функций [7]. Это позволяет нам предположить, каким свойствам должен удовлетворять proof-of-work. функция ценообразования. Такая функция не должна позволять участнику сети иметь существенное влияние. преимущество перед другим участником; это требует паритета между общим оборудованием и высоким Стоимость нестандартных устройств. Из недавних примеров [8] мы видим, что используемая функция SHA-256 в архитектуре Bitcoin этим свойством не обладает, поскольку майнинг становится более эффективным на Графические процессоры и устройства ASIC по сравнению с высокопроизводительными процессорами. Таким образом, Bitcoin создает благоприятные условия для большого разрыва между количеством голосов участников, так как это нарушает принцип «один процессор — один голос», поскольку владельцы графических процессоров и ASIC обладают гораздо большее количество голосов по сравнению с владельцами процессоров. Это классический пример Принцип Парето, согласно которому 20% участников системы контролируют более 80% голосов. Можно утверждать, что такое неравенство не имеет отношения к безопасности сети, поскольку оно не небольшое количество участников, контролирующих большинство голосов, но честность этих участников, что имеет значение. Однако такой аргумент несколько ошибочен, поскольку он скорее является вероятность появления дешевого специализированного оборудования, а не честность участников, которая представляет угрозу. Чтобы продемонстрировать это, возьмем следующий пример. Предположим, злонамеренный человек получает значительную майнинговую мощь, создавая свою собственную майнинг-ферму за счет дешевых 2 4 Предположительно, если каждый пользователь сохранит свою анонимность, всегда генерируя новый адрес за КАЖДЫЙ полученный платеж (что абсурдно, но технически «правильный» способ сделать это), и если бы каждый пользователь поддерживал анонимность всех остальных, настаивая на том, чтобы они никогда не отправляли средства на один и тот же адрес BTC дважды, то Bitcoin всё равно лишь случайно передаст тест на несвязность. Почему? Данные о потребителях можно использовать для того, чтобы постоянно получать поразительные сведения о людях. См., например, http://www.applieddatalabs.com/content/target-knows-it-shows. Теперь представьте, что это произойдет через 20 лет, и представьте, что Target не просто знал о ваших покупательских привычках в Target, но они добыли blockchain для ВСЕХ ВАШИ ЛИЧНЫЕ ПОКУПКИ С ВАШИМ КОШЕЛЬКОМ COINBASE В ПРОШЛОМ ДВЕНАДЦАТЬ ЛЕТ. Они скажут: «Эй, приятель, возможно, ты захочешь сегодня вечером купить лекарство от кашля, но ты не будешь». завтра почувствуй себя хорошо». Это может быть не так, если многосторонняя сортировка используется правильно. См., например, этосообщение в блоге: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Я не совсем уверен в математических расчетах, но... по одной статье за раз, верно? Требуется цитирование. Хотя протокол Zerocoin (автономный) может оказаться недостаточным, протокол Zerocash Протокол, похоже, реализовал транзакции размером 1 КБ. Этот проект поддерживается конечно, американские и израильские военные, так что кто знает, насколько он надежен. С другой стороны С другой стороны, никто не хочет иметь возможность тратить средства без надзора больше, чем военные. http://zerocash-project.org/ Я не уверен... см., например, http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Цитирую разработчика Cryptonote Мориса Планка (предположительно псевдоним) из cryptonote форум: «Зерокоин, Зеркэш. Это самая передовая технология, надо признать. Да, цитата выше взято из анализа предыдущей версии протокола. Насколько мне известно, это не 288, а 384 байта, но в любом случае это хорошая новость. Они использовали совершенно новую технологию под названием SNARK, у которой есть определенные недостатки: например, большая исходная база публичных параметров, необходимых для создания подписи (более 1 ГБ) и значительное время, необходимое для создания транзакции (более минуты). Наконец, они используют молодая криптовалюта, о которой я упомянул как о спорной идее: https://forum.cryptonote.org/viewtopic.php?f= » — Морис П. Четверг, 3 апреля 2014 г., 19:56 Функция, выполняемая в ЦП и не подходящая для графического процессора, FPGA или ASIC. расчет. «Загадка», используемая в proof-of-work, называется функцией ценообразования, функцией затрат или функция головоломки.

однозначно прослеживается уникальное происхождение и конечный получатель. Даже если два участника поменяются средства косвенным путем, правильно разработанный метод поиска пути выявит происхождение и конечный получатель. Также есть подозрение, что Bitcoin не удовлетворяет второму свойству. Некоторые исследователи заявил ([33, 35, 29, 31]), что тщательный анализ blockchain может выявить связь между пользователи сети Bitcoin и их транзакции. Хотя ряд методов оспариваемый [25], есть подозрение, что из него можно извлечь много скрытой личной информации. общедоступная база данных. Неспособность Bitcoin удовлетворить двум свойствам, изложенным выше, приводит нас к выводу, что это не анонимная, а псевдоанонимная электронная кассовая система. Пользователи быстро развивались решения, позволяющие обойти этот недостаток. Двумя прямыми решениями были «услуги по отмыванию денег» [2] и развитие распределенных методов [3, 4]. Оба решения основаны на идее смешивания несколько публичных транзакций и отправка их через какой-то промежуточный адрес; что в свою очередь имеет тот недостаток, что требует доверенной третьей стороны. Недавно более креативную схему предложили И. Майерс с соавт. [28]: «Нулевая монета». Зерокойн использует криптографические односторонние аккумуляторы и доказательства с нулевым разглашением, которые позволяют пользователям «конвертируйте» биткойны в зерокоины и тратьте их, используя анонимное доказательство владения вместо явные цифровые подписи на основе открытого ключа. Однако такие доказательства знаний имеют постоянную но неудобный размер - около 30кб (исходя из сегодняшних лимитов Bitcoin), что делает предложение непрактично. Авторы признают, что протокол вряд ли когда-либо будет принят большинством стран. Bitcoin пользователей [5]. 2.2 Функция proof-of-work Создатель Bitcoin Сатоши Накамото описал алгоритм принятия решений большинством голосов как «один ЦП-один голос» и использовал функцию ценообразования с привязкой к ЦП (двойной SHA-256) для своего proof-of-work схема. Поскольку пользователи голосуют за единый заказ истории транзакций [1], разумность и последовательность этого процесса является важнейшим условием для всей системы. Безопасность этой модели имеет два недостатка. Во-первых, для этого требуется 51% ресурсов сети. мощность майнинга должна находиться под контролем честных пользователей. Во-вторых, прогресс системы (исправление ошибок, исправления безопасности и т. д.) требуют, чтобы подавляющее большинство пользователей поддерживало и соглашалось с изменения (это происходит, когда пользователи обновляют программное обеспечение своего кошелька) [6].Наконец то же самое голосование Механизм также используется для коллективных опросов о реализации некоторых функций [7]. Это позволяет нам предположить, каким свойствам должен удовлетворять proof-of-work. функция ценообразования. Такая функция не должна позволять участнику сети иметь существенное влияние. преимущество перед другим участником; это требует паритета между общим оборудованием и высоким Стоимость нестандартных устройств. Из недавних примеров [8] мы видим, что используемая функция SHA-256 в архитектуре Bitcoin этим свойством не обладает, поскольку майнинг становится более эффективным на Графические процессоры и устройства ASIC по сравнению с высокопроизводительными процессорами. Следовательно, Bitcoin создает благоприятные условия для большого разрыва между количеством голосов участников, так как это нарушает принцип «один процессор — один голос», поскольку владельцы графических процессоров и ASIC обладают гораздо большее количество голосов по сравнению с владельцами процессоров. Это классический пример Принцип Парето, согласно которому 20% участников системы контролируют более 80% голосов. Можно утверждать, что такое неравенство не имеет отношения к безопасности сети, поскольку оно не небольшое количество участников, контролирующих большинство голосов, но честность этих участников, что имеет значение. Однако такой аргумент несколько ошибочен, поскольку он скорее является вероятность появления дешевого специализированного оборудования, а не честность участников, которая представляет угрозу. Чтобы продемонстрировать это, возьмем следующий пример. Предположим, злонамеренный человек получает значительную майнинговую мощь, создавая свою собственную майнинг-ферму за счет дешевых 2 однозначно прослеживается уникальное происхождение и конечный получатель. Даже если два участника поменяются средства косвенным путем, правильно разработанный метод поиска пути выявит происхождение и конечный получатель. Также есть подозрение, что Bitcoin не удовлетворяет второму свойству. Некоторые исследователи заявил ([33, 35, 29, 31]), что тщательный анализ blockchain может выявить связь между пользователи сети Bitcoin и их транзакции. Хотя ряд методов доспаривается [25], есть подозрение, что много скрытой личной информации может быть извлечено из общедоступная база данных. Неспособность Bitcoin удовлетворять двум свойствам, изложенным выше, приводит нас к выводу, что это не анонимная, а псевдоанонимная электронная кассовая система. Пользователи быстро развивались решения, позволяющие обойти этот недостаток. Двумя прямыми решениями были «услуги по отмыванию денег» [2] и развитие распределенных методов [3, 4]. Оба решения основаны на идее смешивания несколько публичных транзакций и отправка их через какой-то промежуточный адрес; что в свою очередь имеет тот недостаток, что требует доверенной третьей стороны. Недавно более креативную схему предложили И. Майерс с соавт. [28]: «Нулевая монета». Зерокойн использует криптографические односторонние аккумуляторы и доказательства с нулевым разглашением, которые позволяют пользователям «конвертируйте» биткойны в зерокоины и тратьте их, используя анонимное доказательство владения вместо явные цифровые подписи на основе открытого ключа. Однако такие доказательства знаний имеют постоянную но неудобный размер - около 30кб (исходя из сегодняшних лимитов Bitcoin), что делает предложение непрактично. Авторы признают, что протокол вряд ли когда-либо будет принят большинством стран. Bitcoin пользователей [5]. 2.2 Функция proof-of-work Создатель Bitcoin Сатоши Накамото описал алгоритм принятия решений большинством как «один ЦП-один голос» и использовал функцию ценообразования с привязкой к ЦП (двойной SHA-256) для своего proof-of-work схема. Поскольку пользователи голосуют за единый заказ истории транзакций [1], разумность и последовательность этого процесса является важнейшим условием для всей системы. Безопасность этой модели имеет два недостатка. Во-первых, для этого требуется 51% ресурсов сети. мощность майнинга должна находиться под контролем честных пользователей. Во-вторых, прогресс системы (исправление ошибок, исправления безопасности и т. д.) требуют, чтобы подавляющее большинство пользователей поддерживало и соглашалось с изменения (это происходит, когда пользователи обновляют программное обеспечение своего кошелька) [6].Наконец то же самое голосование Механизм также используется для коллективных опросов о реализации некоторых функций [7]. Это позволяет нам предположить, каким свойствам должен удовлетворять proof-of-work. функция ценообразования. Такая функция не должна позволять участнику сети иметь существенное влияние. преимущество перед другим участником; это требует паритета между общим оборудованием и высоким Стоимость нестандартных устройств. Из недавних примеров [8] мы видим, что используемая функция SHA-256 в архитектуре Bitcoin этим свойством не обладает, поскольку майнинг становится более эффективным на Графические процессоры и устройства ASIC по сравнению с высокопроизводительными процессорами. Таким образом, Bitcoin создает благоприятные условия для большого разрыва между количеством голосов участников, так как это нарушает принцип «один процессор — один голос», поскольку владельцы графических процессоров и ASIC обладают гораздо большее количество голосов по сравнению с владельцами процессоров. Это классический пример Принцип Парето, согласно которому 20% участников системы контролируют более 80% голосов. Можно утверждать, что такое неравенство не имеет отношения к безопасности сети, поскольку оно не небольшое количество участников, контролирующих большинство голосов, но честность этих участников, что имеет значение. Однако такой аргумент несколько ошибочен, поскольку он скорее является вероятность появления дешевого специализированного оборудования, а не честность участников, которая представляет угрозу. Чтобы продемонстрировать это, возьмем следующий пример. Предположим, злонамеренный человек получает значительную майнинговую мощь, создавая свою собственную майнинг-ферму за счет дешевых 2 Комментарии на странице 2

Teknologi CryptoNote

Sekarang kita telah membahas keterbatasan teknologi Bitcoin, kita akan berkonsentrasi pada hal tersebut menyajikan fitur-fitur CryptoNote.

Технология CryptoNote

Теперь, когда мы рассмотрели ограничения технологии PH_0000, мы сосредоточимся на представление возможностей CryptoNote.

Transaksi yang Tidak Dapat Dilacak

Pada bagian ini kami mengusulkan skema transaksi anonim yang memenuhi kedua kondisi tidak dapat dilacak dan kondisi tidak dapat dihubungkan. Fitur penting dari solusi kami adalah otonominya: pengirim tidak diharuskan bekerja sama dengan pengguna lain atau pihak ketiga yang dipercaya untuk melakukan transaksinya; karenanya setiap peserta menghasilkan lalu lintas sampul secara mandiri. 4.1 Tinjauan literatur Skema kami bergantung pada primitif kriptografi yang disebut tanda tangan grup. Pertama kali disajikan oleh D. Chaum dan E. van Heyst [19], memungkinkan pengguna untuk menandatangani pesannya atas nama grup. Setelah menandatangani pesan, pengguna memberikan (untuk tujuan verifikasi) bukan pesan publiknya sendiri 1Ini disebut “batas lunak” — batasan klien referensi untuk membuat blok baru. Keras maksimal kemungkinan ukuran blokir adalah 1 MB 4 mereka jika perlu yang menyebabkan kelemahan utama. Sayangnya, sulit untuk memprediksi kapan hal tersebut akan terjadi konstanta mungkin perlu diubah dan menggantinya dapat menimbulkan konsekuensi yang buruk. Contoh bagus dari perubahan batas hardcode yang menyebabkan konsekuensi bencana adalah pemblokiran batas ukuran disetel ke 250kb1. Batas ini cukup untuk menampung sekitar 10.000 transaksi standar. Di awal tahun 2013, batas tersebut hampir tercapai dan tercapai kesepakatan untuk meningkatkannya batas. Perubahan tersebut diterapkan pada dompet versi 0.8 dan diakhiri dengan pemisahan rantai 24 blok dan serangan pembelanjaan ganda yang berhasil [9]. Meskipun bugnya bukan pada protokol Bitcoin, tapi melainkan di mesin database, hal itu bisa dengan mudah ditangkap dengan stress test sederhana jika ada tidak ada batasan ukuran blok yang diperkenalkan secara artifisial. Konstanta juga berperan sebagai bentuk titik sentralisasi. Meskipun bersifat peer-to-peer Bitcoin, sebagian besar node menggunakan klien referensi resmi [10] yang dikembangkan oleh sekelompok kecil orang. Kelompok ini membuat keputusan untuk menerapkan perubahan pada protokol dan kebanyakan orang menerima perubahan ini terlepas dari “kebenarannya”. Beberapa keputusan menyebabkan diskusi yang memanas bahkan seruan boikot [11], yang menandakan bahwa komunitas dan pengembang mungkin tidak setuju pada beberapa poin penting. Oleh karena itu tampaknya logis untuk memiliki protokol dengan variabel yang dapat dikonfigurasi pengguna dan dapat disesuaikan sendiri sebagai cara yang mungkin untuk menghindari masalah ini. 2.5 Skrip besar Sistem skrip di Bitcoin adalah fitur yang berat dan kompleks. Ini berpotensi memungkinkan seseorang untuk berkreasi transaksi canggih [12], namun beberapa fiturnya dinonaktifkan karena masalah keamanan dan bahkan ada yang belum pernah dipakai [13]. Naskah (termasuk bagian pengirim dan penerima) untuk transaksi terpopuler di Bitcoin tampilannya seperti ini: OP DUP OP HASH160 OP SAMAKAN VERIFIKASI OP CHECKSIG. Skrip ini panjangnya 164 byte sedangkan tujuan satu-satunya adalah untuk memeriksa apakah penerima memilikinya kunci rahasia diperlukan untuk memverifikasi tanda tangannya. 3 Teknologi CryptoNote Sekarang kita telah membahas keterbatasan teknologi Bitcoin, kita akan berkonsentrasi pada hal tersebut menyajikan fitur-fitur CryptoNote. 4 Transaksi yang Tidak Dapat Dilacak Pada bagian ini kami mengusulkan skema transaksi anonim yang memenuhi kedua kondisi tidak dapat dilacak dan kondisi tidak dapat dihubungkan. Fitur penting dari solusi kami adalah otonominya: pengirim tidak diharuskan bekerja sama dengan pengguna lain atau pihak ketiga yang dipercaya untuk melakukan transaksinya; karenanya setiap peserta menghasilkan lalu lintas sampul secara mandiri. 4.1 Tinjauan literatur Skema kami bergantung pada primitif kriptografi yang disebut tanda tangan grup. Pertama kali disajikan oleh D. Chaum dan E. van Heyst [19], memungkinkan pengguna untuk menandatangani pesannya atas nama grup. Setelah menandatangani pesan, pengguna memberikan (untuk tujuan verifikasi) bukan pesan publiknya sendiri 1Ini disebut “batas lunak” — batasan klien referensi untuk membuat blok baru. Keras maksimal kemungkinan ukuran blokir adalah 1 MB 4 7 Jika dipikir-pikir lagi, tampaknya merupakan kesalahan besar jika menjadikan ukuran blok sebagai batas tetap dalam kode. Visa dan Mastercard dapat memproses ribuan, bahkan ratusan ribu transaksi per detik. Namun, transaksi terjadi dalam proses stokastik, terkadang dalam ledakan besar, terkadang diam berjam-jam. Pikirkan volume pertukaran bitcoin. Sepertinya ide bagus untuk merancang sistem yang meningkatkan ukuran blok secara dinamis bila diperlukan untuk mengakomodasi peningkatan lalu lintas transaksi, dan menguranginya secara dinamis bila diperlukan meningkatkan efisiensi bandwidth. Sekarang, terapkan gagasan itu ke semua parameter sistem. Dan selama kita berhati-hati dalam menjaganya sistem dari fishtailing di luar kendali, sh inibisa bekerja dengan baik. https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki Seperti disebutkan sebelumnya, jika variabel dapat menyesuaikan diri, beberapa kontrol harus diterapkan agar dapat disesuaikan menjaga agar sistem tidak berjalan liar di luar kendali. Kami akan membahasnya. Jika ini adalah artikel wikipedia, maka akan diberi label "STUB". Meskipun kita pasti berada di dalamnya bagian memperkenalkan "Masalah Bitcoin," Saya ingin penjelasan lebih lanjut di sini. Mengapa demikian 164 byte tidak dapat diterima untuk tugas sederhana "periksa kunci rahasia"? Seberapa kecil yang bisa mereka peroleh bahasa skrip yang masuk akal? Tapi saya bukan ilmuwan komputer. http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 Tanda tangan grup, seperti yang dijelaskan, memerlukan manajer grup. Manajer grup mampu untuk mencabut anonimitas penanda tangan mana pun. Oleh karena itu, ada sentralisasi yang tertanam dalam suatu kelompok skema tanda tangan.

kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar kami, kami memilih untuk menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Peningkatan privasi memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar, kami memilihe menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 8 Tanda tangan cincin berfungsi seperti ini: Alex ingin membocorkan pesan ke WikiLeaks tentang majikannya. Setiap karyawan di Perusahaannya memiliki pasangan kunci privat/publik (Ri, Ui). Dia menulis tanda tangannya dengan masukan yang ditetapkan sebagai pesannya, m, kunci pribadinya, Ri, dan milik SEMUA ORANG kunci publik, (Ui;i=1...n). Siapa pun (tanpa mengetahui kunci pribadi apa pun) dapat memverifikasinya dengan mudah beberapa pasangan (Rj, Uj) pasti digunakan untuk membuat tanda tangan... seseorang yang bekerja untuk majikan Alex... tapi pada dasarnya ini hanyalah tebakan acak untuk mengetahui perusahaan mana yang dimaksud. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Perhatikan bahwa tanda cincin yang dapat ditautkan yang dijelaskan di sini adalah kebalikan dari "tidak dapat ditautkan" dijelaskan di atas. Di sini, kami mencegat dua pesan, dan kami dapat menentukan apakah pesan tersebut sama pihak yang mengirimkannya, meskipun kami masih belum dapat menentukan siapa pihak tersebut. Itu definisi "tidak dapat ditautkan" yang digunakan untuk membuat Cryptonote berarti kita tidak dapat menentukan apakah pihak yang sama menerimanya. Oleh karena itu, apa yang sebenarnya kita miliki di sini adalah EMPAT hal yang terjadi. Suatu sistem dapat ditautkan atau tidak dapat ditautkan, tergantung pada apakah mungkin untuk menentukan apakah pengirimnya dua pesan adalah sama (terlepas dari apakah hal ini memerlukan pencabutan anonimitas). Dan suatu sistem dapat dibatalkan tautannya atau tidak dapat dibatalkan tautannya, bergantung pada apakah hal itu memungkinkan atau tidak menentukan apakah penerima dua pesan itu sama (terlepas dari apakah atau tidak ini memerlukan pencabutan anonimitas). Tolong jangan salahkan saya atas terminologi buruk ini. Para ahli teori grafik mungkin seharusnya begitu senang. Beberapa dari Anda mungkin lebih nyaman dengan "receiver linkable" versus "sender linkable". http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Ketika saya membaca ini, ini tampak seperti fitur yang konyol. Kemudian saya membaca bahwa itu mungkin fitur untuk pemungutan suara elektronik, dan itu tampaknya masuk akal. Agak keren, dari sudut pandang itu. Tapi aku tidak sepenuhnya yakin tentang penerapan tanda tangan cincin yang dapat dilacak dengan sengaja. http://search.ieice.org/bin/summary.php?id=e95-a_1_151

kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar kami, kami memilih untuk menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar, kami memilihe menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan pada Bitcoin di masa mendatang. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 9 Astaga, penulis whitepaper ini pasti bisa menjelaskannya dengan lebih baik! Katakanlah sebuah perusahaan milik karyawan ingin mengambil suara apakah akan mengakuisisi perusahaan baru tertentu atau tidak aset, dan Alex serta Brenda keduanya adalah karyawan. Perusahaan membekali setiap karyawan a pesan seperti "Saya memilih ya pada Proposisi A!" yang memiliki metainformasi "masalah" [PROP A] dan meminta mereka untuk menandatanganinya dengan tanda cincin yang dapat dilacak jika mereka mendukung proposisi tersebut. Dengan menggunakan tanda tangan cincin tradisional, karyawan yang tidak jujur dapat menandatangani pesan tersebut berkali-kali, mungkin dengan nonce yang berbeda, untuk memilih sebanyak yang mereka suka. Di sisi lain sisi lain, dalam skema tanda tangan cincin yang dapat dilacak, Alex akan memilih, dan kunci pribadinya akan memilikinya telah digunakan pada masalah [PROP A]. Jika Alex mencoba menandatangani pesan seperti "Saya, Brenda, menyetujuinya proposisi A!" untuk "menjebak" Brenda dan memberikan suara ganda, pesan baru ini juga akan menimbulkan masalah [PROP A]. Karena kunci pribadi Alex telah mengatasi masalah [PROP A], identitas Alex akan segera terungkap sebagai penipuan. Jujur saja, itu cukup keren! Kriptografi menegakkan kesetaraan suara. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Makalah ini menarik, pada dasarnya membuat tanda tangan cincin ad-hoc tetapi tanpa satupun persetujuan peserta lain. Struktur tanda tangannya mungkin berbeda; Saya belum menggali dalam, dan saya belum melihat apakah itu aman. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Tanda tangan kelompok ad-hoc adalah: tanda tangan cincin, yaitu tanda tangan kelompok yang tidak ada kelompoknya manajer, tidak ada sentralisasi, namun mengizinkan anggota dalam kelompok ad-hoc untuk mengklaim hal tersebut mereka (belum) mengeluarkan tanda tangan anonim atas nama grup. http://link.springer.com/chapter/10.1007/11908739_9 Menurut pemahaman saya, ini kurang tepat. Dan pemahaman saya kemungkinan besar akan berubah Saya mendalami proyek ini lebih dalam. Tapi dari pemahaman saya, hierarkinya terlihat seperti ini. Tanda grup: manajer grup mengontrol ketertelusuran dan kemampuan menambah atau menghapus anggota dari menjadi penandatangan. Ring sign : Pembentukan grup secara sewenang-wenang tanpa adanya manajer grup. Tidak ada pencabutan anonimitas. Tidak ada cara untuk menolak diri sendiri dari tanda tangan tertentu. Dengan cincin yang dapat dilacak dan dihubungkan tanda tangan, anonimitas agak terukur. Tanda tangan kelompok ad-hoc: seperti tanda tangan cincin, namun anggota dapat membuktikan bahwa mereka tidak membuat tanda tangan tertentu. Hal ini penting ketika siapa pun dalam kelompok dapat membuat tanda tangan. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Algoritme Fujisaki dan Suzuki kemudian diubah oleh penulis untuk memberikan ketepatan waktu. Jadi kami akan menganalisis algoritma Fujisaki dan Suzuki secara bersamaan dengan algoritma baru daripada membahasnya di sini.

kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar kami, kami memilih untuk menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Privasi yang ditingkatkan memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 kunci, tetapi kunci semua pengguna grupnya. Verifier yakin bahwa penandatangan sebenarnya adalah a anggota kelompok, tetapi tidak dapat secara eksklusif mengidentifikasi penandatangannya. Protokol asli memerlukan pihak ketiga yang tepercaya (disebut Manajer Grup), dan dialah yang melakukannya satu-satunya yang bisa melacak penandatangannya. Versi selanjutnya yang disebut tanda tangan cincin, diperkenalkan oleh Rivest dkk. di [34], merupakan skema otonom tanpa Manajer Grup dan anonimitas pencabutan. Berbagai modifikasi skema ini muncul kemudian: tanda tangan cincin yang dapat ditautkan [26, 27, 17] diperbolehkan untuk menentukan apakah dua tanda tangan dihasilkan oleh anggota kelompok yang sama, dapat dilacak tanda tangan cincin [24, 23] membatasi anonimitas berlebihan dengan memberikan kemungkinan untuk melacak penandatangan dua pesan sehubungan dengan metainformasi yang sama (atau “tag” dalam istilah [24]). Konstruksi kriptografi serupa juga dikenal sebagai tanda tangan kelompok ad-hoc [16, 38]. Itu menekankan pembentukan kelompok yang sewenang-wenang, sedangkan skema tanda tangan kelompok/lingkaran lebih menyiratkan a kumpulan anggota yang tetap. Sebagian besar, solusi kami didasarkan pada karya “Traceable Ring Signature” oleh E. Fujisaki dan K.Suzuki [24]. Untuk membedakan algoritma asli dan modifikasi kami, kami akan melakukannya menyebut yang terakhir sebagai tanda dering satu kali, yang menekankan kemampuan pengguna untuk menghasilkan hanya satu tanda dering yang valid tanda tangan di bawah kunci pribadinya. Kami melemahkan properti ketertelusuran dan mempertahankan keterhubungan hanya untuk memberikan ketepatan waktu: kunci publik dapat muncul di banyak set verifikasi asing dan kunci pribadi dapat digunakan untuk menghasilkan tanda tangan anonim yang unik. Jika terjadi pembelanjaan ganda upayakan kedua tanda tangan ini akan dihubungkan bersama, tetapi tidak perlu mengungkapkan penandatangannya untuk tujuan kita. 4.2 Definisi 4.2.1 Parameter kurva elips Sebagai algoritma tanda tangan dasar, kami memilihe menggunakan skema cepat EdDSA, yang dikembangkan dan dilaksanakan oleh D.J. Bernstein dkk. [18]. Seperti ECDSA Bitcoin, ECDSA ini didasarkan pada kurva elips masalah logaritma diskrit, sehingga skema kami juga dapat diterapkan ke Bitcoin di masa depan. Parameter umum adalah: q: bilangan prima; q = 2255 −19; d: unsur Fq; d = −121665/121666; E: persamaan kurva elips; −x2 + y2 = 1 + dx2y2; G: titik dasar; G = (x, −4/5); l : orde prima dari titik dasar; aku = 2252 + 27742317777372353535851937790883648493; \(H_s\): fungsi kriptografi hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): fungsi hash deterministik \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Terminologi Peningkatan privasi memerlukan terminologi baru yang berbeda dengan entitas Bitcoin. private ec-key adalah kunci privat kurva elips standar: angka \(a \in [1, l - 1]\); kunci ec publik adalah kunci publik kurva elips standar: titik A = aG; pasangan kunci satu kali adalah sepasang kunci pribadi dan publik; 5 10 Keterhubungan dalam arti “tanda tangan cincin yang dapat ditautkan” berarti kita dapat mengetahui apakah dua transaksi keluar berasal dari sumber yang sama tanpa mengungkapkan siapa sumbernya. Para penulis melemah keterhubungan sehingga (a) menjaga privasi, namun tetap (b) mendeteksi transaksi apa pun yang menggunakan kunci pribadi kedua kalinya sebagai tidak sah. Oke, jadi ini pertanyaan urutan kejadian. Pertimbangkan skenario berikut. Penambangan saya komputer akan memiliki blockchain saat ini, ia akan memiliki blok transaksi sendiri yang dipanggilnya sah, ia akan mengerjakan blok itu dalam teka-teki proof-of-work, dan ia akan memiliki daftar transaksi yang tertunda untuk ditambahkan ke blok berikutnya. Itu juga akan mengirimkan yang baru transaksi ke dalam kumpulan transaksi yang tertunda itu. Jika saya tidak menyelesaikan blok berikutnya, tapi orang lain melakukannya, saya mendapatkan salinan terbaru dari blockchain. Blok yang sedang saya kerjakan dan daftar transaksi saya yang tertunda, keduanya mungkin memiliki beberapa transaksi yang sekarang dimasukkan ke dalam blockchain. Buka blok saya yang tertunda, gabungkan itu dengan daftar transaksi saya yang tertunda, dan panggil itu kumpulan transaksi saya yang tertunda. Hapus semua yang sekarang secara resmi ada di blockchain. Sekarang, apa yang harus saya lakukan? Haruskah saya terlebih dahulu melakukan dan "menghapus semua pembelanjaan ganda"? Di sisi lain Sebaliknya, haruskah saya menelusuri daftar dan memastikan bahwa setiap kunci pribadi belum ada digunakan, dan jika sudah digunakan dalam daftar saya, maka saya menerima salinan pertama terlebih dahulu, dan karenanya salinan selanjutnya tidak sah. Jadi saya melanjutkan dengan menghapus semua instance setelah yang pertama dari kunci pribadi yang sama. Geometri aljabar tidak pernah menjadi keahlian saya. http://en.wikipedia.org/wiki/EdDSA Kecepatan seperti itu, wow. INI adalah geometri aljabar untuk kemenangan. Bukannya aku tahu apa pun tentang itu. Masalahnya, atau tidak, log diskrit menjadi sangat cepat. Dan komputer kuantum memakannya untuk sarapan. http://link.springer.com/article/10.1007/s13389-012-0027-1 Ini menjadi angka yang sangat penting, namun tidak ada penjelasan atau kutipan bagaimana caranya dipilih. Cukup dengan memilih satu bilangan prima besar yang diketahui saja sudah cukup, tetapi jika memang ada bilangan prima yang diketahui fakta tentang bilangan prima besar ini, yang dapat memengaruhi pilihan kita. Varian berbeda dari cryptonote dapat memilih nilai yang berbeda eh, tapi belum ada pembahasan di tulisan ini tentang bagaimana caranya pilihan kita akan memengaruhi pilihan kita terhadap parameter global lainnya yang tercantum di halaman 5. Makalah ini memerlukan bagian tentang pemilihan nilai parameter.

kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, dalam model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Model kunci/transaksi Bitcoin tradisional. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, dalam model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Mod kunci/transaksi Bitcoin tradisionalel. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 11 Jadi ini seperti Bitcoin, tetapi dengan PO Box anonim yang tak terbatas, hanya dapat ditukarkan oleh penerima menghasilkan kunci pribadi yang anonim seperti tanda tangan cincin. Bitcoin bekerja dengan cara ini. Jika Alex memiliki 0,112 Bitcoin di dompetnya yang baru saja dia terima dari Frank, dia benar-benar memiliki tanda tangan pesan "Saya, [FRANK], kirim 0,112 Bitcoin ke [alex] + H0 + N0" dimana 1) Frank telah menandatangani pesan dengan kunci pribadinya [FRANK], 2) Frank telah menandatangani pesan tersebut dengan publik Alex key, [alex], 3) Frank telah memasukkan beberapa bentuk sejarah bitcoin, H0, dan 4) Frank menyertakan sedikit data acak yang disebut nonce, N0. Jika Alex kemudian ingin mengirim 0,011 Bitcoin ke Charlene, dia akan menerima pesan Frank, dan dia akan menyetelnya ke H1, dan menandatangani dua pesan: satu untuk transaksinya, dan satu lagi untuk perubahan. H1= "Saya, [FRANK], kirim 0,112 Bitcoin ke [alex] + H0 + N" "Saya, [ALEX], kirim 0,011 Bitcoin ke [charlene] + H1 + N1" "Saya, [ALEX], kirim 0,101 Bitcoin sebagai perubahan ke [alex] + H1 + N2." di mana Alex menandatangani kedua pesan dengan kunci pribadinya [ALEX], pesan pertama dengan milik Charlene kunci publik [charlene], pesan kedua dengan kunci publik Alex [alex], dan termasuk sejarah dan beberapa nonces N1 dan N2 yang dihasilkan secara acak dengan tepat. Cryptonote bekerja dengan cara ini: Jika Alex memiliki 0,112 Cryptonote di dompetnya yang baru saja dia terima dari Frank, dia benar-benar memiliki tanda tangan pesan "Saya, [seseorang dalam grup ad-hoc], mengirim 0,112 Cryptonote ke [alamat satu kali] + H0 + Tidak0." Alex mengetahui bahwa ini adalah uangnya dengan memeriksa kunci pribadinya [ALEX]. [alamat satu kali] untuk setiap pesan yang lewat, dan jika dia ingin membelanjakannya, dia melakukannya cara berikut. Dia memilih penerima uang, mungkin Charlene sudah mulai memilih serangan drone Alex malah ingin mengirim uang ke Brenda. Jadi Alex mencari kunci publik Brenda, [brenda], dan menggunakan kunci pribadinya sendiri, [ALEX], untuk menghasilkan alamat satu kali [ALEX+brenda]. Dia kemudian memilih koleksi C yang sewenang-wenang dari jaringan pengguna cryptonote dan dia membangunnya tanda tangan cincin dari grup ad-hoc ini. Kami mengatur riwayat kami seperti pesan sebelumnya, tambahkan nonces, dan lanjutkan seperti biasa? H1 = "Saya, [seseorang dalam grup ad-hoc], mengirim 0,112 Cryptonote ke [alamat satu kali] + H0 + Tidak0." "Saya, [seseorang di koleksi C], mengirim 0,011 Cryptonote ke [alamat-satu-kali-dibuat-dariALEX+brenda] + H1 + N1" "Saya, [seseorang di koleksi C], mengirimkan 0,101 Cryptonote sebagai perubahan ke [alamat-satu-kali-dibuat dari-ALEX+alex] + H1 + N2" Sekarang, Alex dan Brenda memindai semua pesan masuk untuk mencari alamat satu kali yang ada dibuat menggunakan kunci mereka. Jika mereka menemukannya, maka pesan itu adalah pesan baru bagi mereka uang kripto! Itupun transaksinya masih akan mencapai blockchain. Jika koin masuk ke alamat itu diketahui dikirim dari penjahat, kontributor politik, atau dari komite dan akun dengan anggaran yang ketat (yaitu penggelapan), atau jika pemilik baru koin tersebut melakukan kesalahan dan mengirimkan koin-koin ini ke alamat yang sama dengan koin-koin yang diketahui miliknya, jig anonimitas ada di bitcoin.

kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, dalam model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Model kunci/transaksi Bitcoin tradisional. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 kunci pengguna pribadi adalah pasangan (a, b) dari dua kunci pribadi yang berbeda; kunci pelacakan adalah pasangan (a, B) dari kunci ec pribadi dan publik (di mana B = bG dan a ̸= b); kunci pengguna publik adalah pasangan (A, B) dari dua kunci ec publik yang berasal dari (a, b); alamat standar adalah representasi kunci pengguna publik yang diberikan ke dalam string ramah manusia dengan koreksi kesalahan; alamat terpotong adalah representasi paruh kedua (titik B) dari kunci pengguna publik yang diberikan menjadi string ramah manusia dengan koreksi kesalahan. Struktur transaksi tetap serupa dengan struktur di Bitcoin: setiap pengguna dapat memilih beberapa pembayaran masuk independen (keluaran transaksi), tandatangani dengan yang sesuai kunci pribadi dan mengirimkannya ke tujuan yang berbeda. Bertentangan dengan model Bitcoin, di mana pengguna memiliki kunci pribadi dan publik yang unik, di model yang diusulkan pengirim menghasilkan kunci publik satu kali berdasarkan alamat penerima dan beberapa data acak. Dalam pengertian ini, transaksi masuk untuk penerima yang sama dikirim ke a kunci publik satu kali (tidak langsung ke alamat unik) dan hanya penerima yang dapat memulihkannya bagian pribadi yang sesuai untuk menebus dananya (menggunakan kunci pribadi uniknya). Penerima bisa membelanjakan dananya menggunakan tanda tangan cincin, menjaga kepemilikan dan pengeluaran aktualnya tetap anonim. Rincian protokol dijelaskan pada subbagian berikutnya. 4.3 Pembayaran yang tidak dapat ditautkan Alamat Bitcoin klasik, setelah dipublikasikan, menjadi pengenal yang jelas untuk masuk pembayaran, menghubungkannya dan mengaitkannya dengan nama samaran penerima. Jika seseorang ingin menerima transaksi “tidak terikat”, ia harus menyampaikan alamatnya kepada pengirim melalui saluran pribadi. Jika dia ingin menerima transaksi berbeda yang tidak dapat dibuktikan milik pemilik yang sama dia harus membuat semua alamat yang berbeda dan tidak pernah mempublikasikannya dengan nama samarannya sendiri. Publik Pribadi Alice Karol Addr Bob 1 Addr Bob 2 Kunci Bob 1 Kunci Bob 2 Bob Gambar 2. Mod kunci/transaksi Bitcoin tradisionalel. Kami mengusulkan solusi yang memungkinkan pengguna untuk mempublikasikan satu alamat dan menerima tanpa syarat pembayaran yang tidak dapat dihubungkan. Tujuan dari setiap keluaran CryptoNote (secara default) adalah kunci publik, berasal dari alamat penerima dan data acak pengirim. Keuntungan utama melawan Bitcoin adalah setiap kunci tujuan bersifat unik secara default (kecuali pengirim menggunakan data yang sama untuk masing-masing kunci tujuan transaksinya kepada penerima yang sama). Oleh karena itu, tidak ada masalah seperti “penggunaan kembali alamat” oleh desainnya dan tidak ada pengamat yang dapat menentukan apakah ada transaksi yang dikirim ke alamat atau tautan tertentu dua alamat bersama-sama. 6 12 Oleh karena itu, daripada pengguna mengirimkan koin dari alamat (yang sebenarnya merupakan kunci publik) ke alamat (kunci publik lainnya) menggunakan kunci pribadi mereka, pengguna mengirimkan koin dari PO-box satu kali (yang dihasilkan menggunakan kunci publik teman Anda) ke PO-box satu kali (demikian pula) menggunakan kunci pribadinya sendiri. Dalam arti tertentu, kita mengatakan, "Oke, semuanya, ambillah uang itu selagi masih ada dipindahkan! Cukup mengetahui bahwa kunci kita dapat membuka kotak itu dan itu kita tahu berapa banyak uang yang ada di dalam kotak. Jangan pernah menaruh sidik jari Anda di PO Box atau benar-benar menggunakannya, cukup tukarkan kotak yang berisi uang tunai itu sendiri. Dengan begitu kita tidak tahu siapa yang mengirim apa, tapi isi dari pidato publik ini masih tanpa gesekan, sepadan, dapat dibagi, dan masih memiliki semua kualitas uang bagus lainnya yang kita inginkan seperti bitcoin." Satu set kotak PO yang tak terbatas. Anda mempublikasikan alamat, saya punya kunci pribadi. Saya menggunakan kunci pribadi saya dan alamat Anda, dan beberapa data acak, untuk menghasilkan kunci publik. Algoritma ini dirancang sedemikian rupa sehingga, sejak Anda alamat digunakan untuk menghasilkan kunci publik, hanya kunci pribadi ANDA yang berfungsi untuk membuka kunci pesan. Seorang pengamat, Eve, melihat Anda mempublikasikan alamat Anda, dan melihat kunci publik yang saya umumkan. Namun, dia tidak tahu apakah saya mengumumkan kunci publik saya berdasarkan alamat Anda, alamatnya, atau alamat Brenda atau milik Charlene, atau siapa pun. Dia memeriksa kunci pribadinya dengan kunci publik yang saya umumkan dan melihatnya tidak berhasil; itu bukan uangnya. Dia tidak mengetahui kunci pribadi orang lain, dan hanya penerima pesan yang memiliki kunci pribadi yang dapat membuka kunci pesan tersebut. Jadi tidak ada seorang pun mendengarkan dapat menentukan siapa yang menerima uang apalagi mengambil uang tersebut.

Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 13 Saya bertanya-tanya betapa sulitnya menerapkan pilihan kriptografi skema. Elips atau lainnya. Jadi jika suatu skema dilanggar di masa depan, mata uang akan beralih tanpa rasa khawatir. Mungkin sangat menyebalkan. Oke, ini persis seperti yang baru saja saya jelaskan di komentar saya sebelumnya. Tipe Diffe-Hellman pertukarannya rapi. Katakanlah Alex dan Brenda masing-masing mempunyai nomor rahasia, A dan B, dan sebuah nomor mereka tidak peduli untuk menjaga rahasia, a dan b. Mereka ingin menghasilkan rahasia bersama tanpa Eva menemukannya. Diffie dan Hellman menemukan cara agar Alex dan Brenda berbagi nomor publik a dan b, tetapi bukan nomor pribadi A dan B, dan menghasilkan rahasia bersama, K. Menggunakan rahasia bersama ini, K, tanpa ada Eva yang mendengarkan untuk dapat menghasilkan hal yang sama K, Alex dan Brenda sekarang dapat menggunakan K sebagai kunci enkripsi rahasia dan meneruskan pesan rahasia kembali dan sebagainya. Begini cara kerjanya BISA, meskipun harus bekerja dengan angka yang jauh lebih besar dari 100. Kita akan menggunakan 100 karena mengerjakan bilangan bulat modulo 100 sama dengan "membuang semua tapi dua digit terakhir dari sebuah angka." Alex dan Brenda masing-masing memilih A, a, B, dan b. Mereka merahasiakan A dan B. Alex memberi tahu Brenda nilai modulo 100 (hanya dua digit terakhir) dan Brenda memberi tahu Alex nilai b modulo 100. Sekarang Eva tahu (a,b) modulo 100. Tapi Alex tahu (a,b,A) jadi dia dapat menghitung x=abA modulo 100.Alex memotong semuanya kecuali angka terakhir karena kami sedang mengerjakan di bawah bilangan bulat modulo 100 lagi. Demikian pula, Brenda mengetahui (a,b,B) sehingga dia dapat menghitung y=abB modulo 100. Alex sekarang dapat mempublikasikan x dan Brenda dapat mempublikasikan y. Tapi sekarang Alex bisa menghitung yA = abBA modulo 100, dan Brenda bisa menghitung xB = abBA modulo 100. Mereka berdua tahu nomor yang sama! Tapi yang Eva dengar hanyalah (a,b,abA,abB). Dia tidak memiliki cara mudah untuk menghitung abA*B. Sekarang, ini adalah cara berpikir yang paling mudah dan paling tidak aman tentang pertukaran Diffie-Hellman. Ada versi yang lebih aman. Tetapi sebagian besar versi berfungsi karena faktorisasi bilangan bulat dan diskrit logaritma itu sulit, dan kedua permasalahan tersebut mudah diselesaikan oleh komputer kuantum. Saya akan melihat apakah ada versi yang tahan terhadap kuantum. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange "Urutan txn standar" yang tercantum di sini tidak memiliki banyak langkah, seperti TANDA TANGAN. Mereka dianggap remeh di sini. Yang benar-benar buruk, karena urutannya kita barang tanda tangan, informasi yang disertakan dalam pesan yang ditandatangani, dan sebagainya... semua ini luar biasa penting bagi protokol. Melakukan satu atau dua langkah yang salah, bahkan sedikit tidak sesuai, saat menerapkan "the urutan transaksi standar" dapat mempertanyakan keamanan seluruh sistem. Selain itu, bukti-bukti yang disajikan kemudian dalam makalah ini mungkin tidak cukup teliti jika kerangka kerja di mana mereka bekerja didefinisikan secara longgar seperti pada bagian ini.

Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 Publik Pribadi Alice Karol Kunci satu kali Kunci satu kali Kunci satu kali Bob Kunci Bob Alamat Bob Gambar 3. Kunci/model transaksi CryptoNote. Pertama, pengirim melakukan pertukaran Diffie-Hellman untuk mendapatkan rahasia bersama dari datanya dan setengah dari alamat penerima. Kemudian dia menghitung kunci tujuan satu kali, menggunakan kunci bersama rahasia dan paruh kedua alamat. Dua kunci ec yang berbeda diperlukan dari penerima untuk dua langkah ini, jadi alamat CryptoNote standar hampir dua kali lebih besar dari dompet Bitcoin alamat. Penerima juga melakukan pertukaran Diffie-Hellman untuk memulihkannya kunci rahasia. Urutan transaksi standar adalah sebagai berikut: 1. Alice ingin mengirimkan pembayaran kepada Bob, yang telah mempublikasikan alamat standarnya. Dia membongkar alamatnya dan mendapatkan kunci publik Bob (A, B). 2. Alice membangkitkan r acak \(\in\)[1, l−1] dan menghitung kunci publik satu kali \(P = H_s(rA)G +\) B. 3. Alice menggunakan P sebagai kunci tujuan untuk keluaran dan juga mengemas nilai R = rG (sebagai bagian dari bursa Diffie-Hellman) di suatu tempat dalam transaksi. Perhatikan bahwa dia bisa mencipta keluaran lain dengan kunci publik unik: kunci penerima yang berbeda (Ai, Bi) menyiratkan Pi yang berbeda bahkan dengan r yang sama. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan R = rG P = Hs(rA)G + B Penerima kunci publik Data acak pengirim r (A,B) Gambar 4. Struktur transaksi standar. 4. Alice mengirimkan transaksi. 5. Bob memeriksa setiap transaksi yang lewat dengan kunci privatnya (a, b), dan menghitung P ′ = Hs(ar)G + B. Jika transaksi Alice dengan Bob sebagai penerima ada di antara mereka, maka aR = arG = rA dan P′ = P. 7 14 Perhatikan bahwa penulisnya melakukan pekerjaan yang buruk dalam menjaga terminologi mereka tetap lurus teksnya, tetapi terutama di bagian berikutnya. Inkarnasi berikutnya dari makalah ini tentu saja akan terjadi jauh lebih ketat. Dalam teks mereka menyebut P sebagai kunci publik satu kali. Dalam diagram, mereka menyebut R sebagai "Kunci publik Tx" dan P sebagai "Kunci Tujuan". Jika saya ingin menulis ulang ini, saya akan melakukannya secara khusus memaparkan beberapa terminologi sebelum membahas bagian ini. Ell ini sangat besar. Lihat halaman 5. Siapa yang memilih El? Diagram tersebut menggambarkan bahwa transaksi kunci publik R = rG yang bersifat acak dan terpilih oleh pengirim, bukan bagian dari keluaran Tx. Ini karena bisa jadi sama untuk banyak orang transaksi ke banyak orang, dan tidak digunakan KEMUDIAN untuk dibelanjakan. R baru dihasilkan setiap kali Anda ingin menyiarkan transaksi CryptoNote baru. Selanjutnya R hanya digunakan untuk memeriksa apakah Anda adalah penerima transaksi. Ini bukan data sampah, tapi sampah bagi siapa pun tanpa kunci pribadi yang terkait dengan (A,B). Sebaliknya, kunci Tujuan, P = Hs(rA)G + B adalah bagian dari keluaran Tx. Semuanya mengobrak-abrik setiap data transaksi yang lewat harus memeriksa P* yang dihasilkannya sendiri P ini untuk melihat apakah mereka memiliki transaksi yang lewat ini. Siapa pun yang memiliki keluaran transaksi yang belum terpakai (UTXO) akan memiliki banyak Ps yang berserakan dengan jumlah. Untuk menghabiskand, mereka menandatangani beberapa pesan baru termasuk P. Alice harus menandatangani transaksi ini dengan kunci pribadi satu kali yang terkait dengan Kunci Tujuan keluaran transaksi yang tidak terpakai. Setiap kunci tujuan yang dimiliki oleh Alice dilengkapi dengan kunci pribadi satu kali yang juga dimiliki (mungkin) oleh Alice. Setiap kali Alice menginginkannya kirimkan isi kunci tujuan kepadaku, atau Bob, atau Brenda, atau Charlie atau Charlene, dia menggunakan kunci pribadinya untuk menandatangani transaksi. Setelah menerima transaksi, saya akan menerima yang baru Kunci publik Tx, kunci publik Tujuan baru, dan saya akan dapat memulihkan kunci pribadi satu kali yang baru x. Menggabungkan kunci pribadi satu kali saya, x, dengan Tujuan publik transaksi baru kuncinya adalah cara kami mengirim transaksi baru

  1. Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a, b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan memberikan gambaran umum tentang algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8
  2. Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a,b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan menyediakan general deskripsi algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8 15 Seperti apa keluaran transaksi yang belum terpakai di sini? Diagram menunjukkan bahwa keluaran transaksi hanya terdiri dari dua titik data: jumlah dan kunci tujuan. Tapi ini tidak cukup karena ketika saya mencoba menggunakan "output" ini saya masih perlu mengetahui R=rG. Ingat, r dipilih oleh pengirim, dan R a) digunakan untuk mengenali catatan kripto yang masuk sebagai milik Anda milik sendiri dan b) digunakan untuk menghasilkan kunci pribadi satu kali yang digunakan untuk "mengklaim" uang kripto Anda. Bagian tentang ini yang aku tidak mengerti? Mengambil teori "oke, kita punya ini tanda tangan dan transaksi, dan kami menyebarkannya bolak-balik" ke dunia pemrograman "oke informasi apa khususnya yang membentuk seorang individu UTXO?" Cara terbaik untuk menjawab pertanyaan itu adalah dengan menggali isi kode yang sepenuhnya tidak dikomentari. Bagus sekali, tim bytecoin. Ingat: keterhubungan berarti "apakah orang yang sama mengirim?" dan unlinkability berarti "melakukan hal yang sama orang menerima?". Jadi suatu sistem bisa bersifat linkable atau non-linkable, unlinkable atau non-unlinkable. Mengganggu, aku tahu. Jadi ketika Nic van Saberhagen di sini mengatakan "...pembayaran yang masuk dikaitkan dengan satu kali saja kunci publik yang tidak dapat ditautkan oleh penonton," mari kita lihat apa maksudnya. Pertama, pertimbangkan situasi di mana Alice mengirim Bob dua transaksi terpisah dari transaksi yang sama alamat ke alamat yang sama. Di alam semesta Bitcoin, Alice telah melakukan kesalahan mengirim dari alamat yang sama sehingga transaksi telah gagal memenuhi keinginan kami secara terbatas keterhubungan. Terlebih lagi, karena dia mengirimkan uang ke alamat yang sama, dia menggagalkan keinginan kami untuk tidak dapat dihubungkan. Transaksi bitcoin ini (sepenuhnya) dapat ditautkan dan tidak dapat dibatalkan tautannya. Di sisi lain, di dunia cryptonote, katakanlah Alice mengirimi Bob beberapa cryptonote, menggunakan alamat publik Bob. Dia memilih sebagai kumpulan kunci publiknya yang mengaburkan semua publik yang dikenal kunci di wilayah metro Washington DC. Alex menghasilkan kunci publik satu kali menggunakan miliknya sendiri informasi dan informasi publik Bob. Dia mengirimkan uangnya, dan pengamat mana pun akan melakukannya hanya dapat memperoleh informasi "Seseorang dari wilayah metro Washington DC mengirim 2,3 cryptonotes ke alamat publik satu kali XYZ123." Kami memiliki kendali probabilistik atas keterhubungan di sini, jadi kami menyebutnya "hampir tidak dapat ditautkan". Kami juga hanya melihat satu kali kunci publik yang menjadi tujuan pengiriman uang. Bahkan jika kita mencurigai penerimanya adalah Bob, kami tidak memiliki kunci pribadinya sehingga kami tidak dapat menguji apakah transaksi tersebut lewat milik Bob apalagi menghasilkan kunci pribadi satu kali untuk menebus cryptonote-nya. Jadi ini pada kenyataannya, sama sekali "tidak dapat dihubungkan". Jadi, ini adalah trik yang paling rapi. Siapa yang ingin mempercayai MtGox lain? Kita mungkin saja nyaman menyimpan sejumlah BTC di Coinbase, tetapi keamanan bitcoin yang paling utama adalah dompet fisik. Itu tidak nyaman. Dalam hal ini, Anda dapat memberikan setengah dari kunci pribadi Anda tanpa mengorbankan kunci pribadi Anda kemampuan sendiri untuk membelanjakan uang. Saat melakukan ini, yang Anda lakukan hanyalah memberi tahu seseorang cara memutus ketidakterhubungan. Yang lainnya properti CN yang bertindak seperti mata uang dipertahankan, sebagai bukti terhadap pembelanjaan ganda dan yang lainnya.

  3. Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a, b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan memberikan gambaran umum tentang algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8

  4. Bob dapat memulihkan kunci pribadi satu kali yang sesuai: x = Hs(aR) + b, sehingga P = xG. Dia dapat membelanjakan output ini kapan saja dengan menandatangani transaksi dengan x. Transaksi Terima kasih kunci publik Keluaran terima kasih Jumlah Kunci tujuan P′ = Hs(aR)G + bG kunci publik satu kali x = Hs(aR) + b kunci pribadi satu kali Penerima kunci pribadi (a,b) R P' ?= hal Gambar 5. Pengecekan transaksi masuk. Hasilnya Bob mendapat pembayaran masuk, terkait dengan kunci publik satu kali tidak dapat dihubungkan untuk penonton. Beberapa catatan tambahan: • Ketika Bob “mengenali” transaksinya (lihat langkah 5) praktis dia hanya menggunakan setengah dari transaksinya informasi pribadi: (a, B). Pasangan ini, juga dikenal sebagai kunci pelacakan, dapat diteruskan kepada pihak ketiga (Carol). Bob dapat mendelegasikan kepadanya pemrosesan transaksi baru. Bob tidak perlu mempercayai Carol secara eksplisit, karena dia tidak dapat memulihkan kunci rahasia satu kali p tanpa kunci pribadi lengkap Bob (a,b). Pendekatan ini berguna ketika Bob kekurangan bandwidth atau kekuatan komputasi (ponsel pintar, dompet perangkat keras, dll.). • Jika Alice ingin membuktikan bahwa dia mengirimkan transaksi ke alamat Bob, dia dapat mengungkapkannya r atau gunakan protokol tanpa pengetahuan apa pun untuk membuktikan bahwa dia mengetahui r (misalnya dengan menandatangani transaksi dengan r). • Jika Bob ingin memiliki alamat yang kompatibel dengan audit di mana semua transaksi masuk berada dapat ditautkan, dia dapat mempublikasikan kunci pelacakannya atau menggunakan alamat yang terpotong. Alamat itu hanya mewakili satu kunci ec publik B, dan bagian sisanya yang diperlukan oleh protokol adalah diturunkan darinya sebagai berikut: a = Hs(B) dan A = Hs(B)G. Dalam kedua kasus tersebut, setiap orang demikian mampu “mengenali” semua transaksi masuk Bob, namun tentu saja tidak ada yang bisa membelanjakannya dana yang terkandung di dalamnya tanpa kunci rahasia b. 4.4 Tanda tangan cincin satu kali Protokol yang didasarkan pada tanda tangan dering satu kali memungkinkan pengguna mencapai ketidakterhubungan tanpa syarat. Sayangnya, jenis tanda tangan kriptografi biasa mengizinkan pelacakan transaksi ke mereka masing-masing pengirim dan penerima. Solusi kami terhadap kekurangan ini terletak pada penggunaan tanda tangan yang berbeda jenisnya dibandingkan yang saat ini digunakan dalam sistem kas elektronik. Pertama-tama kami akan menyediakan general deskripsi algoritma kami tanpa referensi eksplisit uang elektronik. Tanda tangan dering satu kali berisi empat algoritma: (GEN, SIG, VER, LNK): GEN: mengambil parameter publik dan mengeluarkan pasangan ec (P, x) dan kunci publik I. SIG: mengambil pesan m, satu set \(S'\) kunci publik {Pi}i̸=s, sepasang (Ps, xs) dan menghasilkan tanda tangan \(\sigma\) dan himpunan \(S = \)S'\( \cup \{P_s\}\). 8 16 Ya, jadi sekarang kami memiliki a) alamat pembayaran dan b) ID pembayaran. Kritikus mungkin bertanya "apakah kita benar-benar perlu melakukan ini? Lagi pula, jika pedagang menerima 112.00678952 CN tepatnya, dan itu pesanan saya, dan saya punya tangkapan layar atau tanda terima atau apa pun, bukan tingkat presisi yang gila, cukup?" Jawabannya adalah "mungkin, sering kali, dalam kehidupan sehari-hari, transaksi tatap muka.” Namun, situasi yang lebih umum (terutama di dunia digital) adalah: seorang pedagang menjual sekumpulan objek yang masing-masing mempunyai harga tetap. Katakanlah benda A 0,001 CN, benda B 0,01 CN dan benda C adalah 0,1 CN. Nah kalau merchant mendapat order 1.618 CN, banyak sekali (banyak!) cara untuk mengatur pesanan untuk pelanggan. Jadi tanpa semacam ID pembayaran, mengidentifikasi apa yang disebut pesanan "unik" pelanggan dengan apa yang disebut biaya "unik" mereka ketertiban menjadi mustahil. Yang lebih lucu lagi: jika semua yang ada di toko online saya harganya tepat 1,0 CN, dan saya mendapatkan 1000 pelanggan sehari? Dan Anda ingin membuktikan bahwa Anda membeli tepat 3 benda dua minggu lalu? Tanpa ID pembayaran? Semoga berhasil, sobat. Singkat cerita: Saat Bob menerbitkan alamat pembayaran, dia mungkin juga menerbitkan a ID pembayaran juga (lihat, misalnya deposit Poloniex XMR). Hal ini berbeda dengan apa yang dijelaskan dalam teks di sini di mana Alice adalah orang yang menghasilkan ID pembayaran. Pasti ada cara bagi Bob untuk menghasilkan ID pembayaran juga. (a,b) Ingatlah bahwa kunci pelacakan (a,B) dapat dipublikasikan; kehilangan kerahasiaan nilai surat wasiat 'a' tidak melanggar kemampuan Anda untuk membelanjakan uang atau membiarkan orang mencuri dari Anda (menurut saya... itu akan terjadi dibuktikan), itu hanya akan memungkinkan orang untuk melihat semua transaksi masuk. Alamat yang terpotong, seperti yang dijelaskan dalam paragraf ini, hanya mengambil bagian "pribadi" dari kunci tersebut dan menghasilkannya dari bagian "publik". Mengungkap nilai 'a' akan menghilangkan ketidakterhubungan tetapi akan mempertahankan sisa transaksi. Yang dimaksud penulis adalah "tidak dapat ditautkan" karena tidak dapat ditautkan mengacu pada penerima dan dapat ditautkan mengacu pada pengirimnya. Jelas juga bahwa penulis tidak menyadari bahwa ada dua aspek berbeda dalam keterhubungan. Karena transaksi adalah objek berarah pada grafik, maka akan timbul dua pertanyaan: "Apakah kedua transaksi ini ditujukan kepada orang yang sama?" dan "apakah kedua transaksi ini akan datang dari orang yang sama?" Ini adalah kebijakan "tidak ada jalan kembali" yang mendasari properti tidak dapat ditautkannya CryptoNote bersyarat. Artinya, Bob dapat memilih agar transaksi masuknya tidak dapat dibatalkan tautannya menggunakan kebijakan ini. Ini adalah klaim yang mereka buktikan berdasarkan Random Oracle Model. Kita akan membahasnya; yang Acak Oracle memiliki pro dan kontra.

VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif pembuktian menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci =    wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif pembuktian menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci =    wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 17 Mungkin ini bodoh, tapi kehati-hatian harus diberikan saat menyatukan S dan P_s. Jika Anda hanya menambahkan kunci publik terakhir sampai akhir, ketidakterhubungan rusak karena siapa pun memeriksa transaksi yang lewat cukup memeriksa kunci publik terakhir yang terdaftar di setiap transaksi dan booming. Itu kunci publiknya berhubungan dengan pengirimnya. Jadi setelah penyatuan, generator nomor pseudorandom harus ada digunakan untuk mengubah kunci publik yang dipilih. "...sampai pemilik membuat tanda tangan kedua menggunakan pasangan kunci yang sama." Saya berharap penulisnya? akan menguraikan hal ini. Saya yakin ini berarti "pastikan bahwa setiap kali Anda memilih sekumpulan kunci publik untuk dikaburkan sendiri, Anda memilih satu set yang benar-benar baru tanpa dua kunci yang sama." Yang tampak seperti a kondisi yang cukup kuat untuk ditempatkan pada ketidakterhubungan. Mungkin "Anda memilih kumpulan acak baru semua kunci yang mungkin" dengan asumsi bahwa, meskipun persimpangan nontrivial pasti akan terjadi terjadi, hal itu tidak akan sering terjadi. Apa pun yang terjadi, saya perlu menggali lebih dalam pernyataan ini. Ini menghasilkan tanda tangan cincin. Bukti tanpa pengetahuan itu luar biasa: Saya menantang Anda untuk membuktikan kepada saya bahwa Anda mengetahui sebuah rahasia tanpa mengungkapkan rahasianya. Misalnya saja kita berada di pintu masuk gua yang berbentuk donat, dan di belakang gua (di luar pandangan dari pintu masuk) ada opintu baru ke mana Anda mengaku kamu punya kuncinya. Jika Anda pergi ke satu arah, ia selalu membiarkan Anda lewat, tetapi jika Anda pergi ke arah yang lain arah lain, Anda memerlukan kunci. Tapi Anda bahkan tidak mau TUNJUKKAN kuncinya kepada saya, apalagi tunjukkan padaku bahwa itu membuka pintu. Tapi Anda ingin membuktikan kepada saya bahwa Anda tahu cara membukanya pintu. Dalam suasana interaktif, saya melempar koin. Kepala di kiri, ekor di kanan, dan Anda turun ke bawah gua berbentuk donat ke arah mana pun koin mengarahkan Anda. Di belakang, di luar pandanganku, kamu buka pintu untuk kembali ke sisi lain. Kami mengulangi eksperimen melempar koin sampai saya puas bahwa Anda memiliki kuncinya. Tapi itu jelas merupakan bukti tanpa pengetahuan yang INTERAKTIF. Ada versi non-interaktif di mana Anda dan saya tidak perlu berkomunikasi; dengan cara ini, tidak ada penyadap yang dapat mengganggu. http://en.wikipedia.org/wiki/Zero-knowledge_proof Ini kebalikan dari definisi sebelumnya.

VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif bukti menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci =    wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 VER: mengambil pesan m, satu set S, tanda tangan \(\sigma\) dan menghasilkan output “benar” atau “salah”. LNK: mengambil himpunan I = {Ii}, tanda tangan \(\sigma\) dan menghasilkan keluaran “tertaut” atau “indep”. Ide di balik protokol ini cukup sederhana: pengguna membuat tanda tangan diperiksa oleh sekumpulan kunci publik, bukan kunci publik unik. Identitas penandatangan adalah tidak dapat dibedakan dari pengguna lain yang kunci publiknya ada di set sampai pemiliknya memproduksinya tanda tangan kedua menggunakan pasangan kunci yang sama. Kunci pribadi x0 \(\cdots\) xi \(\cdots\) xn Kunci publik P0 \(\cdots\) pi \(\cdots\) hal Cincin Tanda tangan tanda tangan verifikasi Gambar 6. Anonimitas tanda tangan dering. GEN: Penanda tangan mengambil kunci rahasia acak \(x \in [1, l - 1]\) dan menghitung kunci rahasia yang sesuai kunci publik P = xG. Selain itu, dia menghitung kunci publik lain I = xHp(P) yang akan kita lakukan sebut "gambar kunci". SIG: Penandatangan menghasilkan tanda tangan dering satu kali dengan pengetahuan nol non-interaktif bukti menggunakan teknik dari [21]. Dia memilih subset acak \(S'\) dari n dari pengguna lain. kunci publik Pi, pasangan kuncinya sendiri (x, P) dan gambar kunci I. Misalkan \(0 \leq s \leq n\) menjadi indeks rahasia penanda tangan di S (sehingga kunci publiknya adalah Ps). Dia memilih {qi | secara acak saya = 0 . . . n} dan {wi | saya = 0 . . . n, i ̸= s} dari (1 . . . l) dan menerapkan transformasi berikut: Li = ( qiG, jika saya = s qiG + wiPi, jika saya ̸= s Ri = ( qiHp(Pi), jika saya = s qiHp(Pi) + wiI, jika saya ̸= s Langkah selanjutnya adalah mendapatkan tantangan non-interaktif: c = Hs(m, L1, . . . , Ln, R1, . . . , Rn) Akhirnya penandatangan menghitung responsnya: ci =    wi, jika saya ̸= s c - nP saya=0 ci mod aku, jika saya = s ri = ( qi, jika saya ̸= s qs−csx mod aku, jika saya = s Tanda tangan yang dihasilkan adalah \(\sigma\) = (I, c1, . . . , cn, r1, . . . , rn). 9 18 Seluruh area ini adalah cryptonote agnostic, hanya menggambarkan algoritma tanda tangan cincin tanpa referensi mata uang. Saya curiga beberapa notasinya konsisten dengan makalah lainnya, meskipun begitu. Misalnya, x adalah kunci rahasia "acak" yang dipilih di GEN, yang menghasilkan kunci publik P dan gambar kunci publik I. Nilai x ini adalah nilai yang dihitung Bob di bagian 6 halaman 8. Jadi begini mulai menjernihkan beberapa kebingungan dari uraian sebelumnya. Ini keren; uang tidak ditransfer dari "alamat publik Alice ke publik Bob alamat." Ini sedang ditransfer dari alamat satu kali ke alamat satu kali. Jadi, dalam arti tertentu, inilah cara kerjanya. Jika Alex memiliki beberapa cryptonotes karena seseorang mengirimkannya kepadanya, ini berarti dia memiliki kunci pribadi yang diperlukan untuk mengirimkannya kepada Bob. Dia menggunakan pertukaran Diffie-Hellman menggunakan informasi publik Bob untuk menghasilkan alamat satu kali yang baru dan cryptonotes ditransfer ke alamat itu. Sekarang, karena pertukaran DH (yang mungkin aman) digunakan untuk menghasilkan alamat satu kali yang baru kepada siapa Alex mengirimkan CN-nya, Bob adalah satu-satunya yang memiliki kunci pribadi yang diperlukan untuk mengulanginya di atas. Jadi sekarang, Bob adalah Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation Penjumlahan harus diindeks pada j bukan i. Setiap c_i adalah sampah acak (karena w_i acak) kecuali pantat c_iterkait dengan kunci sebenarnya yang terlibat dalam tanda tangan ini. Nilai c adalah a hash dari informasi sebelumnya. Saya pikir ini mungkin mengandung kesalahan ketik yang lebih buruk daripada menggunakan kembali indeks 'i', karena sepertinya c_s untuk didefinisikan secara implisit, bukan eksplisit. Memang, jika kita mengambil persamaan ini dengan keyakinan, maka kita menentukan bahwa c_s = (1/2)c - (1/2) jumlah_i neq s c_i. Artinya, hash dikurangi sejumlah angka acak. Sebaliknya jika penjumlahan ini dimaksudkan untuk dibaca "c_s = (c - sum_j neq s c_j) mod l", lalu kita ambil hash dari informasi kita sebelumnya, buat sekumpulan angka acak, kurangi semua angka acak itu dari hash, dan itu memberi kita c_s. Ini tampaknya terjadi apa yang "seharusnya" terjadi berdasarkan intuisi saya, dan cocok dengan langkah verifikasi di halaman 10. Tapi intuisi bukanlah matematika. Saya akan menggali lebih dalam tentang ini. Sama seperti sebelumnya; semua ini akan menjadi sampah acak kecuali yang terkait dengan yang sebenarnya kunci publik penandatangan x. Kecuali kali ini, inilah yang saya harapkan dari strukturnya: r_i acak untuk i!=s dan r_s hanya ditentukan oleh rahasia x dan nilai indeks s dari q_i dan c_i.

VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku′ n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya keluaran Bob memulihkan pasangan kunci satu kali (pi, Pi) dan menyimpannya di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku' n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya output Bob memulihkan keypair satu kali (pi, Pi) dan stbijih itu di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 19 Saat ini, saya sangat bingung. Alex menerima pesan M dengan tanda tangan (I,c_1, ..., c_n, r_1, ..., r_n) dan daftar publik kunci S. dan dia menjalankan VER. Ini akan menghitung L_i' dan R_i' Ini memverifikasi bahwa c_s = c - sum_i neq s c_i pada halaman sebelumnya. Awalnya saya SANGAT (ha) bingung. Siapa pun dapat menghitung L_i' dan R_i'. Memang, masing-masing r_i dan c_i telah diterbitkan dalam tanda tangan sigma sama dengan nilai I. Himpunan S = P_i dari semua kunci publik juga telah dipublikasikan. Jadi siapapun yang pernah melihat sigma dan himpunan kunci S = P_i akan mendapatkan nilai yang sama untuk L_i' dan R_i' dan karenanya periksa tanda tangannya. Tapi kemudian saya ingat bagian ini hanya menjelaskan algoritma tanda tangan, bukan "cek jika ditandatangani, periksa apakah DIKIRIM KEPADA SAYA, dan jika demikian, belanjakan uangnya." Ini HANYA bagian tanda tangan dari permainan. Saya tertarik untuk membaca Lampiran A ketika saya akhirnya sampai di sana. Saya ingin melihat perbandingan operasi demi operasi skala penuh antara Cryptonote dengan Bitcoin. Juga, listrik/keberlanjutan. Bagian algoritma apa yang merupakan "input" di sini? Saya yakin masukan transaksi adalah Jumlah dan kumpulan UTXO yang jumlahnya lebih besar daripada jumlah Jumlah. Ini tidak jelas. “Target persembunyian?” Saya telah memikirkan hal ini selama beberapa menit sekarang dan saya masih belum memikirkannya gagasan paling kabur tentang apa artinya itu. Serangan pembelanjaan ganda hanya dapat dilakukan dengan memanipulasi kunci yang dianggap digunakan oleh sebuah node kumpulan gambar \(I\). "Tingkat ambiguitas" = n tetapi jumlah total kunci publik yang termasuk dalam transaksi adalah n+1. Artinya, tingkat ambiguitas adalah "berapa banyak orang LAIN yang Anda inginkan orang banyak?" Jawabannya mungkin, secara default, "sebanyak mungkin".

VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku' n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya keluaran Bob memulihkan pasangan kunci satu kali (pi, Pi) dan menyimpannya di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 VER: Pemverifikasi memeriksa tanda tangan dengan menerapkan transformasi terbalik: ( aku saya = riG + ciPi R′ saya = riHp(Pi) + ciI Akhirnya, pemverifikasi memeriksa apakah nP saya=0 ci ?= Hs(m, L′ 0, . . . , aku' n, R′ 0, . . . , R′ n) mod l Jika persamaan ini benar, pemverifikasi menjalankan algoritma LNK. Jika tidak, pemverifikasi akan menolak tanda tangan. LNK: Pemverifikasi memeriksa apakah saya telah digunakan pada tanda tangan sebelumnya (nilai-nilai ini disimpan di set I). Penggunaan ganda menyiratkan bahwa dua tanda tangan dihasilkan di bawah kunci rahasia yang sama. Arti protokol: dengan menerapkan transformasi L, penandatangan membuktikan bahwa dia mengetahuinya sedemikian rupa sehingga setidaknya satu Pi = xG. Untuk membuat bukti ini tidak dapat diulangi, kami memperkenalkan gambar kuncinya karena saya = xHp(P). Penandatangan menggunakan koefisien yang sama (ri, ci) untuk membuktikan pernyataan yang hampir sama: dia mengetahui x sedemikian rupa sehingga setidaknya satu \(H_p(P_i) = I \cdot x^{-1}\). Jika pemetaan \(x \to I\) adalah injeksi: 1. Tidak ada seorang pun yang dapat memulihkan kunci publik dari gambar kunci dan mengidentifikasi penandatangannya; 2. Penanda tangan tidak boleh membuat dua tanda tangan dengan huruf I berbeda dan x yang sama. Analisis keamanan lengkap disediakan di Lampiran A. 4.5 Transaksi CryptoNote standar Dengan menggabungkan kedua metode (kunci publik yang tidak dapat ditautkan dan tanda tangan cincin yang tidak dapat dilacak), Bob berhasil mencapainya tingkat privasi baru dibandingkan dengan skema Bitcoin asli. Itu mengharuskan dia untuk menyimpan saja satu kunci pribadi (a, b) dan publikasikan (A, B) untuk mulai menerima dan mengirim transaksi anonim. Saat memvalidasi setiap transaksi, Bob juga hanya melakukan dua perkalian kurva elips dan satu penambahan per output untuk memeriksa apakah suatu transaksi miliknya. Untuk setiap miliknya output Bob memulihkan keypair satu kali (pi, Pi) dan stbijih itu di dompetnya. Masukan apa saja bisa terbukti secara tidak langsung mempunyai pemilik yang sama hanya jika mereka muncul dalam satu transaksi. Di Faktanya, hubungan ini jauh lebih sulit untuk dibangun karena tanda tangan satu kali saja. Dengan tanda tangan cincin, Bob dapat secara efektif menyembunyikan setiap masukan dari masukan orang lain; semua mungkin pembelanja akan sama besarnya, bahkan pemilik sebelumnya (Alice) tidak memiliki informasi lebih dari itu pengamat mana pun. Saat menandatangani transaksinya, Bob menentukan n output luar negeri dengan jumlah yang sama dengan miliknya keluaran, mencampur semuanya tanpa partisipasi pengguna lain. Bob sendiri (dan juga orang lain) tidak mengetahui apakah pembayaran ini telah dibelanjakan: suatu keluaran dapat digunakan dalam ribuan tanda tangan sebagai faktor ambiguitas dan tidak pernah menjadi sasaran persembunyian. Ganda pemeriksaan pembelanjaan terjadi pada fase LNK saat memeriksa kumpulan gambar kunci yang digunakan. Bob dapat memilih sendiri derajat ambiguitasnya: n = 1 berarti probabilitas yang dimilikinya menghabiskan output adalah probabilitas 50%, n = 99 menghasilkan 1%. Ukuran tanda tangan yang dihasilkan bertambah linier sebagai O(n+1), sehingga peningkatan anonimitas memerlukan biaya transaksi tambahan bagi Bob. Dia juga bisa setel n = 0 dan buat tanda tangan cincinnya hanya terdiri dari satu elemen, namun ini akan langsung terjadi mengungkapkan dia sebagai seorang pemboros. 10 20 Ini menarik; sebelumnya, kami menyediakan cara bagi penerima, Bob, untuk melakukan semua MASUK transaksi tidak dapat dibatalkan tautannya baik dengan memilih setengah dari kunci pribadinya secara deterministik atau dengan menerbitkan setengah kunci pribadinya sebagai publik. Ini adalah kebijakan yang tidak ada jalan mundurnya. Di sini, kita lihat cara pengirim, Alex, untuk memilih satu transaksi keluar yang dapat ditautkan, namun kenyataannya begini mengungkapkan Alex sebagai pengirim ke seluruh jaringan. Ini BUKAN kebijakan yang tidak bisa mundur. Ini adalah transaksi demi transaksi. Apakah ada kebijakan ketiga? Bisakah penerima, Bob, membuat ID pembayaran unik untuk Alex itu tidak pernah berubah, mungkin menggunakan pertukaran Diffie-Hellman? Jika ada yang memasukkan pembayaran itu ID yang dibundel di suatu tempat dalam transaksinya ke alamat Bob, pasti berasal dari Alex. Dengan cara ini, Alex tidak perlu mengungkapkan dirinya ke seluruh jaringan dengan memilih untuk menghubungkan jaringan tertentu transaksi, namun dia masih dapat mengidentifikasi dirinya kepada orang yang dia kirimi uang. Bukankah ini yang dilakukan Poloniex?

Transaksi Terima kasih masukannya Keluaran0 . . . Keluaran saya . . . Keluaran Gambar kunci Tanda tangan Tanda Tangan Cincin Kunci tujuan Keluaran1 Kunci tujuan Keluaran Transaksi luar negeri Keluaran pengirim Kunci tujuan Pasangan kunci satu kali Satu kali kunci pribadi Saya = xHp(P) hal, x Gambar 7. Pembuatan tanda tangan dering dalam transaksi standar. 5 Bukti Kerja Egalitarian Pada bagian ini kami mengusulkan dan menerapkan algoritma proof-of-work yang baru. Tujuan utama kami adalah untuk menutup kesenjangan antara penambang CPU (mayoritas) dan GPU/FPGA/ASIC (minoritas). Itu benar tepat bahwa beberapa pengguna dapat memiliki keunggulan tertentu dibandingkan yang lain, tetapi investasi mereka harus tumbuh setidaknya secara linear dengan kekuatan. Secara umum, memproduksi perangkat dengan tujuan khusus harus menjadi sesedikit mungkin menguntungkan. 5.1 Pekerjaan terkait Protokol Bitcoin proof-of-work asli menggunakan fungsi penetapan harga intensif CPU SHA-256. Ini terutama terdiri dari operator logika dasar dan hanya mengandalkan kecepatan komputasi prosesor, oleh karena itu sangat cocok untuk implementasi multicore/konveyor. Namun, komputer modern tidak dibatasi oleh jumlah operasi per detik saja, tetapi juga berdasarkan ukuran memori. Meskipun beberapa prosesor bisa jauh lebih cepat dibandingkan prosesor lainnya [8], ukuran memori cenderung bervariasi antar mesin. Fungsi harga terikat memori pertama kali diperkenalkan oleh Abadi et al dan didefinisikan sebagai “fungsi yang waktu komputasinya didominasi oleh waktu yang dihabiskan untuk mengakses memori” [15]. Ide utamanya adalah untuk membangun sebuah algoritma yang mengalokasikan blok data yang besar (“scratchpad”) dalam memori yang dapat diakses secara relatif lambat (misalnya, RAM) dan “mengakses sebuah urutan lokasi yang tidak dapat diprediksi” di dalamnya. Satu blok harus cukup besar untuk dapat diawetkan data lebih menguntungkan daripada menghitung ulang untuk setiap akses. Algoritmenya juga harus mencegah paralelisme internal, maka N thread simultan memerlukan memori N kali lebih banyak sekaligus. Dwork et al [22] menyelidiki dan memformalkan pendekatan ini sehingga mereka menyarankan pendekatan lain varian fungsi penetapan harga: “Mbound”. Satu lagi karya milik F. Coelho [20] yang 11 Transaksi Terima kasih masukannya Keluaran0 . . . Keluaran saya . . . Keluaran Gambar kunci Tanda tangan Tanda Tangan Cincin Kunci tujuan Keluaran1 Kunci tujuan Keluaran Transaksi luar negeri Keluaran pengirim Kunci tujuan Pasangan kunci satu kali Satu kali kunci pribadi Saya = xHp(P) hal, x Gambar 7. Pembuatan tanda tangan dering dalam transaksi standar. 5 Bukti Kerja Egalitarian Di bagian ini kami mengusulkan dan mendasarkan algoritma proof-of-work baru. Tujuan utama kami adalah untuk menutup kesenjangan antara penambang CPU (mayoritas) dan GPU/FPGA/ASIC (minoritas). Itu benar tepat bahwa beberapa pengguna dapat memiliki keunggulan tertentu dibandingkan yang lain, tetapi investasi mereka harus tumbuh setidaknya secara linear dengan kekuatan. Secara umum, memproduksi perangkat dengan tujuan khusus harus menjadi sesedikit mungkin menguntungkan. 5.1 Pekerjaan terkait Protokol Bitcoin proof-of-work asli menggunakan fungsi penetapan harga intensif CPU SHA-256. Ini terutama terdiri dari operator logika dasar dan hanya mengandalkan kecepatan komputasi prosesor, oleh karena itu sangat cocok untuk implementasi multicore/konveyor. Namun, komputer modern tidak dibatasi oleh jumlah operasi per detik saja, tetapi juga berdasarkan ukuran memori. Meskipun beberapa prosesor bisa jauh lebih cepat dibandingkan prosesor lainnya [8], ukuran memori cenderung bervariasi antar mesin. Fungsi harga terikat memori pertama kali diperkenalkan oleh Abadi et al dan didefinisikan sebagai “fungsi yang waktu komputasinya didominasi oleh waktu yang dihabiskan untuk mengakses memori” [15]. Ide utamanya adalah untuk membangun sebuah algoritma yang mengalokasikan blok data yang besar (“scratchpad”) dalam memori yang dapat diakses secara relatif lambat (misalnya, RAM) dan “mengakses sebuah urutan lokasi yang tidak dapat diprediksi” di dalamnya. Satu blok harus cukup besar untuk dapat diawetkan data lebih menguntungkan daripada menghitung ulang untuk setiap akses. Algoritmenya juga harus mencegah paralelisme internal, maka N thread simultan memerlukan memori N kali lebih banyak sekaligus. Dwork et al [22] menyelidiki dan memformalkan pendekatan ini sehingga mereka menyarankan pendekatan lain varian fungsi penetapan harga: “Mbound”. Satu lagi karya milik F. Coelho [20] yang 11 21 Tampaknya ini adalah UTXO kami: jumlah dan kunci tujuan. Jika Alex yang membuat transaksi standar ini dan mengirimkannya ke Bob, maka Alex juga memiliki kunci privatnya untuk masing-masing ini. Saya sangat menyukai diagram ini, karena menjawab beberapa pertanyaan sebelumnya. Masukan Txn terdiri dari satu set keluaran Txn dan kekamu gambar. Kemudian ditandatangani dengan tanda tangan cincin, termasuk semuanya kunci pribadi yang dimiliki Alex untuk semua transaksi luar negeri yang terbungkus dalam kesepakatan itu. Itu Output Txn terdiri dari jumlah dan kunci tujuan. Penerima transaksi dapat, sesuka hati, buat kunci pribadi satu kali seperti yang dijelaskan sebelumnya di makalah untuk dibelanjakan uangnya. Akan menyenangkan untuk mengetahui seberapa cocoknya ini dengan kode sebenarnya... Tidak, Nic van Saberhagen menjelaskan secara longgar beberapa properti dari algoritma bukti kerja, tanpa benar-benar menjelaskan algoritma itu. Algoritma CryptoNight sendiri MEMBUTUHKAN analisis mendalam. Ketika saya membaca ini, saya tergagap. Haruskah investasi tumbuh setidaknya secara linear dengan kekuatan, atau seharusnya investasi tumbuh paling banyak secara linear dengan kekuatan? Dan kemudian saya menyadari; Saya, sebagai penambang, atau investor, biasanya memikirkan "seberapa besar kekuatan yang bisa saya peroleh untuk investasi?" bukan "berapa banyak investasi yang diperlukan untuk jumlah listrik yang tetap?" Tentu saja, nyatakan investasi dengan I dan daya dengan P. Jika I(P) adalah investasi sebagai fungsi daya dan P(I) adalah kekuatan sebagai fungsi investasi, keduanya akan berbanding terbalik satu sama lain (di mana pun invers bisa ada). Dan jika I(P) lebih cepat dari linier maka P(I) lebih lambat dari linier. Oleh karena itu, akan ada penurunan tingkat pengembalian bagi investor. Dengan kata lain, apa yang ingin penulis katakan di sini adalah: "Tentu saja, jika Anda berinvestasi lebih banyak, Anda akan mendapatkan lebih banyak kekuatan. Tapi kita harus mencoba membuat tingkat pengembaliannya lebih rendah." Investasi CPU pada akhirnya akan terbatas secara sub-linear; pertanyaannya adalah apakah penulisnya telah merancang algoritma POW yang akan memaksa ASIC untuk juga melakukan hal ini. Haruskah “mata uang masa depan” hipotetis selalu ditambang dengan sumber daya yang paling lambat/terbatas? Makalah yang ditulis oleh Abadi dkk (yang ditulis oleh beberapa insinyur Google dan Microsoft) adalah, pada dasarnya, menggunakan fakta bahwa selama beberapa tahun terakhir ukuran memori menjadi jauh lebih kecil variansi antar mesin dibandingkan kecepatan prosesor, dan dengan rasio investasi-daya yang lebih dari linier. Dalam beberapa tahun, hal ini mungkin harus dikaji ulang! Semuanya adalah perlombaan senjata... Membangun fungsi hash sulit; membangun fungsi hash yang memenuhi batasan ini tampaknya lebih sulit. Tulisan ini sepertinya tidak memiliki penjelasan yang sebenarnya hashing algoritma CryptoNight. Saya pikir ini adalah implementasi SHA-3 yang berbasis memori di postingan forum tapi saya tidak tahu... dan itulah intinya. Itu harus dijelaskan.

mengusulkan solusi paling efektif: “Hokkaido”. Sepengetahuan kami, karya terakhir yang didasarkan pada gagasan pencarian pseudo-acak dalam array besar adalah algoritma yang dikenal sebagai "scrypt" oleh C. Percival [32]. Berbeda dengan fungsi sebelumnya yang menjadi fokusnya derivasi kunci, dan bukan sistem proof-of-work. Meskipun demikian, scrypt dapat memenuhi tujuan kita: ini berfungsi dengan baik sebagai fungsi penetapan harga dalam masalah konversi parsial hash seperti SHA-256 di Bitcoin. Saat ini scrypt telah diterapkan di Litecoin [14] dan beberapa fork Bitcoin lainnya. Namun, implementasinya tidak terlalu terikat pada memori: rasio “waktu akses memori / keseluruhan time” tidak cukup besar karena setiap instance hanya menggunakan 128 KB. Ini mengizinkan penambang GPU menjadi kira-kira 10 kali lebih efektif dan terus meninggalkan kemungkinan penciptaan secara relatif perangkat penambangan yang murah namun sangat efisien. Selain itu, konstruksi scrypt itu sendiri memungkinkan pertukaran linier antara ukuran memori dan Kecepatan CPU karena fakta bahwa setiap blok di scratchpad hanya diturunkan dari blok sebelumnya. Misalnya, Anda dapat menyimpan setiap blok kedua dan menghitung ulang blok lainnya dengan cara yang malas, yaitu saja ketika hal itu menjadi perlu. Indeks pseudo-acak diasumsikan terdistribusi secara seragam, maka nilai yang diharapkan dari perhitungan ulang blok tambahan adalah 1 \(2 \cdot N\), dimana N adalah nomornya dari iterasi. Waktu komputasi keseluruhan bertambah kurang dari setengahnya karena ada juga operasi yang tidak bergantung pada waktu (waktu konstan) seperti menyiapkan alas gores dan hashmelanjutkan setiap iterasi. Menghemat 2/3 memori membutuhkan biaya 1 3 \(\cdot\) T+1 3 \(\cdot\) \(2 \cdot N\) = N perhitungan ulang tambahan; 9/10 menghasilkan 1 10 \(\cdot\) T+. . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Mudah untuk menunjukkan bahwa menyimpan hanya 1 s dari semua blok meningkatkan waktu kurang dari faktor s−1 2. Hal ini pada gilirannya menyiratkan bahwa mesin dengan CPU 200 kali lebih cepat dibandingkan chip modern yang hanya mampu menyimpan 320 byte scratchpad. 5.2 Algoritma yang diusulkan Kami mengusulkan algoritma terikat memori baru untuk fungsi penetapan harga proof-of-work. Itu bergantung pada akses acak ke memori lambat dan menekankan ketergantungan latensi. Berbeda dengan scrypt every blok baru (panjang 64 byte) bergantung pada semua blok sebelumnya. Hasilnya bersifat hipotetis "penghemat memori" akan meningkatkan kecepatan penghitungannya secara eksponensial. Algoritme kami memerlukan sekitar 2 Mb per instance karena alasan berikut: 1. Cocok dengan cache L3 (per inti) prosesor modern, yang seharusnya menjadi mainstream dalam beberapa tahun; 2. Memori internal satu megabyte adalah ukuran yang hampir tidak dapat diterima untuk pipeline ASIC modern; 3. GPU dapat menjalankan ratusan instance secara bersamaan, namun dibatasi dalam hal lain: Memori GDDR5 lebih lambat dari cache CPU L3 dan luar biasa karena bandwidthnya kecepatan akses acak. 4. Perluasan scratchpad secara signifikan memerlukan peningkatan iterasi, yang mana dalam hal ini giliran menyiratkan peningkatan waktu secara keseluruhan. Panggilan “berat” di jaringan p2p yang tidak dapat dipercaya dapat menyebabkan kerentanan serius, karena node wajib memeriksa proof-of-work setiap blok baru. Jika sebuah node menghabiskan banyak waktu pada setiap evaluasi hash, maka node tersebut dapat dengan mudah DDoS oleh banjir objek palsu dengan data kerja sewenang-wenang (nilainonce). 12 mengusulkan solusi paling efektif: “Hokkaido”. Sepengetahuan kami, karya terakhir yang didasarkan pada gagasan pencarian pseudo-acak dalam array besar adalah algoritma yang dikenal sebagai "scrypt" oleh C. Percival [32]. Berbeda dengan fungsi sebelumnya yang menjadi fokusnya derivasi kunci, dan bukan sistem proof-of-work. Meskipun demikian, scrypt dapat memenuhi tujuan kita: ini berfungsi dengan baik sebagai fungsi penetapan harga dalam masalah konversi parsial hash seperti SHA-256 di Bitcoin. Saat ini scrypt telah diterapkan di Litecoin [14] dan beberapa fork Bitcoin lainnya. Namun, implementasinya tidak terlalu terikat pada memori: rasio “waktu akses memori / keseluruhan time” tidak cukup besar karena setiap instance hanya menggunakan 128 KB. Ini mengizinkan penambang GPU menjadi kira-kira 10 kali lebih efektif dan terus meninggalkan kemungkinan penciptaan secara relatif perangkat penambangan yang murah namun sangat efisien. Selain itu, konstruksi scrypt itu sendiri memungkinkan pertukaran linier antara ukuran memori dan Kecepatan CPU karena fakta bahwa setiap blok di scratchpad hanya diturunkan dari blok sebelumnya. Misalnya, Anda dapat menyimpan setiap blok kedua dan menghitung ulang blok lainnya dengan cara yang malas, yaitu saja ketika hal itu menjadi perlu. Indeks pseudo-acak diasumsikan terdistribusi secara seragam, maka nilai yang diharapkan dari perhitungan ulang blok tambahan adalah 1 \(2 \cdot N\), dimanaN adalah nomornya dari iterasi. Waktu komputasi keseluruhan bertambah kurang dari setengahnya karena ada juga operasi yang tidak bergantung pada waktu (waktu konstan) seperti menyiapkan alas gores dan hashmelanjutkan setiap iterasi. Menghemat 2/3 memori membutuhkan biaya 1 3 \(\cdot\) T+1 3 \(\cdot\) \(2 \cdot N\) = N perhitungan ulang tambahan; 9/10 menghasilkan 1 10 \(\cdot\) T+. . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Mudah untuk menunjukkan bahwa menyimpan hanya 1 s dari semua blok meningkatkan waktu kurang dari faktor s−1 2. Hal ini pada gilirannya menyiratkan bahwa mesin dengan CPU 200 kali lebih cepat dibandingkan chip modern yang hanya mampu menyimpan 320 byte scratchpad. 5.2 Algoritma yang diusulkan Kami mengusulkan algoritma terikat memori baru untuk fungsi penetapan harga proof-of-work. Itu bergantung pada akses acak ke memori lambat dan menekankan ketergantungan latensi. Berbeda dengan scrypt every blok baru (panjang 64 byte) bergantung pada semua blok sebelumnya. Hasilnya bersifat hipotetis "penghemat memori" akan meningkatkan kecepatan penghitungannya secara eksponensial. Algoritme kami memerlukan sekitar 2 Mb per instance karena alasan berikut: 1. Cocok dengan cache L3 (per inti) prosesor modern, yang seharusnya menjadi mainstream dalam beberapa tahun; 2. Memori internal satu megabyte adalah ukuran yang hampir tidak dapat diterima untuk pipeline ASIC modern; 3. GPU dapat menjalankan ratusan instance secara bersamaan, namun dibatasi dalam hal lain: Memori GDDR5 lebih lambat dari cache CPU L3 dan luar biasa karena bandwidthnya kecepatan akses acak. 4. Perluasan scratchpad secara signifikan memerlukan peningkatan iterasi, yang mana dalam hal ini giliran menyiratkan peningkatan waktu secara keseluruhan. Panggilan “berat” di jaringan p2p yang tidak dapat dipercaya dapat menyebabkan kerentanan serius, karena node wajib memeriksa proof-of-work setiap blok baru. Jika sebuah node menghabiskan banyak waktu pada setiap evaluasi hash, maka node tersebut dapat dengan mudah DDoS oleh banjir objek palsu dengan data kerja sewenang-wenang (nilainonce). 12 22 Sudahlah, itu koin scrypt? Dimana algoritmanya? Yang saya lihat hanyalah sebuah iklan. Di sinilah Cryptonote, jika algoritma PoW mereka bermanfaat, akan benar-benar bersinar. Bukan itu sungguh SHA-256, sebenarnya bukan scrypt. Ini baru, terikat memori, dan non-rekursif.

6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung relasi aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berurusan dengan pertukaran antara menyeimbangkan biaya dan keuntungan dari biaya dan menetapkan biayanya sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berkaitan dengan pertukaran antara penyeimbangan the biaya dan keuntungan dari biaya dan menetapkan sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 23 Unit atom. Saya suka itu. Apakah ini setara dengan Satoshi? Jika demikian, berarti akan ada 185 miliar cryptonote. Saya tahu ini pada akhirnya harus diubah dalam beberapa halaman, atau mungkin ada kesalahan ketik? Jika hadiah dasarnya adalah "semua koin yang tersisa" maka hanya satu blok yang cukup untuk mendapatkan semua koin. Instamin. Di sisi lain, jika hal ini seharusnya proporsional dengan perbedaan waktu antara sekarang dan tanggal penghentian produksi koin? Itu akan terjadi masuk akal. Juga, di duniaku, dua tanda lebih besar dari seperti ini berarti "lebih besar dari". Apakah penulisnya mungkin maksudnya lain? Jika penyesuaian terhadap kesulitan terjadi di setiap blok maka penyerang dapat memiliki lahan yang sangat besar mesin menambang dan mematikan dalam interval waktu yang dipilih dengan cermat. Hal ini dapat menyebabkan ledakan yang kacau (atau jatuh ke titik nol) pada tingkat kesulitan, jika formula penyesuaian tingkat kesulitan tidak diredam dengan tepat. Tidak diragukan lagi bahwa metode Bitcoin tidak cocok untuk penghitungan ulang cepat, tetapi gagasan tentang inersia dalam sistem ini perlu dibuktikan, bukan dianggap remeh. Selanjutnya osilasi dalam kesulitan jaringan belum tentu menjadi masalah kecuali jika hal itu mengakibatkan fluktuasi yang nyata persediaan koin - dan perubahan kesulitan yang sangat cepat dapat menyebabkan "koreksi berlebihan". Waktu yang dihabiskan, terutama dalam rentang waktu yang singkat seperti beberapa menit, akan sebanding dengan “total jumlah blok yang dibuat di jaringan." Konstanta proporsionalitas akan tumbuh dengan sendirinya seiring waktu, mungkin secara eksponensial jika CN lepas landas. Mungkin merupakan ide yang lebih baik untuk menyesuaikan kesulitan untuk menjaga "total blok yang dibuat pada jaringan sejak blok terakhir ditambahkan ke rantai utama" dalam beberapa nilai konstan, atau dengan variasi terbatas atau semacamnya. Jika algoritma adaptif yaitu komputasi mudah diimplementasikan dapat ditentukan, ini tampaknya menyelesaikan masalah. Namun, jika kita menggunakan metode itu, seseorang yang memiliki lahan pertambangan besar bisa saja menutup lahan pertaniannya selama beberapa jam, dan hidupkan kembali. Untuk beberapa blok pertama, lahan pertanian tersebut akan berhasil bank. Jadi sebenarnya cara ini akan memunculkan satu hal menarik: penambangan menjadi (rata-rata) a kalah tanpa ROI, terutama karena semakin banyak orang yang menggunakan jaringan. Jika penambangannya sulit jaringan yang dilacak dengan sangat dekat hashrate, entah bagaimana saya ragu orang akan menambang sebanyak mereka saat ini lakukan. Atau, di sisi lain, alih-alih menjaga lahan pertambangan mereka tetap beroperasi 24/7, mereka malah mengubahnya menyala selama 6 jam, mati selama 2 jam, hidup selama 6 jam, mati selama 2 jam, atau semacamnya. Beralih saja ke koin lain selama beberapa jam, tunggu hingga tingkat kesulitannya mereda, lalu lanjutkan lagi untuk mendapatkan tambahan tersebut blok profitabilitas saat jaringan beradaptasi. Dan tahukah Anda? Ini sebenarnya mungkin salah satu skenario penambangan terbaik yang pernah saya pikirkan... Ini bisa bersifat melingkar, tetapi jika waktu pembuatan blok rata-rata sekitar satu menit, bisakah kita melakukannya? gunakan jumlah blok sebagai proksi untuk "waktu yang dihabiskan?"

6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berurusan dengan pertukaran antara menyeimbangkan biaya dan keuntungan dari biaya dan menetapkan biayanya sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berkaitan dengan pertukaran antara penyeimbangan the biaya dan keuntungan dari biaya dan menetapkan sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 24 Oke, jadi kita punya blockchain, dan setiap blok memiliki stempel waktu SELAIN sekedar menjadi dipesan. Ini jelas dimasukkan hanya untuk kesulitan penyesuaian, karena ada stempel waktunya sangat tidak dapat diandalkan, seperti yang disebutkan. Apakah kita diperbolehkan memiliki stempel waktu yang bertentangan dalam rantai? Jika Blok A berada sebelum Blok B dalam rantai tersebut, dan semuanya konsisten dalam hal keuangan, tapi Blok A sepertinya dibuat setelah Blok B? Karena, mungkin, ada yang memilikinya sebagian besar jaringan? Apakah itu oke? Mungkin karena keuangannya tidak salah. Oke, jadi saya benci kesewenang-wenangan ini "hanya 80% blok yang sah untuk blockchain utama" pendekatan. Itu dimaksudkan untuk mencegah pembohong mengubah stempel waktunya? Tapi sekarang, ia menambahkan insentif bagi semua orang untuk berbohong tentang stempel waktunya dan hanya memilih median. Silakan jelaskan. Artinya “untuk blok ini, hanya mencakup transaksi yang menyertakan biaya lebih besar dari p%, lebih disukai dengan biaya lebih besar dari 2p%" atau sesuatu seperti itu? Apa yang mereka maksud dengan palsu? Jika transaksi tersebut konsisten dengan riwayat masa lalu blockchain, dan transaksi tersebut mencakup biaya yang memuaskan para penambang, apakah itu tidak cukup? Nah, tidak, belum tentu. Jika tidak ada ukuran blok maksimum, tidak ada yang bisa menahan pengguna jahat dari sekadar mengunggah sejumlah besar transaksi ke dirinya sendiri sekaligus hanya untuk memperlambat jaringan. Aturan inti untuk ukuran blok maksimum mencegah orang membuang sampah dalam jumlah besar data di blockchain sekaligus hanya untuk memperlambat segalanya. Namun aturan seperti itu tentu saja harus dilakukan bersikap adaptif - selama musim Natal, misalnya, kita dapat memperkirakan lalu lintas akan melonjak, dan ukuran blok menjadi sangat besar, dan segera setelah itu, ukuran blok kemudian turun lagi. Jadi kita memerlukan a) semacam batasan adaptif atau b) batasan yang cukup besar sehingga 99%. puncak Natal yang masuk akal tidak akan merusak batasnya. Tentu saja, yang kedua itu tidak mungkin dilakukan perkiraan - siapa yang tahu apakah suatu mata uang akan berhasil? Lebih baik membuatnya adaptif dan tidak khawatir tentang hal itu. Tapi kemudian kita mempunyai masalah teori kontrol: bagaimana membuat ini adaptif tanpanya kerentanan terhadap serangan atau osilasi liar & gila? Perhatikan bahwa metode adaptif tidak menghentikan pengguna jahat untuk mengumpulkan sejumlah kecil uang data sampah dari waktu ke waktu di blockchain menyebabkan pembengkakan jangka panjang. Ini adalah masalah yang berbeda semuanya dan koin cryptonote memiliki masalah serius.

6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung hubungan aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berurusan dengan pertukaran antara menyeimbangkan biaya dan keuntungan dari biaya dan menetapkan biayanya sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 6 Keuntungan lebih lanjut 6.1 Emisi halus Batas atas jumlah keseluruhan koin digital CryptoNote adalah: MSupply = 264 −1 satuan atom. Ini adalah batasan alami yang hanya didasarkan pada batasan implementasi, bukan berdasarkan intuisi seperti “N koin seharusnya cukup untuk siapa pun”. Untuk menjamin kelancaran proses emisi kami menggunakan formula blok berikut hadiah: BaseReward = (MSupply −A) ≫18, di mana A adalah jumlah koin yang dihasilkan sebelumnya. 6.2 Parameter yang dapat disesuaikan 6.2.1 Kesulitan CryptoNote berisi algoritma penargetan yang mengubah kesulitan setiap blok. Ini mengurangi waktu reaksi sistem ketika laju hash jaringan meningkat atau menyusut secara intensif, mempertahankan tingkat blok yang konstan. Metode Bitcoin asli menghitung relasi aktual dan menargetkan rentang waktu antara blok 2016 terakhir dan menggunakannya sebagai pengali untuk blok saat ini kesulitan. Jelas ini tidak cocok untuk perhitungan ulang yang cepat (karena inersia yang besar) dan menghasilkan osilasi. Ide umum di balik algoritme kami adalah menjumlahkan semua pekerjaan yang diselesaikan oleh node dan membaginya dengan waktu yang telah mereka habiskan. Ukuran pekerjaan adalah nilai kesulitan yang sesuai di setiap blok. Namun karena stempel waktu yang tidak akurat dan tidak dapat dipercaya, kami tidak dapat menentukan waktu yang tepat interval waktu antar blok. Seorang pengguna dapat menggeser stempel waktunya ke masa depan dan waktu berikutnya intervalnya mungkin sangat kecil atau bahkan negatif. Agaknya akan ada beberapa insiden semacam ini, jadi kita tinggal mengurutkan stempel waktu dan menghilangkan outliernya (yaitu 20%). Kisaran nilai sisanya adalah waktu yang dihabiskan untuk 80% blok terkait. 6.2.2 Batasan ukuran Pengguna membayar untuk menyimpan blockchain dan berhak memilih ukurannya. Setiap penambang berkaitan dengan pertukaran antara penyeimbangan the biaya dan keuntungan dari biaya dan menetapkan sendiri “batas lunak” untuk membuat blok. Aturan inti untuk ukuran blok maksimum juga diperlukan mencegah blockchain dibanjiri transaksi palsu, namun nilai ini seharusnya tidak dikodekan secara keras. Misalkan MN adalah nilai median dari N ukuran blok terakhir. Kemudian “batas keras” untuk ukurannya menerima blok adalah \(2 \cdot M_N\). Ini mencegah blockchain membengkak tetapi masih memungkinkan batasnya perlahan tumbuh seiring waktu jika perlu. Ukuran transaksi tidak perlu dibatasi secara eksplisit. Itu dibatasi oleh ukuran sebuah balok; dan jika seseorang ingin membuat transaksi besar dengan ratusan input/output (atau dengan tingkat ambiguitas yang tinggi dalam tanda tangan cincin), ia dapat melakukannya dengan membayar biaya yang cukup. 6.2.3 Hukuman kelebihan ukuran Seorang penambang masih memiliki kemampuan untuk mengisi satu blok penuh dengan transaksi tanpa biaya miliknya hingga maksimum ukuran \(2 \cdot M_b\). Meskipun hanya mayoritas penambang yang dapat menggeser nilai median, masih ada a 13 25 Dengan mengubah skala waktu sehingga satu satuan waktu menjadi N blok, ukuran rata-rata blok, secara teoritis, masih dapat tumbuh secara eksponensial secara proporsional hingga 2ˆt. Di sisi lain, batasan yang lebih umum di blok berikutnya adalah M_nf(M_n) untuk beberapa fungsi f. Sifat f apa yang akan dimilikinya kita memilih untuk menjamin "pertumbuhan yang wajar" dalam ukuran blok? Kemajuan dari ukuran blok (setelah waktu penskalaan ulang) akan menjadi seperti ini: M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... Dan tujuannya di sini adalah untuk memilih f sehingga barisan ini tumbuh tidak lebih cepat dari, katakanlah, secara linear, atau mungkin bahkan sebagai Log(t). Tentu saja, jika f(M_n) = a untuk suatu konstanta a, barisan ini adalah sebenarnya M_n aM_n aˆ2M_n aˆ3M_n ... Dan, tentu saja, satu-satunya cara untuk membatasi pertumbuhan linear maksimal adalah dengan memilih a=1. Tentu saja hal ini tidak mungkin dilakukan. Itu tidak memungkinkan pertumbuhan sama sekali. Sebaliknya, jika f(M_n) adalah fungsi non-konstanta, maka situasinya jauh lebih buruk. rumit dan memungkinkan solusi yang elegan. Saya akan memikirkan hal ini sebentar. Biaya ini harus cukup besar untuk mendiskon penalti kelebihan ukuran dari bagian berikutnya. Kenapa pengguna umum diasumsikan laki-laki ya? Hah?

kemungkinan untuk mengasapi blockchain dan menghasilkan beban tambahan pada node. Untuk mencegah peserta jahat dari pembuatan blok besar kami memperkenalkan fungsi penalti: Hadiah Baru = Hadiah Dasar \(\cdot\) Ukuran Blk jamak −1 2 Aturan ini diterapkan hanya ketika BlkSize lebih besar dari ukuran blok bebas minimal yang seharusnya mendekati maksimal (10kb, \(M_N \cdot 110\%\)). Penambang diizinkan membuat blok dengan “ukuran biasa” dan genap melampauinya dengan keuntungan ketika biaya keseluruhan melebihi denda. Namun biayanya kemungkinan tidak akan meningkat kuadratik berbeda dengan nilai penalti sehingga akan terjadi keseimbangan. 6.3 Skrip transaksi CryptoNote memiliki subsistem skrip yang sangat minimalis. Pengirim menentukan ekspresi Φ = f (x1, x2, . . . , xn), dimana n adalah jumlah kunci publik tujuan {Pi}n saya=1. Hanya lima biner operator yang didukung: min, max, sum, mul dan cmp. Ketika penerima membelanjakan pembayaran ini, dia menghasilkan \(0 \leq k \leq n\) tanda tangan dan meneruskannya ke input transaksi. Proses verifikasi cukup evaluasi Φ dengan xi = 1 untuk memeriksa tanda tangan yang valid untuk kunci publik Pi, dan xi = 0. Verifier menerima bukti iffΦ > 0. Meskipun sederhana, pendekatan ini mencakup setiap kasus yang mungkin terjadi: • Tanda tangan Multi-/Ambang Batas. Untuk multi-tanda tangan “M-out-of-N” gaya Bitcoin (yaitu penerima harus memberikan setidaknya \(0 \leq M \leq N\) tanda tangan yang sah) Φ = x1+x2+. . .+xN \(\geq M\) (untuk kejelasan kami menggunakan notasi aljabar umum). Tanda tangan ambang batas tertimbang (beberapa kunci mungkin lebih penting dari yang lain) dapat dinyatakan sebagai Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Dan skenario di mana kunci utama berhubungan dengan Φ = maks(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Mudah untuk menunjukkan bahwa kasus secanggih apa pun bisa terjadi dinyatakan dengan operator-operator ini, yaitu mereka membentuk basis. • Perlindungan kata sandi. Kepemilikan kata sandi rahasia setara dengan pengetahuan kunci pribadi, yang secara deterministik diturunkan dari kata sandi: k = KDF(s). Oleh karena itu, penerima dapat membuktikan bahwa dia mengetahui kata sandinya dengan memberikan tanda tangan lain di bawah kunci k. Pengirim cukup menambahkan kunci publik yang sesuai ke keluarannya sendiri. Perhatikan bahwa ini metode ini jauh lebih aman daripada “teka-teki transaksi” yang digunakan di Bitcoin [13], di mana kata sandi secara eksplisit diteruskan dalam input. • Kasus-kasus yang merosot. Φ = 1 berarti siapa pun dapat membelanjakan uangnya; Φ = 0 menandai output sebagai tidak dapat dibelanjakan selamanya. Jika skrip keluaran yang digabungkan dengan kunci publik terlalu besar untuk pengirim, dia dapat menggunakan tipe keluaran khusus, yang menunjukkan bahwa penerima akan memasukkan data ini ke dalam masukannya sedangkan pengirim hanya memberikan hash saja. Pendekatan ini mirip dengan “bayar-ke-hash” Bitcoin fitur, tapi alih-alih menambahkan perintah skrip baru, kami menangani kasus ini di struktur data tingkat. 7 Kesimpulan Kami telah menyelidiki kelemahan utama di Bitcoin dan mengusulkan beberapa kemungkinan solusi. Fitur-fitur bermanfaat ini dan pengembangan berkelanjutan kami menjadikan sistem uang elektronik baru CryptoNote saingan serius bagi Bitcoin, mengungguli semua cabangnya. 14 kemungkinan untuk mengasapi blockchain dan menghasilkan beban tambahan pada node. Untuk mencegah peserta jahat dari pembuatan blok besar kami memperkenalkan fungsi penalti: Hadiah Baru = Hadiah Dasar \(\cdot\) Ukuran Blk jamak −1 2 Aturan ini diterapkan hanya ketika BlkSize lebih besar dari ukuran blok bebas minimal yang seharusnya mendekati maksimal (10kb, \(M_N \cdot 110\%\)). Penambang diizinkan membuat blok dengan “ukuran biasa” dan genap melampauinya dengan keuntungan ketika biaya keseluruhan melebihi denda. Namun biayanya kemungkinan tidak akan meningkat kuadratik berbeda dengan nilai penalti sehingga akan terjadi keseimbangan. 6.3 Skrip transaksi CryptoNote memiliki subsistem skrip yang sangat minimalis. Pengirim menentukan ekspresi Φ = f (x1, x2, . . . , xn), dimana n adalah jumlah kunci publik tujuan {Pi}n saya=1. Hanya lima biner operator yang didukung: min, max, sum, mul dan cmp. Ketika penerima membelanjakan pembayaran ini, dia menghasilkan \(0 \leq k \leq n\) tanda tangan dan meneruskannya ke input transaksi. Proses verifikasi cukup evaluasi Φ dengan xi = 1 untuk memeriksa tanda tangan yang valid untuk kunci publik Pi, dan xi = 0. Verifier menerima bukti iffΦ > 0. Meskipun sederhana, pendekatan ini mencakup setiap kasus yang mungkin terjadi: • Tanda tangan Multi-/Ambang Batas. Untuk multi-tanda tangan “M-out-of-N” gaya Bitcoin (yaitu penerima harus memberikan setidaknya \(0 \leq M \leq N\) tanda tangan yang sah) Φ = x1+x2+. . .+xN \(\geq M\) (untuk kejelasan kami menggunakan notasi aljabar umum). Tanda tangan ambang batas tertimbang (beberapa kunci mungkin lebih penting dari yang lain) dapat dinyatakan sebagai Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Dan skenarioio dimana kunci utama berhubungan dengan Φ = maks(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Mudah untuk menunjukkan bahwa kasus secanggih apa pun bisa terjadi dinyatakan dengan operator-operator ini, yaitu mereka membentuk basis. • Perlindungan kata sandi. Kepemilikan kata sandi rahasia setara dengan pengetahuan kunci pribadi, yang secara deterministik diturunkan dari kata sandi: k = KDF(s). Oleh karena itu, penerima dapat membuktikan bahwa dia mengetahui kata sandinya dengan memberikan tanda tangan lain di bawah kunci k. Pengirim cukup menambahkan kunci publik yang sesuai ke keluarannya sendiri. Perhatikan bahwa ini metode ini jauh lebih aman daripada “teka-teki transaksi” yang digunakan di Bitcoin [13], di mana kata sandi secara eksplisit diteruskan dalam input. • Kasus-kasus yang merosot. Φ = 1 berarti siapa pun dapat membelanjakan uangnya; Φ = 0 menandai output sebagai tidak dapat dibelanjakan selamanya. Jika skrip keluaran yang digabungkan dengan kunci publik terlalu besar untuk pengirim, dia dapat menggunakan tipe keluaran khusus, yang menunjukkan bahwa penerima akan memasukkan data ini ke dalam masukannya sedangkan pengirim hanya memberikan hash saja. Pendekatan ini mirip dengan “bayar-untuk-hash” dari Bitcoin fitur, tapi alih-alih menambahkan perintah skrip baru, kami menangani kasus ini di struktur data tingkat. 7 Kesimpulan Kami telah menyelidiki kelemahan utama di Bitcoin dan mengusulkan beberapa kemungkinan solusi. Fitur-fitur bermanfaat ini dan pengembangan berkelanjutan kami menjadikan sistem uang elektronik baru CryptoNote saingan serius bagi Bitcoin, mengungguli semua cabangnya. 14 26 Ini mungkin tidak diperlukan jika kita dapat menemukan cara untuk membatasi ukuran blok dari waktu ke waktu... Ini juga tidak mungkin benar. Mereka hanya menyetel "NewReward" ke parabola yang menghadap ke atas ukuran blok adalah variabel independen. Jadi pahala baru meledak hingga tak terhingga. Jika, di sisi lain di sisi lain, hadiah barunya adalah Maks(0,Hadiah Dasar(1-(BlkSize/Mn - 1)ˆ2)), lalu hadiah baru akan menjadi parabola menghadap ke bawah dengan puncak pada ukuran blok = Mn, dan dengan titik potong pada Ukuran Blok = 0 dan Ukuran Blok = 2Mn. Dan sepertinya itulah yang ingin mereka gambarkan. Namun, hal ini tidak terjadi

Неотслеживаемые транзакции

В этом разделе мы предлагаем схему полностью анонимных транзакций, обеспечивающую как неотслеживаемость, так и невозможность отслеживания. и условия несвязности. Важной особенностью нашего решения является его автономность: отправитель не обязан сотрудничать с другими пользователями или доверенной третьей стороной для совершения своих транзакций; следовательно, каждый участник производит прикрывающий трафик независимо. 4.1 Обзор литературы Наша схема основана на криптографическом примитиве, называемом групповой подписью. Впервые представлено Д. Чаум и Э. ван Хейст [19], позволяет пользователю подписать свое сообщение от имени группы. После подписания сообщения пользователь предоставляет (в целях проверки) не свой единственный публичный 1Это так называемый «мягкий лимит» — ограничение эталонного клиента на создание новых блоков. Жесткий максимум возможный размер блока составлял 1 МБ 4 их при необходимости, что вызывает основные недостатки. К сожалению, трудно предсказать, когда константы, возможно, придется изменить, а их замена может привести к ужасным последствиям. Хорошим примером жестко запрограммированного изменения лимита, приводящего к катастрофическим последствиям, является блок ограничение размера установлено на 250 КБ1. Этого лимита было достаточно для проведения около 10 000 стандартных транзакций. В В начале 2013 года этот предел был почти достигнут, и было достигнуто соглашение об увеличении предел. Изменение было реализовано в версии кошелька 0.8 и закончилось разделением цепочки на 24 блока. и успешная атака двойной траты [9]. Хотя ошибка была не в протоколе Bitcoin, а скорее, в ядре базы данных его можно было бы легко обнаружить с помощью простого стресс-теста, если бы было отсутствие искусственно введенного ограничения размера блока. Константы также действуют как форма точки централизации. Несмотря на одноранговый характер Bitcoin, подавляющее большинство узлов используют официальный эталонный клиент [10], разработанный небольшая группа людей. Эта группа принимает решение о внесении изменений в протокол. и большинство людей принимают эти изменения независимо от их «правильности». Некоторые решения вызвали бурные дискуссии и даже призывы к бойкоту [11], что свидетельствует о том, что сообщество и разработчики могут расходиться во мнениях по некоторым важным моментам. Поэтому кажется логичным иметь протокол с настраиваемыми пользователем и самонастраивающимися переменными как возможный способ избежать этих проблем. 2,5 Громоздкие скрипты Система сценариев в Bitcoin — сложная и тяжелая функция. Потенциально это позволяет создавать сложные транзакции [12], но некоторые из его функций отключены из соображений безопасности и некоторые даже никогда не использовались [13]. Скрипт (включая часть отправителя и получателя) для самой популярной транзакции в Bitcoin выглядит так: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. Длина скрипта составляет 164 байта, и его единственная цель — проверить, обладает ли получатель секретный ключ, необходимый для проверки его подписи. 3 Технология CryptoNote Теперь, когда мы рассмотрели ограничения технологии Bitcoin, мы сосредоточимся на представление возможностей CryptoNote. 4 Неотслеживаемые транзакции В этом разделе мы предлагаем схему полностью анонимных транзакций, обеспечивающую как неотслеживаемость, так и невозможность отслеживания. и условия несвязности. Важной особенностью нашего решения является его автономность: отправитель не обязан сотрудничать с другими пользователями или доверенной третьей стороной для совершения своих транзакций; следовательно, каждый участник производит прикрывающий трафик независимо. 4.1 Обзор литературы Наша схема основана на криптографическом примитиве, называемом групповой подписью. Впервые представлено Д. Чаум и Э. ван Хейст [19], позволяет пользователю подписать свое сообщение от имени группы. После подписания сообщения пользователь предоставляет (в целях проверки) не свой единственный публичный 1Это так называемый «мягкий лимит» — ограничение эталонного клиента на создание новых блоков. Жесткий максимум возможный размер блока составлял 1 МБ 4 7 Оглядываясь назад, можно сказать, что было большой ошибкой устанавливать фиксированный предел размера блока в коде. Visa и Mastercard могут обрабатывать тысячи, если не сотни тысяч транзакций. в секунду. Однако транзакции происходят в виде стохастического процесса, иногда массовыми всплесками. иногда молчать часами. Подумайте об объеме обмена биткойнов. Кажется, это грандиозная идея — разработать систему, которая динамически увеличивает размер блока, когда это необходимо. чтобы приспособиться к увеличению трафика транзакций и динамически уменьшать его, когда это необходимо. повысить эффективность использования полосы пропускания. Теперь примените это понятие ко всем параметрам системы. И пока мы стараемся сохранить система от рыбьего хвоста вышла из-под контроля, этоотлично сработает. https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki Как упоминалось ранее, если переменные самонастраиваются, необходимо ввести некоторый контроль, чтобы не дать системе выйти из-под контроля. Мы доберемся до этого. Если бы это была статья в Википедии, она была бы помечена как «КОНЕЦ». Хотя мы, конечно, в В разделе, посвященном «Проблемам Bitcoin», мне хотелось бы получить здесь некоторые пояснения. Почему 164 байта неприемлемы для простой задачи «проверка секретного ключа»? Насколько маленькими они могут стать за разумный язык сценариев? Хотя я не компьютерщик. http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 Для групповых подписей, как описано, требуется менеджер группы. Менеджер группы способен отзыва анонимности любого подписавшего. Следовательно, в группе существует встроенная централизация. схема подписи.

ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбрали быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбралие использовать быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 8 Кольцевая подпись работает следующим образом: Алекс хочет передать WikiLeaks сообщение о своем работодателе. У каждого сотрудника в ее компании есть пара частного/открытого ключей (Ri, Ui). Она сочиняет ее подпись с набором входных данных в качестве ее сообщения, m, ее секретный ключ, Ri, и ВСЕХ открытые ключи (Ui;i=1...n). Любой (не зная приватных ключей) может легко убедиться в том, что какая-то пара (Rj, Uj), должно быть, использовалась для создания подписи... кто-то, кто работает для работодателя Алекса... но, по сути, это случайная догадка, чтобы выяснить, кто бы это мог быть. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Обратите внимание, что описанная здесь связываемая кольцевая подпись является своего рода противоположностью «несвязываемой». описано выше. Здесь мы перехватываем два сообщения и можем определить, одно и то же ли их послала партия, хотя мы все равно не сможем определить, кто эта партия.

определение «несвязываемого», используемое для создания Cryptonote, означает, что мы не можем определить, является ли их получает одна и та же сторона. Следовательно, на самом деле здесь происходят ЧЕТЫРЕ вещи. Система может быть связной или несвязываемый, в зависимости от того, можно ли определить, является ли отправитель два сообщения одинаковы (независимо от того, требует ли это отмены анонимности). И система может быть несвязной или несвязной, в зависимости от того, возможно ли ее определить, является ли получатель двух сообщений одним и тем же (независимо от того, для этого требуется отзыв анонимности). Пожалуйста, не обвиняйте меня за эту ужасную терминологию. Теоретикам графов, вероятно, следует доволен. Некоторым из вас может быть удобнее использовать «связь с получателем», а не «связь с отправителем». http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Когда я это прочитал, мне это показалось глупой особенностью. Потом я прочитал, что это может быть особенность для электронное голосование, и это, казалось, имело смысл. Это круто, с этой точки зрения. Но я не совсем уверен в намеренном внедрении отслеживаемых кольцевых подписей. http://search.ieice.org/bin/summary.php?id=e95-a_1_151

ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбрали быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбралие использовать быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 9 Черт возьми, автор этого документа наверняка мог бы сформулировать это лучше! Скажем, компания, принадлежащая сотрудникам, хочет проголосовать за то, приобретать или нет определенные новые активы, а Алекс и Бренда являются сотрудниками. Компания предоставляет каждому сотруднику сообщение типа «Я голосую за предложение А!» который имеет метаинформационную «проблему» [ПРОП А] и просит их подписать его отслеживаемой кольцевой подписью, если они поддерживают это предложение. Используя традиционную кольцевую подпись, недобросовестный сотрудник может подписать сообщение несколько раз. предположительно с разными nonce, чтобы голосовать столько раз, сколько захотят. С другой стороны С другой стороны, в схеме отслеживаемой кольцевой подписи Алекс пойдет голосовать, и ее закрытый ключ будет иметь был использован по вопросу [ПРОП А]. Если Алекс попытается подписать сообщение типа «Я, Бренда, одобряю предложение А!» чтобы «подставить» Бренду и провести двойное голосование, в этом новом сообщении также будет проблема [ПРОП А]. Поскольку закрытый ключ Алекса уже вызвал проблему [PROP A], личность Алекса будет сразу же раскрыто как мошенничество. Что, согласитесь, очень круто! Криптография обеспечивала равенство голосов. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Эта статья интересна тем, что по сути создает специальную кольцевую подпись, но без каких-либо согласие другого участника. Структура подписи может быть различной; я не копал глубоко, и я не видел, безопасно ли оно. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Подписи специальных групп: кольцевые подписи, которые представляют собой групповые подписи без группы. менеджеров, никакой централизации, но позволяет члену специальной группы доказуемо утверждать, что он (не) выдал анонимную подпись от имени группы. http://link.springer.com/chapter/10.1007/11908739_9 Это не совсем правильно, насколько я понимаю. И мое понимание, вероятно, изменится по мере того, как Я углубляюсь в этот проект. Но насколько я понимаю, иерархия выглядит так. Подписи группы: менеджеры группы контролируют отслеживаемость и возможность добавления или удаления участников. от подписантов. Сигналы звонка: произвольное формирование группы без менеджера группы. Никакого отзыва анонимности. Нет возможности отречься от той или иной подписи. С отслеживаемым и подключаемым кольцом подписи, анонимность в некоторой степени масштабируема. Подписи специальных групп: аналогично кольцевым подписям, но участники могут доказать, что они не создавали конкретная подпись. Это важно, когда любой член группы может поставить подпись. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Алгоритм Фудзисаки и Сузуки позже был доработан автором для обеспечения единовременности. Итак мы будем анализировать алгоритм Фудзисаки и Сузуки одновременно с новым алгоритмом, а не чем рассматривать это здесь.

ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбрали быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 ключ, а ключи всех пользователей его группы. Подтверждающее лицо убеждено, что настоящим подписывающим лицом является член группы, но не может однозначно идентифицировать подписавшего. Исходный протокол требовал доверенной третьей стороны (называемой менеджером группы), и он был единственный, кто мог отследить подписавшего. Следующая версия, названная кольцевой подписью, представила Ривест и др. в [34] была автономная схема без менеджера группы и анонимности. отзыв. Позднее появились различные модификации этой схемы: связываемая кольцевая подпись [26, 27, 17] позволило определить, были ли две подписи созданы одним и тем же членом группы, прослеживаемые Кольцевая подпись [24, 23] ограничивала чрезмерную анонимность, предоставляя возможность отследить подписавшего два сообщения относительно одной и той же метаинформации (или «тега» в терминах [24]). Подобная криптографическая конструкция известна также как подпись специальной группы [16, 38]. Это подчеркивает произвольное формирование группы, тогда как схемы групповой/кольцевой подписи скорее предполагают фиксированный набор членов. По большей части наше решение основано на работе «Прослеживаемая кольцевая подпись» Э. Фудзисаки. и К. Сузуки [24]. Чтобы отличить оригинальный алгоритм от нашей модификации, будем назовем последнюю одноразовой кольцевой подписью, подчеркивая возможность пользователя создать только одну действительную подпись. подпись под своим секретным ключом. Мы ослабили свойство прослеживаемости и сохранили возможность связывания. только для обеспечения одноразовости: открытый ключ может появляться во многих иностранных проверочных наборах, а закрытый ключ можно использовать для создания уникальной анонимной подписи. В случае двойной траты попытка эти две подписи будут связаны друг с другом, но раскрытие подписавшего не требуется для наших целей. 4.2 Определения 4.2.1 Параметры эллиптической кривой В качестве базового алгоритма подписи мы выбралие использовать быструю схему EdDSA, которая разработана и реализованный Д.Дж. Бернштейн и др. [18]. Как и ECDSA Bitcoin, он основан на эллиптической кривой. задача дискретного логарифма, поэтому нашу схему можно будет применить и к Bitcoin в будущем. Общие параметры: q: простое число; q = 2255 −19; d: элемент Fq; д = -121665/121666; E: уравнение эллиптической кривой; −x2 + y2 = 1 + dx2y2; G: базовая точка; Г = (х, −4/5); l: простой порядок базовой точки; л = 2252 + 27742317777372353535851937790883648493; \(H_s\): криптографическая hash функция \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): детерминированная hash функция \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Терминология Повышенная конфиденциальность требует новой терминологии, которую не следует путать с сущностями Bitcoin. приватный ec-ключ — стандартный приватный ключ в виде эллиптической кривой: число \(a \in [1, l - 1]\); публичный ec-ключ — стандартный публичный ключ эллиптической кривой: точка A = aG; одноразовая пара ключей — пара приватных и публичных электронных ключей; 5 10 Возможность связывания в смысле «связываемых кольцевых подписей» означает, что мы можем определить, пришли ли две исходящие транзакции из одного и того же источника, не раскрывая, кто является источником. Авторы ослабили возможность связывания, чтобы (а) сохранить конфиденциальность, но при этом (б) обнаружить любую транзакцию с использованием закрытого ключа второй раз как недействительный. Хорошо, это вопрос порядка событий. Рассмотрим следующий сценарий. Мой майнинг компьютер будет иметь текущий blockchain, у него будет собственный блок транзакций, который он вызывает законно, он будет работать над этим блоком в головоломке proof-of-work и у него будет список ожидающих транзакций, которые будут добавлены в следующий блок. Он также будет отправлять любые новые транзакции в этот пул ожидающих транзакций. Если я не решу следующий блок, но кто-то другой делает, я получаю обновленную копию blockchain. Блок, над которым я работал, и в моем списке ожидающих транзакций могут быть некоторые транзакции, которые сейчас включены в blockchain. Разгадайте мой ожидающий блок, объедините его со списком ожидающих транзакций и назовите его мой пул ожидающих транзакций. Удалите все, что сейчас официально находится в каталоге blockchain. Что мне делать? Должен ли я сначала пройти процедуру и «убрать все двойные траты»? С другой стороны С другой стороны, следует ли мне просмотреть список и убедиться, что каждый закрытый ключ еще не был используется, и если он уже использовался в моем списке, то я получил первый экземпляр первым и, следовательно, любая дальнейшая копия является незаконной. Поэтому я просто удаляю все экземпляры после первого того же закрытого ключа. Алгебраическая геометрия никогда не была моей сильной стороной. http://en.wikipedia.org/wiki/EdDSA Такая скорость, ничего себе. ЭТО алгебраическая геометрия для победы. Не то чтобы я что-то знал об этом. Проблематично или нет, но дискретные журналы становятся очень быстрыми. И квантовые компьютеры их едят на завтрак. http://link.springer.com/article/10.1007/s13389-012-0027-1 Это становится действительно важным числом, но нет никаких объяснений или ссылок на то, как оно был выбран. Было бы неплохо просто выбрать одно известное большое простое число, но если известны факты об этом большом простом числе, которые могут повлиять на наш выбор. Различные варианты криптоноты можно было выбрать разные значения э, но в этой статье нет обсуждения того, как это Выбор повлияет на наш выбор других глобальных параметров, перечисленных на странице 5. В этой статье необходим раздел, посвященный выбору значений параметров.

приватный ключ пользователя — это пара (a, b) двух разных приватных ec-ключей; ключ отслеживания — пара (a, B) частного и публичного ec-ключа (где B = bG и a ̸= b); открытый ключ пользователя — это пара (A, B) двух открытых электронных ключей, полученных из (a, b); стандартный адрес — это представление открытого ключа пользователя, представленного в удобной для человека строке. с исправлением ошибок; усеченный адрес представляет собой представление второй половины (точка B) открытого ключа пользователя, заданного в удобную для человека строку с коррекцией ошибок. Структура транзакции остается аналогичной структуре в Bitcoin: каждый пользователь может выбрать несколько независимых входящих платежей (выходов транзакций), подпишите их соответствующими секретные ключи и отправлять их в разные места назначения. В отличие от модели Bitcoin, где пользователь обладает уникальными закрытым и открытым ключами, в предлагаемая модель: отправитель генерирует одноразовый открытый ключ на основе адреса получателя и некоторые случайные данные. В этом смысле входящая транзакция для того же получателя отправляется одноразовый открытый ключ (не напрямую к уникальному адресу), и только получатель может восстановить соответствующую частную часть для выкупа его средств (с использованием его уникального закрытого ключа). Получатель может тратить средства, используя кольцевую подпись, сохраняя анонимность своего владельца и фактических расходов. Подробности протокола описаны в следующих подразделах. 4.3 Непривязываемые платежи Классические адреса Bitcoin после публикации становятся однозначным идентификатором для входящих платежи, связывая их между собой и привязывая к псевдонимам получателя. Если кто-то хочет получить «несвязанную» транзакцию, он должен передать свой адрес отправителю по частному каналу. Если он хочет получать разные транзакции, принадлежность которых не может быть доказано одному и тому же владельцу он должен генерировать все разные адреса и никогда не публиковать их под своим псевдонимом. Общественный Частный Алиса Кэрол Адрес Боба 1 Адрес Боба 2 Ключ Боба 1 Ключ Боба 2 Боб Рис. 2. Традиционная модель ключей/транзакций Bitcoin. Мы предлагаем решение, позволяющее пользователю публиковать один адрес и получать безоговорочную несвязанные платежи. Назначением каждого вывода CryptoNote (по умолчанию) является открытый ключ. получается на основе адреса получателя и случайных данных отправителя. Основное преимущество против Bitcoin заключается в том, что каждый ключ назначения по умолчанию уникален (если только отправитель не использует одни и те же данные для каждого его транзакций одному и тому же получателю). Следовательно, не существует такой проблемы, как «повторное использование адреса» дизайн, и ни один наблюдатель не может определить, были ли какие-либо транзакции отправлены на определенный адрес или ссылку. два адреса вместе. 6 приватный ключ пользователя — это пара (a, b) двух разных приватных ec-ключей; ключ отслеживания — пара (a, B) частного и публичного ec-ключа (где B = bG и a ̸= b); открытый ключ пользователя — это пара (A, B) двух открытых электронных ключей, полученных из (a, b); стандартный адрес — это представление открытого ключа пользователя, представленного в удобной для человека строке. с исправлением ошибок; усеченный адрес представляет собой представление второй половины (точка B) открытого ключа пользователя, заданного в удобную для человека строку с коррекцией ошибок. Структура транзакции остается аналогичной структуре в Bitcoin: каждый пользователь может выбрать несколько независимых входящих платежей (выходов транзакций), подпишите их соответствующими секретные ключи и отправлять их в разные места назначения. В отличие от модели Bitcoin, где пользователь обладает уникальными закрытым и открытым ключами, в предлагаемая модель: отправитель генерирует одноразовый открытый ключ на основе адреса получателя и некоторые случайные данные. В этом смысле входящая транзакция для того же получателя отправляется одноразовый открытый ключ (не напрямую к уникальному адресу), и только получатель может восстановить соответствующую частную часть для выкупа его средств (с использованием его уникального закрытого ключа). Получатель может тратить средства, используя кольцевую подпись, сохраняя анонимность своего владельца и фактических расходов. Подробности протокола описаны в следующих подразделах. 4.3 Непривязываемые платежи Классические адреса Bitcoin после публикации становятся однозначным идентификатором для входящих платежи, связывая их между собой и привязывая к псевдонимам получателя. Если кто-то хочет получить «несвязанную» транзакцию, он должен передать свой адрес отправителю по частному каналу. Если он хочет получать разные транзакции, принадлежность которых не может быть доказано одному и тому же владельцу он должен генерировать все разные адреса и никогда не публиковать их под своим псевдонимом. Общественный Частный Алиса Кэрол Адрес Боба 1 Адрес Боба 2 Ключ Боба 1 Ключ Боба 2 Боб Рис. 2. Традиционный мод Bitcoin ключей/транзакцийэл. Мы предлагаем решение, позволяющее пользователю публиковать один адрес и получать безоговорочную несвязанные платежи. Назначением каждого вывода CryptoNote (по умолчанию) является открытый ключ. получается на основе адреса получателя и случайных данных отправителя. Основное преимущество против Bitcoin заключается в том, что каждый ключ назначения по умолчанию уникален (если только отправитель не использует одни и те же данные для каждого его транзакций одному и тому же получателю). Следовательно, не существует такой проблемы, как «повторное использование адреса» дизайн, и ни один наблюдатель не может определить, были ли какие-либо транзакции отправлены на определенный адрес или ссылку. два адреса вместе. 6 11 Это похоже на Bitcoin, но с бесконечным количеством анонимных почтовых ящиков, погашать которые может только получатель. создание закрытого ключа, который настолько же анонимен, насколько это возможно при использовании кольцевой подписи. Bitcoin работает следующим образом. Если у Алекс в кошельке есть 0,112 Bitcoin, который она только что получила от Фрэнка, у нее действительно есть подписанный сообщение «Я, [ФРАНК], отправлю 0.112 Bitcoin на [alex] + H0 + N0», где 1) Фрэнк подписал сообщение своим секретным ключом [FRANK], 2) Фрэнк подписал сообщение открытым ключом Алекса. ключ, [алекс], 3) Фрэнк включил некоторую форму истории биткойна, H0, и 4) Фрэнк включает случайный бит данных, называемый nonce, N0. Если затем Алекс захочет отправить 0,011 Bitcoin Шарлин, она примет сообщение Фрэнка и установит для него значение H1 и подпишет два сообщения: одно для ее транзакции и одно для изменения. H1= "Я, [ФРАНК], отправь 0,112 Bitcoin на [alex] + H0 + N" "Я, [ALEX], отправь 0,011 Bitcoin на [charlene] + H1 + N1" "Я, [ALEX], отправляю 0,101 Bitcoin в качестве изменения на [alex] + H1 + N2." где Алекс подписывает оба сообщения своим секретным ключом [ALEX], первое сообщение с именем Шарлин открытый ключ [charlene], второе сообщение с открытым ключом Алекса [alex], включая истории и некоторые случайно сгенерированные nonce N1 и N2 соответственно. Cryptonote работает следующим образом: Если у Алекс в кошельке есть криптовалюта 0,112, которую она только что получила от Фрэнка, значит, у нее действительно есть подписанная сообщение «Я, [кто-то из специальной группы], отправляю 0,112 Cryptonote на [одноразовый адрес] + H0 +Н0." Алекс обнаружила, что это ее деньги, сверив свой закрытый ключ [ALEX] с [одноразовый адрес] для каждого проходящего сообщения, и если она желает его потратить, она делает это в следующим образом. Она выбирает получателя денег, возможно, Шарлин начала голосовать за удары дронов, поэтому Вместо этого Алекс хочет отправить деньги Бренде. Итак, Алекс ищет открытый ключ Бренды, [brenda], и использует свой собственный секретный ключ [ALEX] для создания одноразового адреса [ALEX+brenda]. Она затем выбирает произвольную коллекцию C из сети пользователей криптонот и строит кольцевая подпись из этой специальной группы. Устанавливаем нашу историю как предыдущее сообщение, добавляем nonces, и действовать как обычно? H1 = «Я, [кто-то из специальной группы], отправляю 0,112 Cryptonote на [одноразовый адрес] + H0 +Н0." «Я, [кто-то из коллекции C], отправляю 0,011 Cryptonote на [одноразовый адрес, созданный из ALEX+brenda] + H1 + N1» «Я, [кто-то из коллекции C], отправляю 0,101 Cryptonote в качестве изменения на [одноразовый адрес-сделанный из-ALEX+alex] + H1 + N2» Теперь Алекс и Бренда сканируют все входящие сообщения на наличие одноразовых адресов, которые были созданный с использованием их ключа. Если они его найдут, то это будет их собственное, совершенно новое сообщение. криптонота! И даже в этом случае транзакция все равно достигнет blockchain. Если монеты, поступающие по этому адресу известно, что они отправляются от преступников, политических деятелей или от комитетов и счетов. со строгим бюджетом (т. е. хищением), или если новый владелец этих монет когда-либо совершит ошибку и отправляет эти монеты на общий адрес с монетами, которыми он, как известно, владеет, приспособление для анонимности в биткойнах.

приватный ключ пользователя — это пара (a, b) двух разных приватных ec-ключей; ключ отслеживания — пара (a, B) частного и публичного ec-ключа (где B = bG и a ̸= b); открытый ключ пользователя — это пара (A, B) двух открытых электронных ключей, полученных из (a, b); стандартный адрес — это представление открытого ключа пользователя, представленного в удобной для человека строке. с исправлением ошибок; усеченный адрес представляет собой представление второй половины (точка B) открытого ключа пользователя, заданного в удобную для человека строку с коррекцией ошибок. Структура транзакции остается аналогичной структуре в Bitcoin: каждый пользователь может выбрать несколько независимых входящих платежей (выходов транзакций), подпишите их соответствующими секретные ключи и отправлять их в разные места назначения. В отличие от модели Bitcoin, где пользователь обладает уникальными закрытым и открытым ключами, в предлагаемая модель: отправитель генерирует одноразовый открытый ключ на основе адреса получателя и некоторые случайные данные. В этом смысле входящая транзакция для того же получателя отправляется одноразовый открытый ключ (не напрямую к уникальному адресу), и только получатель может восстановить соответствующую частную часть для выкупа его средств (с использованием его уникального закрытого ключа). Получатель может тратить средства, используя кольцевую подпись, сохраняя анонимность своего владельца и фактических расходов. Подробности протокола описаны в следующих подразделах. 4.3 Непривязываемые платежи Классические адреса Bitcoin после публикации становятся однозначным идентификатором для входящих платежи, связывая их между собой и привязывая к псевдонимам получателя. Если кто-то хочет получить «несвязанную» транзакцию, он должен передать свой адрес отправителю по частному каналу. Если он хочет получать разные транзакции, принадлежность которых не может быть доказано одному и тому же владельцу он должен генерировать все разные адреса и никогда не публиковать их под своим псевдонимом. Общественный Частный Алиса Кэрол Адрес Боба 1 Адрес Боба 2 Ключ Боба 1 Ключ Боба 2 Боб Рис. 2. Традиционная модель ключей/транзакций Bitcoin. Мы предлагаем решение, позволяющее пользователю публиковать один адрес и получать безоговорочную несвязанные платежи. Назначением каждого вывода CryptoNote (по умолчанию) является открытый ключ. получается на основе адреса получателя и случайных данных отправителя. Основное преимущество против Bitcoin заключается в том, что каждый ключ назначения по умолчанию уникален (если только отправитель не использует одни и те же данные для каждого его транзакций одному и тому же получателю). Следовательно, не существует такой проблемы, как «повторное использование адреса» дизайн, и ни один наблюдатель не может определить, были ли какие-либо транзакции отправлены на определенный адрес или ссылку. два адреса вместе. 6 приватный ключ пользователя — это пара (a, b) двух разных приватных ec-ключей; ключ отслеживания — пара (a, B) частного и публичного ec-ключа (где B = bG и a ̸= b); открытый ключ пользователя — это пара (A, B) двух открытых электронных ключей, полученных из (a, b); стандартный адрес — это представление открытого ключа пользователя, представленного в удобной для человека строке. с исправлением ошибок; усеченный адрес представляет собой представление второй половины (точка B) открытого ключа пользователя, заданного в удобную для человека строку с коррекцией ошибок. Структура транзакции остается аналогичной структуре в Bitcoin: каждый пользователь может выбрать несколько независимых входящих платежей (выходов транзакций), подпишите их соответствующими секретные ключи и отправлять их в разные места назначения. В отличие от модели Bitcoin, где пользователь обладает уникальными закрытым и открытым ключами, в предлагаемая модель: отправитель генерирует одноразовый открытый ключ на основе адреса получателя и некоторые случайные данные. В этом смысле входящая транзакция для того же получателя отправляется одноразовый открытый ключ (не напрямую к уникальному адресу), и только получатель может восстановить соответствующую частную часть для выкупа его средств (с использованием его уникального закрытого ключа). Получатель может тратить средства, используя кольцевую подпись, сохраняя анонимность своего владельца и фактических расходов. Подробности протокола описаны в следующих подразделах. 4.3 Непривязываемые платежи Классические адреса Bitcoin после публикации становятся однозначным идентификатором для входящих платежи, связывая их между собой и привязывая к псевдонимам получателя. Если кто-то хочет получить «несвязанную» транзакцию, он должен передать свой адрес отправителю по частному каналу. Если он хочет получать разные транзакции, принадлежность которых не может быть доказано одному и тому же владельцу он должен генерировать все разные адреса и никогда не публиковать их под своим псевдонимом. Общественный Частный Алиса Кэрол Адрес Боба 1 Адрес Боба 2 Ключ Боба 1 Ключ Боба 2 Боб Рис. 2. Традиционный мод Bitcoin ключей/транзакцийэл. Мы предлагаем решение, позволяющее пользователю публиковать один адрес и получать безоговорочную несвязанные платежи. Назначением каждого вывода CryptoNote (по умолчанию) является открытый ключ. получается на основе адреса получателя и случайных данных отправителя. Основное преимущество против Bitcoin заключается в том, что каждый ключ назначения по умолчанию уникален (если только отправитель не использует одни и те же данные для каждого его транзакций одному и тому же получателю). Следовательно, не существует такой проблемы, как «повторное использование адреса» дизайн, и ни один наблюдатель не может определить, были ли какие-либо транзакции отправлены на определенный адрес или ссылку. два адреса вместе. 6 12 Следовательно, вместо того, чтобы пользователи отправляли монеты с адреса (который на самом деле является открытым ключом) на адрес (еще один открытый ключ) используя свои приватные ключи, пользователи отправляют монеты из одноразового почтового ящика (который генерируется с использованием открытого ключа вашего друга) на одноразовый почтовый ящик (аналогично) с использованием вашего собственные секретные ключи. В каком-то смысле мы говорим: «Хорошо, уберите руки от денег, пока они находятся в обороте». перенесено! Достаточно просто знать, что наши ключи могут открыть этот ящик и что мы знаем, сколько денег в коробке. Никогда не оставляйте отпечатки пальцев на почтовом ящике или на самом деле используйте его, просто продайте саму коробку, наполненную деньгами. Таким образом, мы не знаем, кто отправил что, но содержание этих публичных обращений по-прежнему остается гладким, взаимозаменяемым, делимым и по-прежнему обладают всеми другими приятными качествами денег, которые мы желаем, например, биткойнами». Бесконечный набор почтовых ящиков. Вы публикуете адрес, у меня есть закрытый ключ. Я использую свой закрытый ключ и ваш адрес, и некоторые случайные данные для генерации открытого ключа. Алгоритм разработан таким образом, что, поскольку ваш адрес использовался для генерации открытого ключа, только ВАШ закрытый ключ работает для разблокировки сообщение. Наблюдатель, Ева, видит, что вы публикуете свой адрес, и видит открытый ключ, который я объявляю. Однако, она не знает, объявил ли я свой открытый ключ на основе вашего адреса, ее адреса или адреса Бренды. или Шарлин, или кто бы то ни было. Она сверяет свой закрытый ключ с открытым ключом, который я объявил. и видит, что это не работает; это не ее деньги. Она не знает чужого закрытого ключа, и только получатель сообщения имеет закрытый ключ, который может разблокировать сообщение. Так что никто Прослушивание может определить, кто получил деньги, а тем более взять деньги.

Общественный Частный Алиса Кэрол Одноразовый ключ Одноразовый ключ Одноразовый ключ Боб Ключ Боба Адрес Боба Рис. 3. Модель ключей/транзакций CryptoNote. Сначала отправитель выполняет обмен Диффи-Хеллмана, чтобы получить общий секрет из своих данных и половина адреса получателя. Затем он вычисляет одноразовый ключ назначения, используя общий секрет и вторая половина адреса. От получателя требуются два разных электронных ключа. для этих двух шагов, поэтому стандартный адрес CryptoNote почти в два раза больше, чем адрес Bitcoin кошелька. адрес. Получатель также выполняет обмен Диффи-Хеллмана для восстановления соответствующего сообщения. секретный ключ. Стандартная последовательность транзакций выглядит следующим образом: 1. Алиса хочет отправить платеж Бобу, который опубликовал свой стандартный адрес. Она распаковывает адрес и получает открытый ключ Боба (A, B). 2. Алиса генерирует случайное число \(r \in [1, l - 1]\) и вычисляет одноразовый открытый ключ \(P = H_s(rA)G +\). Б. 3. Алиса использует P в качестве ключа назначения для вывода, а также упаковывает значение R = rG (как часть обмена Диффи-Хеллмана) где-то в транзакции. Обратите внимание, что она может создавать другие выходные данные с уникальными открытыми ключами: разные ключи получателей (Ai, Bi) подразумевают разные Pi даже с тем же р. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения Р = гГ P = Hs(rA)G + B Получателя открытый ключ Случайные данные отправителя р (А, Б) Рис. 4. Стандартная структура транзакции. 4. Алиса отправляет транзакцию. 5. Боб проверяет каждую проходящую транзакцию своим секретным ключом (a, b) и вычисляет P ′ = Hs(aR)G + Б. Если среди них была транзакция Алисы с Бобом в качестве получателя, тогда aR = arG = rA и P ′ = P. 7 Общественный Частный Алиса Кэрол Одноразовый ключ Одноразовый ключ Одноразовый ключ Боб Ключ Боба Адрес Боба Рис. 3. Модель ключей/транзакций CryptoNote. Сначала отправитель выполняет обмен Диффи-Хеллмана, чтобы получить общий секрет из своих данных и половина адреса получателя. Затем он вычисляет одноразовый ключ назначения, используя общий секрет и вторая половина адреса. От получателя требуются два разных электронных ключа. для этих двух шагов, поэтому стандартный адрес CryptoNote почти в два раза больше, чем адрес Bitcoin кошелька. адрес. Получатель также выполняет обмен Диффи-Хеллмана для восстановления соответствующего сообщения. секретный ключ. Стандартная последовательность транзакций выглядит следующим образом: 1. Алиса хочет отправить платеж Бобу, который опубликовал свой стандартный адрес. Она распаковывает адрес и получает открытый ключ Боба (A, B). 2. Алиса генерирует случайное число \(r \in [1, l - 1]\) и вычисляет одноразовый открытый ключ \(P = H_s(rA)G +\). Б. 3. Алиса использует P в качестве ключа назначения для вывода, а также упаковывает значение R = rG (как часть обмена Диффи-Хеллмана) где-то в транзакции. Обратите внимание, что она может создавать другие выходные данные с уникальными открытыми ключами: разные ключи получателей (Ai, Bi) подразумевают разные Pi даже с тем же р. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения Р = гГ P = Hs(rA)G + B Получателя открытый ключ Случайные данные отправителя р (А, Б) Рис. 4. Стандартная структура транзакции. 4. Алиса отправляет транзакцию. 5. Боб проверяет каждую проходящую транзакцию своим секретным ключом (a, b) и вычисляет P ′ = Hs(aR)G + Б. Если среди них была транзакция Алисы с Бобом в качестве получателя, тогда aR = arG = rA и P ′ = P. 7 13 Интересно, какой головной болью будет реализовать выбор криптографии? схема. Эллиптический или другой. Поэтому, если какая-то схема в будущем сломается, валюта поменяется. без беспокойства. Наверное, это большая заноза в заднице. Хорошо, это именно то, что я только что объяснил в своем предыдущем комментарии. Тип Диффе-Хеллмана обмены аккуратные. Скажем, у Алекса и Бренды есть секретный номер A и B, а также номер они не заботятся о сохранении тайны, а и б. Они хотят создать общий секрет без Ева обнаруживает это. Дайфф и Хеллман придумали, как Алекс и Бренда могли поделиться общедоступные номера a и b, но не частные номера A и B, и сгенерировать общий секрет, К. Используя этот общий секрет, К., без какой-либо подслушивающей Евы, смог создать тот же самый К, Алекс и Бренда теперь могут использовать К в качестве секретного ключа шифрования и передавать секретные сообщения обратно. и вперед. Вот как это МОЖЕТ работать, хотя оно должно работать и с числами, гораздо большими, чем 100. Мы будем использовать 100, потому что работа с целыми числами по модулю 100 эквивалентна «выбрасыванию всех но последние две цифры числа». Алекс и Бренда выбирают A, a, B и b. Они держат А и Б в секрете. Алекс сообщает Бренде свое значение по модулю 100 (только две последние цифры), а Бренда сообщает Алексу. ее значение b по модулю 100. Теперь Ева знает (a,b) по модулю 100. Но Алекс знает (a,b,A), поэтому она может вычислить x=abA по модулю 100.Алекс отсекает все, кроме последней цифры, потому что мы работаем снова под целыми числами по модулю 100. Точно так же Бренда знает (a,b,B), поэтому она может вычислить y=abB по модулю 100. Теперь Алекс может публиковать x, а Бренда может публиковать y. Но теперь Алекс может вычислить yA = abBA по модулю 100, а Бренда может вычислить xB. = абВА по модулю 100. Они оба знают одно и то же число! Но все, что слышала Ева, это (а,б,абА,абВ). У нее нет простого способа вычислить abA*B. Это самый простой и наименее безопасный способ рассмотрения обмена Диффи-Хеллмана. Существуют более безопасные версии. Но большинство версий работают, поскольку целочисленная факторизация и дискретная логарифмы сложны, и обе эти проблемы легко решаются квантовыми компьютерами. Я проверю, существуют ли какие-либо версии, устойчивые к квантовому воздействию. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange В приведенной здесь «стандартной последовательности txn» отсутствует целый ряд шагов, например ПОДПИСЕЙ. Здесь они воспринимаются как нечто само собой разумеющееся. Что очень плохо, потому что порядок, в котором мы подписываемые материалы, информация, содержащаяся в подписанном сообщении, и так далее... все это чрезвычайно важно для протокола. Если сделать один или два шага неправильно, даже немного не по порядку, при реализации « стандартная последовательность транзакций» может поставить под вопрос безопасность всей системы. Более того, доказательства, представленные далее в статье, могут оказаться недостаточно строгими, если Структура, в которой они работают, определена так же свободно, как и в этом разделе.

Общественный Частный Алиса Кэрол Одноразовый ключ Одноразовый ключ Одноразовый ключ Боб Ключ Боба Адрес Боба Рис. 3. Модель ключей/транзакций CryptoNote. Сначала отправитель выполняет обмен Диффи-Хеллмана, чтобы получить общий секрет из своих данных и половина адреса получателя. Затем он вычисляет одноразовый ключ назначения, используя общий секрет и вторая половина адреса. От получателя требуются два разных электронных ключа. для этих двух шагов, поэтому стандартный адрес CryptoNote почти в два раза больше, чем адрес кошелька Bitcoin. адрес. Получатель также выполняет обмен Диффи-Хеллмана для восстановления соответствующего сообщения. секретный ключ. Стандартная последовательность транзакций выглядит следующим образом: 1. Алиса хочет отправить платеж Бобу, который опубликовал свой стандартный адрес. Она распаковывает адрес и получает открытый ключ Боба (A, B). 2. Алиса генерирует случайное число \(r \in [1, l - 1]\) и вычисляет одноразовый открытый ключ \(P = H_s(rA)G +\). Б. 3. Алиса использует P в качестве ключа назначения для вывода, а также упаковывает значение R = rG (как часть обмена Диффи-Хеллмана) где-то в транзакции. Обратите внимание, что она может создавать другие выходные данные с уникальными открытыми ключами: разные ключи получателей (Ai, Bi) подразумевают разные Pi даже с тем же р. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения Р = гГ P = Hs(rA)G + B Получателя открытый ключ Случайные данные отправителя р (А, Б) Рис. 4. Стандартная структура транзакции. 4. Алиса отправляет транзакцию. 5. Боб проверяет каждую проходящую транзакцию своим секретным ключом (a, b) и вычисляет P ′ = Hs(aR)G + Б. Если среди них была транзакция Алисы с Бобом в качестве получателя, тогда aR = arG = rA и P ′ = P. 7 Общественный Частный Алиса Кэрол Одноразовый ключ Одноразовый ключ Одноразовый ключ Боб Ключ Боба Адрес Боба Рис. 3. Модель ключей/транзакций CryptoNote. Сначала отправитель выполняет обмен Диффи-Хеллмана, чтобы получить общий секрет из своих данных и половина адреса получателя. Затем он вычисляет одноразовый ключ назначения, используя общий секрет и вторая половина адреса. От получателя требуются два разных электронных ключа. для этих двух шагов, поэтому стандартный адрес CryptoNote почти в два раза больше, чем адрес кошелька Bitcoin. адрес. Получатель также выполняет обмен Диффи-Хеллмана для восстановления соответствующего сообщения. секретный ключ. Стандартная последовательность транзакций выглядит следующим образом: 1. Алиса хочет отправить платеж Бобу, который опубликовал свой стандартный адрес. Она распаковывает адрес и получает открытый ключ Боба (A, B). 2. Алиса генерирует случайное число \(r \in [1, l - 1]\) и вычисляет одноразовый открытый ключ \(P = H_s(rA)G +\). Б. 3. Алиса использует P в качестве ключа назначения для вывода, а также упаковывает значение R = rG (как часть обмена Диффи-Хеллмана) где-то в транзакции. Обратите внимание, что она может создавать другие выходные данные с уникальными открытыми ключами: разные ключи получателей (Ai, Bi) подразумевают разные Pi даже с тем же р. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения Р = гГ P = Hs(rA)G + B Получателя открытый ключ Случайные данные отправителя р (А, Б) Рис. 4. Стандартная структура транзакции. 4. Алиса отправляет транзакцию. 5. Боб проверяет каждую проходящую транзакцию своим секретным ключом (a, b) и вычисляет P ′ = Hs(aR)G + Б. Если среди них была транзакция Алисы с Бобом в качестве получателя, тогда aR = arG = rA и P ′ = P. 7 14 Обратите внимание, что автор(ы?) ужасно стараются придерживаться четкой терминологии. текст, но особенно в следующем фрагменте. Следующим воплощением этой статьи обязательно будет гораздо более строгий. В тексте они называют P своим одноразовым открытым ключом. На диаграмме они обозначают R как их «открытый ключ Tx» и P в качестве «ключа назначения». Если бы я собирался переписать это, я бы Прежде чем обсуждать эти разделы, очень подробно изложите некоторую терминологию. Этот эл огромен. См. стр. 5. Кто выбирает Эл? Диаграмма показывает, что открытый ключ транзакции R = rG, который является случайным и выбранным. отправителем, не является частью вывода Tx. Это потому, что оно может быть одинаковым для нескольких транзакции нескольким людям и не используются ПОЗЖЕ для расходов. Генерируется новый R каждый раз, когда вы хотите транслировать новую транзакцию CryptoNote. Кроме того, R используется только чтобы проверить, являетесь ли вы получателем транзакции. Это не мусорные данные, но это мусор для всех без закрытых ключей, связанных с (A,B). С другой стороны, ключ назначения P = Hs(rA)G + B является частью вывода Tx. Все просматривая данные каждой проходящей транзакции, необходимо сверять свои собственные сгенерированные P* с этот P, чтобы узнать, владеют ли они этой проходящей транзакцией. Любой, у кого есть неизрасходованный вывод транзакции (UTXO) будет лежать куча этих P с суммами. Чтобы потратитьд, они подпишите какое-нибудь новое сообщение, включая P. Алиса должна подписать эту транзакцию с помощью одноразового закрытого ключа(ов), связанного с неизрасходованными выходными транзакцией (ключами назначения). Каждый ключ назначения, принадлежащий Алисе, оснащен с одноразовым закрытым ключом, также принадлежащим (предположительно) Алисе. Каждый раз, когда Алисе хочется отправьте содержимое ключа назначения мне, или Бобу, или Бренде, или Чарли, или Шарлин, она использует свой закрытый ключ для подписи транзакции. После получения транзакции я получу новый Открытый ключ Tx, новый открытый ключ назначения, и я смогу восстановить новый одноразовый закрытый ключ x. Объединение моего одноразового закрытого ключа x с общедоступным местом назначения новой транзакции. ключ(и) — это то, как мы отправляем новую транзакцию

  1. Боб может восстановить соответствующий одноразовый закрытый ключ: x = Hs(aR) + b, так что P = xG. Он может потратить этот выход в любое время, подписав транзакцию с помощью x. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения P ′ = Hs(aR)G + bG одноразовый открытый ключ х = Hs(aR) + b одноразовый закрытый ключ Получателя закрытый ключ (а, б) Р П ' ?= П Рис. 5. Проверка входящей транзакции. В результате Боб получает входящие платежи, связанные с одноразовыми открытыми ключами, которые непередаваемо для зрителя. Некоторые дополнительные примечания: • Когда Боб «узнаёт» свои транзакции (см. шаг 5), он практически использует только половину своих средств. личная информация: (a, B). Эту пару, также известную как ключ отслеживания, можно передать третьему лицу (Кэрол). Боб может делегировать ей обработку новых транзакций. Боб ей не нужно явно доверять Кэрол, потому что она не может восстановить одноразовый секретный ключ p без полного закрытого ключа Боба (a, b). Этот подход полезен, когда Бобу не хватает пропускной способности. или вычислительная мощность (смартфоны, аппаратные кошельки и т. д.). • В случае, если Алиса хочет доказать, что она отправила транзакцию на адрес Боба, она может либо раскрыть r или использовать любой протокол с нулевым разглашением, чтобы доказать, что она знает r (например, подписав транзакция с r). • Если Боб хочет иметь адрес, совместимый с аудитом, по которому будут связанный, он может либо опубликовать свой ключ отслеживания, либо использовать усеченный адрес. Этот адрес представляют только один открытый ec-ключ B, а оставшаяся часть, требуемая протоколом, получены из него следующим образом: a = Hs(B) и A = Hs(B)G. В обоих случаях каждый человек способен «распознать» все входящие транзакции Боба, но, конечно, никто не может потратить средства, заключенные в них без секретного ключа b. 4.4 Одноразовые кольцевые подписи Протокол, основанный на одноразовых кольцевых подписях, позволяет пользователям добиться безусловной несвязности. К сожалению, обычные типы криптографических подписей позволяют отслеживать транзакции до их соответствующие отправители и получатели. Наше решение этого недостатка заключается в использовании другой сигнатуры. типа, чем те, которые в настоящее время используются в электронных денежных системах. Сначала мы дадим общее описание нашего алгоритма без явного упоминания о нем. электронные деньги. Одноразовая кольцевая подпись содержит четыре алгоритма: (GEN, SIG, VER, LNK): GEN: принимает общедоступные параметры и выводит ec-пару (P, x) и открытый ключ I. SIG: принимает сообщение m, набор \(S'\) открытых ключей {Pi}i̸=s, пару (Ps, xs) и выводит подпись \(\sigma\). и множество \(S = \)S'\( \cup \{P_s\}\). 8
  2. Боб может восстановить соответствующий одноразовый закрытый ключ: x = Hs(aR) + b, так что P = xG. Он может потратить этот выход в любое время, подписав транзакцию с помощью x. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения P ′ = Hs(aR)G + bG одноразовый открытый ключ х = Hs(aR) + b одноразовый закрытый ключ Получателя закрытый ключ (а, б) Р П ' ?= П Рис. 5. Проверка входящей транзакции. В результате Боб получает входящие платежи, связанные с одноразовыми открытыми ключами, которые непередаваемо для зрителя. Некоторые дополнительные примечания: • Когда Боб «узнаёт» свои транзакции (см. шаг 5), он практически использует только половину своих средств. личная информация: (a, B). Эту пару, также известную как ключ отслеживания, можно передать третьему лицу (Кэрол). Боб может делегировать ей обработку новых транзакций. Боб ей не нужно явно доверять Кэрол, потому что она не может восстановить одноразовый секретный ключ p без полного закрытого ключа Боба (a, b). Этот подход полезен, когда Бобу не хватает пропускной способности. или вычислительная мощность (смартфоны, аппаратные кошельки и т. д.). • В случае, если Алиса хочет доказать, что она отправила транзакцию на адрес Боба, она может либо раскрыть r или использовать любой протокол с нулевым разглашением, чтобы доказать, что она знает r (например, подписав транзакция с r). • Если Боб хочет иметь адрес, совместимый с аудитом, по которому будут связанный, он может либо опубликовать свой ключ отслеживания, либо использовать усеченный адрес. Этот адрес представляют только один открытый ec-ключ B, а оставшаяся часть, требуемая протоколом, получены из него следующим образом: a = Hs(B) и A = Hs(B)G. В обоих случаях каждый человек способен «распознать» все входящие транзакции Боба, но, конечно, никто не может потратить средства, заключенные в них без секретного ключа b. 4.4 Одноразовые кольцевые подписи Протокол, основанный на одноразовых кольцевых подписях, позволяет пользователям добиться безусловной несвязности. К сожалению, обычные типы криптографических подписей позволяют отслеживать транзакции до их соответствующие отправители и получатели. Наше решение этого недостатка заключается в использовании другой сигнатуры. типа, чем те, которые в настоящее время используются в электронных денежных системах. Сначала мы предоставим генераторполное описание нашего алгоритма без явной ссылки на электронные деньги. Одноразовая кольцевая подпись содержит четыре алгоритма: (GEN, SIG, VER, LNK): GEN: принимает общедоступные параметры и выводит ec-пару (P, x) и открытый ключ I. SIG: принимает сообщение m, набор \(S'\) открытых ключей {Pi}i̸=s, пару (Ps, xs) и выводит подпись \(\sigma\). и множество \(S = \)S'\( \cup \{P_s\}\). 8 15 Как здесь выглядит неизрасходованный вывод транзакции? На диаграмме видно, что выходные данные транзакции состоят только из двух точек данных: суммы и ключа назначения. Но это не достаточно, потому что, когда я попытаюсь потратить этот «выход», мне все равно нужно будет знать R=rG. Помните, r выбирается отправителем, а R а) используется для распознавания входящих криптонот как ваших собственный и б) используемый для генерации одноразового закрытого ключа, используемого для «заявки» на вашу криптоноту. Та часть, которую я не понимаю? Если принять теоретическое «хорошо, у нас есть эти подписи и транзакции, и мы передаем их туда и обратно» в мир программирования "хорошо, какая информация конкретно составляет личность UTXO?" Лучший способ ответить на этот вопрос — покопаться в теле полностью некомментированного кода. Так держать, команда bytecoin. Напомним: возможность связывания означает «отправил один и тот же человек?» а несвязность означает «сделал то же самое» человек получит?». Таким образом, система может быть подключаемой или несвязываемой, несвязываемой или несвязываемой. Раздражает, я знаю. Поэтому, когда Ник ван Саберхаген говорит здесь: «...входящие платежи [связаны] с единовременными открытые ключи, которые невозможно связать со зрителем», давайте посмотрим, что он имеет в виду. Во-первых, рассмотрим ситуацию, в которой Алиса отправляет Бобу две отдельные транзакции из одной и той же транзакции. обращение по тому же адресу. Во вселенной Bitcoin Алиса уже совершила ошибку. отправки с того же адреса, и поэтому транзакция не удалась, наше желание ограничить возможность связывания. Более того, поскольку она отправила деньги на тот же адрес, наше желание ей не удалось. для несвязности. Эта биткойн-транзакция была одновременно (полностью) привязываемой и неотключаемой. С другой стороны, предположим, что во вселенной криптонот Алиса отправляет Бобу некоторую криптоноту: используя публичный адрес Боба. В качестве своего запутанного набора открытых ключей она выбирает все известные общедоступные ключи. ключи в районе метро Вашингтона. Алекс генерирует одноразовый открытый ключ, используя свой собственный информация и общедоступная информация Боба. Она отсылает деньги, и любой наблюдатель это заметит. только смогу узнать: «Кто-то из района метро Вашингтона отправил 2,3 криптоноты на одноразовый публичный адрес XYZ123». Здесь у нас есть вероятностный контроль над возможностью связывания, поэтому мы назовем это «почти не связанным». Мы также видим только те одноразовые открытые ключи, на которые отправляются деньги. Даже если бы мы заподозрили получателя был Боб, у нас нет его закрытых ключей, поэтому мы не можем проверить, прошла ли транзакция принадлежит Бобу, не говоря уже о том, чтобы сгенерировать его одноразовый закрытый ключ для выкупа его криптоноты. Итак, это на самом деле совершенно «несовместимо». Итак, это самый изящный трюк из всех. Кто хочет по-настоящему доверять другому MtGox? Мы можем быть удобно хранить некоторое количество BTC на Coinbase, но максимальная безопасность биткойнов — это физический кошелек. Что неудобно. В этом случае вы можете без доверия отдать половину своего закрытого ключа, не ставя под угрозу свои собственная способность тратить деньги. При этом все, что вы делаете, — это рассказываете кому-то, как преодолеть несвязность. Другой свойства CN, действующие как валюта, сохраняются, например, защита от двойных расходов и еще много чего.

  3. Боб может восстановить соответствующий одноразовый закрытый ключ: x = Hs(aR) + b, так что P = xG. Он может потратить этот выход в любое время, подписав транзакцию с помощью x. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения P ′ = Hs(aR)G + bG одноразовый открытый ключ х = Hs(aR) + b одноразовый закрытый ключ Получателя закрытый ключ (а, б) Р П ' ?= П Рис. 5. Проверка входящей транзакции. В результате Боб получает входящие платежи, связанные с одноразовыми открытыми ключами, которые непередаваемо для зрителя. Некоторые дополнительные примечания: • Когда Боб «узнаёт» свои транзакции (см. шаг 5), он практически использует только половину своих средств. личная информация: (a, B). Эту пару, также известную как ключ отслеживания, можно передать третьему лицу (Кэрол). Боб может делегировать ей обработку новых транзакций. Боб ей не нужно явно доверять Кэрол, потому что она не может восстановить одноразовый секретный ключ p без полного закрытого ключа Боба (a, b). Этот подход полезен, когда Бобу не хватает пропускной способности. или вычислительная мощность (смартфоны, аппаратные кошельки и т. д.). • В случае, если Алиса хочет доказать, что она отправила транзакцию на адрес Боба, она может либо раскрыть r или использовать любой протокол с нулевым разглашением, чтобы доказать, что она знает r (например, подписав транзакция с r). • Если Боб хочет иметь адрес, совместимый с аудитом, по которому будут связанный, он может либо опубликовать свой ключ отслеживания, либо использовать усеченный адрес. Этот адрес представляют только один открытый ec-ключ B, а оставшаяся часть, требуемая протоколом, получены из него следующим образом: a = Hs(B) и A = Hs(B)G. В обоих случаях каждый человек способен «распознать» все входящие транзакции Боба, но, конечно, никто не может потратить средства, заключенные в них без секретного ключа b. 4.4 Одноразовые кольцевые подписи Протокол, основанный на одноразовых кольцевых подписях, позволяет пользователям добиться безусловной несвязности. К сожалению, обычные типы криптографических подписей позволяют отслеживать транзакции до их соответствующие отправители и получатели. Наше решение этого недостатка заключается в использовании другой сигнатуры. типа, чем те, которые в настоящее время используются в электронных денежных системах. Сначала мы дадим общее описание нашего алгоритма без явного упоминания о нем. электронные деньги. Одноразовая кольцевая подпись содержит четыре алгоритма: (GEN, SIG, VER, LNK): GEN: принимает общедоступные параметры и выводит ec-пару (P, x) и открытый ключ I. SIG: принимает сообщение m, набор \(S'\) открытых ключей {Pi}i̸=s, пару (Ps, xs) и выводит подпись \(\sigma\). и множество \(S = \)S'\( \cup \{P_s\}\). 8

  4. Боб может восстановить соответствующий одноразовый закрытый ключ: x = Hs(aR) + b, так что P = xG. Он может потратить этот выход в любое время, подписав транзакцию с помощью x. Транзакция Открытый ключ передачи Выход передачи Сумма Ключ назначения P ′ = Hs(aR)G + bG одноразовый открытый ключ х = Hs(aR) + b одноразовый закрытый ключ Получателя закрытый ключ (а, б) Р П ' ?= П Рис. 5. Проверка входящей транзакции. В результате Боб получает входящие платежи, связанные с одноразовыми открытыми ключами, которые непередаваемо для зрителя. Некоторые дополнительные примечания: • Когда Боб «узнаёт» свои транзакции (см. шаг 5), он практически использует только половину своих средств. личная информация: (a, B). Эту пару, также известную как ключ отслеживания, можно передать третьему лицу (Кэрол). Боб может делегировать ей обработку новых транзакций. Боб ей не нужно явно доверять Кэрол, потому что она не может восстановить одноразовый секретный ключ p без полного закрытого ключа Боба (a, b). Этот подход полезен, когда Бобу не хватает пропускной способности. или вычислительная мощность (смартфоны, аппаратные кошельки и т. д.). • В случае, если Алиса хочет доказать, что она отправила транзакцию на адрес Боба, она может либо раскрыть r или использовать любой протокол с нулевым разглашением, чтобы доказать, что она знает r (например, подписав транзакция с r). • Если Боб хочет иметь адрес, совместимый с аудитом, по которому будут связанный, он может либо опубликовать свой ключ отслеживания, либо использовать усеченный адрес. Этот адрес представляют только один открытый ec-ключ B, а оставшаяся часть, требуемая протоколом, получены из него следующим образом: a = Hs(B) и A = Hs(B)G. В обоих случаях каждый человек способен «распознать» все входящие транзакции Боба, но, конечно, никто не может потратить средства, заключенные в них без секретного ключа b. 4.4 Одноразовые кольцевые подписи Протокол, основанный на одноразовых кольцевых подписях, позволяет пользователям добиться безусловной несвязности. К сожалению, обычные типы криптографических подписей позволяют отслеживать транзакции до их соответствующие отправители и получатели. Наше решение этого недостатка заключается в использовании другой сигнатуры. типа, чем те, которые в настоящее время используются в электронных денежных системах. Сначала мы предоставим генераторполное описание нашего алгоритма без явной ссылки на электронные деньги. Одноразовая кольцевая подпись содержит четыре алгоритма: (GEN, SIG, VER, LNK): GEN: принимает общедоступные параметры и выводит ec-пару (P, x) и открытый ключ I. SIG: принимает сообщение m, набор \(S'\) открытых ключей {Pi}i̸=s, пару (Ps, xs) и выводит подпись \(\sigma\). и множество \(S = \)S'\( \cup \{P_s\}\). 8 16 Да, теперь у нас есть а) платежный адрес и б) идентификатор платежа. Критик мог бы спросить: «А действительно ли нам нужно это делать? В конце концов, если торговец получает 112.00678952 Точно CN, и это был мой заказ, и у меня есть скриншот, или чек, или что-то еще, не так ли? безумной степени точности достаточно?" Ответ: «Может быть, большую часть времени, в повседневной жизни, личные сделки». Однако более распространенная ситуация (особенно в цифровом мире) такова: продавец продает набор объектов, каждый из которых имеет фиксированную цену. Скажем, объект A имеет плотность 0,001 CN, объект B — 0,01 CN и объект C равен 0,1 CN. Теперь, если продавец получит заказ на 1,618 CN, его будет много-много (много!) способов оформить заказ для клиента. И поэтому без какого-либо идентификатора платежа, отождествление так называемого «уникального» заказа клиента с так называемой «уникальной» стоимостью его порядок становится невозможным. Еще смешнее: если в моем интернет-магазине все стоит ровно 1,0 CN, а у меня 1000 клиентов в день? И вы хотите доказать, что купили ровно 3 объекта две недели назад? Без идентификатора платежа? Удачи, приятель. Короче говоря: когда Боб публикует платежный адрес, он может в конечном итоге также опубликовать также идентификатор платежа (см., например, депозиты Poloniex XMR). Это отличается от того, что описано в тексте здесь, где Алиса генерирует идентификатор платежа. У Боба также должен быть какой-то способ сгенерировать идентификатор платежа. (а, Б) Напомним, что ключ отслеживания (a,B) может быть опубликован; потеря тайны значения «а» будет не нарушать вашу способность тратить и не позволять людям воровать у вас (я думаю... это было бы чтобы быть доказанным), это просто позволит людям видеть все входящие транзакции. Усеченный адрес, как описано в этом параграфе, просто берет «частную» часть ключа. и генерирует его из «публичной» части. Раскрытие значения «a» устранит невозможность связывания. но сохранит остальные транзакции. Автор имеет в виду «не несвязываемый», потому что «несвязываемый» относится к получателю, а «связываемый» относится к отправителю. Также очевидно, что автор не осознавал, что существует два разных аспекта возможности связывания. Поскольку все-таки транзакция — это направленный объект на графе, то возникнет два вопроса: «Эти две транзакции отправляются одному и тому же человеку?» и «придут ли эти две транзакции от одного и того же человека?" Это политика «без возврата», согласно которой свойство отсутствия связи CryptoNote условный. То есть Боб может выбрать, чтобы его входящие транзакции были неотключаемыми. используя эту политику. Это утверждение они доказывают в рамках модели случайного оракула. Мы доберемся до этого; Случайный У Oracle есть плюсы и минусы.

VER: принимает сообщение m, набор S, подпись \(\sigma\) и выводит «истина» или «ложь». LNK: принимает набор I = {Ii}, подпись \(\sigma\) и выводит «связанный» или «независимый». Идея протокола довольно проста: пользователь создает подпись, которую можно проверяется набором открытых ключей, а не уникальным открытым ключом. Личность подписывающего лица неотличимы от других пользователей, чьи открытые ключи находятся в наборе, пока владелец не предоставит вторая подпись с использованием той же пары ключей. Закрытые ключи х0 \(\cdots\) xi \(\cdots\) хн Открытые ключи Р0 \(\cdots\) Пи \(\cdots\) пн Кольцо Подпись знак проверить Рис. 6. Анонимность кольцевой подписи. ОБЩ: подписывающая сторона выбирает случайный секретный ключ \(x \in [1, l - 1]\) и вычисляет соответствующий открытый ключ P = xG. Дополнительно он вычисляет еще один открытый ключ I = xHp(P), который мы и будем использовать. назвать «ключевым изображением». SIG: подписывающая сторона генерирует одноразовую кольцевую подпись с неинтерактивной подписью с нулевым разглашением. доказательство с использованием методов из [21]. Он выбирает случайное подмножество \(S'\) из n из числа других пользователей. открытые ключи Pi, его собственная пара ключей (x, P) и образ ключа I. Пусть \(0 \leq s \leq n\) — секретный индекс подписывающего лица. в S (так что его открытый ключ — Ps). Он выбирает случайное {ци | я = 0. . . n} и {wi | я = 0. . . n, i ̸= s} из (1 . . . l) и применяет следующие преобразования: Ли = ( циГ, если я = с киГ + вайПи, если я ̸= s Ри = ( qiHp(Пи), если я = с qiHp(Pi) + wiI, если я ̸= s Следующий шаг — получение неинтерактивного задания: c = Hs(m, L1,...,Ln, R1,...,Rn) Наконец подписывающая сторона вычисляет ответ: ци =    ви, если я ̸= s с — НП я = 0 ци мод л, если я = с ри = ( ци, если я ̸= s qs -csx мод л, если я = с Результирующая сигнатура имеет вид \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\). 9 VER: принимает сообщение m, набор S, подпись \(\sigma\) и выводит «истина» или «ложь». LNK: принимает набор I = {Ii}, подпись \(\sigma\) и выводит «связанный» или «независимый». Идея протокола довольно проста: пользователь создает подпись, которую можно проверяется набором открытых ключей, а не уникальным открытым ключом. Личность подписывающего лица неотличимы от других пользователей, чьи открытые ключи находятся в наборе, пока владелец не предоставит вторая подпись с использованием той же пары ключей. Закрытые ключи х0 \(\cdots\) xi \(\cdots\) хн Открытые ключи Р0 \(\cdots\) Пи \(\cdots\) пн Кольцо Подпись знак проверить Рис. 6. Анонимность кольцевой подписи. ОБЩ: подписывающая сторона выбирает случайный секретный ключ \(x \in [1, l - 1]\) и вычисляет соответствующий открытый ключ P = xG. Дополнительно он вычисляет еще один открытый ключ I = xHp(P), который мы и будем использовать. назвать «ключевым изображением». SIG: подписывающая сторона генерирует одноразовую кольцевую подпись с неинтерактивной подписью с нулевым разглашением. доказательство с использованием методов из [21]. Он выбирает случайное подмножество \(S'\) из n из числа других пользователей. открытые ключи Pi, его собственная пара ключей (x, P) и образ ключа I. Пусть \(0 \leq s \leq n\) — секретный индекс подписывающего лица. в S (так что его открытый ключ — Ps). Он выбирает случайное {ци | я = 0. . . n} и {wi | я = 0. . . n, i ̸= s} из (1 . . . l) и применяет следующие преобразования: Ли = ( циГ, если я = с киГ + вайПи, если я ̸= s Ри = ( qiHp(Пи), если я = с qiHp(Pi) + wiI, если я ̸= s Следующий шаг — получение неинтерактивного задания: c = Hs(m, L1,...,Ln, R1,...,Rn) Наконец подписывающая сторона вычисляет ответ: ци =    ви, если я ̸= s с — НП я = 0 ци мод л, если я = с ри = ( ци, если я ̸= s qs -csx мод л, если я = с Результирующая сигнатура имеет вид \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\). 9 17 Возможно, это глупо, но при объединении S и P_s нужно соблюдать осторожность. Если вы просто добавите последний открытый ключ до конца, невозможность связывания нарушена, поскольку любой проверяет проходящие транзакции можно просто проверить последний открытый ключ, указанный в каждой транзакции, и бум. Это открытый ключ связанный с отправителем. Таким образом, после объединения необходимо использовать генератор псевдослучайных чисел. используется для перестановки выбранных открытых ключей. «...пока владелец не создаст вторую подпись, используя ту же пару ключей». Желаю автору(ам?) подробнее об этом. Я считаю, что это означает: «Убедитесь, что каждый раз, когда вы выбираете набор открытых ключей для запутывания самостоятельно, вы выбираете совершенно новый набор, в котором нет двух одинаковых ключей». довольно сильное условие для невозможности соединения. Возможно, «вы выбираете новый случайный набор из все возможные ключи» с предположением, что хотя и нетривиальные пересечения неизбежно случаются, они случаются не часто. В любом случае, мне нужно углубиться в это утверждение. Это генерирует кольцевую подпись. Доказательства с нулевым разглашением — это потрясающе: я призываю вас доказать мне, что вы знаете секрет не раскрывая тайны. Например, предположим, что мы находимся у входа в пещеру в форме пончика. а в задней части пещеры (вне поля зрения входа) находится одверь, к которой ты утверждайте, что у вас есть ключ. Если ты пойдешь в одном направлении, тебя всегда пропустят, но если ты пойдешь в другом в другом направлении, вам нужен ключ. Но ты даже не хочешь ПОКАЗАТЬ мне ключ, не говоря уже о покажи мне, что он открывает дверь. Но ты хочешь доказать мне, что знаешь, как открыть дверь. В интерактивной обстановке я подбрасываю монетку. Орел слева, решка справа, и вы идете вниз по пещера в форме пончика, куда бы вас ни направила монета. Сзади, вне моего поля зрения, ты откройте дверь, чтобы вернуться с другой стороны. Повторяем эксперимент с подбрасыванием монеты. пока я не удостоверюсь, что у вас есть ключ. Но это явно ИНТЕРАКТИВНОЕ доказательство с нулевым разглашением. Есть неинтерактивные версии, в которых нам с вами никогда не придется общаться; таким образом, никакие подслушивающие устройства не смогут вмешаться. http://en.wikipedia.org/wiki/Zero-knowledge_proof Это противоположное предыдущему определению.

VER: принимает сообщение m, набор S, подпись \(\sigma\) и выводит «истина» или «ложь». LNK: принимает набор I = {Ii}, подпись \(\sigma\) и выводит «связанный» или «независимый». Идея протокола довольно проста: пользователь создает подпись, которую можно проверяется набором открытых ключей, а не уникальным открытым ключом. Личность подписывающего лица неотличимы от других пользователей, чьи открытые ключи находятся в наборе, пока владелец не предоставит вторая подпись с использованием той же пары ключей. Закрытые ключи х0 \(\cdots\) xi \(\cdots\) хн Открытые ключи Р0 \(\cdots\) Пи \(\cdots\) пн Кольцо Подпись знак проверить Рис. 6. Анонимность кольцевой подписи. ОБЩ: подписывающая сторона выбирает случайный секретный ключ \(x \in [1, l - 1]\) и вычисляет соответствующий открытый ключ P = xG. Дополнительно он вычисляет еще один открытый ключ I = xHp(P), который мы и будем использовать. назвать «ключевым изображением». SIG: подписывающая сторона генерирует одноразовую кольцевую подпись с неинтерактивной подписью с нулевым разглашением. доказательство с использованием методов из [21]. Он выбирает случайное подмножество \(S'\) из n из числа других пользователей. открытые ключи Pi, его собственная пара ключей (x, P) и образ ключа I. Пусть \(0 \leq s \leq n\) — секретный индекс подписывающего лица. в S (так что его открытый ключ — Ps). Он выбирает случайное {ци | я = 0. . . n} и {wi | я = 0. . . n, i ̸= s} из (1 . . . l) и применяет следующие преобразования: Ли = ( циГ, если я = с киГ + вайПи, если я ̸= s Ри = ( qiHp(Пи), если я = с qiHp(Pi) + wiI, если я ̸= s Следующий шаг — получение неинтерактивного задания: c = Hs(m, L1,...,Ln, R1,...,Rn) Наконец подписывающая сторона вычисляет ответ: ци =    ви, если я ̸= s с — НП я = 0 ци мод л, если я = с ри = ( ци, если я ̸= s qs -csx мод л, если я = с Результирующая сигнатура имеет вид \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\). 9 VER: принимает сообщение m, набор S, подпись \(\sigma\) и выводит «истина» или «ложь». LNK: принимает набор I = {Ii}, подпись \(\sigma\) и выводит «связанный» или «независимый». Идея протокола довольно проста: пользователь создает подпись, которую можно проверяется набором открытых ключей, а не уникальным открытым ключом. Личность подписывающего лица неотличимы от других пользователей, чьи открытые ключи находятся в наборе, пока владелец не предоставит вторая подпись с использованием той же пары ключей. Закрытые ключи х0 \(\cdots\) xi \(\cdots\) хн Открытые ключи Р0 \(\cdots\) Пи \(\cdots\) пн Кольцо Подпись знак проверить Рис. 6. Анонимность кольцевой подписи. ОБЩ: подписывающая сторона выбирает случайный секретный ключ \(x \in [1, l - 1]\) и вычисляет соответствующий открытый ключ P = xG. Дополнительно он вычисляет еще один открытый ключ I = xHp(P), который мы и будем использовать. назвать «ключевым изображением». SIG: подписывающая сторона генерирует одноразовую кольцевую подпись с неинтерактивной подписью с нулевым разглашением. доказательство с использованием методов из [21]. Он выбирает случайное подмножество \(S'\) из n из числа других пользователей. открытые ключи Pi, его собственная пара ключей (x, P) и образ ключа I. Пусть \(0 \leq s \leq n\) — секретный индекс подписывающего лица. в S (так что его открытый ключ — Ps). Он выбирает случайное {ци | я = 0. . . n} и {wi | я = 0. . . n, i ̸= s} из (1 . . . l) и применяет следующие преобразования: Ли = ( циГ, если я = с киГ + вайПи, если я ̸= s Ри = ( qiHp(Пи), если я = с qiHp(Pi) + wiI, если я ̸= s Следующий шаг — получение неинтерактивного задания: c = Hs(m, L1,...,Ln, R1,...,Rn) Наконец подписывающая сторона вычисляет ответ: ци =    ви, если я ̸= s с — НП я = 0 ци мод л, если я = с ри = ( ци, если я ̸= s qs -csx мод л, если я = с Результирующая сигнатура имеет вид \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\). 9 18 Вся эта область не зависит от криптонот, просто описывая алгоритм кольцевой подписи без ссылка на валюты. Я подозреваю, что некоторые обозначения совпадают с остальной частью статьи. хотя. Например, x — это «случайный» секретный ключ, выбранный в GEN, который дает открытый ключ P. и изображение открытого ключа I. Это значение x — это значение, которое Боб вычисляет в части 6 на странице 8. Итак, это начинаю прояснять некоторую путаницу из предыдущего описания. Это круто; деньги не переводятся с публичного адреса Алисы на публичный адрес Боба. адрес." Он пересылается с одноразового адреса на одноразовый адрес. В каком-то смысле вот как все работает. Если у Алекса есть криптоноты, потому что кто-то отправила их ей, это означает, что у нее есть секретные ключи, необходимые для отправки их Бобу. Она использует обмен Диффе-Хеллманом с использованием общедоступной информации Боба для создания нового одноразового адреса и криптоноты передаются на этот адрес. Теперь, поскольку для генерации нового одноразового адреса использовался (предположительно безопасный) обмен DH на который Алекс отправила свой CN, Боб — единственный, у кого есть закрытые ключи, необходимые для повторения выше. Итак, теперь Боб — это Алекс. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation Суммирование должно индексироваться по j, а не по i. Каждый c_i является случайным мусором (поскольку w_i является случайным) кроме задницы c_iсвязан с фактическим ключом, включенным в эту подпись. Значение c равно hash предыдущей информации. Я думаю, что это может содержать опечатку, более серьезную, чем повторное использование индекса «i», потому что c_s кажется определяться имплицитно, а не эксплицитно. Действительно, если принять это уравнение на веру, то мы определим, что c_s = (1/2)c - (1/2) sum_i neq s c_i. То есть hash минус целая куча случайных чисел. С другой стороны, если это суммирование предназначено для чтения «c_s = (c — sum_j neq s c_j) mod l", затем мы берем hash нашей предыдущей информации, генерируем группу случайных чисел, вычтите все эти случайные числа из hash, и это даст нам c_s. Кажется, это то, что «должно» происходить, исходя из моей интуиции, и соответствует шагу проверки на странице 10. Но интуиция – это не математика. Я углублюсь в это. То же, что и раньше; все это будет случайным мусором, за исключением того, что связано с настоящим открытый ключ подписывающего лица x. За исключением этого раза, это больше, чем я ожидал от структуры: r_i является случайным для i!=s, а r_s определяется только секретным x и индексированными значениями s q_i и c_i.

VER: Верификатор проверяет подпись, применяя обратные преобразования: ( Л' я = riG + ciPi Р' я = riHp(Pi) + ciI Наконец, проверяющий проверяет, НП я = 0 ци ?= Hs(m, L′ 0, . . . , Л' п, Р' 0, . . . , Р' п) мод л Если это равенство верно, верификатор запускает алгоритм LNK. В противном случае проверяющий отклоняет подпись. LNK: верификатор проверяет, использовалось ли I в прошлых подписях (эти значения хранятся в набор И). Многократное использование подразумевает, что две подписи были созданы под одним и тем же секретным ключом. Смысл протокола: применяя L-преобразования, подписывающий доказывает, что он знает такой x, что хотя бы один Pi = xG. Чтобы сделать это доказательство неповторяемым, введем ключевой образ поскольку I = xHp(P). Подписавшийся использует те же коэффициенты (ri, ci), чтобы доказать почти одно и то же утверждение: он знает такой x, что хотя бы один \(H_p(P_i) = I \cdot x^{-1}\). Если отображение \(x \to I\) является инъекцией: 1. Никто не может восстановить открытый ключ по образу ключа и идентифицировать подписавшего; 2. Подписавшийся не может поставить две подписи с разными I и одним и тем же x. Полный анализ безопасности представлен в Приложении А. 4,5 Стандартная транзакция CryptoNote Комбинируя оба метода (непривязываемые открытые ключи и неотслеживаемую кольцевую подпись), Боб достигает новый уровень конфиденциальности по сравнению с исходной схемой Bitcoin. Требуется, чтобы он хранил только один закрытый ключ (a, b) и публикацию (A, B), чтобы начать получать и отправлять анонимные транзакции. При проверке каждой транзакции Боб дополнительно выполняет только два умножения эллиптической кривой и одно сложение на каждый выход, чтобы проверить, принадлежит ли ему транзакция. Для каждого его вывод Боб восстанавливает одноразовую пару ключей (pi, Pi) и сохраняет ее в своем кошельке. Любые входы могут быть косвенно доказано, что они принадлежат одному и тому же владельцу только в том случае, если они фигурируют в одной сделке. В На самом деле эту связь гораздо сложнее установить из-за одноразовой кольцевой подписи. С помощью кольцевой подписи Боб может эффективно скрыть все вводимые данные среди чужих; все возможно потратители будут равновероятны, даже предыдущий владелец (Алиса) располагает не большей информацией, чем любой наблюдатель. Подписывая свою транзакцию, Боб указывает n зарубежных выходов на ту же сумму, что и его вывод, смешивая их все без участия других пользователей. Сам Боб (а также кто-либо еще) не знает, были ли потрачены какие-либо из этих платежей: результат можно использовать в тысячах подписей как фактор двусмысленности, а не как цель сокрытия. Двойной Проверка расходов происходит на этапе LNK при проверке по используемому набору ключевых изображений. Боб может выбрать степень неоднозначности самостоятельно: n = 1 означает, что вероятность, которую он имеет потраченный выход имеет вероятность 50%, n = 99 дает 1%. Размер полученной подписи увеличивается линейно как O(n+1), поэтому улучшение анонимности обходится Бобу дополнительными комиссиями за транзакцию. Он также может установите n = 0 и сделайте его кольцевую подпись состоящей только из одного элемента, однако это мгновенно раскрыть его как транжиру. 10 VER: Верификатор проверяет подпись, применяя обратные преобразования: ( Л' я = riG + ciPi Р' я = riHp(Pi) + ciI Наконец, проверяющий проверяет, НП я = 0 ци ?= Hs(m, L′ 0, . . . , Л' п, Р' 0, . . . , Р' п) мод л Если это равенство верно, верификатор запускает алгоритм LNK. В противном случае проверяющий отклоняет подпись. LNK: верификатор проверяет, использовалось ли I в прошлых подписях (эти значения хранятся в набор И). Многократное использование подразумевает, что две подписи были созданы под одним и тем же секретным ключом. Смысл протокола: применяя L-преобразования, подписывающий доказывает, что он знает такой x, что хотя бы один Pi = xG. Чтобы сделать это доказательство неповторяемым, введем ключевой образ поскольку I = xHp(P). Подписавшийся использует те же коэффициенты (ri, ci), чтобы доказать почти одно и то же утверждение: он знает такой x, что хотя бы один \(H_p(P_i) = I \cdot x^{-1}\). Если отображение \(x \to I\) является инъекцией: 1. Никто не может восстановить открытый ключ по образу ключа и идентифицировать подписавшего; 2. Подписавшийся не может поставить две подписи с разными I и одним и тем же x. Полный анализ безопасности представлен в Приложении А. 4,5 Стандартная транзакция CryptoNote Комбинируя оба метода (непривязываемые открытые ключи и неотслеживаемую кольцевую подпись), Боб достигает новый уровень конфиденциальности по сравнению с исходной схемой Bitcoin. Требуется, чтобы он хранил только один закрытый ключ (a, b) и публикацию (A, B), чтобы начать получать и отправлять анонимные транзакции. При проверке каждой транзакции Боб дополнительно выполняет только два умножения эллиптической кривой и одно сложение на каждый выход, чтобы проверить, принадлежит ли ему транзакция. Для каждого его вывод Боб восстанавливает одноразовую пару ключей (pi, Pi) и stхранит это в своем кошельке. Любые входы могут быть косвенно доказано, что они принадлежат одному и тому же владельцу только в том случае, если они фигурируют в одной сделке. В На самом деле эту связь гораздо сложнее установить из-за одноразовой кольцевой подписи. С помощью кольцевой подписи Боб может эффективно скрыть все вводимые данные среди чужих; все возможно потратители будут равновероятны, даже предыдущий владелец (Алиса) располагает не большей информацией, чем любой наблюдатель. Подписывая свою транзакцию, Боб указывает n зарубежных выходов на ту же сумму, что и его вывод, смешивая их все без участия других пользователей. Сам Боб (а также кто-либо еще) не знает, были ли потрачены какие-либо из этих платежей: результат можно использовать в тысячах подписей как фактор двусмысленности, а не как цель сокрытия. Двойной Проверка расходов происходит на этапе LNK при проверке по используемому набору ключевых изображений. Боб может выбрать степень неоднозначности самостоятельно: n = 1 означает, что вероятность, которую он имеет потраченный выход имеет вероятность 50%, n = 99 дает 1%. Размер полученной подписи увеличивается линейно как O(n+1), поэтому улучшение анонимности обходится Бобу дополнительными комиссиями за транзакцию. Он также может установите n = 0 и сделайте его кольцевую подпись состоящей только из одного элемента, однако это мгновенно раскрыть его как транжиру. 10 19 В этот момент я ужасно запутался. Алекс получает сообщение M с подписью (I,c_1, ..., c_n, r_1, ..., r_n) и списком публичных клавиши S. и она запускает VER. Это вычислит L_i’ и R_i’ Это подтверждает, что c_s = c - sum_i neq s c_i на предыдущей странице. Сначала я был ОЧЕНЬ (ха) в замешательстве. Любой может вычислить L_i’ и R_i’. Действительно, каждый r_i и c_i опубликовано в подписи сигма вместе со значением I. Набор S = P_i всех открытых ключей также был опубликован. Так что любой, кто видел Сигму и набор ключи S = P_i получат одинаковые значения для L_i’ и R_i’ и, следовательно, проверят подпись. Но потом я вспомнил, что этот раздел просто описывает алгоритм подписи, а не «проверку». если подписано, проверьте, ОТПРАВЛЕНО МНЕ, и если да, то идите тратить деньги». Это ПРОСТО фирменная часть игры. Мне интересно прочитать Приложение А, когда я наконец туда доберусь. Я хотел бы увидеть полномасштабное сравнение Cryptonote по операциям с Bitcoin. А также электричество/устойчивое развитие. Какие части алгоритмов здесь представляют собой «входные данные»? Я полагаю, что входные данные транзакции представляют собой сумму и набор UTXO, сумма которых превышает сумму Сумма. Это неясно. «Цель спряталась?» Я думал об этом уже несколько минут, но до сих пор не понял. смутное представление о том, что это могло означать. Атака двойного расходования может быть выполнена только путем манипулирования предполагаемым используемым ключом узла. набор изображений \(I\). «Степень неоднозначности» = n, но общее количество открытых ключей, включенных в транзакцию, равно п+1. Другими словами, степень двусмысленности будет такой: «Сколько ДРУГИХ людей вы хотите видеть в группе?» толпа?" Ответ, вероятно, будет по умолчанию «как можно больше».

VER: Верификатор проверяет подпись, применяя обратные преобразования: ( Л' я = riG + ciPi Р' я = riHp(Pi) + ciI Наконец, проверяющий проверяет, НП я = 0 ци ?= Hs(m, L′ 0, . . . , Л' п, Р' 0, . . . , Р' п) мод л Если это равенство верно, верификатор запускает алгоритм LNK. В противном случае проверяющий отклоняет подпись. LNK: верификатор проверяет, использовалось ли I в прошлых подписях (эти значения хранятся в набор И). Многократное использование подразумевает, что две подписи были созданы под одним и тем же секретным ключом. Смысл протокола: применяя L-преобразования, подписывающий доказывает, что он знает такой x, что хотя бы один Pi = xG. Чтобы сделать это доказательство неповторяемым, введем ключевой образ поскольку I = xHp(P). Подписавшийся использует те же коэффициенты (ri, ci), чтобы доказать почти одно и то же утверждение: он знает такой x, что хотя бы один \(H_p(P_i) = I \cdot x^{-1}\). Если отображение \(x \to I\) является инъекцией: 1. Никто не может восстановить открытый ключ по образу ключа и идентифицировать подписавшего; 2. Подписавшийся не может поставить две подписи с разными I и одним и тем же x. Полный анализ безопасности представлен в Приложении А. 4,5 Стандартная транзакция CryptoNote Комбинируя оба метода (непривязываемые открытые ключи и неотслеживаемую кольцевую подпись), Боб достигает новый уровень конфиденциальности по сравнению с исходной схемой Bitcoin. Требуется, чтобы он хранил только один закрытый ключ (a, b) и публикацию (A, B), чтобы начать получать и отправлять анонимные транзакции. При проверке каждой транзакции Боб дополнительно выполняет только два умножения эллиптической кривой и одно сложение на каждый выход, чтобы проверить, принадлежит ли ему транзакция. Для каждого его вывод Боб восстанавливает одноразовую пару ключей (pi, Pi) и сохраняет ее в своем кошельке. Любые входы могут быть косвенно доказано, что они принадлежат одному и тому же владельцу только в том случае, если они фигурируют в одной сделке. В На самом деле эту связь гораздо сложнее установить из-за одноразовой кольцевой подписи. С помощью кольцевой подписи Боб может эффективно скрыть все вводимые данные среди чужих; все возможно потратители будут равновероятны, даже предыдущий владелец (Алиса) располагает не большей информацией, чем любой наблюдатель. Подписывая свою транзакцию, Боб указывает n зарубежных выходов на ту же сумму, что и его вывод, смешивая их все без участия других пользователей. Сам Боб (а также кто-либо еще) не знает, были ли потрачены какие-либо из этих платежей: результат можно использовать в тысячах подписей как фактор двусмысленности, а не как цель сокрытия. Двойной Проверка расходов происходит на этапе LNK при проверке по используемому набору ключевых изображений. Боб может выбрать степень неоднозначности самостоятельно: n = 1 означает, что вероятность, которую он имеет потраченный выход имеет вероятность 50%, n = 99 дает 1%. Размер полученной подписи увеличивается линейно как O(n+1), поэтому улучшение анонимности обходится Бобу дополнительными комиссиями за транзакцию. Он также может установите n = 0 и сделайте его кольцевую подпись состоящей только из одного элемента, однако это мгновенно раскрыть его как транжиру. 10 VER: Верификатор проверяет подпись, применяя обратные преобразования: ( Л' я = riG + ciPi Р' я = riHp(Pi) + ciI Наконец, проверяющий проверяет, НП я = 0 ци ?= Hs(m, L′ 0, . . . , Л' п, Р' 0, . . . , Р' п) мод л Если это равенство верно, верификатор запускает алгоритм LNK. В противном случае проверяющий отклоняет подпись. LNK: верификатор проверяет, использовалось ли I в прошлых подписях (эти значения хранятся в набор И). Многократное использование подразумевает, что две подписи были созданы под одним и тем же секретным ключом. Смысл протокола: применяя L-преобразования, подписывающий доказывает, что он знает такой x, что хотя бы один Pi = xG. Чтобы сделать это доказательство неповторяемым, введем ключевой образ поскольку I = xHp(P). Подписавшийся использует те же коэффициенты (ri, ci), чтобы доказать почти одно и то же утверждение: он знает такой x, что хотя бы один \(H_p(P_i) = I \cdot x^{-1}\). Если отображение \(x \to I\) является инъекцией: 1. Никто не может восстановить открытый ключ по образу ключа и идентифицировать подписавшего; 2. Подписавшийся не может поставить две подписи с разными I и одним и тем же x. Полный анализ безопасности представлен в Приложении А. 4,5 Стандартная транзакция CryptoNote Комбинируя оба метода (непривязываемые открытые ключи и неотслеживаемую кольцевую подпись), Боб достигает новый уровень конфиденциальности по сравнению с исходной схемой Bitcoin. Требуется, чтобы он хранил только один закрытый ключ (a, b) и публикацию (A, B), чтобы начать получать и отправлять анонимные транзакции. При проверке каждой транзакции Боб дополнительно выполняет только два умножения эллиптической кривой и одно сложение на каждый выход, чтобы проверить, принадлежит ли ему транзакция. Для каждого его вывод Боб восстанавливает одноразовую пару ключей (pi, Pi) и stхранит это в своем кошельке. Любые входы могут быть косвенно доказано, что они принадлежат одному и тому же владельцу только в том случае, если они фигурируют в одной сделке. В На самом деле эту связь гораздо сложнее установить из-за одноразовой кольцевой подписи. С помощью кольцевой подписи Боб может эффективно скрыть все вводимые данные среди чужих; все возможно потратители будут равновероятны, даже предыдущий владелец (Алиса) располагает не большей информацией, чем любой наблюдатель. Подписывая свою транзакцию, Боб указывает n зарубежных выходов на ту же сумму, что и его вывод, смешивая их все без участия других пользователей. Сам Боб (а также кто-либо еще) не знает, были ли потрачены какие-либо из этих платежей: результат можно использовать в тысячах подписей как фактор двусмысленности, а не как цель сокрытия. Двойной Проверка расходов происходит на этапе LNK при проверке по используемому набору ключевых изображений. Боб может выбрать степень неоднозначности самостоятельно: n = 1 означает, что вероятность, которую он имеет потраченный выход имеет вероятность 50%, n = 99 дает 1%. Размер полученной подписи увеличивается линейно как O(n+1), поэтому улучшение анонимности обходится Бобу дополнительными комиссиями за транзакцию. Он также может установите n = 0 и сделайте его кольцевую подпись состоящей только из одного элемента, однако это мгновенно раскрыть его как транжиру. 10 20 Это интересно; ранее мы предоставили получателю Бобу возможность отправлять все ВХОДЯЩИЕ транзакции не могут быть отсоединены либо путем детерминированного выбора половины его закрытых ключей, либо путем опубликовав половину своих личных ключей как публичные. Это своего рода политика без пути назад. Здесь мы видим способ отправителя Алекса выбрать одну исходящую транзакцию как связанную, но на самом деле это раскрывает Алекса как отправителя всей сети. Это НЕ политика безвозвратного пути. Это транзакция за транзакцией. Есть ли третья политика? Может ли получатель, Боб, создать для Алекса уникальный идентификатор платежа, который никогда не меняется, возможно, используя обмен Диффе-Хеллмана? Если кто-нибудь включит этот платеж Идентификатор, указанный где-то в ее транзакции на адрес Боба, он, должно быть, исходил от Алекса. Таким образом, Алексу не нужно раскрывать себя всей сети, выбирая ссылку на конкретный транзакцию, но она все равно может идентифицировать себя с человеком, которому она отправляет свои деньги. Разве не это делает Poloniex?

Транзакция Вход передачи Выход0 . . . Выходные данные . . . Выходной Ключевое изображение Подписи Кольцевая подпись Ключ назначения Выход1 Ключ назначения Выходной Зарубежные операции Вывод отправителя Ключ назначения Одноразовая пара ключей Одноразовый закрытый ключ Я = хГП(П) П, х Рис. 7. Генерация кольцевой подписи в стандартной транзакции. 5 Эгалитарное доказательство работы В этом разделе мы предлагаем и обосновываем новый алгоритм proof-of-work. Наша основная цель заключается в сокращении разрыва между майнерами CPU (большинство) и GPU/FPGA/ASIC (меньшинство). Это уместно, что некоторые пользователи могут иметь определенное преимущество перед другими, но их инвестиции должно расти по крайней мере линейно с мощностью. В более общем смысле, производство устройств специального назначения. должна быть как можно менее прибыльной. 5.1 Связанные работы Исходный протокол Bitcoin proof-of-work использует функцию ценообразования с интенсивным использованием ЦП SHA-256. Он в основном состоит из основных логических операторов и полагается исключительно на скорость вычислений. процессор, поэтому идеально подходит для многоядерной/конвейерной реализации. Однако современные компьютеры ограничены не только количеством операций в секунду. но и по размеру памяти. Хотя некоторые процессоры могут быть значительно быстрее других [8], размеры памяти вряд ли будут различаться между машинами. Ценовые функции, связанные с памятью, были впервые введены Абади и др. и определены как «функции, время вычисления которых во многом зависит от времени, затрачиваемого на доступ к памяти» [15]. Основная идея заключается в построении алгоритма, выделяющего большой блок данных («блокнот»). в памяти, доступ к которой возможен относительно медленно (например, ОЗУ) и «доступ к непредсказуемая последовательность локаций» внутри него. Блок должен быть достаточно большим, чтобы можно было сохранить данные более выгодны, чем пересчитывать их для каждого доступа. Алгоритм также должен предотвратить внутренний параллелизм, следовательно, N одновременных потоков должны требовать в N раз больше памяти сразу. Дворк и др. [22] исследовали и формализовали этот подход, что привело их к предложению другого вариант функции ценообразования: «Mbound». Еще одна работа принадлежит Ф. Коэльо [20], который 11 Транзакция Вход передачи Выход0 . . . Выходные данные . . . Выходной Ключевое изображение Подписи Кольцевая подпись Ключ назначения Выход1 Ключ назначения Выходной Зарубежные сделки Вывод отправителя Ключ назначения Одноразовая пара ключей Одноразовый закрытый ключ Я = хГП(П) П, х Рис. 7. Генерация кольцевой подписи в стандартной транзакции. 5 Эгалитарное доказательство работы В этом разделе мы предлагаем и обосновываем новый алгоритм proof-of-work. Наша основная цель заключается в сокращении разрыва между майнерами CPU (большинство) и GPU/FPGA/ASIC (меньшинство). Это уместно, что некоторые пользователи могут иметь определенное преимущество перед другими, но их инвестиции должно расти по крайней мере линейно с мощностью. В более общем смысле, производство устройств специального назначения. должна быть как можно менее прибыльной. 5.1 Связанные работы Исходный протокол Bitcoin proof-of-work использует функцию ценообразования с интенсивным использованием ЦП SHA-256. Он в основном состоит из основных логических операторов и полагается исключительно на скорость вычислений. процессор, поэтому идеально подходит для многоядерной/конвейерной реализации. Однако современные компьютеры ограничены не только количеством операций в секунду. но и по размеру памяти. Хотя некоторые процессоры могут быть значительно быстрее других [8], размеры памяти вряд ли будут различаться между машинами. Ценовые функции, связанные с памятью, были впервые введены Абади и др. и определены как «функции, время вычислений которых во многом зависит от времени, затрачиваемого на доступ к памяти» [15]. Основная идея заключается в построении алгоритма, выделяющего большой блок данных («блокнот»). в памяти, доступ к которой возможен относительно медленно (например, ОЗУ) и «доступ к непредсказуемая последовательность локаций» внутри него. Блок должен быть достаточно большим, чтобы можно было сохранить данные более выгодны, чем пересчитывать их для каждого доступа. Алгоритм также должен предотвратить внутренний параллелизм, следовательно, N одновременных потоков должны требовать в N раз больше памяти сразу. Дворк и др. [22] исследовали и формализовали этот подход, что привело их к предложению другого вариант функции ценообразования: «Mbound». Еще одна работа принадлежит Ф. Коэльо [20], который 11 21 Это, якобы, наши UTXO: суммы и ключи назначения. Если Алекс создает эту стандартную транзакцию и отправляет ее Бобу, то у Алекса также есть закрытые ключи. каждому из них. Мне очень нравится эта диаграмма, потому что она отвечает на некоторые предыдущие вопросы. Вход Txn состоит из набора выходов Txn и key изображение. Затем он подписывается кольцевой подписью, включая все личных ключей, которыми владеет Алекс, ко всем зарубежным транзакциям, включенным в сделку. Вывод Txn состоит из суммы и ключа назначения. Получатель транзакции может: по своему желанию генерировать свой одноразовый закрытый ключ, как описано ранее в статье, чтобы потратить деньги. Будет приятно узнать, насколько это соответствует реальному коду... Нет, Ник ван Саберхаген в общих чертах описывает некоторые свойства алгоритма доказательства работы: без фактического описания этого алгоритма. Сам алгоритм CryptoNight ТРЕБУЕТ глубокого анализа. Когда я это прочитал, я заикался. Должны ли инвестиции расти хотя бы линейно с ростом власти, или же следует инвестиции растут максимум линейно с ростом мощности? И тогда я понял; Я, как майнер или инвестор, обычно думаю о том, «сколько энергии я могу получить». для инвестиций?» а не «сколько инвестиций требуется для фиксированного количества энергии?» Конечно, обозначим инвестиции через I, а мощность через P. Если I(P) — это инвестиции как функция мощности а P(I) — мощность как функция инвестиций, они будут обратными друг другу (где бы то ни было). обратные могут существовать). И если I(P) быстрее линейного, чем P(I) медленнее линейного. Следовательно, будет снижена норма прибыли для инвесторов. То есть автор здесь говорит следующее: «конечно, чем больше вы вкладываете, тем больше и получаете». мощность. Но мы должны попытаться добиться снижения нормы прибыли». В конечном итоге инвестиции в процессоры окажутся сублинейными; вопрос в том, являются ли авторы разработали алгоритм POW, который заставит ASIC также делать это. Должна ли гипотетическая «валюта будущего» всегда майнить с использованием самых медленных/наиболее ограниченных ресурсов? Статья Абади и др. (авторами которой являются несколько инженеров Google и Microsoft): по сути, используя тот факт, что за последние несколько лет объем памяти был намного меньше разница между машинами превышает скорость процессора, а соотношение инвестиций к мощности более чем линейное. Через несколько лет, возможно, придется переоценить это! Всё это гонка вооружений... Создать функцию hash сложно; создание функции hash, удовлетворяющей этим ограничениям, кажется более сложной задачей. Эта статья, похоже, не содержит объяснения фактического hashалгоритм CryptoNight. Я думаю, что это реализация SHA-3 с жесткими требованиями к памяти, основанная в сообщениях на форуме, но я понятия не имею... и в этом вся суть. Это необходимо объяснить.

предложил наиболее эффективное решение: «Хоккайдо». Насколько нам известно, последней работой, основанной на идее псевдослучайного поиска в большом массиве, является алгоритм, известный как «scrypt» К. Персиваля [32]. В отличие от предыдущих функций, он фокусируется на получение ключа, а не системы proof-of-work. Несмотря на этот факт, скрипт может служить нашей цели: она хорошо работает как функция ценообразования в задаче частичного преобразования hash, такой как SHA-256 в Bitcoin. На данный момент scrypt уже применяется в Litecoin [14] и некоторых других ветвях Bitcoin. Однако его реализация на самом деле не привязана к памяти: соотношение «время доступа к памяти/общее time» недостаточно велик, поскольку каждый экземпляр использует только 128 КБ. Это позволяет майнерам с графическим процессором быть примерно в 10 раз более эффективным и продолжает оставлять возможность создания относительно дешевые, но высокоэффективные устройства для майнинга. Более того, сама конструкция сценария допускает линейный компромисс между размером памяти и Скорость процессора обусловлена тем, что каждый блок в блокноте является производным только от предыдущего. Например, вы можете хранить каждый второй блок и пересчитывать остальные ленивым способом, т.е. только когда это станет необходимым. Предполагается, что псевдослучайные индексы распределены равномерно. следовательно, ожидаемое значение пересчетов дополнительных блоков равно 1 \(2 \cdot N\), где N – число итераций. Общее время вычислений увеличивается менее чем вдвое, поскольку имеются также независимые от времени (постоянное время) операции, такие как подготовка блокнота и hashвключение каждую итерацию. Сохранение 2/3 памяти стоит 1 3 \(\cdot\) Н + 1 3 \(\cdot\) \(2 \cdot N\) = N дополнительных пересчетов; 9/10 в результате 1 10 \(\cdot\) Н + . . . + 1 10 \(\cdot\) 9 \(\cdot\) Н = 4,5 Н. Легко показать, что сохранение только 1 s всех блоков увеличивает время менее чем в с−1 раз. 2 . Это, в свою очередь, означает, что машина с процессором В 200 раз быстрее, чем современные чипы могут хранить всего 320 байт блокнота. 5.2 Предлагаемый алгоритм Мы предлагаем новый алгоритм с привязкой к памяти для функции ценообразования proof-of-work. Это зависит от произвольный доступ к медленной памяти и подчеркивает зависимость от задержки. В отличие от сценария каждого новый блок (длиной 64 байта) зависит от всех предыдущих блоков. В результате гипотетический «Экономия памяти» должна увеличить скорость вычислений в геометрической прогрессии. Наш алгоритм требует около 2 Мб на экземпляр по следующим причинам: 1. Он помещается в кэш L3 (на ядро) современных процессоров, которые должны стать массовыми. через несколько лет; 2. Мегабайт внутренней памяти — практически неприемлемый размер для современного ASIC-конвейера; 3. На графических процессорах могут одновременно работать сотни экземпляров, но они ограничены в других отношениях: Память GDDR5 медленнее кэша CPU L3 и отличается своей пропускной способностью, а не Скорость произвольного доступа. 4. Значительное расширение блокнота потребует увеличения количества итераций, что в ход подразумевает общее увеличение времени. «Тяжелые» вызовы в ненадежной p2p-сети могут привести к серьезные уязвимости, поскольку узлы обязаны проверять proof-of-work каждого нового блока. Если узел тратит значительное количество времени на каждую оценку hash, его можно легко DDoS-атака вызвана потоком поддельных объектов с произвольными рабочими данными (значения nonce). 12 предложил наиболее эффективное решение: «Хоккайдо». Насколько нам известно, последней работой, основанной на идее псевдослучайного поиска в большом массиве, является алгоритм, известный как «scrypt» К. Персиваля [32]. В отличие от предыдущих функций, он фокусируется на получение ключа, а не системы proof-of-work. Несмотря на этот факт, скрипт может служить нашей цели: она хорошо работает как функция ценообразования в задаче частичного преобразования hash, такой как SHA-256 в Bitcoin. На данный момент scrypt уже применяется в Litecoin [14] и некоторых других ветвях Bitcoin. Однако его реализация на самом деле не привязана к памяти: соотношение «время доступа к памяти/общее time» недостаточно велик, поскольку каждый экземпляр использует только 128 КБ. Это позволяет майнерам с графическим процессором быть примерно в 10 раз более эффективным и продолжает оставлять возможность создания относительно дешевые, но высокоэффективные устройства для майнинга. Более того, сама конструкция сценария допускает линейный компромисс между размером памяти и Скорость процессора обусловлена тем, что каждый блок в блокноте является производным только от предыдущего. Например, вы можете хранить каждый второй блок и пересчитывать остальные ленивым способом, т.е. только когда это станет необходимым. Предполагается, что псевдослучайные индексы распределены равномерно. следовательно, ожидаемое значение пересчетов дополнительных блоков равно 1 \(2 \cdot N\), гдеN - число итераций. Общее время вычислений увеличивается менее чем вдвое, поскольку имеются также независимые от времени (постоянное время) операции, такие как подготовка блокнота и hashвключение каждую итерацию. Сохранение 2/3 памяти стоит 1 3 \(\cdot\) Н + 1 3 \(\cdot\) \(2 \cdot N\) = N дополнительных пересчетов; 9/10 в результате 1 10 \(\cdot\) Н + . . . + 1 10 \(\cdot\) 9 \(\cdot\) Н = 4,5 Н. Легко показать, что сохранение только 1 s всех блоков увеличивает время менее чем в с−1 раз. 2 . Это, в свою очередь, означает, что машина с процессором В 200 раз быстрее, чем современные чипы могут хранить всего 320 байт блокнота. 5.2 Предлагаемый алгоритм Мы предлагаем новый алгоритм с привязкой к памяти для функции ценообразования proof-of-work. Это зависит от произвольный доступ к медленной памяти и подчеркивает зависимость от задержки. В отличие от сценария каждого новый блок (длиной 64 байта) зависит от всех предыдущих блоков. В результате гипотетический «Экономия памяти» должна увеличить скорость вычислений в геометрической прогрессии. Наш алгоритм требует около 2 Мб на экземпляр по следующим причинам: 1. Он помещается в кэш L3 (на ядро) современных процессоров, которые должны стать массовыми. через несколько лет; 2. Мегабайт внутренней памяти — практически неприемлемый размер для современного ASIC-конвейера; 3. На графических процессорах могут одновременно работать сотни экземпляров, но они ограничены в других отношениях: Память GDDR5 медленнее кэша CPU L3 и отличается своей пропускной способностью, а не Скорость произвольного доступа. 4. Значительное расширение блокнота потребует увеличения количества итераций, что в ход подразумевает общее увеличение времени. «Тяжелые» вызовы в ненадежной p2p-сети могут привести к серьезные уязвимости, поскольку узлы обязаны проверять proof-of-work каждого нового блока. Если узел тратит значительное количество времени на каждую оценку hash, его можно легко DDoS-атака вызвана потоком поддельных объектов с произвольными рабочими данными (значения nonce). 12 22 Неважно, это скрипт-монета? Где алгоритм? Я вижу только рекламу. Именно здесь Cryptonote, если их алгоритм PoW того стоит, действительно проявит себя. Это не на самом деле SHA-256, это не совсем скрипт. Он новый, привязан к памяти и нерекурсивный.

6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы при интенсивном росте или сокращении сети hashrate, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансом затрат и прибыли от комиссий и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращая заполнение blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить лимит. при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы при интенсивном росте или уменьшении скорости сети hash, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансировкойОн тратит и получает прибыль от гонораров и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращая заполнение blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 23 Атомные единицы. Мне нравится, что. Это эквивалент сатоши? Если это так, то это означает, что будет 185 миллиардов криптонот. Я знаю, что со временем это нужно будет подправить на нескольких страницах, или, может быть, это опечатка? Если базовая награда — «все оставшиеся монеты», то для получения всех монет достаточно только одного блока. Инстамин. С другой стороны, если предполагается, что это каким-то образом пропорционально разница во времени между настоящим моментом и какой-то датой прекращения производства монет? Это бы имеет смысл. Кроме того, в моем мире два знака «больше» означают «намного больше». Автор возможно, имеется в виду что-то другое? Если корректировка сложности происходит в каждом блоке, то у злоумышленника может быть очень большая ферма машины работают время от времени в тщательно выбранные промежутки времени. Это может привести к хаотическому взрыву (или падению до нуля) сложности, если формулы корректировки сложности не будут должным образом демпфированы. Несомненно, метод Bitcoin непригоден для быстрых пересчетов, но идея инерции в этих системах необходимо будет доказать, а не считать само собой разумеющимся. Кроме того, колебания в сети сложность не обязательно является проблемой, если только она не приводит к колебаниям мнимых запас монет, а очень быстро меняющаяся сложность может привести к «чрезмерной коррекции». Затраченное время, особенно в течение короткого промежутка времени, например нескольких минут, будет пропорционально «общему количеству количество блоков, созданных в сети». Константа пропорциональности сама будет расти. с течением времени, предположительно экспоненциально, если CN взлетит. Возможно, было бы лучше просто отрегулировать сложность, чтобы сохранить «общее количество блоков, созданных на сети с момента добавления последнего блока в основную цепочку» в пределах некоторого постоянного значения или с ограниченная вариация или что-то в этом роде. Если адаптивный алгоритм, который является вычислительным Легко реализовать, может показаться, что это решит проблему. Но если бы мы использовали этот метод, кто-то с большой майнинговой фермой мог бы закрыть свою ферму. на несколько часов и снова включите его. За первые несколько кварталов эта ферма будет производить банк. Итак, на самом деле этот метод поднимает интересный вопрос: майнинг становится (в среднем) проигрышная игра без рентабельности инвестиций, особенно по мере того, как все больше людей подключаются к сети. Если сложность майнинга очень внимательно отслеживаемая сеть hashrate, я почему-то сомневаюсь, что люди будут майнить столько, сколько они в настоящее время делаю. Или, с другой стороны, вместо того, чтобы поддерживать круглосуточную работу своих майнинг-ферм, они могут превратить их включен на 6 часов, выключен на 2, включен на 6, выключен на 2 или что-то в этом роде. Просто переключитесь на другую монету в течение нескольких часов, подождите, пока сложность упадет, затем запрыгивайте обратно, чтобы получить эти несколько дополнительных очков. блоков прибыльности по мере адаптации сети. И знаешь что? Это на самом деле, наверное один из лучших сценариев добычи полезных ископаемых, которые я придумал... Это могло бы быть циклично, но если время создания блока в среднем составляет около минуты, можем ли мы просто использовать количество блоков в качестве показателя «затраченного времени?»

6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы при интенсивном росте или сокращении сети hashrate, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансом затрат и прибыли от комиссий и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращая заполнение blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить лимит. при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы, когда скорость сети hash интенсивно растет или сокращается, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансировкойОн тратит и получает прибыль от гонораров и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращая заполнение blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 24 Хорошо, у нас есть blockchain, и каждый блок имеет временные метки, ДОПОЛНИТЕЛЬНО к тому, что он просто заказал. Это было явно вставлено просто для сложности настройки, потому что временные метки Как уже упоминалось, очень ненадежно. Разрешено ли нам иметь противоречивые временные метки в цепочке? Если в цепочке блок А предшествует блоку Б и с финансами все в порядке, но Блок А, похоже, был создан после Блока Б? Потому что, возможно, кто-то владел большая часть сети? Это нормально? Наверное, потому, что с финансами не все в порядке. Хорошо, я ненавижу это произвольное «только 80% блоков являются законными для основного blockchain». подход. Это было сделано для того, чтобы лжецы не могли изменить свои временные метки? Но теперь он добавляет стимул для всех лгать о своих временных метках и просто выбирать медиану. Пожалуйста, определите. Это означает «для этого блока включать только транзакции, включающие более высокие комиссии». чем p%, предпочтительно с комиссией выше 2p%» или что-то в этом роде? Что они подразумевают под словом фальшивка? Если транзакция соответствует прошлой истории blockchain, и транзакция включает комиссию, удовлетворяющую майнеров, разве этого недостаточно? Ну, нет, не обязательно. Если максимальный размер блока не существует, злоумышленнику нечего удерживать. от простой загрузки огромного блока транзакций себе сразу, просто чтобы замедлить сеть. Основное правило максимального размера блока не позволяет людям размещать огромное количество мусора. данные на blockchain все сразу, просто чтобы замедлить процесс. Но такое правило, безусловно, должно быть адаптивными: например, во время рождественского сезона можно ожидать резкого увеличения трафика, и размер блока становится очень большим, и сразу после этого размер блока впоследствии уменьшается снова. Поэтому нам нужно либо а) какое-то адаптивное ограничение, либо б) достаточно большое ограничение, чтобы 99% разумные рождественские пики не выходят за рамки ограничений. Конечно, второе невозможно. оценка - кто знает, приживется ли валюта? Лучше сделать адаптивным и не париться об этом. Но тогда у нас возникает проблема теории управления: как сделать это адаптивным без уязвимость к атакам или диким и сумасшедшим колебаниям? Обратите внимание, что адаптивный метод не мешает злоумышленникам накапливать небольшие суммы. ненужных данных с течением времени на blockchain, что приводит к долгосрочному раздуванию. Это другая проблема в целом и тот, с которым у криптоноут есть серьезные проблемы.

6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы при интенсивном росте или сокращении сети hashrate, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансом затрат и прибыли от комиссий и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращение заполнения blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 6 Дополнительные преимущества 6.1 Плавное излучение Верхняя граница общего количества цифровых монет CryptoNote составляет: MSupply = 264 −1. атомные единицы. Это естественное ограничение, основанное только на ограничениях реализации, а не на интуиции. например: «N монет должно хватить всем». Для обеспечения плавности процесса эмиссии воспользуемся следующей формулой для блока награды: Базовое вознаграждение = (MSupply −A) ≫18, где A — количество ранее сгенерированных монет. 6.2 Регулируемые параметры 6.2.1 Сложность CryptoNote содержит алгоритм таргетинга, который меняет сложность каждого блока. Это уменьшает время реакции системы при интенсивном росте или сокращении сети hashrate, сохранение постоянной скорости блокировки. Исходный метод Bitcoin вычисляет отношение фактических и целевой промежуток времени между последними блоками 2016 года и использует его в качестве множителя для текущего сложность. Очевидно, что для быстрых пересчетов это непригодно (из-за большой инерционности) и приводит к колебаниям. Общая идея нашего алгоритма заключается в суммировании всей работы, выполненной узлами, и разделите его на время, которое они потратили. Мерой работы являются соответствующие значения сложности. в каждом блоке. Но из-за неточных и ненадежных временных меток мы не можем определить точную дату. интервал времени между блоками. Пользователь может перенести свою временную метку в будущее и в следующий раз. интервалы могут быть невероятно малыми или даже отрицательными. Вероятно, таких инцидентов будет немного. такого рода, поэтому мы можем просто отсортировать временные метки и отсечь выбросы (т. е. 20%). Диапазон остальные значения — это время, затраченное на 80% соответствующих блоков. 6.2.2 Ограничения по размеру Пользователи платят за хранение blockchain и имеют право голосовать за его размер. Каждый шахтер имеет дело с компромиссом между балансировкойОн тратит и получает прибыль от гонораров и устанавливает свои собственные «мягкий лимит» для создания блоков. Также основное правило максимального размера блока необходимо для предотвращая заполнение blockchain фиктивной транзакцией, однако это значение должно не быть жестко закодированным. Пусть MN — медианное значение размеров последних N блоков. Тогда «жесткое ограничение» на размер приема блоков составляет 2 \(\cdot\) МН. Это предотвращает раздувание blockchain, но при этом позволяет ограничить при необходимости медленно расти со временем. Размер транзакции не обязательно ограничивать явно. Он ограничен размером блока; и если кто-то захочет создать огромную транзакцию с сотнями входов/выходов (или с высокая степень двусмысленности кольцевых подписей), он может сделать это, заплатив достаточную плату. 6.2.3 Штраф за превышение размера Майнер по-прежнему имеет возможность наполнить блок своими собственными транзакциями с нулевой комиссией до максимального уровня. размер 2 \(\cdot\) Мб. Несмотря на то, что только большинство майнеров могут изменить медианное значение, все же существует 13 25 При изменении масштаба времени так, чтобы одна единица времени составляла N блоков, средний размер блока теоретически мог бы расти экспоненциально пропорционально 2ˆt. С другой стороны, более общий предел в следующем блоке будет M_nf(M_n) для некоторой функции f. Какие свойства f будут мы выбираем, чтобы гарантировать некоторый «разумный рост» размера блока? Прогрессирование размеры блоков (после масштабирования времени) будут такими: M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... И цель здесь — выбрать f так, чтобы эта последовательность росла не быстрее, чем, скажем, линейно: или, возможно, даже как Log(t). Конечно, если f(M_n) = a для некоторой константы a, эта последовательность будет на самом деле М_н аМ_н аˆ2М_н аˆ3М_н ... И, конечно же, единственный способ ограничить максимально линейный рост — это выбрать a=1. Это, конечно, неосуществимо. Это вообще не дает возможности роста. Если же, с другой стороны, f(M_n) — непостоянная функция, то ситуация гораздо сложнее. сложен и может позволить найти элегантное решение. Я подумаю над этим некоторое время. Этот сбор должен быть достаточно большим, чтобы исключить штраф за превышение размера, предусмотренный в следующем разделе. Почему обычный пользователь считается мужчиной, а? А?

возможность раздуть blockchain и создать дополнительную нагрузку на узлы. Препятствовать злонамеренным участникам от создания крупных блоков вводим штрафную функцию: Новая награда = Базовая награда \(\cdot\) БлкСизе Миннесота −1 2 Это правило применяется только тогда, когда BlkSize превышает минимальный размер свободного блока, который должен быть близким к max(10kb, \(M_N \cdot 110\%\)). Майнерам разрешено создавать блоки «обычного размера» и даже превысить его с прибылью, когда общие сборы превысят штраф. Но сборы вряд ли вырастут квадратично отличается от значения штрафа, поэтому будет равновесие. 6.3 Скрипты транзакций CryptoNote имеет очень минималистическую подсистему сценариев. Отправитель указывает выражение Φ = f (x1, x2,..., xn), где n — количество открытых ключей назначения {Pi}n я = 1. Всего пять двоичных поддерживаются операторы: min, max, sum, mul и cmp. Когда получатель тратит этот платеж, он создает \(0 \leq k \leq n\) подписей и передает их на вход транзакции. Процесс проверки просто оценивает Φ с xi = 1, чтобы проверить действительную подпись для открытого ключа Pi и xi = 0. Верификатор принимает доказательство, если Φ > 0. Несмотря на свою простоту, этот подход охватывает все возможные случаи: • Многопороговая сигнатура. Для мультиподписи в стиле Bitcoin «M-из-N» (т. е. получатель должен предоставить как минимум \(0 \leq M \leq N\) действительных подписей) Φ = x1+x2+. . .+xN \(\geq M\) (для ясности мы используем общепринятые алгебраические обозначения). Взвешенная пороговая сигнатура (некоторые ключи могут быть более важными, чем другие) можно выразить как Φ = \(w_1 \cdot x_1\) + ш2 \(\cdot\) х2 + . . . + \(w_N \cdot x_N\) \(\geq wM\). И сценарий, в котором мастер-ключ соответствует Φ = max(\(M \cdot x\), x1 + x2 +... + xN) \(\geq M\). Легко показать, что любой сложный случай может быть рассмотрен. выражаются с помощью этих операторов, т.е. они образуют основу. • Защита паролем. Владение секретным паролем эквивалентно знанию закрытый ключ, детерминированно полученный из пароля: k = KDF(s). Следовательно, приемник может доказать, что он знает пароль, предоставив еще одну подпись под ключом k. Отправитель просто добавляет соответствующий открытый ключ к своим выводам. Обратите внимание, что это метод гораздо более безопасен, чем «транзакционная головоломка», использованная в Bitcoin [13], где пароль явно передается на входе. • Вырожденные случаи. Φ = 1 означает, что деньги может потратить кто угодно; Φ = 0 отмечает вывод как не подлежащий расходованию навсегда. В случае, когда выходной скрипт в сочетании с открытыми ключами слишком велик для отправителя, он может использовать специальный тип вывода, который указывает, что получатель поместит эти данные в свои входные данные. в то время как отправитель предоставляет только hash этого сообщения. Этот подход аналогичен подходу Bitcoin «оплата-hash». функция, но вместо добавления новых команд сценария мы обрабатываем этот случай в структуре данных уровень. 7 Заключение Мы исследовали основные недостатки Bitcoin и предложили некоторые возможные решения. Эти выгодные особенности и наше постоянное развитие делают новую систему электронных денег CryptoNote серьезный конкурент Bitcoin, превосходящий все его форки. 14 возможность раздуть blockchain и создать дополнительную нагрузку на узлы. Препятствовать злонамеренным участникам от создания крупных блоков вводим штрафную функцию: Новая награда = Базовая награда \(\cdot\) БлкСизе Миннесота −1 2 Это правило применяется только тогда, когда BlkSize превышает минимальный размер свободного блока, который должен быть близким к max(10kb, \(M_N \cdot 110\%\)). Майнерам разрешено создавать блоки «обычного размера» и даже превысить его с прибылью, когда общие сборы превысят штраф. Но сборы вряд ли вырастут квадратично отличается от значения штрафа, поэтому будет равновесие. 6.3 Скрипты транзакций CryptoNote имеет очень минималистическую подсистему сценариев. Отправитель указывает выражение Φ = f (x1, x2,..., xn), где n — количество открытых ключей назначения {Pi}n я = 1. Всего пять двоичных поддерживаются операторы: min, max, sum, mul и cmp. Когда получатель тратит этот платеж, он создает \(0 \leq k \leq n\) подписей и передает их на вход транзакции. Процесс проверки просто оценивает Φ с xi = 1, чтобы проверить действительную подпись для открытого ключа Pi и xi = 0. Верификатор принимает доказательство, если Φ > 0. Несмотря на свою простоту, этот подход охватывает все возможные случаи: • Многопороговая сигнатура. Для мультиподписи в стиле Bitcoin «M-из-N» (т. е. получатель должен предоставить как минимум \(0 \leq M \leq N\) действительных подписей) Φ = x1+x2+. . .+xN \(\geq M\) (для ясности мы используем общепринятые алгебраические обозначения). Взвешенная пороговая сигнатура (некоторые ключи могут быть более важными, чем другие) можно выразить как Φ = \(w_1 \cdot x_1\) + ш2 \(\cdot\) х2 + . . . + \(w_N \cdot x_N\) \(\geq wM\). И скэнарio, где мастер-ключ соответствует Φ = max(\(M \cdot x\), x1 + x2 +... + xN) \(\geq M\). Легко показать, что любой сложный случай может быть рассмотрен. выражаются с помощью этих операторов, т.е. они образуют основу. • Защита паролем. Владение секретным паролем эквивалентно знанию закрытый ключ, детерминированно полученный из пароля: k = KDF(s). Следовательно, приемник может доказать, что он знает пароль, предоставив еще одну подпись под ключом k. Отправитель просто добавляет соответствующий открытый ключ к своим выводам. Обратите внимание, что это метод гораздо более безопасен, чем «транзакционная головоломка», использованная в Bitcoin [13], где пароль явно передается на входе. • Вырожденные случаи. Φ = 1 означает, что деньги может потратить кто угодно; Φ = 0 отмечает вывод как не подлежащий расходованию навсегда. В случае, когда выходной скрипт в сочетании с открытыми ключами слишком велик для отправителя, он может использовать специальный тип вывода, который указывает, что получатель поместит эти данные в свои входные данные. в то время как отправитель предоставляет только hash этого сообщения. Этот подход аналогичен подходу Bitcoin «оплата-hash». функция, но вместо добавления новых команд сценария мы обрабатываем этот случай в структуре данных уровень. 7 Заключение Мы исследовали основные недостатки Bitcoin и предложили некоторые возможные решения. Эти выгодные особенности и наше постоянное развитие делают новую систему электронных денег CryptoNote серьезный конкурент Bitcoin, превосходящий все его форки. 14 26 В этом может не оказаться необходимости, если мы сможем найти способ ограничить размер блока с течением времени... Это также не может быть правильным. Они просто установили «NewReward» на параболу, обращенную вверх, где размер блока является независимой переменной. Таким образом, новая награда раздувается до бесконечности. Если, с другой стороны, новая награда равна Max(0,Base Reward(1-(BlkSize/Mn - 1)ˆ2)), затем новая награда будет обращенной вниз параболой с пиком при размере блока = Mn и точками пересечения в точке Размер блока = 0 и Размер блока = 2Mn. И, кажется, именно это они пытаются описать. Однако это не

Analisa

Bitcoin network total computation speed chart showing hashrate and difficulty from 2012 to 2013

5 Hal ini tidak terlalu menjadi masalah ketika satu miliar orang di dunia hidup dengan pendapatan kurang dari satu dolar per tahun hari dan tidak punya harapan untuk berpartisipasi dalam jaringan penambangan apa pun... kecuali jaringan ekonomi dunia yang digerakkan oleh sistem mata uang p2p dengan satu cpu-satu suara, mungkin akan lebih baik lagi lebih adil daripada sistem yang didorong oleh perbankan cadangan fraksional. Namun protokol Cryptonote masih membutuhkan 51% pengguna yang jujur... lihat, misalnya, Cryptonote forum di mana salah satu pengembangnya, Pliskov, mengatakan bahwa serangan tradisional replace-the-data-on-theblockchain 51% masih bisa berhasil. https://forum.cryptonote.org/viewtopic.php?f=2&t=198 Perhatikan bahwa Anda tidak terlalu membutuhkan 51% pengguna yang jujur. Anda hanya benar-benar membutuhkan "tidak ada satu pun orang yang tidak jujur faksi dengan lebih dari 51% kekuatan jaringan." Sebut saja masalah bitcoin ini sebagai "kekakuan adaptif". Solusi Cryptonote untuk adaptif kekakuan adalah fleksibilitas adaptif dalam nilai parameter protokol. Jika Anda membutuhkan ukuran blok yang lebih besar, tidak masalah, jaringan akan menyesuaikan secara perlahan sepanjang waktu. Artinya, cara Bitcoin menyesuaikan kesulitan dari waktu ke waktu dapat direplikasi di seluruh protokol kami parameter sehingga konsensus jaringan tidak perlu diperoleh untuk memperbarui protokol. Di permukaan, ini sepertinya ide yang bagus, tapi tanpa pemikiran yang matang, itu hanya penyesuaian diri sistem bisa menjadi sangat tidak terduga dan kacau. Kami akan membahasnya lebih lanjut nanti sebagai peluang muncul. Sistem yang "baik" berada di antara sistem adaptif kaku dan adaptif fleksibel, dan bahkan mungkin kekakuan itu sendiri bersifat adaptif. Jika kita benar-benar memiliki "satu CPU-satu suara", maka berkolaborasi dan mengembangkan kumpulan akan mencapai 51% akan lebih sulit. Kami berharap setiap CPU di dunia menambang, dari ponsel ke CPU terpasang di Tesla Anda saat sedang diisi dayanya. http://en.wikipedia.org/wiki/Pareto_principle Saya menyatakan bahwa keseimbangan Pareto tidak dapat dihindari. 20% dari sistem akan melakukannya memiliki 80% CPU, atau 20% sistem akan memiliki 80% ASIC. Saya berhipotesis demikian karena distribusi kekayaan yang mendasari masyarakat sudah menunjukkan distribusi Pareto, dan ketika para penambang baru bergabung, mereka diambil dari distribusi yang mendasarinya. Namun, saya berpendapat bahwa protokol dengan satu-cpu-satu-suara akan melihat ROI pada perangkat keras. Blokir imbalan per node akan lebih berbanding lurus dengan jumlah node dalam jaringan karena distribusi kinerja di seluruh node akan jauh lebih ketat. Bitcoin, di sisi lain di sisi lain, melihat imbalan blok (per node) lebih sebanding dengan kapasitas komputasinya simpul. Artinya, hanya “anak-anak besar” yang masih terlibat dalam penambangan. Di sisi lain, meskipun prinsip Pareto akan tetap berlaku, di dunia satu cpu-satu suara, semua orang berpartisipasi dalam keamanan jaringan dan memperoleh sedikit pendapatan penambangan. Di dunia ASIC, tidak masuk akal untuk memasang setiap XBox dan ponsel milik saya. Di dunia onecpu-one-vote, sangat masuk akal dalam hal imbalan penambangan. Sebagai konsekuensi yang menggembirakan, memperoleh 51% suara lebih sulit ketika ada lebih banyak suara, menghasilkan hasil yang bagus manfaat untuk keamanan jaringan..perangkat keras yang dijelaskan sebelumnya. Misalkan tingkat hash global menurun secara signifikan, bahkan untuk sebentar, dia sekarang dapat menggunakan kekuatan penambangannya untuk membuat rantai bercabang dan melakukan pembelanjaan ganda. Seperti yang akan kita lihat nanti di artikel ini, kemungkinan besar peristiwa yang dijelaskan sebelumnya akan terjadi. 2.3 Emisi tidak teratur Bitcoin memiliki tingkat emisi yang telah ditentukan: setiap blok yang dipecahkan menghasilkan sejumlah koin yang tetap. Kira-kira setiap empat tahun, imbalan ini dikurangi setengahnya. Niat awalnya adalah untuk membuat a emisi halus terbatas dengan peluruhan eksponensial, namun kenyataannya kita memiliki emisi linier sepotong-sepotong fungsi yang breakpointnya dapat menyebabkan masalah pada infrastruktur Bitcoin. Ketika breakpoint terjadi, penambang mulai menerima hanya setengah dari nilai sebelumnya hadiah. Perbedaan absolut antara 12,5 dan 6,25 BTC (diproyeksikan untuk tahun 2020) mungkin tampaknya dapat ditoleransi. Namun, ketika memeriksa penurunan 50 hingga 25 BTC yang terjadi pada bulan November 28 Tahun 2012, dirasa tidak pantas untuk sejumlah besar anggota komunitas pertambangan. Gambar Gambar 1 menunjukkan penurunan drastis pada tingkat hash jaringan pada akhir bulan November, tepatnya ketika separuh terjadi. Peristiwa ini bisa saja menjadi momen yang tepat bagi individu jahat tersebut dijelaskan di bagian fungsi proof-of-work untuk melakukan serangan pembelanjaan ganda [36]. Gambar 1. Bitcoin hashbagan tarif (sumber: http://bitcoin.sipa.be) 2.4 Konstanta yang dikodekan secara keras Bitcoin memiliki banyak batasan yang dikodekan secara permanen, yang beberapa di antaranya merupakan elemen alami dari desain aslinya (mis. frekuensi blok, jumlah maksimum uang beredar, jumlah konfirmasi) sedangkan lainnya tampaknya merupakan kendala buatan. Yang penting bukanlah batasannya, melainkan ketidakmampuan untuk berubah dengan cepat 3 perangkat keras yang dijelaskan sebelumnya. Misalkan tingkat hash global menurun secara signifikan, bahkan untuk sebentar, dia sekarang dapat menggunakan kekuatan penambangannya untuk membuat rantai bercabang dan melakukan pembelanjaan ganda. Seperti yang akan kita lihat nanti di artikel ini, kemungkinan besar peristiwa yang dijelaskan sebelumnya akan terjadi. 2.3 Emisi tidak teratur Bitcoin memiliki tingkat emisi yang telah ditentukan: setiap blok yang dipecahkan menghasilkan sejumlah koin yang tetap. Kira-kira setiap empat tahun, imbalan ini dikurangi setengahnya. Niat awalnya adalah untuk membuat a emisi halus terbatas dengan peluruhan eksponensial, namun kenyataannya kita memiliki emisi linier sepotong-sepotong fungsi yang breakpointnya dapat menyebabkan masalah pada infrastruktur Bitcoin. Ketika breakpoint terjadi, penambang mulai menerima hanya setengah dari nilai sebelumnya hadiah. Perbedaan absolut antara 12,5 dan 6,25 BTC (diproyeksikan untuk tahun 2020) mungkin tampaknya dapat ditoleransi. Namun, ketika memeriksa penurunan 50 hingga 25 BTC yang terjadi pada bulan November 28 Tahun 2012, dirasa tidak pantas untuk sejumlah besar anggota komunitas pertambangan. Gambar Gambar 1 menunjukkan penurunan drastis pada tingkat hashjaringan pada akhir bulan November, tepatnya ketika separuh terjadi. Peristiwa ini bisa saja menjadi momen yang tepat bagi individu jahat tersebut dijelaskan di bagian fungsi proof-of-work untuk melakukan serangan pembelanjaan ganda [36]. Gambar 1. Bitcoin hashbagan tarif (sumber: http://bitcoin.sipa.be) 2.4 Konstanta yang dikodekan secara keras Bitcoin memiliki banyak batasan yang dikodekan secara keras, yang beberapa di antaranya merupakan elemen alami dari desain aslinya (mis. frekuensi blok, jumlah maksimum uang beredar, jumlah konfirmasi) sedangkan lainnya tampaknya merupakan kendala buatan. Yang penting bukanlah batasannya, melainkan ketidakmampuan untuk berubah dengan cepat 3 6 Sebut saja ini, serangan zombie. Mari kita bahas bagaimana emisi berkelanjutan bisa terjadi terkait dengan satu-cpu-satu-suara dalam skenario serangan zombie. Di dunia satu-cpu-satu-suara, setiap ponsel dan mobil, kapan pun tidak digunakan, akan ditambang. Mengumpulkan banyak perangkat keras murah untuk membuat pertambangan akan sangat mudah, karena sederhana tentang segala sesuatu memiliki CPU di dalamnya. Di sisi lain, pada saat itu, jumlah CPU diperlukan untuk melancarkan serangan 51% akan cukup mencengangkan, menurutku. Selain itu, justru karena mengumpulkan perangkat keras yang murah akan mudah, kita dapat mengharapkan a banyak orang mulai menimbun apa pun dengan CPU. Perlombaan senjata di dunia satu cpu-satu suara tentu lebih egaliter dibandingkan di dunia ASIC. Oleh karena itu, diskontinuitas dalam jaringan keamanan karena tingkat emisi seharusnya KURANG menjadi masalah di dunia satu-cpu-satu-suara. Namun, masih ada dua fakta yang tersisa: 1) diskontinuitas laju emisi dapat menyebabkan dampak yang menghambat ekonomi dan keamanan jaringan keduanya, yang buruk, dan 2) meskipun serangan 51%. dilakukan oleh seseorang yang mengumpulkan perangkat keras murah masih bisa terjadi dalam satu-cpu-satu-pilih dunia, sepertinya itu harusnya lebih sulit. Agaknya, perlindungan terhadap hal ini adalah semua pelaku yang tidak jujur akan mencoba hal ini secara bersamaan, dan kita kembali ke gagasan keamanan Bitcoin sebelumnya: "kita tidak memerlukan tindakan tidak jujur faksi untuk mengendalikan lebih dari 51% jaringan." Penulis mengklaim di sini bahwa satu masalah dengan bitcoin adalah diskontinuitas emisi koin Tingkat ini dapat menyebabkan penurunan tiba-tiba dalam partisipasi jaringan, dan karenanya keamanan jaringan. Jadi, tingkat emisi koin yang berkelanjutan, dapat dibedakan, dan mulus lebih disukai. Penulisnya tidak salah. Penurunan partisipasi jaringan secara tiba-tiba dapat terjadi menyebabkan masalah seperti itu, dan jika kita dapat menghilangkan salah satu sumbernya, kita harus melakukannya. Karena itu, itu benar mungkin saja emisi koin yang "relatif konstan" dalam jangka waktu lama diselingi oleh perubahan yang tiba-tiba adalah cara ideal untuk melangkah dari sudut pandang ekonomi. Saya bukan seorang ekonom. Jadi, mungkin kita harus memutuskan apakah kita akan menukar keamanan jaringan dengan sesuatu yang ekonomis-apa yang ada di sini? http://arxiv.org/abs/1402.2009mereka jika perlu yang menyebabkan kelemahan utama. Sayangnya, sulit untuk memprediksi kapan hal tersebut akan terjadi konstanta mungkin perlu diubah dan menggantinya dapat menimbulkan konsekuensi yang buruk. Contoh bagus dari perubahan batas hardcode yang menyebabkan konsekuensi bencana adalah pemblokiran batas ukuran disetel ke 250kb1. Batas ini cukup untuk menampung sekitar 10.000 transaksi standar. Di awal tahun 2013, batas tersebut hampir tercapai dan tercapai kesepakatan untuk meningkatkannya batas. Perubahan tersebut diterapkan pada dompet versi 0.8 dan diakhiri dengan pemisahan rantai 24 blok dan serangan pembelanjaan ganda yang berhasil [9]. Meskipun bugnya bukan pada protokol Bitcoin, tapi melainkan di mesin database, hal itu bisa dengan mudah ditangkap dengan stress test sederhana jika ada tidak ada batasan ukuran blok yang diperkenalkan secara artifisial. Konstanta juga berperan sebagai bentuk titik sentralisasi. Meskipun bersifat peer-to-peer Bitcoin, sebagian besar node menggunakan klien referensi resmi [10] yang dikembangkan oleh sekelompok kecil orang. Kelompok ini membuat keputusan untuk menerapkan perubahan pada protokol dan kebanyakan orang menerima perubahan ini terlepas dari “kebenarannya”. Beberapa keputusan menyebabkan diskusi yang memanas bahkan seruan boikot [11], yang menandakan bahwa komunitas dan pengembang mungkin tidak setuju pada beberapa poin penting. Oleh karena itu tampaknya logis untuk memiliki protokol dengan variabel yang dapat dikonfigurasi pengguna dan dapat disesuaikan sendiri sebagai cara yang mungkin untuk menghindari masalah ini. 2.5 Skrip besar Sistem skrip di Bitcoin adalah fitur yang berat dan kompleks. Ini berpotensi memungkinkan seseorang untuk berkreasi transaksi canggih [12], namun beberapa fiturnya dinonaktifkan karena masalah keamanan dan bahkan ada yang belum pernah dipakai [13]. Naskah (termasuk bagian pengirim dan penerima) untuk transaksi terpopuler di Bitcoin tampilannya seperti ini: OP DUP OP HASH160 OP SAMAKAN VERIFIKASI OP CHECKSIG. Skrip ini panjangnya 164 byte sedangkan tujuan satu-satunya adalah untuk memeriksa apakah penerima memilikinya kunci rahasia diperlukan untuk memverifikasi tanda tangannya.

Анализ

5 Не то чтобы это имело большое значение, когда миллиард человек в мире живут менее чем на доллар в год. и у меня нет никакой надежды когда-либо участвовать в какой-либо горнодобывающей сети... кроме экономической мир, управляемый валютной системой p2p с принципом «один процессор – один голос», по-видимому, был бы более справедливее, чем система, основанная на частичном банковском резервировании. Но протокол Cryptonote по-прежнему требует 51% честных пользователей... см., например, Cryptonote форумы, где один из разработчиков, Плишков, говорит, что традиционная атака 51% с заменой данных на blockchain все еще может работать. https://forum.cryptonote.org/viewtopic.php?f=2&t=198 Обратите внимание: на самом деле вам не нужен 51% честных пользователей. Вам просто очень не нужно «ни одного нечестного фракция, владеющая более чем 51% hash мощи сети." Давайте назовем эту так называемую проблему Биткойна «адаптивной жесткостью». Решение Cryptonote для адаптивного жесткость – это адаптивная гибкость значений параметров протокола. Если вам нужны блоки большего размера, нет проблем, сеть все это время будет плавно настраиваться. То есть, способ, которым Bitcoin регулирует сложность с течением времени, можно воспроизвести во всем нашем протоколе. параметры, чтобы не требовалось достижение сетевого консенсуса для обновления протокола. На первый взгляд это кажется хорошей идеей, но без тщательного обдумывания это саморегулирующаяся идея. система может стать совершенно непредсказуемой и хаотичной. Мы рассмотрим это подробнее позже, поскольку возможности возникают. «Хорошие» системы находятся где-то между адаптивно-жесткими и адаптивно-гибкими. гибки, и, возможно, даже сама жесткость адаптивна. Если бы у нас действительно был принцип «один процессор — один голос», то совместная работа и разработка пулов позволили бы достичь 51 %. было бы сложнее. Мы ожидаем, что каждый процессор в мире будет заниматься майнингом с телефонов. к встроенному процессору вашей Tesla во время зарядки. http://en.wikipedia.org/wiki/Pareto_principle Я утверждаю, что равновесие Парето в некоторой степени неизбежно. Либо 20% системы владеть 80% процессоров, или 20% системы будет владеть 80% ASIC. Я предполагаю это, потому что основное распределение богатства в обществе уже демонстрирует распределение Парето: и по мере того, как присоединяются новые майнеры, они выбираются из этого базового распределения. Тем не менее, я утверждаю, что протоколы с принципом «один процессор — один голос» принесут окупаемость инвестиций в аппаратное обеспечение. Блокировать вознаграждение за узел будет более точно пропорционально количеству узлов в сети, поскольку распределение производительности по узлам будет гораздо более плотным. Bitcoin, с другой стороны, видит вознаграждение за блок (за узел), более пропорциональное вычислительной мощности этого узла. узел. То есть в горнодобывающей отрасли все еще участвуют только «большие мальчики». С другой стороны, хотя принцип Парето по-прежнему будет действовать, в мире «один процессор — один голос» каждый участвует в сетевой безопасности и получает небольшой доход от майнинга. В мире ASIC нецелесообразно привязывать к себе каждый XBox и мобильный телефон. В мире «один процессор — один голос» это очень разумно с точки зрения вознаграждения за майнинг. Как приятное последствие, набрать 51% голосов труднее, когда голосов становится все больше и больше, что дает прекрасный польза для сетевой безопасности..оборудование, описанное ранее. Предположим, что глобальная скорость hash значительно снижается, даже для мгновение, теперь он может использовать свою мощность майнинга, чтобы разветвить цепочку и удвоить расходы. Как мы увидим далее в этой статье вполне вероятно, что ранее описанное событие имело место. 2.3 Нерегулярная эмиссия Bitcoin имеет заранее определенную скорость эмиссии: каждый решенный блок производит фиксированное количество монет. Примерно каждые четыре года эта награда уменьшается вдвое. Первоначальное намерение состояло в том, чтобы создать ограниченное плавное излучение с экспоненциальным затуханием, но по факту мы имеем кусочно-линейное излучение функция, точки останова которой могут вызвать проблемы в инфраструктуре Bitcoin. Когда происходит точка останова, майнеры начинают получать только половину стоимости своих предыдущих награда. Абсолютная разница между 12,5 и 6,25 BTC (прогноз на 2020 год) может кажутся терпимыми. Однако при рассмотрении падения BTC с 50 до 25, произошедшего в ноябре 28 2012 года, посчитали его неприемлемым для значительного числа членов горнодобывающего сообщества. Рисунок 1 показано резкое снижение скорости hash сети в конце ноября, как раз тогда, когда произошло халвинг. Это событие могло стать идеальным моментом для злонамеренного человека. описано в разделе функции proof-of-work для проведения атаки двойных расходов [36]. Рис. 1. График курса Bitcoin hash (источник: http://bitcoin.sipa.be) 2.4 Жестко запрограммированные константы Bitcoin имеет множество жестко запрограммированных ограничений, некоторые из которых являются естественными элементами исходного дизайна (например, частота блоков, максимальная сумма денежной массы, количество подтверждений), тогда как другие кажутся искусственными ограничениями. Дело не столько в ограничениях, сколько в невозможности быстро меняться. 3 оборудование, описанное ранее. Предположим, что глобальная скорость hash значительно снижается, даже для мгновение, теперь он может использовать свою мощность майнинга, чтобы разветвить цепочку и удвоить расходы. Как мы увидим далее в этой статье вполне вероятно, что ранее описанное событие имело место. 2.3 Нерегулярная эмиссия Bitcoin имеет заранее определенную скорость эмиссии: каждый решенный блок производит фиксированное количество монет. Примерно каждые четыре года эта награда уменьшается вдвое. Первоначальное намерение состояло в том, чтобы создать ограниченное плавное излучение с экспоненциальным затуханием, но по факту мы имеем кусочно-линейное излучение функция, точки останова которой могут вызвать проблемы в инфраструктуре Bitcoin. Когда происходит точка останова, майнеры начинают получать только половину стоимости своих предыдущих награда. Абсолютная разница между 12,5 и 6,25 BTC (прогноз на 2020 год) может кажутся терпимыми. Однако при рассмотрении падения BTC с 50 до 25, произошедшего в ноябре 28 2012 года, посчитали его неприемлемым для значительного числа членов горнодобывающего сообщества. Рисунок 1 показано резкое снижение скорости hash сети в конце ноября, как раз тогда, когда произошло халвинг. Это событие могло стать идеальным моментом для злонамеренного человека. описано в разделе функции proof-of-work для проведения атаки двойных расходов [36]. Рис. 1. График курса Bitcoin hash (источник: http://bitcoin.sipa.be) 2.4 Жестко запрограммированные константы Bitcoin имеет множество жестко запрограммированных ограничений, некоторые из которых являются естественными элементами исходного дизайна (например, частота блоков, максимальная сумма денежной массы, количество подтверждений), тогда как другие кажутся искусственными ограничениями. Дело не столько в ограничениях, сколько в невозможности быстро меняться. 3 6 Давайте назовем это тем, чем оно является, атакой зомби. Давайте обсудим, каким может быть непрерывное излучение. Это связано с принципом «один процессор — один голос» в сценарии атаки зомби. В мире «один процессор – один голос» каждый сотовый телефон и каждый автомобиль, когда бы они ни находились в режиме ожидания, будут заниматься майнингом. Собрать кучу дешевого оборудования для создания майнинг-фермы было бы очень-очень легко, потому что всего лишь почти во всем есть процессор. С другой стороны, в этот момент количество процессоров Я думаю, что необходимое для запуска атаки 51% было бы весьма удивительным. Кроме того, именно поскольку было бы легко собрать дешевое оборудование, мы можем разумно ожидать многие люди начинают копить что-нибудь с процессором. Гонка вооружений в мире «один процессор – один голос» обязательно более эгалитарен, чем в мире ASIC. Следовательно, разрыв в сети безопасность из-за уровня выбросов должна быть МЕНЬШЕЙ проблемой в мире «один процессор – один голос». Однако остаются два факта: 1) скачок в скорости выбросов может привести к эффекту заикания в и в экономике, и в сетевой безопасности, что плохо, и 2) хоть и атака 51% выполненный кем-то, кто собирает дешевое оборудование, все еще может происходить в однопроцессорном процессоре-голосуйте за мир, кажется, должно быть сложнее. Предположительно, защита от этого состоит в том, что все нечестные актеры будут пытаться это сделать. одновременно, и мы возвращаемся к предыдущему понятию безопасности Bitcoin: «мы не требуем нечестных действий». фракция будет контролировать более 51% сети». Автор утверждает здесь, что одна из проблем с биткойнами заключается в том, что может привести к внезапному снижению участия в сети и, следовательно, к снижению безопасности сети. Таким образом, Предпочтительна непрерывная, дифференцируемая и плавная скорость эмиссии монет. Автор не ошибается, это факт. Любое внезапное снижение участия в сети может привести к такой проблеме, и если мы можем устранить один из ее источников, мы должны это сделать. Сказав это, это возможно, что длительные периоды «относительно постоянной» эмиссии монет, перемежающиеся внезапными изменениями Это идеальный путь с экономической точки зрения. Я не экономист. Так что, возможно, мы должны решить, собираемся ли мы обменивать сетевую безопасность на что-то экономическое — что здесь? http://arxiv.org/abs/1402.2009их при необходимости, что вызывает основные недостатки. К сожалению, трудно предсказать, когда константы, возможно, придется изменить, а их замена может привести к ужасным последствиям. Хорошим примером жестко запрограммированного изменения лимита, приводящего к катастрофическим последствиям, является блок ограничение размера установлено на 250 КБ1. Этого лимита было достаточно для проведения около 10 000 стандартных транзакций. В В начале 2013 года этот предел был почти достигнут, и было достигнуто соглашение об увеличении предел. Изменение было реализовано в версии кошелька 0.8 и закончилось разделением цепочки на 24 блока. и успешная атака двойной траты [9]. Хотя ошибка была не в протоколе Bitcoin, а скорее, в ядре базы данных его можно было бы легко обнаружить с помощью простого стресс-теста, если бы было отсутствие искусственно введенного ограничения размера блока. Константы также действуют как форма точки централизации. Несмотря на одноранговый характер Bitcoin, подавляющее большинство узлов используют официальный эталонный клиент [10], разработанный небольшая группа людей. Эта группа принимает решение о внесении изменений в протокол. и большинство людей принимают эти изменения независимо от их «правильности». Некоторые решения вызвали бурные дискуссии и даже призывы к бойкоту [11], что свидетельствует о том, что сообщество и разработчики могут расходиться во мнениях по некоторым важным моментам. Поэтому кажется логичным иметь протокол с настраиваемыми пользователем и самонастраивающимися переменными как возможный способ избежать этих проблем. 2,5 Громоздкие скрипты Система сценариев в Bitcoin — сложная и тяжелая функция. Потенциально это позволяет создавать сложные транзакции [12], но некоторые из его функций отключены из соображений безопасности и некоторые даже никогда не использовались [13]. Скрипт (включая часть отправителя и получателя) для самой популярной транзакции в Bitcoin выглядит так: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG. Длина скрипта составляет 164 байта, и его единственная цель — проверить, обладает ли получатель секретный ключ, необходимый для проверки его подписи.

Bitcoin network total computation speed chart showing hashrate and difficulty from 2012 to 2013