Tuesday, October 24, 2017

Haruskah Kita Memperbaiki Kelemahan Bitcoin dan Bitcoin Cash? Jika Iya, Bagaimana? Dan Kapan?


Jika Anda seorang penggemar Bitcoiner atau kripto, mungkin Anda pernah mendengar "kelengketan"“malleability” ini sedang dibahas dan bertanya-tanya mengenai apa masalahnya.

Mungkin Anda mungkin pernah mendengar banyak gagasan dan pendapat yang saling bertentangan tentang hal itu juga. Mari kita hentikan semuanya.

Apa yang mudah?

Ada berbagai jenis kelenturan, tapi untuk membuat cerita panjang pendek, jika Anda membuat transaksi Bitcoin, orang lain (seperti penambang atau pertukaran) dapat memodifikasi ID transaksi (txid) sebelum dimasukkan ke dalam blok.

Apa itu id transaksi?

Nah, anggap itu seperti "nomor tanda terima" untuk transaksi Anda.

Perlu diingat, dengan kelenturan, pihak ketiga tidak dapat mengubah penerima dana, atau jumlah, atau biaya ... mereka hanya bisa mengubah txid.

Jadi, apa masalahnya? Tunggu, kita akan sampai ke sana. Saya ingin memberi gambaran lengkap di sini.

Fitur atau Bug?

Hal pertama yang harus disadari adalah bahwa kelenturan adalah semacam "dipanggang menjadi" desain Bitcoin.

Bitcoin menggunakan semacam kriptografi yang disebut Elliptic Curve Digital Signature Algorithm (ECDSA). Dan ini adalah fakta yang terkenal bahwa tanda tangan digital ini mudah dibentuk.

Dengan kata lain, pihak ketiga dapat mengubah tanda tangan dengan cara tertentu, namun tetap valid. Hal yang sama juga berlaku untuk jenis tanda tangan digital lainnya.

Sebagai contoh, tanda tangan ECDSA yang merupakan pasangan (r, s) dapat difonasikan sebagai (r, -s). Yang Anda lakukan adalah mengambil yang negatif dari "s" dan tanda tangan masih berlaku ... walaupun berbeda.

Sekarang kombinasikan ini dengan fakta bahwa transaksi Bitcoin (termasuk tanda tangan) telah dibuat untuk menciptakan rantai kepemilikan. Karena tanda tangan ECDSA secara inheren dapat ditempa, dan tanda tangan tersebut merupakan bagian dari setiap transaksi, artinya transaksi Bitcoin akan mudah dibentuk.

Karena semua ini, Anda bisa dengan mudah menebak kelengketan 'fitur' Bitcoin. Namun, Anda juga bisa menyebutnya bug karena ada beberapa konsekuensi yang tidak diinginkan dari hal ini.

Saya pikir kata-kata terbaik untuk digunakan adalah bahwa ini adalah sebuah masalah, dan bahwa perubahan pada kode Bitcoin untuk menangani ini akan menjadi perangkat tambahan.

Kelenturan bukanlah masalah besar

Langsung dari kelelawar, saya dapat memberitahu Anda bahwa ada orang yang mengklaim bahwa kelenturan adalah masalah besar dan mendesak adalah tidak mengetahui atau berbohong. Itu karena kelenturan sudah ada selama 9 tahun sejak awal.

Pencuri Mt Gox yang terkenal telah disalahkan atas kelenturan tetapi teori tersebut telah ditolak.

Karena sifat kelenturan sudah diketahui, tidak ada dompet atau perangkat lunak lain yang harus bergantung pada jumlah transaksi, dan jika memang demikian, perangkat lunak itu dapat dan harus diperbaiki.

Kelenturan di Bitcoin masih ada sampai sekarang. Bahkan di BTC, Segwit hanya mencegah kelenturan dalam transaksi Segwit, yang saat ini menghasilkan sekitar 5-10% dari total transaksi.

Kelemahan sebagai Alat Politik

Salah satu manfaat memperbaiki kelenturan adalah membuat proyek lain (seperti Lightning Network) lebih mudah diterapkan. Karena kelompok tertentu menginginkan proyek tersebut, mereka mungkin akan membesar-besarkan kebutuhan untuk memperbaiki kelenturan.

Sadarilah bahwa ini telah terjadi.

Apakah Kelemahan Membantu Pengembangan Wallet?
Salah satu manfaat klaim memperbaiki kelenturan adalah bahwa hal itu akan membantu pengembang dompet - misalnya karena seharusnya "lebih mudah memantau transaksi dengan txid".

Saya pikir ini sangat diperdebatkan.

Dompet dan perangkat lunak lainnya sudah memiliki kode untuk menangani transaksi. Dan banyak perubahan yang diajukan untuk kelenturan benar-benar menambah kerumitan Bitcoin, daripada menyederhanakannya.

Transaksi 0-Conf
Sekarang setelah kita membahas apa yang saya anggap "non-isu", kita sampai pada masalah sebenarnya, dan ini berkaitan dengan transaksi 0-conf.

Di Bitcoin, Anda tahu transaksi dikonfirmasi saat penambang memasukkannya ke blok dan menerbitkan blok ke blockchain. Semakin banyak konfirmasi, semakin aman transaksi.

Transaksi yang belum termasuk dalam blok bisa dikatakan belum dikonfirmasi, tertunda, "di luar sana dalam mempool", nol konfirmasi, atau "0-conf".

Kebanyakan orang tahu bahwa transaksi yang belum dikonfirmasi kurang aman dibanding transaksi yang memiliki minimal 1 konfirmasi.

Tapi berapa banyak yang kurang aman? Nah itu tergantung ...


Filosofi Core Vs Cash pada 0-Conf

Saya akan kembali ke bagaimana hal ini berkaitan dengan kelenturan dalam sekejap, tapi mari kita bahas "0-conf" sedikit lebih. Mungkin Anda tidak menyadarinya, tapi 0-conf sebenarnya adalah topik kontroversial yang sangat relevan dengan debat skala Bitcoin.

Filosofi 'Bitcoin Core' adalah bahwa kita harus memiliki sistem berlapis dengan biaya tinggi pada lapisan dasar. Jadi, kecuali jika Anda menggunakan biaya tinggi yang layak, transaksi Anda yang belum dikonfirmasi mungkin memerlukan waktu lama untuk mengonfirmasi, atau mungkin tidak akan pernah mengkonfirmasi.

Selama ini, bisa dibobol dua kali lipat atau diganti dengan "RBF" (ganti dengan biaya). Dalam sistem ini, 0-conf cukup tidak aman dan tidak dapat diandalkan ... yang masuk akal jika Bitcoin Core ingin Anda menggunakan solusi lapisan kedua.

Filosofi 'Bitcoin Cash' adalah bahwa biaya tidak boleh meningkat, dan blok seharusnya tidak penuh. Hal ini membuat 0-conf cukup aman dan andal ... yang masuk akal jika Bitcoin Cash ingin agar Anda bisa melakukan transaksi Anda di blockchain.

Ini Hanya Mempengaruhi Transaksi Orang Tua yang Belum Dikonfirmasi
Misalkan Anda memiliki transaksi masuk yang belum dikonfirmasi muncul di dompet Anda, dan Anda segera mencoba membelanjakan dana tersebut sebelum transaksi masuk tersebut mendapat konfirmasi.

Transaksi keluar Anda sekarang memiliki status "orang tua yang belum dikonfirmasi", karena "orang tua" (transaksi masuk) belum dikonfirmasi.

Biasanya, tidak menjadi masalah. Bila transaksi induk dikonfirmasi, maka transaksi anak juga bisa dikonfirmasi, baik di blok yang sama atau blok berikutnya.

Tapi, jika seorang penambang memutuskan untuk melakukan malleate transaksi orang tua, maka transaksi anak itu tidak akan valid, karena input adalah hash dari sebuah transaksi Id yang sudah tidak ada lagi.

Untuk menjelaskan hal ini lebih jauh:

Sebelum malleated, Id transaksi orang tua asli ada di mempool masing-masing simpul dan penambang.

("Mempool" berarti kolam memori, atau kumpulan transaksi).

Tapi begitu si penambang malleates dan memasukkannya ke dalam blok, transaksi asli dengan Id asli akan hilang dari mempools penambang lainnya karena output tersebut sekarang akan dihabiskan.

Ini berarti transaksi anak (yang Anda kirim) dijamin gagal.

Seberapa Sering Ini Sebenarnya Terjadi?

Biasanya, penambang tidak melakukan transaksi malleate. Mereka hanya memiliki sedikit atau tidak mendapatkan keuntungan dengan melakukannya.

Salah satu alasannya adalah untuk membuktikan satu poin. Baru-baru ini, sebuah kolam pertambangan bernama Bitclub memutuskan untuk melakukan kegiatan biologis, karena alasan politik.

Tetapi bahkan ketika hal semacam ini terjadi, agar terpengaruh, Anda perlu melakukan transaksi dengan orang tua yang belum dikonfirmasi, dan kemudian transaksi Anda harus dilakukan dengan malam dan ditambang oleh penambang yang menyerang.

Dan bahkan jika itu terjadi, transaksi Anda akan gagal dan dana akan kembali masuk ke dompet Anda karena transaksi akan langsung tidak berlaku lagi.

Apakah Ada Masalah Sebenarnya dengan Kasus Penggunaan Kehidupan Nyata?
Jika transaksi gagal, biasanya tidak menjadi masalah bagi pengguna internet yang duduk di rumah. Tapi dalam kehidupan nyata, seorang pedagang mungkin tidak ingin menerima transaksi dengan orang tua yang belum dikonfirmasi jika ada risiko (kecil) yang mungkin ditawar oleh seorang penambang.

Salah satu sumber dari transaksi ini adalah alamat perubahan. Misalnya, jika Anda membeli item $ 2 dengan output $ 240 yang tidak terpakai, Anda akan mendapatkan kembali $ 18 dalam perubahan. Sekarang $ 18 akan belum dikonfirmasi.

Meski begitu, isu-isu semacam ini bisa dihindari tanpa ada perubahan protokol. Anda bisa secara teoritis membagi tagihan $ 20 menjadi 20 singel dengan menekan sebuah tombol sebelum pergi berbelanja. Dan kemudian bisa dikirim kembali ke "lemari besi" untuk penyimpanan.

Memisahkan dan menggabungkan nilai bisa dilakukan dengan mudah dan murah saat biaya rendah. Semakin lazim ini, semakin banyak privasi meningkat karena membuat analisa blockchain semakin memberatkan dan kompleks.

Memperbaiki Kelenturan untuk Alasan yang Tepat
Transaksi 0-conf secara teoritis dapat dibuat lebih kuat untuk situasi "orang tua yang belum dikonfirmasi". Ini setidaknya merupakan motivasi yang layak untuk memperbaiki kelenturan.

Bitcoin Core malah ingin memperbaiki kelenturan karena membantu membuat layanan lapisan kedua lebih mudah untuk dikodekan. Hal ini bahkan tidak diperlukan untuk layanan tersebut. Ini hanya membuat beberapa implementasi saat ini menjadi lebih mudah. Tapi itu bukan alasan bagus untuk mengganti protokol.

Dua Kemungkinan Pendekatan

Ada dua pendekatan dasar ketika harus mencoba memperbaiki kelenturan.

Yang pertama adalah menambahkan aturan konsensus yang menentukan rincian yang tepat tentang bagaimana tanda tangan dihasilkan. Ini dicoba di Bip62, tapi Bip ditarik, mungkin karena perubahan konsensus akan benar-benar menjadi garpu keras.

Jika Anda membaca Bip, Anda akan melihat bahwa "transaksi Bitcoin mudah dibentuk dengan berbagai cara". Pieter Wuille mengidentifikasi banyak dari mereka, namun mungkin ada cara lain agar kelenturan pihak ketiga dimungkinkan.

Pendekatan kedua melibatkan modifikasi blok dan struktur transaksi sehingga tanda tangan bukan merupakan bagian dari hash transaksi.

Inilah pendekatan yang dilakukan oleh Segwit, Flex Trans, dan MalFix.

Jika Kita Tidak Lagi Termasuk Tanda Tangan di Hash, Apa Artinya?
The Bitcoin whitepaper, di bagian 2, mengatakan ini:
KAMI MENURUNKAN COIN ELEKTRONIK SEBAGAI RANTAI TANDA DIGITAL. SETIAP PEMILIK MENUNJUKKAN KULIT COIN MENURUNKAN DENGAN DIGITALLI MENANDATANGANAN HASH TRANSAKSI SEBELUMNYA DAN KUNCI PUBLIK DARI PEMILIK BERIKUTNYA DAN TAMBAHKAN INI SAMPAI DENGAN AKHIR COIN. PAYEE BISA MEMERIKSA TANDA TANGAN UNTUK MEMBICARA RANTAI KEPEMILIKAN.
Semua perbaikan kelenturan ini (Segwit, Flex Trans, dan MalFix) mengubahnya. Kami tidak lagi menandatangani hash dari transaksi sebelumnya. Kami hanya menandatangani transaksi tanpa tanda tangan itu (yang merupakan bagian yang paling penting) dan kemudian memasukkan tanda tangan itu ke tempat lain di blok tersebut.

Seorang purist mungkin mengatakan bahwa ini bukan lagi Bitcoin.

SegWit

Maaf, penggemar SegWit. Tapi dari semua proposal kelayakan, SegWit adalah yang terburuk. Ini melemahkan model keamanan Bitcoin karena tanda tangan bersifat opsional untuk klien yang tidak diupgrade, dan dapat dipisahkan oleh semua orang.

Selain itu, SegWit hanya memperbaiki kelancaran transaksi SegWit, yang saat ini hanya mencapai 5-10% dari total transaksi.

FlexTrans

Flextrans adalah proposal yang lebih baik. Ini adalah garpu keras yang hanya mengubah beberapa baris kode. Transaksi tidak dapat disamakan dengan SegWit, dan kelengketannya tetap untuk semua transaksi.

Namun, definisi Bitcoin yang ketat sebagai rantai tanda tangan digital (dari satu transaksi ke transaksi berikutnya) tidak dipertahankan.

Tapi apakah itu penting?

Mungkin tidak ... Tapi mungkin.

Apakah FlexTrans Masih Rantai Tanda Tangan?
Dengan skema seperti FlexTrans, Anda tidak secara langsung memiliki keseluruhan transaksi sebelum melakukan chaining ke transaksi berikutnya, namun tanda tangan masih berada di blok dan mereka kemudian menjadi bagian dari keseluruhan hash blok.

Hash itu kemudian digunakan oleh blok berikutnya (tidak seperti Segwit yang menempatkan tanda tangan menjadi pohon kedua yang tidak digunakan oleh blok berikutnya).

Di permukaan, tampak bahwa model keamanan Flextrans tidak lebih lemah dari pada Bitcoin asli karena tanda tangan harus selalu ada untuk mentransfer kepemilikan.

Dan bisa dikatakan lebih jauh lagi bahwa kita masih memiliki rantai tanda tangan digital. Perbedaannya adalah keamanan telah dipindahkan dari tingkat transaksi ke level blok.

FlexTrans dan Ide Seperti Ini Harus Dikaji lebih lanjut
Di sisi lain, Flextrans IS merupakan perubahan dari Bitcoin dari si whitepaper.

Hal ini agak mengganggu untuk mulai mengarah ke jalan memisahkan tanda tangan dari transaksi. Hal itu tampaknya mempermudah calon penambang untuk melakukan perubahan lebih lanjut (tidak diinginkan).

Bitcoin telah bekerja dengan baik selama 9 tahun. Secara umum, kita harus sangat berhati-hati untuk mengubah formula, terutama dengan sesuatu yang sensitif terhadap bagaimana kita menangani tanda tangan.

Jika tanda tangan terpisah dari transaksi, apakah itu mempermudah melakukan serangan tabrakan hashing tertentu?

Saya tidak tahu, tapi proposal seperti Flextrans harus dipelajari secara mendalam dan peer ditinjau sebelum dipertimbangkan untuk diterapkan.

Biaya / manfaatnya harus dievaluasi dengan cermat. Berapa biaya untuk meneliti dan menganalisis risiko perubahan Bitcoin, dan manfaat apa yang sebenarnya kita dapatkan?

Mungkin Pilihan Terbaik adalah Cukup Tidak Lakukan
Ada komentar bagus di reddit tempo hari. Ketika ditanya apakah Bitcoin harus menyertakan beberapa "off chain" scaling, Anda / coincrazyy berkomentar:

KAMI AKAN MELAKUKANNYA KETIKA KITA PERLU. LET'S ONBOARD 1 MILIAR ORANG PERTAMA DENGAN GIGABLOCKS DAN $ .01 TRANSAKSI PERTAMA. JANGAN SESUAI MASALAH YANG TIDAK ADA
Filosofi yang sama harus diterapkan pada kelenturan.

Apakah ini masalah sekarang? Dan untuk siapa?

Diperdebatkan, satu-satunya keuntungan bermanfaat untuk memperbaiki kelenturan adalah untuk memperkuat keandalan 0-conf untuk transaksi orang tua yang belum dikonfirmasi.

Tapi kita punya banyak cara untuk melakukan adopsi pedagang, dan kita tidak boleh meletakkan gerobak di depan kuda. Mari kita mendapatkan begitu banyak pedagang di kapal, sehingga ini menjadi masalah aktual (bukan teoritis).

Itu akan menjadi waktu yang tepat untuk mengatasi kelenturan sebagai prioritas.

Ditulis oleh Jonald Fyookball

Jonald Fyookball (nama samaran) adalah penggemar kriptocurrency, paling dikenal sebagai pemimpin proyek dompet Kaset Elektron, dan untuk serangkaian artikel memukul keras pada debat skala Bitcoin. Jonald adalah seorang ilmuwan komputer, pengusaha, investor, libertarian, dan Bitcoin.

Apakah Anda berpikir bahwa kelenturan merupakan masalah penting untuk dipecahkan atau menjadi isu politik? Jika itu yang terakhir, apa solusinya? Bagikan pemikiran Anda di bagian komentar di bawah ini!