Spacechains: Bagaimana Proposal Sidechain Bitcoin Baru Ini Bekerja

Node Sumber: 1544330

Spacechains adalah sidechain Bitcoin yang diusulkan yang menawarkan mekanisme pasak satu arah yang memanfaatkan desain tambang gabungan buta.

Ide sidechains sebagai mekanisme penskalaan dan ekstensi fitur untuk Bitcoin adalah konsep yang sangat lama. Semacam ide dasar "leluhur" tentang sidechain, gabungkan rantai yang ditambang, bahkan kembali ke sebelum Satoshi menghilang.

Proposal itu hanyalah gagasan tentang dua rantai yang benar-benar terpisah dan tidak terkait yang ditambang oleh kelompok penambang yang sama, tanpa kemampuan untuk memindahkan apa pun di antara rantai. Itu proposal sidechain asli dibuat pada tahun 2014 oleh banyak orang yang kemudian menemukan Blockstream secara harfiah seminggu atau lebih setelah makalah itu diterbitkan. Ide dasarnya adalah agar koin dapat bergerak bolak-balik antara blockchain Bitcoin utama dan sidechain lainnya, dengan bukti verifikasi pembayaran (SPV) sederhana yang digunakan untuk membuktikan bahwa hal-hal tersebut valid ketika Anda mengirim koin dari satu rantai ke rantai lainnya. Ini tidak pernah membuahkan hasil karena kerumitan dalam implementasi seputar reorganisasi rantai, potensi pencurian dan risiko sentralisasi pertambangan (semuanya dapat dibaca di bagian empat dari Kertas putih Bitcoin).

Mekanisme pasak untuk rantai samping dapat terdiri dari dua jenis, satu arah dan dua arah. Maknanya harus jelas โ€” dalam pasak dua arah koin dapat bergerak bolak-balik antara rantai induk dan rantai samping, dan dalam pasak satu arah, koin hanya dapat bergerak dari rantai induk ke rantai samping dan tidak pernah bergerak mundur. Saat ini, satu-satunya bentuk pasak sidechain dua arah yang diterapkan pada Bitcoin adalah melalui konsensus federasi, artinya pasak tersebut dijamin oleh sekumpulan โ€œpenjagaโ€ tepercaya yang mempertahankan kendali dana yang dipatok ke dalam sidechain dalam dompet multisig sampai dana tersebut ditarik.

Namun, orang-orang terus mengerjakan desain lain untuk pasak rantai samping yang tidak tergabung. Di sini saya akan membahas proposal Spacechain Ruben Somsen sebagai salah satu contoh. Ini adalah mekanisme pasak satu arah menggunakan desain tambang gabungan buta, mirip dengan Paul Stztorc's. Ini berarti bahwa koin hanya bisa masuk ke sidechain dan tidak pernah pergi, dan penambang tidak harus menjalankan perangkat lunak baru untuk mendapatkan kompensasi untuk menambang sidechain (namun, seperti yang akan saya bahas nanti, mereka bisa mendapatkan keuntungan lebih banyak dengan melakukannya).

Proposal Spacechain

Penggabungan penambangan mengharuskan penambang untuk menjalankan node dari kedua rantai Bitcoin dan rantai apa pun yang mereka tambang, untuk mengkompilasi blok untuk kedua rantai dan berkomitmen pada mereka di header blok Bitcoin yang mereka tambang. Penambangan gabungan buta mengambil keuntungan dari kenyataan bahwa pada kenyataannya, penambang Bitcoin hanya benar-benar perlu memiliki header blok rantai lain untuk berkomitmen di blok Bitcoin mereka, orang lain benar-benar dapat mengambil kesulitan menyusun blok untuk rantai lainnya.

Mekanisme yang diusulkan Somsen untuk ini dapat memanfaatkan SETIAP PENCEGAHAN (APO) untuk memungkinkan kompetisi terbuka bagi siapa saja untuk dapat bersaing membangun blok sidechain berikutnya sambil menjamin hanya satu blok yang dapat dilakukan per blok rantai utama Bitcoin. Manfaat lain dari proposal Ruben adalah tidak memerlukan garpu lunak khusus untuk memungkinkan kemungkinan penggunaan rantai ruang angkasa. Eltoo/ANYPREVOUT sedang diusulkan untuk keuntungan Lightning Network, memungkinkan statechain yang fleksibel, serta pabrik saluran. Spacechains hanyalah kemungkinan lain dari banyak hal yang memungkinkan ANYPREVOUT akan membuka jalan.

Gagasan umum dari proposal penambangan gabungan butanya adalah bahwa, dengan memanfaatkan APO, Anda dapat menetapkan sebelumnya serangkaian transaksi panjang yang memasukkan UTXO awal yang sama ke dalamnya dan berkomitmen untuk selalu membuatnya kembali. Jadi, bayangkan satu satoshi UTXO, dengan setiap transaksi yang dibuat sebelumnya menjamin bahwa UTXO yang sama dibuat ulang sebagai output saat dikonfirmasi. Anggap saja seperti semacam penanda, UTXO khusus ini adalah pengidentifikasi yang memungkinkan siapa pun yang melihat blockchain Bitcoin utama untuk mengetahui, โ€œDi sinilah saya menemukan komitmen untuk blok sidechain X.โ€ Ini menyisakan satu masalah: biaya penambang. Jika UTXO itu harus dibuat ulang dengan jumlah yang sama, tidak ada dana untuk membayar biaya.

Hal ini dapat diatasi dengan memanfaatkan SIGHASH_TUNGGAL (tanda tangan dari input hanya menandai input tunggal itu, dan output yang sesuai) dan SIGHASH_APA PUN DAPAT MEMBAYAR (orang dapat dengan bebas menambahkan input dan output tambahan tanpa membatalkan tanda tangan selama input/output menggunakan SIGHASH_SINGLE dibiarkan apa adanya, untuk tidak membatalkan tanda tangan itu). Kemudian siapa pun dapat menambahkan input dan mengubah output untuk membayar biaya penambang untuk transaksi tersebut.

Ini juga merupakan mekanisme yang digunakan untuk melakukan commit ke header blok dari blok sidechain. Dengan cara yang sama seperti Taproot berkomitmen pada pohon dengan kondisi pengeluaran yang berbeda dengan mengutak-atik kunci publik normal dengan akar Merkle dari pohon, siapa pun dapat mengubah kunci publik normal dengan hash header blok dari blok sidechain. Node sidechain kemudian dapat mengungkapkan dan menyampaikan header blok itu dengan pointer ke transaksi di rantai utama untuk membuktikan bahwa itu benar-benar ditambang. Dari sana, node sidechain akan melakukan semua validasi normal untuk memastikan blok sidechain mengikuti aturan konsensus yang tepat, dan menyampaikan blok aktual di seluruh jaringan sidechain seperti pada rantai utama.

Jika salah satu transaksi yang digunakan untuk melakukan commit ke blok sidechain pada rantai utama digunakan untuk melakukan commit ke blok yang tidak valid, atau bahkan data yang benar-benar sampah, maka ketika node sidechain melihat transaksi komitmen yang digunakan pada rantai, dua hal dapat terjadi: Satu, blok yang tidak valid akan disebarkan ke seluruh jaringan sidechain, dan ketika gagal melewati pemeriksaan validasi, blok tersebut akan menjadi yatim piatu; atau dua, data tidak pernah terungkap, dalam hal ini blok rantai samping berikutnya akan dibangun di atas dan berkomitmen pada blok terakhir yang benar-benar terungkap, dan komitmen yang tidak terungkap akan diabaikan. Kemungkinan kedua ini mengikuti jenis logika rantai terpanjang yang sama dengan rantai utama, jadi bahkan jika sesuatu terungkap nanti, itu akan tetap menjadi yatim piatu karena blok masa depan yang tidak dibangun di atasnya.

Tapi masih ada masalah pengeluaran ganda. Siapa pun dengan kunci pribadi yang digunakan untuk membuat penanda UTXO berpotensi menghabiskan dua kali lipat salah satu transaksi yang telah ditentukan sebelumnya yang digunakan untuk melakukan blok rantai samping dan membatalkan seluruh rangkaian sejak saat itu dan seterusnya.

Ini diselesaikan dengan benar-benar memasukkan tanda tangan ke dalam skrip penguncian UTXO itu sendiri. Ini mengunci tanda tangan pada input dan output, menjamin pembuatan ulang penanda UTXO dalam transaksi berikutnya yang menggunakannya. Karena tanda tangan itu akan diteruskan dan diperiksa secara otomatis ketika UTXO dihabiskan, tidak mungkin untuk menggantinya dengan yang lain dan membelanjakannya ke tujuan yang berbeda.

Ini meninggalkan satu masalah terakhir yang luar biasa. Secara teori, dimungkinkan untuk mengirimkan beberapa transaksi secara berurutan ke dalam satu blok Bitcoin, sehingga sejumlah besar blok sidechain dikonfirmasi oleh penambang semuanya dalam satu blok rantai utama. Ini bisa disalahgunakan untuk serangan denial-of-service jaringan sidechain.

Untuk mengatasi masalah ini, kunci waktu relatif CHECKSEQUENCEVERIFY (CSV) dapat dimasukkan ke dalam skrip UTXO penanda untuk menjamin bahwa hanya satu transaksi menggunakan penanda UTXO yang dapat dikonfirmasi di dalam satu blok rantai utama yang diberikan.

Secara keseluruhan terlihat seperti ini: 

sumber

Perlu juga dicatat bahwa dua varian desain ini dapat diimplementasikan dengan CHECKTEMPLATEVERIFY (CTV) atau tanpa perubahan sama sekali. Kedua varian desain ini hanya memiliki pengorbanan suboptimal.

Varian CTV akan menggunakan fungsionalitas itu untuk berkomitmen pada rantai transaksi menggunakan CTV alih-alih APO dengan peretasan termasuk tanda tangan di dalam skrip penguncian UTXO. CTV berkomitmen untuk semua output dari transaksi yang menghabiskan CTV UTXO, tetapi tidak berkomitmen untuk input apa pun selain dirinya sendiri.

Ini berarti Anda dapat menambahkan input, tetapi bukan output, ke transaksi CTV. Jadi Anda dapat membawa biaya sendiri seperti dalam desain APO, tetapi Anda tidak dapat menambahkan komitmen ke header blok sidechain.

Jadi, yang perlu kita lakukan di sini adalah membuat transaksi sepenuhnya di luar rantai transaksi CTV untuk komitmen sidechain untuk membuat UTXO yang cukup untuk membayar biaya transaksi CTV (karena Anda tidak dapat membuat output perubahan baru di transaksi itu, 100% dari input yang Anda tambahkan masuk ke biaya), dan di dalam transaksi menyiapkan biaya UTXO adalah tempat kami berkomitmen pada header blok sidechain. Jadi, langkah pertama: transaksi yang menghasilkan keluaran pembayaran biaya dan komitmen ke header blok sidechain. Langkah kedua: kami mengambil keluaran biaya dan menambahkannya sebagai masukan ke transaksi CTV, yang ketika dikonfirmasi, "menambang" blok sidechain spesifik kami. Varian ini terlihat seperti ini:

sumber

Varian berikutnya hanya menggunakan transaksi yang telah ditandatangani sebelumnya. Itu bisa digunakan hari ini, tetapi karena keterbatasan apa yang bisa dilakukan skrip, itu mengharuskan semua biaya untuk transaksi dibayar di muka oleh siapa pun yang membuat rantai ruang angkasa.

Rantai transaksi dimulai dengan satu UTXO, dan dalam rantai menciptakan dua output. Keluaran pertama adalah penanda UTXO, yang menandakan bahwa rantai transaksi terkait dengan rantai ruang angkasa tertentu, yang kedua adalah UTXO bernilai kecil yang dapat dibelanjakan secara terbuka oleh siapa pun yang mengizinkan untuk memasang masukan/keluaran lain ke dalamnya. Transaksi kedua ini adalah di mana siapa pun dapat secara terbuka berkomitmen untuk menjadi yang pertama menghabiskan output kedua dari rantai transaksi spacechain, dan menggunakannya untuk berkomitmen ke header blok sidechain mereka.

Dalam varian CTV, blok sidechain harus dilakukan dalam transaksi sekunder karena CTV tidak mengizinkan penambahan output baru dalam transaksi yang menghabiskan input yang dikunci oleh CTV. Varian ini memerlukan penggunaan transaksi sekunder karena jika Anda menambahkan input atau output baru ke rantai yang telah ditandatangani sebelumnya, Anda akan mengubah TXID transaksi dan membatalkan semua transaksi yang telah ditandatangani sebelumnya yang datang setelahnya. Varian ini terlihat seperti ini: 

sumber

Satu-satunya kelemahan dari varian terakhir ini adalah jika siapa pun yang telah menandatangani semua transaksi yang akan digunakan untuk komitmen blok rantai samping tidak menghapus kunci pribadi yang digunakan untuk melakukannya, mereka dapat secara efektif menghentikan rantai dengan menghabiskan dua kali lipat penanda saat ini UTXO di mana saja. waktu.

Dan di sana Anda memilikinya. Ini adalah proposal terbaru untuk desain sidechain pada Bitcoin, dan dapat diimplementasikan dalam tiga cara berbeda, dengan peringatan yang jelas bahwa jalur implementasi yang dapat dilakukan sekarang memiliki masalah yang mengharuskan seseorang untuk menghapus kunci pribadi.

Artikel ini hanyalah yang pertama dalam seri yang berkaitan dengan proposal desain sidechain utama yang telah diterbitkan untuk Bitcoin sejak desain asli tahun 2014. Perhatikan sisanya.

Ini adalah posting tamu oleh Shinobi. Pendapat yang diungkapkan sepenuhnya milik mereka sendiri dan tidak mencerminkan pendapat BTC Inc atau Majalah Bitcoin.

Stempel Waktu:

Lebih dari Majalah Bitcoin